Spec-Zone.ru › Elisp

Изменение и перевод событий ввода

Emacs изменяет каждое считанное событие в соответствии с extra-keyboard-modifiers, затем переводит его через keyboard-translate-table (если применимо), прежде чем вернуть его из read-event.

Переменная: extra-keyboard-modifiers

Эта переменная позволяет программам Lisp «нажимать» клавиши модификаторов на клавиатуре. Значение — это символ. Важны только модификаторы символа. Каждый раз, когда пользователь нажимает клавишу, она изменяется так, как будто эти клавиши модификаторов удерживаются. Например, если вы свяжете extra-keyboard-modifiers с ?\C-\M-a, то все символы ввода с клавиатуры, введённые в течение действия привязки, будут иметь применённые к ним модификаторы Control и Meta. Символ ?\C-@, эквивалентный целому числу 0, в этой цели не считается символом управления, а символом без модификаторов. Таким образом, установка extra-keyboard-modifiers в ноль отменяет любые изменения.

При использовании оконной системы программа может нажимать любые клавиши модификаторов таким образом. В противном случае могут быть виртуально нажаты только клавиши CTL и META.

Обратите внимание, что эта переменная применяется только к событиям, которые действительно поступают с клавиатуры, и не оказывает никакого влияния на события мыши или любые другие события.

Переменная: keyboard-translate-table

Эта локальная для терминала переменная — это таблица перевода для символов клавиатуры. Она позволяет вам переупорядочивать клавиши на клавиатуре без изменения каких-либо привязок команд. Её значение обычно является таблицей символов, или же nil. (Это также может быть строка или вектор, но это считается устаревшим.)

Если keyboard-translate-table является таблицей символов (см. Таблицы символов), то каждый символ, считанный с клавиатуры, ищется в этой таблице символов. Если найденное там значение не nil, то оно используется вместо фактического входного символа.

Обратите внимание, что этот перевод — первое, что происходит с символом после его считывания из терминала. Функции ведения записей, такие как recent-keys и файлы дрибблинга, записывают символы после перевода.

Обратите также внимание, что этот перевод выполняется до передачи символов методам ввода (см. Методы ввода). Используйте translation-table-for-input (см. Перевод символов), если вы хотите переводить символы после работы методов ввода.

Функция: keyboard-translate from to

Эта функция изменяет keyboard-translate-table для перевода кода символа from в код символа to. Она создаёт таблицу перевода клавиатуры, если необходимо.

Вот пример использования keyboard-translate-table для того, чтобы C-x, C-c и C-v выполняли операции вырезки, копирования и вставки:

(keyboard-translate ?\C-x 'control-x)
(keyboard-translate ?\C-c 'control-c)
(keyboard-translate ?\C-v 'control-v)
(global-set-key [control-x] 'kill-region)
(global-set-key [control-c] 'kill-ring-save)
(global-set-key [control-v] 'yank)

На графическом терминале, поддерживающем расширенный ввод ASCII, вы по-прежнему можете получить стандартные значения Emacs одного из этих символов, набрав его с клавишей Shift. Это делает его другим символом с точки зрения перевода с клавиатуры, но он имеет то же обычное значение.

См. Карты перевода, для механизмов перевода последовательностей событий на уровне read-key-sequence.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Event-Mod.html

Spec-Zone.ru

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