606 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			606 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 | ||
| <html>
 | ||
|   <head>
 | ||
|     <title>bind</title>
 | ||
|   </head>
 | ||
| 
 | ||
|   <body>
 | ||
| 
 | ||
|     <h1>bind</h1>
 | ||
| 
 | ||
|     <p>Команда <strong>bind</strong> позволяет привязать выполнение
 | ||
|       скриптов Tcl к X событиям. Команда назначает событиям ввода от
 | ||
|       "Мыши" и клавиатуры (Х событиям) исполнение скрипта
 | ||
|       Tcl.</p>
 | ||
| 
 | ||
|     <h2><a name="СИНТАКСИС"></a>СИНТАКСИС</h2>
 | ||
| 
 | ||
|     <pre>
 | ||
|       <strong>bind</strong> <em>тег</em>
 | ||
|       <strong>bind</strong> <em>тег последовательность</em>
 | ||
|       <strong>bind</strong> <em>тег последовательность скрипт</em>
 | ||
|       <strong>bind</strong> <em>тег последовательность +скрипт</em>
 | ||
|     </pre>
 | ||
| 
 | ||
|     <h2><a name="ОПИСАНИЕ"></a>ОПИСАНИЕ</h2>
 | ||
| 
 | ||
|     <p>Команда <strong>bind</strong> привязывает Tcl скрипты к X
 | ||
|       событиям. Если заданы все три аргумента команды, то при каждом
 | ||
|       наступлении события <em>последовательность</em> в окне (окнах),
 | ||
|       описанных <em>тег</em>ом, будет выполняться <em>скрипт</em>
 | ||
|       (скрипт Tcl). Если аргументу <em>скрипт</em> предшествует знак
 | ||
|       +, то скрипт добавляется к уже существующим привязкам к
 | ||
|       <em>последовательности</em>; в противном случае он замещает все
 | ||
|       имеющиеся привязки. Если аргумент <em>скрипт</em> пуст, то все
 | ||
|       имеющиеся привязки к <em>последовательности</em> отменяются, и
 | ||
|       <em>последовательность</em> становится несвязанной. Если
 | ||
|       аргумент <em>скрипт</em> присутствует, то команда
 | ||
|       <strong>bind</strong> возвращает пустую строку.</p>
 | ||
| 
 | ||
|     <p>Если при отсутствии аргумента <em>скрипт</em> аргумент
 | ||
|       <em>последовательность</em> задан, то команда возвращает скрипт,
 | ||
|       привязанный к данной последовательности, или, в случае
 | ||
|       отсутствия такого скрипта, пустую строку. Если не задан ни один
 | ||
|       из аргументов <em>последовательность</em> и <em>скрипт</em>, то
 | ||
|       команда возвращает список, элементами которого служат все
 | ||
|       последовательности, имеющие привязки к окну <em>тег</em>.</p>
 | ||
| 
 | ||
|     <p>Аргумент <em>тег</em> перечисляет окна, к которым выполняется
 | ||
|       привязка. Если значение аргумента начинается с точки, скажем
 | ||
|       ".a.b.c", то оно должно представлять собой путь к
 | ||
|       окну; в противном случае оно может быть произвольной
 | ||
|       строкой. Каждому окну приписан некоторый список тегов, и
 | ||
|       привязка к данному окну осуществляется, если значение аргумента
 | ||
|       <em>тег</em> присутствует в этом списке. Команда <a
 | ||
|       href="bindtags.html"><strong>bindtags</strong></a> позволяет
 | ||
|       приписать окну произвольный набор тегов привязки; кроме того, по
 | ||
|       умолчанию окнам приписаны следующие теги:</p>
 | ||
| 
 | ||
|     <ul>
 | ||
|       <li>тег, являющийся именем внутреннего окна, приписывается этому
 | ||
| 	окну;</li>
 | ||
|       
 | ||
|       <li>тег, являющийся именем окна верхнего уровня, приписывается
 | ||
| 	этому окну и всем его внутренним окнам;</li>
 | ||
|       
 | ||
|       <li>тег, являющийся именем класса примитивов, скажем
 | ||
| 	<strong>Button</strong>, приписывается всем примитивам этого
 | ||
| 	класса;</li>
 | ||
|       
 | ||
|       <li>тег с именем <strong>all</strong> приписывается всем окнам
 | ||
| 	приложения.</li>
 | ||
|     </ul>
 | ||
| 
 | ||
|     <h2><a name="ОБРАЗЦЫ_СОБЫТИЙ"></a>ОБРАЗЦЫ СОБЫТИЙ</h2>
 | ||
| 
 | ||
|     <p>Аргумент <em>последовательность</em> представляет собой
 | ||
|       последовательность одного или нескольких образцов
 | ||
|       событий. Каждый образец может быть записан в одном из трех
 | ||
|       видов. В простейшем случае это символ ASCII, скажем
 | ||
|       <strong>a</strong> или <strong>|</strong>. Этот символ не может
 | ||
|       быть пробелом или знаком <. Этот вид образцов соответствует
 | ||
|       событию <strong>KeyPress</strong> для конкретной
 | ||
|       клавиши. Образцы второго вида длиннее, однако, этот вид носит
 | ||
|       более общий характер. Его синтаксис выглядит следующим
 | ||
|       образом:</p>
 | ||
|     <pre>
 | ||
|       <<em>модификатор-модификатор-тип-детализация</em>>
 | ||
|     </pre>
 | ||
| 
 | ||
|     <p>Образец события целиком заключен в угловые скобки. Внутри
 | ||
|       угловых скобок располагаются несколько модификаторов (быть
 | ||
|       может, ни одного), тип события и дополнительная порция
 | ||
|       информации (<em>детализация</em>), указывающая конкретную кнопку
 | ||
|       или комбинацию клавиш. Одно из полей <em>тип</em> или
 | ||
|       <em>детализация</em> должно обязательно присутствовать,
 | ||
|       остальные могут быть опущены. Поля разделяются пробелами или
 | ||
|       дефисами.</p>
 | ||
| 
 | ||
|     <p>Третья форма образца используется для задания поименованного
 | ||
|       виртуального события, определенного пользователем. У нее
 | ||
|       следующий синтаксис:</p>
 | ||
| 
 | ||
|     <pre>
 | ||
|       <<<em>имя</em>>>
 | ||
|     </pre>
 | ||
| 
 | ||
|     <p>Образец события целиком заключен в двойные угловые скобки.
 | ||
|       Внутри этих скобок содержится определенное пользователем имя
 | ||
|       виртуального события. С виртуальным событием нельзя
 | ||
|       комбинировать модификаторы, такие как <strong>Shift</strong>или
 | ||
|       <strong>Control</strong>. Привязки к виртуальному событию можно
 | ||
|       создавать до описания самого события; при динамическом изменении
 | ||
|       этого описания все окна, привязанные к событию, будут обращаться
 | ||
|       к новому описанию.</p>
 | ||
| 
 | ||
|     <h2><a name="МОДИФИКАТОРЫ"></a>МОДИФИКАТОРЫ</h2>
 | ||
| 
 | ||
|     <p>Модификаторы могут быть следующими:</p>
 | ||
|     <ul>
 | ||
|       <li><strong>Alt</strong></li>
 | ||
|       <li><strong>Button1</strong>, <strong>B1</strong></li>
 | ||
|       <li><strong>Button2</strong>, <strong>B2</strong></li>
 | ||
|       <li><strong>Button3</strong>, <strong>B3</strong></li>
 | ||
|       <li><strong>Button4</strong>, <strong>B4</strong></li>
 | ||
|       <li><strong>Button5</strong>, <strong>B5</strong></li>
 | ||
|       <li><strong>Control</strong></li>
 | ||
|       <li><strong>Double</strong></li>
 | ||
|       <li><strong>Lock</strong></li>
 | ||
|       <li><strong>Meta</strong>, <strong>M</strong></li>
 | ||
|       <li><strong>Mod1</strong>, <strong>M1</strong></li>
 | ||
|       <li><strong>Mod2</strong>, <strong>M2</strong></li>
 | ||
|       <li><strong>Mod3</strong>, <strong>M3</strong></li>
 | ||
|       <li><strong>Mod4</strong>, <strong>M4</strong></li>
 | ||
|       <li><strong>Mod5</strong>, <strong>M5</strong></li>
 | ||
|       <li><strong>Shift</strong></li>
 | ||
|       <li><strong>Triple</strong></li>
 | ||
|     </ul>
 | ||
| 
 | ||
|     <p>Если в строке приведено несколько элементов, разделенных
 | ||
|       запятыми, то они взаимозаменяемы. У большинства модификаторов
 | ||
|       есть очевидное X значение. Например, модификатор
 | ||
|       <strong>Button1</strong> требует нажатия кнопки 1 для
 | ||
|       наступления события. Чтобы привязка соответствовала данному
 | ||
|       событию, среди модификаторов события должны содержаться все
 | ||
|       модификаторы, заданные в образце события.  Кроме того событие
 | ||
|       может содержать и другие модификаторы, не приведенные в описании
 | ||
|       привязки. Например, при нажатии кнопки 1 одновременно с нажатием
 | ||
|       клавиш <strong>Shift</strong> и <strong>Ctrl</strong> событие
 | ||
|       подойдет под образец <<strong>Control-Button-1</strong>>,
 | ||
|       но не подойдет под образец
 | ||
|       <<strong>Mod1-Button-1</strong>>. Если ни один из
 | ||
|       модификаторов не был задан, то в событии может присутствовать
 | ||
|       любая комбинация модификаторов.</p>
 | ||
| 
 | ||
|     <p>Модификаторы <strong>Meta</strong> и <strong>M</strong>
 | ||
|       заменяют любой из идентификаторов от <strong>M1</strong> до
 | ||
|       <strong>M5</strong>, ассоциированный с метаклавишами на
 | ||
|       клавиатуре (коды клавиш <strong>Meta_R</strong> и
 | ||
|       <strong>Meta_L</strong>). При отсутствии метаклавиш или в
 | ||
|       случае, если они не ассоциированы ни с каким модификатором,
 | ||
|       модификаторы <strong>Meta</strong> и <strong>M</strong> не будут
 | ||
|       соответствовать никакому событию.  Аналогично модификатор
 | ||
|       <strong>Alt</strong> заменяет любой из модификаторов,
 | ||
|       ассоциированных с alt-клавишами на клавиатуре (коды клавиш
 | ||
|       <strong>Alt_L</strong> и <strong>Alt_R</strong>).</p>
 | ||
| 
 | ||
|     <p>Модификаторы <strong>Double</strong>и <strong>Triple</strong>
 | ||
|       обеспечивают удобную обработку двойного щелчка .Мыши. и других
 | ||
|       повторяющихся событий.  Они требуют, чтобы данное событие
 | ||
|       повторилось дважды или трижды, и накладывают ограничения на
 | ||
|       время и место его повторения: для того, чтобы последовательность
 | ||
|       событий подходила под образец <strong>Double</strong> или
 | ||
|       <strong>Triple</strong>, промежуток времени между событиями
 | ||
|       должен быть коротким, а "Мышь" не должна сдвигаться.  Например,
 | ||
|       комбинация <<strong>Double-Button-1</strong>> эквивалентна
 | ||
|       паре <<strong>Button-1<em>><</em>Button-1</strong>>
 | ||
|       с дополнительными временными и пространственными
 | ||
|       ограничениями.</p>
 | ||
| 
 | ||
|     <h2><a name="ТИПЫ_СОБЫТИЙ"></a>ТИПЫ СОБЫТИЙ</h2>
 | ||
| 
 | ||
|     <p>Значением поля <em>тип</em> может быть любой из стандартных
 | ||
|       типов X событий, а также некоторые дополнительные
 | ||
|       сокращения. Ниже приведен список всех допустимых значений. Два
 | ||
|       имени, составляющие пару, синонимичны.</p>
 | ||
|       
 | ||
|     <ul>
 | ||
|       <li><strong>Activate</strong></li>
 | ||
|       <li><strong>Button</strong></li>
 | ||
|       <li><strong>ButtonPress</strong></li>
 | ||
|       <li><strong>ButtonRelease</strong></li>
 | ||
|       <li><strong>Circulate</strong></li>
 | ||
|       <li><strong>Colormap</strong></li>
 | ||
|       <li><strong>Configure</strong></li>
 | ||
|       <li><strong>Deactivate</strong></li>
 | ||
|       <li><strong>Destroy</strong></li>
 | ||
|       <li><strong>Enter</strong></li>
 | ||
|       <li><strong>Expose</strong></li>
 | ||
|       <li><strong>FocusIn</strong></li>
 | ||
|       <li><strong>FocusOut</strong></li>
 | ||
|       <li><strong>Gravity</strong></li>
 | ||
|       <li><strong>Key Unmap</strong></li>
 | ||
|       <li><strong>KeyPress</strong></li>
 | ||
|       <li><strong>KeyRelease</strong></li>
 | ||
|       <li><strong>Leave</strong></li>
 | ||
|       <li><strong>Map</strong></li>
 | ||
|       <li><strong>Motion</strong></li>
 | ||
|       <li><strong>Property</strong></li>
 | ||
|       <li><strong>Reparent</strong></li>
 | ||
|       <li><strong>Visibility</strong></li>
 | ||
|     </ul>
 | ||
| 
 | ||
|     <p>Последней частью длинной спецификации события является
 | ||
|       <em>детализация</em>. Для типов <strong>ButtonPress</strong> и
 | ||
|       <strong>ButtonRelease</strong> это номер кнопки (1-5). Если
 | ||
|       номер кнопки задан, то под образец подойдет только событие на
 | ||
|       указанной кнопке; если номер кнопки не задан, то под образец
 | ||
|       подойдет событие на любой из кнопок. Замечание: задание номера
 | ||
|       кнопки отличается от задания модификатора кнопки: в первом
 | ||
|       случае требуется, чтобы кнопка была нажата или отжата; во втором
 | ||
|       чтобы какая-то другая кнопка была отжата при наступлении
 | ||
|       события. Если номер кнопки задан, то поле <em>тип</em> можно
 | ||
|       опустить: по умолчанию оно будет иметь значение
 | ||
|       <strong>ButtonPress</strong>. Например, спецификатор
 | ||
|       <<strong>1</strong>> эквивалентен спецификатору
 | ||
|       <<strong>ButtonPress-1</strong>>.
 | ||
| 
 | ||
|     <p>Для типов <strong>KeyPress</strong> и
 | ||
|       <strong>KeyRelease</strong> детализацию можно указать в виде
 | ||
|       описателя X клавиши. В их число входят все алфавитно-цифровые
 | ||
|       символы ASCII (например, описатель <strong>a</strong> служит для
 | ||
|       описания символа ASCII "a"), а также описатели для
 | ||
|       неалфавитно-цифровых символов (описатель <strong>comma</strong>
 | ||
|       для запятой) и описатели для всех не ASCII-клавиш клавиатуры
 | ||
|       (<strong>Shift_L</strong> для левой клавиши верхнего регистра,
 | ||
|       <strong>F1</strong> для первой функциональной клавиши при ее
 | ||
|       наличии). Мы не приводим здесь полный список клавиш. Он меняется
 | ||
|       от системы к системе, и его можно найти в других частях X
 | ||
|       документации. При необходимости можно получить описатель клавиши
 | ||
|       с помощью обозначения <strong>%K</strong>, описанного ниже. Если
 | ||
|       приведена <em>детализация</em> описателя клавиши, то поле
 | ||
|       <em>тип</em> может отсутствовать, по умолчанию принимается
 | ||
|       значение <strong>KeyPress</strong>. Например, спецификатор
 | ||
|       <<strong>Control-comma</strong>> эквивалентен
 | ||
|       спецификатору <<strong>Control-KeyPress-comma</strong>>.</p>
 | ||
| 
 | ||
|     <h2><a name="ПОДСТАНОВКИ_И_СКРИПТЫ_ПРИВЯЗКИ"></a>ПОДСТАНОВКИ И СКРИПТЫ ПРИВЯЗКИ</h2>
 | ||
| 
 | ||
|     <p>Аргумент <em>скрипт</em> команды <strong>bind</strong> должен
 | ||
|       быть скриптом Tcl; при каждом наступлении события происходит
 | ||
|       выполнение этого скрипта. <em>Команда</em> выполняется тем же
 | ||
|       интерпретатором, что и команда <strong>bind</strong>, причем
 | ||
|       интерпретация происходит на верхнем уровне (доступны только
 | ||
|       значения глобальных переменных). Если в <em>скрипт</em>е есть
 | ||
|       символы <strong>%</strong>, то его исполнение не будет
 | ||
|       осуществляться непосредственно. Каждый символ <strong>%</strong>
 | ||
|       и символ, следующий за ним, заменяются данными о происшедшем
 | ||
|       событии, в результате чего генерируется новый
 | ||
|       скрипт. Подстановка осуществляется в соответствии с приводимым
 | ||
|       ниже списком символов. Если не оговорено противное, то
 | ||
|       подставляемая строка представляет собой десятичное содержимое
 | ||
|       указанного поля события. Некоторые подстановки допустимы только
 | ||
|       для событий определенных типов: при использовании их с событиями
 | ||
|       других типов результат подстановки не определен.</p>
 | ||
|     
 | ||
|     <dl>
 | ||
|       <dt><strong>%%</strong></dt>
 | ||
| 
 | ||
|       <dd>Заменяется однократным процентом.</dd>
 | ||
| 
 | ||
|       <dt><strong>%#</strong></dt>
 | ||
| 
 | ||
|       <dd>Номер последнего обработанного сервером запроса клиента
 | ||
| 	(<em>сериальное</em> поле события). Допустимо для событий всех
 | ||
| 	типов.</dd>
 | ||
|       
 | ||
|       <dt><strong>%a</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>выше</em> события, отформатированное как
 | ||
| 	шестнадцатеричное число. Допустимо только для событий
 | ||
| 	<strong>Configure</strong>.</dd>
 | ||
|       
 | ||
|       <dt><strong>%b</strong></dt>
 | ||
| 
 | ||
|       <dd>Номер нажатой или отпущенной кнопки. Допустимо только для
 | ||
| 	событий <strong>ButtonPress</strong> и
 | ||
| 	<strong>ButtonRelease</strong>.</dd>
 | ||
|       
 | ||
|       <dt><strong>%c</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>счетчик</em> события. Допустимо только для событий
 | ||
| 	<strong>Expose</strong>.</dd>
 | ||
|       
 | ||
|       <dd><strong>%d</strong></dd>
 | ||
| 
 | ||
|       <dd>Поле <em>детализация</em> события. Символы
 | ||
| 	<strong>%d</strong> заменяются строкой детализации.  Для
 | ||
| 	событий <strong>Enter</strong>, <strong>Leave</strong>,
 | ||
| 	<strong>FocusIn</strong>, <strong>FocusOut</strong> строка
 | ||
| 	должна быть одной из следующих:
 | ||
| 	<strong>NotifyAncestor</strong>,
 | ||
| 	<strong>NotifyNonlinearVirtual</strong>
 | ||
| 	<strong>NotifyDetailNone</strong>,
 | ||
| 	<strong>NotifyPointer</strong>,
 | ||
| 	<strong>NotifyInterior</strong>,
 | ||
| 	<strong>NotifyPointerRoot</strong>,
 | ||
| 	<strong>NotifyNonlinear</strong>,
 | ||
| 	<strong>NotifyVirtual</strong>.
 | ||
| 
 | ||
| 	<p>Для прочих событий подставляемая строка не определена.</p>
 | ||
|       </dd>
 | ||
| 
 | ||
|       <dt><strong>%f</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>фокус</em> события (<strong>0</strong> или
 | ||
| 	<strong>1</strong>). Допустимо только для событий
 | ||
| 	<strong>Enter</strong> и <strong>Leave</strong>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%h</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>высота</em> события. Допустимо только для событий
 | ||
| 	<strong>Configure</strong> и <strong>Expose</strong>.</dd>
 | ||
|       
 | ||
|       <dt><strong>%k</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>код_клавиши</em> события. Допустимо только для
 | ||
| 	событий <strong>KeyPress</strong> и
 | ||
| 	<strong>KeyRelease</strong>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%m</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>режим</em> события. Подставляется одна из строк
 | ||
| 	<strong>NotifyNormal</strong>, <strong>NotifyGrab</strong>,
 | ||
| 	<strong>NotifyUngrab</strong> или
 | ||
| 	<strong>NotifyWhileGrabbed</strong>. Допустимо только для
 | ||
| 	событий <strong>Enter</strong>, <strong>FocusIn</strong>,
 | ||
| 	<strong>FocusOut</strong> и <strong>Leave</strong>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%o</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>подавить_перенаправление</em> события.Допустимо
 | ||
| 	только для событий <strong>Map</strong>,
 | ||
| 	<strong>Reparent</strong> и <strong>Configure</strong>.</dd>
 | ||
|       
 | ||
|       <dt><strong>%p</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>размещать</em> события. Строка подстановки имеет
 | ||
| 	вид <strong>PlaceOnTop</strong> или
 | ||
| 	<strong>PlaceOnBottom</strong>. Допустимо только для событий
 | ||
| 	<strong>Circulate</strong>.</dd>
 | ||
|       
 | ||
|       <dt><strong>%s</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>состояние</em> события. Для событий
 | ||
| 	<strong>ButtonPress</strong>, <strong>ButtonRelease</strong>,
 | ||
| 	<strong>Enter</strong>, <strong>KeyPress</strong>,
 | ||
| 	<strong>KeyRelease</strong>, <strong>Leave</strong> и
 | ||
| 	<strong>Motion</strong> происходит подстановка десятичного
 | ||
| 	числа. Для события <strong>Visibility</strong> подставляется
 | ||
| 	одна из строк <strong>isibilityUnobscured</strong>,
 | ||
| 	<strong>VisibilityPartiallyObscured</strong> или
 | ||
| 	<strong>VisibilityFullyObscured</strong>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%t</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>время</em> события. Допустимо только для событий,
 | ||
| 	содержащих поле <em>время</em>.</dd>
 | ||
|       
 | ||
|       <dt><strong>%w</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>ширина</em> события. Допустимо только для событий
 | ||
| 	<strong>Configure</strong> и <strong>Expose</strong>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%x</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>x</em> события. Допустимо только для событий,
 | ||
| 	содержащих поле <em>x</em>.</dd>
 | ||
| 
 | ||
|       <dt> <strong>%y</strong></dt>
 | ||
| 
 | ||
|       <dd> Поле <em>y</em> события.Допустимо только для событий,
 | ||
| 	содержащих поле <em>y</em>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%A</strong></dt>
 | ||
| 
 | ||
|       <dd>Заменяется символом ASCII, отвечающим происшедшему
 | ||
| 	событию,или пустой строкой, если событию не соответствует
 | ||
| 	никакой символ ASCII (например, нажата клавиша верхнего
 | ||
| 	регистра). Работу по переводу события в ASCII символ выполняет
 | ||
| 	<strong>XLookupString</strong>. Допустимо только для событий
 | ||
| 	<strong>KeyPress</strong> и <strong>KeyRelease</strong>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%B</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>ширина_бордюра</em> события.Допустимо только для
 | ||
| 	событий <strong>Configure</strong>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%E</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>послать_событие</em> события.Допустимо для событий
 | ||
| 	всех типов.</dd>
 | ||
| 
 | ||
|       <dt><strong>%K</strong></dt>
 | ||
| 
 | ||
|       <dd>Код клавиши, соответствующей данному событию, представленный
 | ||
| 	текстовой строкой. Допустимо только для событий
 | ||
| 	<strong>KeyPress</strong> и <strong>KeyRelease</strong>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%N</strong></dt>
 | ||
| 
 | ||
|       <dd>Код клавиши, соответствующей данному событию, представленный
 | ||
| 	десятичным числом. Допустимо только для событий
 | ||
| 	<strong>KeyPress</strong> и <strong>KeyRelease</strong>.</dd>
 | ||
| 
 | ||
|       <dt> <strong>%R</strong></dt>
 | ||
| 
 | ||
|       <dd>Идентификатор корневого окна события.Допустимо только для
 | ||
| 	событий содержащих поле <em>корень</em>.</dd>
 | ||
| 
 | ||
|       <dt> <strong>%S</strong></dt>
 | ||
| 
 | ||
|       <dd>Идентификатор подокна события, представленный в виде
 | ||
| 	шестнадцатиричного числа. Допустимо только для событий
 | ||
| 	содержащих поле <em>подокно</em>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%T</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>тип</em> события. Допустимо для событий всех
 | ||
| 	типов.</dd>
 | ||
| 
 | ||
|       <dt><strong>%W</strong></dt>
 | ||
| 
 | ||
|       <dd>Путь к окну, к которому отнесено событие (поле <em>окно</em>
 | ||
| 	  события). Допустимо для событий всех типов.</dd>
 | ||
| 
 | ||
|       <dt> <strong>%X</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>x_корень</em> события. При использовании
 | ||
| 	виртуально-корневого менеджера окон подставляемое значение
 | ||
| 	равняется x-координате в виртуальном корне. Допустимо только
 | ||
| 	для событий <strong>ButtonPress</strong>,
 | ||
| 	<strong>ButtonRelease</strong>, <strong>KeyPress</strong>,
 | ||
| 	<strong>KeyRelease</strong> и <strong>Motion</strong>.</dd>
 | ||
| 
 | ||
|       <dt><strong>%Y</strong></dt>
 | ||
| 
 | ||
|       <dd>Поле <em>y_корень</em> события. При использовании
 | ||
| 	виртуально-корневого менеджера окон подставляемое значение
 | ||
| 	равняется y-координате в виртуальном корне. Допустимо только
 | ||
| 	для событий <strong>ButtonPress</strong>,
 | ||
| 	<strong>ButtonRelease</strong>, <strong>KeyPress</strong>,
 | ||
| 	<strong>KeyRelease</strong> и <strong>Motion</strong>.</dd>
 | ||
|     </dl>
 | ||
| 
 | ||
|     <p>Строка подстановки для %-замещения форматируется как обычный
 | ||
|       элемент списка Tcl. Это означает, что при наличии в строке
 | ||
|       пробелов она заключается в фигурные скобки, а специальным
 | ||
|       символам, таким как `$' и `{' может предшествовать обратная
 | ||
|       косая черта. Такая строка нормально обрабатывается
 | ||
|       синтаксическим анализатором Tcl при выполнении скрипта. Строки
 | ||
|       подстановки по большей части являются числами или корректно
 | ||
|       определенными строками как, например, <strong>Above</strong>;
 | ||
|       такие строки не нуждаются ни в каком специальном
 | ||
|       форматировании. Чаще всего форматирования требуют строки,
 | ||
|       замещающие <strong>%A</strong>. Если, например, скрипт имеет
 | ||
|       вид</p>
 | ||
| 
 | ||
|     <pre>insert %A</pre>
 | ||
| 
 | ||
|     <p>и вводимым символом является открывающая квадратная скобка, то
 | ||
|       реально исполняемым скриптом будет</p>
 | ||
| 
 | ||
|     <pre>insert \[</pre>
 | ||
| 
 | ||
|     <p>т.е. в качестве первого аргумента <strong>insert</strong>
 | ||
|       получит исходную строку подстановки (открывающую квадратную
 | ||
|       скобку). Если бы обратная косая черта не была добавлена, Tcl не
 | ||
|       смог бы правильно обработать скрипт.</p>
 | ||
| 
 | ||
|     <h2><a name="НЕСКОЛЬКО_ПРИВЯЗОК_ОТВЕЧАЮЩИХ_ОБРАЗЦУ"></a>НЕСКОЛЬКО ПРИВЯЗОК, ОТВЕЧАЮЩИХ ОБРАЗЦУ</h2>
 | ||
| 
 | ||
|     <p>Данному X событию может отвечать несколько привязок. Если эти
 | ||
|       привязки соответствуют различным <em>тег</em>ам, то все они
 | ||
|       выполняются по очереди. По умолчанию сначала исполняется
 | ||
|       привязка для примитива, затем привязка класса, затем привязка
 | ||
|       верхнего уровня и привязка <strong>all</strong>. Этот порядок
 | ||
|       для конкретного окна можно поменять с помощью команды <a
 | ||
|       href="bindtags.html"><strong>bindtags</strong></a>, которая
 | ||
|       позволяет также выполнить дополнительные привязки к окну.</p>
 | ||
| 
 | ||
|     <p>Управление обработкой скриптов, отвечающих образцу,
 | ||
|       осуществляется командами <a
 | ||
|       href="../tcl/continue.html"><strong>continue</strong></a> и <a
 | ||
|       href="../tcl/break.html"><strong>break</strong></a> в
 | ||
|       привязанном скрипте. При выполнении команды <a
 | ||
|       href="../tcl/continue.html"><strong>continue</strong></a>
 | ||
|       выполнение текущего привязанного скрипта прерывается и Tk
 | ||
|       переходит к выполнению скриптов, соответствующих остальным
 | ||
|       <em>тег</em>ам. При выполнении команды <a
 | ||
|       href="../tcl/break.html"><strong>break</strong></a> выполнение
 | ||
|       текущего привязанного скрипта прерывается и никакие другие
 | ||
|       скрипты не выполняются.</p>
 | ||
| 
 | ||
|     <p>Если данному событию соответствует несколько привязок с одним и
 | ||
|       тем же тегом, то из них выбирается наиболее конкретная привязка
 | ||
|       и выполняется ее скрипт. Выбор наиболее конкретной привязки
 | ||
|       осуществляется по следующим критериям:</p>
 | ||
| 
 | ||
|     <ol type="a">
 | ||
|       <li>образец события, задающий конкретную кнопку или клавишу,
 | ||
| 	более конкретен, чем тот, в котором такой спецификации не
 | ||
| 	задано;</li>
 | ||
| 
 | ||
|       <li>более длинная последовательность (по числу отвечающих
 | ||
| 	образцу событий) конкретнее более короткой;</li>
 | ||
| 
 | ||
|       <li>если модификаторы первого образца содержатся среди
 | ||
| 	модификаторов второго, то образец с большим числом
 | ||
| 	модификаторов более конкретен;</li>
 | ||
| 
 | ||
|       <li>виртуальное событие, физический образец которого
 | ||
| 	соответствует последовательности, менее конкретно, чем тот же
 | ||
| 	самый физический образец, не связанный ни с каким виртуальным
 | ||
| 	событием;</li>
 | ||
| 
 | ||
|       <li><p>если последовательность отвечает двум или более
 | ||
| 	  виртуальным событиям, то из них выбирается какое-нибудь
 | ||
| 	  одно, однако порядок выбора не определен.</p>
 | ||
| 
 | ||
| 	<p>Если в подходящей последовательности событий больше одного
 | ||
| 	  события, то критерии 1 - 5 применяются ко всем событиям,
 | ||
| 	  начиная с самого последнего и до самого первого события
 | ||
| 	  последовательности. Если критерии не позволяют определить
 | ||
| 	  победителя, то победителем становится событие,
 | ||
| 	  зарегистрированное последним.</p>
 | ||
|       </ol>
 | ||
| 
 | ||
|     <p>Если одна и та же последовательность осуществляет переключение
 | ||
|       к двум (или более) виртуальным событиям, и теги окон этих
 | ||
|       виртуальных событий совпадают, то переключение произойдет лишь к
 | ||
|       одному из этих виртуальных событий, выбранному случайным
 | ||
|       образом:</p>
 | ||
| 
 | ||
|     <pre>
 | ||
|       event add <<Paste>> <Control-y>
 | ||
|       event add <<Paste>> <Button-2>
 | ||
|       event add <<Scroll>> <Button-2>
 | ||
|       bind Entry <<Paste>> {puts Paste}
 | ||
|       bind Entry <<Scroll>> {puts Scroll}
 | ||
|     </pre>
 | ||
| 
 | ||
|     <p>При нажатии <strong>Control-y</strong> будет выполнена привязка
 | ||
|       <<<strong>Paste</strong>>>, а при нажатии кнопки 2
 | ||
|       одна из привязок <<<strong>Paste</strong>>> или
 | ||
|       <<<strong>Scroll</strong>>>, причем определить какой
 | ||
|       именно будет эта привязка, невозможно.</p>
 | ||
| 
 | ||
|     <p>Если X событие не подходит ни под одну из существующих
 | ||
|       привязок, то событие игнорируется. Наступление не привязанного
 | ||
|       события не считается ошибкой.</p>
 | ||
| 
 | ||
|     <h2><a name="ПОСЛЕДОВАТЕЛЬНОСТИ_НЕСКОЛЬКИХ_СОБЫТИЙ_И_ИГНОРИРУЕМЫЕ_СОБЫТИЯ"></a>ПОСЛЕДОВАТЕЛЬНОСТИ НЕСКОЛЬКИХ СОБЫТИЙ И ИГНОРИРУЕМЫЕ СОБЫТИЯ</h2>
 | ||
|     
 | ||
|     <p>Если аргумент <em>последовательность</em> в команде
 | ||
|       <strong>bind</strong> состоит из нескольких образцов событий, то
 | ||
|       скрипт выполняется в случае, если последние события (включая
 | ||
|       самое последнее) подходят под данную последовательность. Это
 | ||
|       означает, например, что при неоднократном последовательном
 | ||
|       нажатии кнопки 1 каждое из нажатий, за исключением самого
 | ||
|       первого, отвечает образцу
 | ||
|       <<strong>Doudble-ButtonPress-1</strong>>. Если в
 | ||
|       последовательности событий происходят посторонние события, то
 | ||
|       они игнорируются, за исключением событий
 | ||
|       <strong>KeyPress</strong> и <strong>ButtonPress</strong>.
 | ||
|       Например, нажатия на кнопку 1 будут соответствовать образцу
 | ||
|       <<strong>Doudble-ButtonPress-1</strong>>, даже если их
 | ||
|       перемежают события <strong>ButtonRelease</strong> или
 | ||
|       <strong>Motion</strong>. Кроме того событию
 | ||
|       <strong>KeyPress</strong>может предшествовать произвольная
 | ||
|       последовательность событий <strong>KeyPress</strong> для
 | ||
|       модификаторов, среди которых нет модификаторов, нарушающих
 | ||
|       соответствие образцу. Например, последовательности событий
 | ||
|       <strong>aB</strong> отвечает нажатие на клавишу
 | ||
|       <strong>a</strong>, отпускание клавиши <strong>a</strong>,
 | ||
|       нажатие на клавишу <strong>Shift</strong> и нажатие на клавишу
 | ||
|       <strong>b</strong>, так как нажатие на клавишу модификатора
 | ||
|       <strong>Shift</strong> игнорируется. И, наконец, если
 | ||
|       последовательно происходит несколько событий
 | ||
|       <strong>Motion</strong>, то для установления соответствия
 | ||
|       привязке берется последнее из них.</p>
 | ||
|     
 | ||
| 
 | ||
|     <h2><a name="ОШИБКИ"></a>ОШИБКИ</h2>
 | ||
| 
 | ||
|     <p>При возникновении ошибки в процессе исполнения привязанного
 | ||
|       скрипта для выдачи сообщения об ошибке используется механизм <a
 | ||
|       href="../tcl/bgerror.html"><strong>bgerror</strong></a>. Команда
 | ||
|       <a href="../tcl/bgerror.html"><strong>bgerror</strong></a>
 | ||
|       исполняется на верхнем уровне (вне контекста любой из процедур
 | ||
|       Tcl).</p>
 | ||
|   </body>
 | ||
| </html>
 | ||
| 
 | ||
| 
 | ||
| 
 | 
