Spec-Zone.ru › Elisp

Клавишные события

Существует два типа ввода с клавиатуры: обычные клавиши и функциональные клавиши. Обычные клавиши соответствуют (возможно, модифицированным) символам; события, которые они генерируют, в 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API