event
    Определение виртуальных событий и генерация событий
    СИНТАКСИС
    
      event параметр ?арг арг ...?
    
    ОПИСАНИЕ
    Команда event обеспечивает различные
      возможности работы с событиями, включая определение виртуальных
      событий и синтезирование событий. У команды есть несколько
      различных форм, которые задаются первым аргументом. В настоящее
      время поддерживаются следующие формы команды:
    
      - event add <<виртуальное>>
	последовательность ?последовательность...?
- Связывает виртуальное событие с
	последовательностями физических событий, указываемыми
	аргументами последовательность; в результате
	выполнение одной из указанных последовательностей
	событий приводит к возникновению виртуального
	события. Аргумент виртуальное может быть произвольной
	строкой, а последовательность может принимать любое
	значение, допустимое для аргумента последовательность
	команды bind. Если
	виртуальное событие уже определено, то новая
	последовательность физических событий добавляется к списку уже
	имеющихся последовательностей.
- event delete
	<<виртуальное>> ?последовательность
	последовательность ..?
- Удаляет все указанные последовательности из списка
	связанных с данным виртуальным событием. Аргумент
	виртуальное может быть произвольной строкой, а
	последовательность может принимать любое значение,
	допустимое для аргумента последовательность команды
	bind. Если
	последовательность не связана с данным
	виртуальным событием в текущий момент, то она
	игнорируется. Если аргумент последовательность
	отсутствует, то из списка удаляются все последовательности
	физических событий и данное виртуальное событие не
	может быть более осуществлено.
-  event generate окно событие
	  ?параметр значение параметр значение ...?
- Генерирует событие в окне и обеспечивает его обработку таким
	образом, как если бы оно поступило из менеджера окон. Аргумент
	окно задает имя пути окна, в котором будет
	генерироваться событие; его значением может быть и
	идентификатор окна (такой же, какой служит результатом команды
	winfo id), если он относится к окну в текущем
	приложении. Аргумент событие задает описание события,
	например, в виде <Shift-Button-2> или
	<<Paste>>. Аргумент
	событие может принимать любое значение, допустимое
	для аргумента последовательность команды bind, за исключением
	того, что он должен состоять из одного, а не из нескольких
	событий. Пары параметр-значение можно использовать
	для установки значений дополнительных параметров события,
	например, координат курсора "Мыши" ниже
	(см. "ПОЛЯ СОБЫТИЯ"). Если
	параметр -when не задан, то событие
	обрабатывается немедленно; все программы обработки события
	будут выполнены до завершения команды event
	generate. В противном случае момент обработки
	определяется значением параметра -when.
-  event info
	?<<виртуальное>>?
- Возвращает информацию о виртуальных событиях. Если аргумент
	<<виртуальное>> опущен, то возвращается
	список всех виртуальных событий, определенных в текущий
	момент. Если аргумент <<виртуальное>>
	задан, то возвращаемое значение представляет собой список,
	элементы которого являются последовательностями физических
	событий, связанными с данным виртуальным событием; если
	указанное виртуальное событие не определено, то команда
	возвращает пустую строку.
ПОЛЯ СОБЫТИЯ
    Команда event generate поддерживает следующие
      параметры, которые соответствуют расширению % в
      скриптах привязки для команды bind.
    
      - -above окно
- Аргумент окно задает поле
	above для события либо в виде имени
	пути окна либо в виде целочисленного идентификатора
	окна. Параметр имеет смысл для событий
	Configure. Параметр соответствует подстановке
	%a для скриптов привязки.
- -borderwidth размер
- Параметр размер представляет собой расстояние на
	экране; задает значение поля border_width
	события. Параметр имеет смысл для событий
	Configure. Параметр соответствует подстановке
	%B для скриптов привязки.
- -button число
- Значением параметра число должно быть целое число;
	задает значение поля detail для события
	ButtonPress или
	ButtonRelease, подавляя номер кнопки,
	задаваемый параметром события base. Параметр
	соответствует подстановке %b для скриптов
	привязки.
- -count число
- Значением параметра число должно быть целое число;
	задает значение поля count для
	события. Параметр имеет смысл для событий
	Expose. Параметр соответствует подстановке
	%c для скриптов привязки.
- -detail детальность
- Параметр задает значение поля detail для
	  события и может принимать следующие значения: - 
	  - NotifyAncestor
- NotifyDetailNone
- NotifyInferior
- NotifyNonlinear
- NotifyNonlinearVirtual
- NotifyPointer
- NotifyPointerRoot
- NotifyVirtual
 - Имеет смысл для событий Enter,
	  Leave, FocusIn и
	  FocusOut. Параметр соответствует
	  подстановке %d для скриптов привязки. 
-  -focus булевское
- Параметр булевское принимает булевские значения; он
	задает значение поля focus для события. Имеет
	смысл для событий Enter и
	Leave. Параметр соответствует подстановке
	%f для скриптов привязки.
-  -height размер 
- Параметр размер представляет собой расстояние на
	экране; задает значение поля height
	события. Параметр имеет смысл для событий
	Configure. Параметр соответствует подстановке
	%h для скриптов привязки.
- -keycode число
- Значением параметра число должно быть целое число;
	задает значение поля keycode для
	события. Параметр имеет смысл для событий
	KeyPress и
	KeyRelease. Параметр соответствует
	подстановке %k для скриптов привязки.
- -keysym имя
- Значением параметра имя должно быть имя допустимого
	символа клавиатуры, например, g,
	пробел или Return; код этого
	символа используется в качестве значения поля
	keycode события, подавляя значение
	детальности, заданное аргументом base
	события. Имеет смысл для событий KeyPress и
	KeyRelease. Параметр соответствует
	подстановке %K для скриптов привязки.
- -mode уведомление
- Параметр уведомление задает значение поля
	mode для события; он должен принимать одно из
	значений NotifyNormal,
	NotifyGrab, NotifyUngrab или
	NotifyWhileGrabbed. Имеет смысл для событий
	Enter, Leave,
	FocusIn и FocusOut. Параметр
	соответствует подстановке %m для скриптов
	привязки.
- -override булевское
- Значение параметра булевское должно быть булевским;
	он задает значение поля override_redirect для
	события. Имеет смысл для событий Map,
	Reparent и
	Configure. Параметр соответствует подстановке
	%o для скриптов привязки.
-  -place где 
- Параметр где задает значение поля
	place для события; может принимать значения
	PlaceOnTop или
	PlaceOnBottom. Имеет смысл для событий
	Circulate. Параметр соответствует подстановке
	%p для скриптов привязки.
- -root окно
- Аргумент окно задает поле root для
	события либо в виде имени пути окна, либо в виде
	целочисленного идентификатора окна. Имеет смысл для событий
	KeyPress, KeyRelease,
	ButtonPress, ButtonRelease,
	Enter, Leave и
	Motion. Параметр соответствует подстановке
	%R для скриптов привязки.
-  -rootx коорд 
- Параметр коорд представляет собой расстояние на
	экране; задает значение поля x_root
	события. Параметр имеет смысл для событий
	KeyPress, KeyRelease,
	ButtonPress, ButtonRelease,
	Enter, Leave и
	Motion. Параметр соответствует подстановке
	%X для скриптов привязки.
- -rooty коорд
- Параметр коорд представляет собой расстояние на
	экране; задает значение поля y_root
	события. Параметр имеет смысл для событий
	KeyPress, KeyRelease,
	ButtonPress, ButtonRelease,
	Enter, Leave и
	Motion. Параметр соответствует подстановке
	%Y для скриптов привязки.
- -sendevent булевское
- Значение параметра булевское должно быть булевским;
	он задает значение поля send_event для
	события. Имеет смысл для всех событий. Параметр соответствует
	подстановке %E для скриптов привязки.
-  -serial число 
- Значение параметра должно быть целым числом; задает значение
	поля serial для события. Имеет смысл
	для всех событий. Параметр соответствует подстановке
	%# для скриптов привязки.
-  -state состояние
- Параметр задает значение поля state для
	события. Для событий KeyPress,
	KeyRelease, ButtonPress,
	ButtonRelease, Enter,
	Leave и Motion значение
	параметра должно быть целым. Для событий
	Visibility параметр может принимать одно из
	значений VisibilityUnobscured,
	VisibilityPartiallyObscured или
	VisibilityFullyObscured. Этот параметр
	подавляет любые модификаторы, например, Meta
	или Control, указанные в основном
	событии. Параметр соответствует подстановке
	%s для скриптов привязки.
-  -subwindow окно
- Аргумент окно задает поле
	subwindow для события либо в виде имени пути
	примитива event, либо в виде целочисленного идентификатора
	окна. Имеет смысл для событий KeyPress,
	KeyRelease, ButtonPress,
	ButtonRelease, Enter,
	Leave и Motion. Аналогичен
	подстановке %S для скриптов привязки.
- -time целое
- Параметр должен иметь целое значение; задает значение поля
	time для события. Имеет смысл для событий
	KeyPress, KeyRelease,
	ButtonPress, ButtonRelease,
	Enter, Leave,
	Motion и Property. Параметр
	соответствует подстановке %t для скриптов
	привязки.
-  -width размер 
- Параметр размер представляет собой расстояние на
	экране; задает значение поля width
	события. Параметр имеет смысл для событий
	Configure. Параметр соответствует подстановке
	%w для скриптов привязки.
- -when когда
- Параметр когда задает момент обработки события;
	  должен принимать одно из следующих значений: - 
	  - now
- Событие обрабатывается немедленно, до завершения
	    выполнения команды. То же самое происходит и в случае,
	    если параметр -when опущен.
- tail
-  Устанавливает событие в очередь событий Tcl вслед за
	    всеми стоящими в этой очереди событиями данного
	    приложения.
- head
-  Устанавливает событие в начало очереди событий Tcl; оно
	    будет обработано перед остальными событиями, уже стоящими
	    в очереди.
- mark
- Устанавливает событие в начало очереди событий Tcl, но
	    вслед за всеми событиями, вставшими в очередь посредством
	    указания параметра -when. Такая
	    возможность полезна при генерации последовательности
	    событий, которые должны быть обработаны одно за другим, но
	    перед всеми событиями уже стоящими в очереди.
 
- -x коорд 
- Параметр коорд представляет собой расстояние на
	экране; задает значение поля x
	события. Параметр имеет смысл для событий
	KeyPress, KeyRelease,
	ButtonPress, ButtonRelease,
	Enter, Leave,
	Motion, Expose,
	Configure, Gravity и
	Reparent. Параметр соответствует подстановке
	%x для скриптов привязки.
- -y коорд
- Параметр коордпредставляет собой расстояние на
	экране; задает значение поля y
	события. Параметр имеет смысл для событий
	KeyPress, KeyRelease,
	ButtonPress, ButtonRelease,
	Enter, Leave,
	Motion, Expose,
	Configure, Gravity и
	Reparent. Параметр соответствует подстановке
	%y для скриптов привязки.
Значением всякого параметра, не указанного при генерации
      события, становится 0, за исключением параметра
      serial, которому присваивается серийный номер
      очередного X события.
    ПРИМЕРЫ ВИРТУАЛЬНЫХ СОБЫТИЙ
    Для обращения к привязке к виртуальному событию необходимо
      выполнение двух условий. Во-первых, это виртуальное событие
      должно быть определено командой event
      add. Во-вторых, к этому виртуальному событию должна
      быть создана привязка с помощью команды bind.
    
    Рассмотрим следующие определения виртуальных событий:
    
      event add <<Paste>> <Control-y>
      event add <<Paste>><Button-2>
      event add <<Save>> <Control-X><Control-S>
      event add <<Save>> <Shift-F12>
    
    В команде bind привязка к виртуальным событиям
      осуществляется так же, как и ко встроенным типам событий:
    
      bind Entry <<Paste>> {%W insert[selection get]}
    
    Двойные угловые скобки показывают, что выполняется привязка к
      виртуальному событию. При нажатии клавиш
      Control-y или кнопки 2 .Мыши. или при
      синтезировании виртуального события
      <<Paste>> командой event
      generate будет выполнена привязка
      <<Paste>>.
    
    Если последовательность в виртуальном событии в точности
      совпадает с последовательностью в другом физическом событии, то
      преимуществом пользуется физическое событие. Рассмотрим
      следующий пример:
    
      event add <<Paste>> <Control-y> <Meta-Control-y>
      bind Entry <Control-y> {puts Control-y}
      bind Entry <<Paste>> {puts Paste}
    
При нажатии на клавиши Control-y будет
      выполнена привязка <Control-y>, так как
      физическое событие считается более конкретным, чем виртуальное,
      а в остальном все одинаково. Однако при нажатии клавиш
      Meta-Control-y будет выполнена привязка
      <<Paste>>, так как модификатор
      Meta в физическом образце, связанном с
      виртуальной привязкой, более конкретен, чем последовательность
      <Control-y> для физического события.
    Привязки к виртуальному событию можно создавать и до
      определения самого события. На самом деле определение
      виртуального события не является необходимым, например, на
      платформах, где конкретное виртуальное событие может оказаться
      бессмысленным или не генерируемым.
    При изменении определения виртуального события в процессе
      выполнения все окна немедленно переключаются на новое
      определение. Если, в условиях предыдущего примера, выполнить
      команды
    
      bind <Entry> <Control-y> {}
      event add <<Paste>> <Key-F6>
    
    то поведение события изменится в двух направлениях. Во-первых,
      всплывет подавленная привязка
      <<Paste>>. Нажатие на клавиши
      Control-y приведет теперь не к выполнению
      привязки <Control-y>, а к выполнению
      виртуального события <<Paste>>.
      Во-вторых, нажатие на клавишу F6 также приведет
      к выполнению привязки <<Paste>>.
    
Если последовательность не связана с данным
      виртуальным событием в текущий момент, то она
      игнорируется. Если аргумент последовательность
      отсутствует, то из списка удаляются все последовательности
      физических событий и данное виртуальное событие не
      может быть более осуществлено.
    
      event generate окно событие параметр значение параметр значение ...
    
    Генерирует событие в окне и обеспечивает его обработку таким
      образом, как если бы оно поступило из менеджера окон. Аргумент
      окно задает имя пути окна, в котором будет
      генерироваться событие; его значением может быть и идентификатор
      окна (такой же, какой служит результатом команды winfo
      id), если он относится к окну в текущем
      приложении. Аргумент событие задает описание события,
      например, в виде <Shift-Button-2> или
      <<Paste>>. Аргумент
      событие может принимать любое значение, допустимое для
      аргумента последовательность команды
      bind, за исключением того, что он должен
      состоять из одного, а не из нескольких событий. Пары
      параметр-значение можно использовать для установки
      значений дополнительных параметров события, например, координат
      курсора "Мыши" ниже (см. "ПОЛЯ СОБЫТИЯ"). Если
      параметр -when не задан, то событие
      обрабатывается немедленно; все программы обработки события будут
      выполнены до завершения команды event
      generate. В противном случае момент обработки
      определяется значением параметра -when.
    
      event info <<виртуальное>>
    
    Возвращает информацию о виртуальных событиях. Если аргумент
      <<виртуальное>>
      опущен, то возвращается список всех виртуальных событий,
      определенных в текущий момент. Если аргумент
      <<виртуальное>>
      задан, то возвращаемое значение представляет собой список,
      элементы которого являются последовательностями физических
      событий, связанными с данным виртуальным событием; если
      указанное виртуальное событие не определено, то команда
      возвращает пустую строку.