Spec-Zone.ru › Elisp

Команды для привязки клавиш

В этом разделе описаны некоторые удобные интерактивные интерфейсы для изменения привязок клавиш. Они работают, вызывая 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

Spec-Zone.ru

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