Spec-Zone.ru › Elisp

События клавиатуры

С клавиатуры можно получить ввод двух видов: обычные клавиши и функциональные клавиши. Обычным клавишам соответствуют символы (возможно, модифицированные); генерируемые ими события представлены в Lisp в виде символов. Тип события символьного события — сам символ (целое число), в котором могут быть установлены некоторые биты-модификаторы; см. Классификация событий.

Событие ввода символа состоит из основного кода в диапазоне от 0 до 524287 и любых или всех следующих битов-модификаторов:

meta

Бит 2**27 в коде символа указывает на символ, введённый при нажатой клавише Meta.

control

Бит 2**26 в коде символа указывает на управляющий символ, не входящий в ASCII.

Управляющие символы ASCII, такие как C-a, имеют собственные специальные основные коды, поэтому Emacs не нужен специальный бит для их обозначения. Таким образом, код C-a — это просто 1.

Но если ввести управляющую комбинацию, не входящую в ASCII, например % с нажатой клавишей Control, полученное числовое значение будет равно коду % плюс 2**26 (при условии, что терминал поддерживает управляющие символы, не входящие в ASCII), то есть будет установлен 27-й бит.

shift

Бит 2**25 (26-й бит) в коде символьного события указывает на управляющий символ ASCII, введённый при нажатой клавише Shift.

Для букв сам основной код указывает, является ли буква строчной или заглавной; для цифр и знаков препинания клавиша Shift выбирает совершенно другой символ с другим основным кодом. Чтобы по возможности оставаться в пределах набора символов ASCII, Emacs не использует бит 2**25 для таких символьных событий.

Однако в ASCII нет способа различить C-A и C-a, поэтому в C-A Emacs использует бит 2**25, а в C-a — нет.

hyper

Бит 2**24 в коде символьного события указывает на символ, введённый при нажатой клавише Hyper.

super

Бит 2**23 в коде символьного события указывает на символ, введённый при нажатой клавише Super.

alt

Бит 2**22 в коде символьного события указывает на символ, введённый при нажатой клавише Alt. (Клавиша с надписью Alt на большинстве клавиатур на самом деле обрабатывается как клавиша Meta, а не как эта клавиша.)

В программах лучше избегать упоминания конкретных номеров битов. Чтобы проверить биты-модификаторы символа, используйте функцию event-modifiers (см. Классификация событий). При создании привязок клавиш с помощью keymap-set указывайте эти события строками, например «C-H-x» (то есть «control hyper x») (см. Изменение привязок клавиш).

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/Keyboard-Events.html

Spec-Zone.ru

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