В этом разделе описываются удобные интерактивные интерфейсы для
изменения привязок клавиш. Они работают путем вызова 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) ; привязка o-umlaut
и ваша языковая среда — многобайтовый Latin-1, эти команды фактически привязывают многобайтовый символ с кодом 246, а не байтовый код 246 (M-v), отправленный терминалом Latin-1. Чтобы использовать эту привязку, вам необходимо научить Emacs, как декодировать клавиатуру, используя соответствующий метод ввода (см. Методы ввода в Руководство GNU Emacs).
Эта функция устанавливает привязку key в текущей глобальной карте к binding.
(keymap-global-set key binding) ≡ (keymap-set (current-global-map) key binding)
Эта функция удаляет привязку key из текущей глобальной карты.
Одно из применений этой функции — подготовка к определению более длинной клавиши, использующей key в качестве префикса — что было бы недопустимо, если key имеет привязку, не являющуюся префиксом. Например:
(keymap-global-unset "C-l")
⇒ nil
(keymap-global-set "C-l C-l" 'redraw-display)
⇒ nil
Эта функция устанавливает привязку key в текущей локальной карте клавиш к binding.
(keymap-local-set key binding) ≡ (keymap-set (current-local-map) key binding)
Эта функция удаляет привязку key из текущей локальной карты.