Spec-Zone.ru › Elisp

Последовательности клавиш

Последовательность клавиш, или, сокращённо, клавиша, — это последовательность из одного или нескольких событий ввода, образующих единое целое. К событиям ввода относятся символы, функциональные клавиши, действия мыши или системные события, внешние по отношению к Emacs, например iconify-frame (см. События ввода). Представлением последовательности клавиш в Emacs Lisp является строка или вектор. Если не указано иное, любая функция Emacs Lisp, принимающая последовательность клавиш в качестве аргумента, может работать с обоими представлениями.

В строковом представлении буквенно-цифровые символы обычно обозначают сами себя; например, "a" обозначает a, а "2" обозначает 2. События управляющих символов предваряются подстрокой "\C-", а метасимволов — "\M-"; например, "\C-x" обозначает клавишу C-x. Кроме того, события TAB, RET, ESC и DEL представляются соответственно как "\t", "\r", "\e" и "\d". Строковое представление полной последовательности клавиш — это конкатенация строковых представлений составляющих её событий; таким образом, "\C-xl" обозначает последовательность клавиш C-x l.

Последовательности клавиш, содержащие функциональные клавиши, события кнопок мыши, системные события или символы, не относящиеся к ASCII, такие как C-= или H-a, нельзя представить в виде строк; для них необходимо использовать векторы.

В векторном представлении каждый элемент вектора обозначает событие ввода в его форме Lisp. См. События ввода. Например, вектор [?\C-x ?l] обозначает последовательность клавиш C-x l.

Примеры последовательностей клавиш в строковом и векторном представлениях см. в разделе Переназначение при инициализации в Руководстве GNU Emacs.

Функция: kbd keyseq-text

Эта функция преобразует текст keyseq-text (строковую константу) в последовательность клавиш (строковую или векторную константу). Содержимое keyseq-text должно использовать тот же синтаксис, что и буфер, вызываемый командой C-x C-k RET (kmacro-edit-macro); в частности, имена функциональных клавиш необходимо заключать в ‘<…>’. См. раздел Редактирование макроса клавиатуры в Руководстве GNU Emacs.

(kbd "C-x") ⇒ "\C-x"
(kbd "C-x C-f") ⇒ "\C-x\C-f"
(kbd "C-x 4 C-f") ⇒ "\C-x4\C-f"
(kbd "X") ⇒ "X"
(kbd "RET") ⇒ "^M"
(kbd "C-c SPC") ⇒ "\C-c "
(kbd "<f1> SPC") ⇒ [f1 32]
(kbd "C-M-<down>") ⇒ [C-M-down]

Функция kbd весьма снисходительна и постарается вернуть разумный результат, даже если использованный синтаксис не вполне соответствует правилам. Чтобы проверить, действительно ли синтаксис допустим, воспользуйтесь функцией key-valid-p.

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/Key-Sequences.html

Spec-Zone.ru

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