Команды для привязки клавиш
В этом разделе описаны некоторые удобные интерактивные интерфейсы для изменения привязок клавиш. Они работают, вызывая keymap-set (см. Изменение привязок клавиш). При интерактивном использовании эти команды запрашивают аргумент key и ожидают, что пользователь введёт допустимую последовательность клавиш; они также запрашивают binding для последовательности клавиш и ожидают имя команды (то есть символ, удовлетворяющий commandp; см. Интерактивный вызов). При вызове из Lisp эти команды ожидают, что key будет строкой, удовлетворяющей key-valid-p (см. Последовательности клавиш), а binding — любым объектом Lisp, имеющим смысл в карте клавиш (см. Поиск клавиш).
Для простой настройки часто используют keymap-global-set в своих файлах инициализации (см. Файл инициализации). Например:
(keymap-global-set "C-x C-\\" 'next-line)
переназначает C-x C-\ на переход на строку ниже.
(keymap-global-set "M-<mouse-1>" 'mouse-set-point)
переназначает первую (самую левую) кнопку мыши, нажатую вместе с клавишей Meta, на установку точки в месте щелчка.
Будьте осторожны при использовании не-ASCII-символов текста в спецификациях Lisp для привязываемых клавиш. Если они считываются как многобайтный текст, как обычно происходит в файле Lisp (см. Загрузка символов не из ASCII), вводить клавиши тоже нужно в многобайтном виде. Например, если использовать следующее:
(keymap-global-set "ö" 'my-function) ; bind o-umlaut
и ваша языковая среда использует многобайтный Latin-1, эти команды фактически привязывают многобайтный символ с кодом 246, а не байтовый код 246 (M-v), передаваемый терминалом Latin-1. Чтобы использовать эту привязку, нужно научить Emacs декодировать ввод с клавиатуры, применив подходящий метод ввода (см. Методы ввода в Руководстве GNU Emacs).
- Команда: keymap-global-set key binding
-
Эта функция устанавливает привязку key в текущей глобальной карте клавиш к binding.
(keymap-global-set key binding) ≡ (keymap-set (current-global-map) key binding)
- Команда: keymap-global-unset key
-
Эта функция удаляет привязку key из текущей глобальной карты клавиш.
Эту функцию можно использовать перед определением более длинной клавиши, в которой key используется как префикс: такое определение было бы невозможно, если бы у key уже имелась привязка, не являющаяся префиксной. Например:
(keymap-global-unset "C-l") ⇒ nil(keymap-global-set "C-l C-l" 'redraw-display) ⇒ nil
- Команда: keymap-local-set key binding
-
Эта функция устанавливает привязку key в текущей локальной карте клавиш к binding.
(keymap-local-set key binding) ≡ (keymap-set (current-local-map) key binding)
- Команда: keymap-local-unset key
Эта функция удаляет привязку key из текущей локальной карты.
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-Binding-Commands.html