Клавишные события
Существует два типа ввода с клавиатуры: обычные клавиши и функциональные клавиши. Обычные клавиши соответствуют (возможно, модифицированным) символам; события, которые они генерируют, в Lisp представлены как символы. Тип события символьного события — это сам символ (целое число), для которого могут быть установлены некоторые модификаторы; см. Классификация событий.
Событие ввода символа состоит из базового кода от 0 до 524287, а также любого или всех этих модификаторов:
- meta
-
Бит 227 в коде символа указывает, что символ набран при зажатой клавише meta.
- control
-
Бит 226 в коде символа указывает на не-ASCII управляющий символ.
ASCII управляющие символы, такие как C-a, имеют собственные специальные базовые коды, поэтому Emacs не нуждается в специальном бите для их обозначения. Таким образом, код для C-a — это просто 1.
Однако, если вы набираете комбинацию управления, которая не содержится в ASCII, например, % с зажатой клавишей управления, то полученное числовое значение будет кодом для % плюс 226 (при условии, что терминал поддерживает не-ASCII управляющие символы), т. е. с установленным 27-м битом.
- shift
-
Бит 225 (26-й бит) в коде события символа указывает на ASCII управляющий символ, набранный с зажатой клавишей shift.
Для букв базовый код сам по себе указывает на заглавные или строчные буквы; для цифр и знаков препинания клавиша shift выбирает совершенно другой символ с другим базовым кодом. Для того чтобы оставаться в пределах набора символов ASCII по возможности, Emacs избегает использования бита 225 для этих событий символов.
Однако ASCII не предоставляет способа отличить C-A от C-a, поэтому Emacs использует бит 225 в C-A, а не в C-a.
- hyper
-
Бит 224 в коде события символа указывает на символ, набранный с зажатой клавишей hyper.
- super
-
Бит 223 в коде события символа указывает на символ, набранный с зажатой клавишей super.
- alt
Бит 222 в коде события символа указывает на символ, набранный с зажатой клавишей alt. (Клавиша с надписью Alt на большинстве клавиатур фактически обрабатывается как клавиша meta, а не как эта).
Лучше всего избегать упоминания конкретных номеров битов в вашей программе. Для проверки битов модификаторов символа используйте функцию event-modifiers (см. Классификацию событий). При создании привязок клавиш вы можете использовать синтаксис чтения для символов с битами модификаторов (‘\C-’, ‘\M-’ и т. д.). Для создания привязок клавиш с помощью define-key, вы можете использовать списки, такие как (control hyper ?x), для указания символов (см. Изменение привязок клавиш). Функция event-convert-list преобразует такой список в тип события (см. Классификацию событий).
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Keyboard-Events.html