Исторически Emacs поддерживал несколько различных синтаксисов для
определения клавиш. Документированный способ привязки клавиш на сегодняшний день — это
использование синтаксиса, поддерживаемого key-valid-p, который используется всеми
функциями, такими как keymap-set и keymap-lookup. В этом
разделе документируются устаревшие синтаксис и интерфейсные функции;
их не следует использовать в новом коде.
define-key (и другие низкоуровневые функции, используемые для
переназначения клавиш) понимают несколько различных синтаксисов для клавиш.
Можно использовать список, содержащий имена модификаторов плюс одно базовое событие (символ
или имя клавиши-функции). Например, [(control ?a) (meta b)] эквивалентно C-a M-b, а [(hyper control left)] эквивалентно C-H-left.
Внутренне последовательности клавиш часто представляются в виде строк с использованием
специальных escape-последовательностей для модификаторов shift, control и meta
(см. Тип строка), но это представление также может использоваться
пользователями при переназначении клавиш. Строка вида "\M-x" читается как
содержащая одну клавишу M-x, "\C-f" читается как содержащая
одну клавишу C-f, а "\M-\C-x" и "\C-\M-x" обе
читаются как содержащие одну клавишу C-M-x.
Это другое внутреннее представление последовательностей клавиш. Оно поддерживает более полный набор модификаторов, чем строковое представление, а также поддерживает клавиши-функции. Пример: ‘[?\C-\H-x home]’, который представляет последовательность клавиш C-H-x home. См. Тип символ.
Эта функция подобна keymap-set (см. Изменение привязок клавиш), но понимает только устаревшие синтаксисы клавиш.
Кроме того, эта функция также имеет аргумент remove. Если он не равен
nil, определение будет удалено. Это почти то же самое,
что и установка определения в nil, но имеет значение,
если keymap имеет родителя, и key затеняет ту же
привязку в родителе. С remove последующие поиски будут
возвращать привязку из родителя, тогда как с определением nil
поиски будут возвращать nil.
Ниже приведены другие устаревшие функции и команды определения клавиш, а также эквивалентные современные функции, которые следует использовать вместо них в новом коде.
Эта функция устанавливает привязку key в текущей глобальной карте
в binding. Вместо неё используйте keymap-global-set.
Эта функция удаляет привязку key из текущей
глобальной карты. Вместо неё используйте keymap-global-unset.
Эта функция устанавливает привязку key в текущей локальной
карте в binding. Вместо неё используйте keymap-local-set.
Эта функция удаляет привязку key из текущей
локальной карты. Вместо неё используйте keymap-local-unset.
Эта функция заменяет olddef на newdef для любых клавиш в
keymap, которые были привязаны к olddef. Другими словами,
olddef заменяется на newdef везде, где он встречается. Функция
возвращает nil. Вместо неё используйте keymap-substitute.
Определяет привязку в map для key со значением binding,
так же как define-key, но размещает привязку в map после
привязки для события after. Аргумент key должен быть
длины один — вектор или строка с одним элементом. Но
after должен быть одиночным типом события — символом или символом, а не
последовательностью. Новая привязка помещается после привязки для after. Если
after равен t или опущен, то новая привязка помещается последней, в конец
карты. Однако новые привязки добавляются перед любой
унаследованной картой. Вместо этой функции используйте keymap-set-after.
Эта функция изменяет keyboard-translate-table, чтобы транслировать
код символа from в код символа to. Она создаёт
таблицу трансляции клавиатуры при необходимости. Вместо неё используйте key-translate.
Эта функция возвращает привязку для key согласно
текущим активным картам. Результат — nil, если key
не определена в картах. Аргумент accept-defaults управляет
проверкой привязок по умолчанию, как в lookup-key
(см. Функции для поиска клавиш). Если no-remap не равен
nil, key-binding игнорирует переопределения команд
(см. Переопределение команд) и возвращает привязку, непосредственно
заданную для key. Необязательный аргумент position должен
быть либо позицией в буфере, либо позицией события, например значением
event-start; он указывает функции использовать карты,
определяемые на основе этой position.
Emacs сигнализирует об ошибке, если key не является строкой или вектором.
Вместо этой функции используйте keymap-lookup.
Эта функция возвращает определение key в keymap. Если строка или вектор key не являются допустимой последовательностью клавиш согласно префиксным клавишам, заданным в keymap, то она слишком длинна и имеет лишние события в конце, которые не помещаются в одну последовательность клавиш. Тогда значением является число — количество событий в начале key, которые составляют полную клавишу.
Если accept-defaults не равен nil, то lookup-key
учитывает привязки по умолчанию наравне с привязками для конкретных событий
в key. В противном случае lookup-key сообщает только о привязках для
конкретной последовательности key, игнорируя привязки по умолчанию, кроме
случая, когда вы явно запрашиваете их.
Вместо этой функции используйте keymap-lookup.
Эта функция возвращает привязку для key в текущей
локальной карте или nil, если она там не определена.
Аргумент accept-defaults управляет проверкой привязок по умолчанию,
как в lookup-key (выше).
Вместо этой функции используйте keymap-local-lookup.
Эта функция возвращает привязку для команды key в
текущей глобальной карте или nil, если она там не определена.
Аргумент accept-defaults управляет проверкой привязок по умолчанию,
как в lookup-key (выше).
Вместо этой функции используйте keymap-global-lookup.
Эта функция преобразует список имён модификаторов и базовый тип события в тип события, который задаёт их все. Базовый тип события должен быть последним элементом списка. Например,
(event-convert-list '(control ?a))
⇒ 1
(event-convert-list '(control meta ?a))
⇒ -134217727
(event-convert-list '(control super f1))
⇒ C-s-f1