Классификация событий
У каждого события есть тип события, который используется для классификации события при привязке клавиш. Для события клавиатуры тип события совпадает со значением события; таким образом, тип события для символа — это сам символ, а для символа функциональной клавиши — сам символ клавиши. Для событий, представляющих собой списки, типом события является символ в CAR списка. Таким образом, тип события всегда является символом или символом-литерой.
С точки зрения привязок клавиш два события одного типа эквивалентны; следовательно, они всегда запускают одну и ту же команду. Однако это не обязательно означает, что они выполняют одно и то же, поскольку некоторые команды анализируют событие целиком, чтобы определить, что делать. Например, некоторые команды используют положение события мыши, чтобы определить, где в буфере выполнять действие.
Иногда полезно классифицировать события более широко. Например, может потребоваться выяснить, использовалась ли клавиша META, независимо от того, какая другая клавиша или кнопка мыши была нажата.
Для удобного получения таких сведений предусмотрены функции event-modifiers и event-basic-type.
- Функция: event-modifiers event
-
Эта функция возвращает список модификаторов, имеющихся у event. Модификаторы — это символы; к ним относятся
shift,control,meta,alt,hyperиsuper. Кроме того, список модификаторов события мыши всегда содержит один из символовclick,dragиdown. Для двойных и тройных событий он также содержитdoubleилиtriple.Аргументом event может быть весь объект события или только тип события. Если event — это символ, который ни разу не использовался в событии, прочитанном в качестве ввода в текущем сеансе Emacs, то
event-modifiersможет вернутьnil, даже если у event фактически есть модификаторы.Примеры:
(event-modifiers ?a) ⇒ nil (event-modifiers ?A) ⇒ (shift) (event-modifiers ?\C-a) ⇒ (control) (event-modifiers ?\C-%) ⇒ (control) (event-modifiers ?\C-\S-a) ⇒ (control shift) (event-modifiers 'f5) ⇒ nil (event-modifiers 's-f5) ⇒ (super) (event-modifiers 'M-S-f5) ⇒ (meta shift) (event-modifiers 'mouse-1) ⇒ (click) (event-modifiers 'down-mouse-1) ⇒ (down)Список модификаторов события щелчка явно содержит
click, но само имя символа события не содержит «click». Аналогично, список модификаторов управляющего символа ASCII, например «C-a», содержитcontrol, хотя чтение такого события с помощьюread-charвернёт значение 1 с удалённым битом модификатора Control.
- Функция: event-basic-type event
-
Эта функция возвращает клавишу или кнопку мыши, описываемую event, без каких-либо модификаторов. Аргумент event имеет то же значение, что и в
event-modifiers. Например:(event-basic-type ?a) ⇒ 97 (event-basic-type ?A) ⇒ 97 (event-basic-type ?\C-a) ⇒ 97 (event-basic-type ?\C-\S-a) ⇒ 97 (event-basic-type 'f5) ⇒ f5 (event-basic-type 's-f5) ⇒ f5 (event-basic-type 'M-S-f5) ⇒ f5 (event-basic-type 'down-mouse-1) ⇒ mouse-1
- Функция: mouse-movement-p object
Эта функция возвращает значение, отличное от
nil, если object является событием перемещения мыши. См. раздел События перемещения.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Classifying-Events.html