Подтвердить что ты не робот

Сделать ключ в качестве другого ключа

Я хочу, чтобы определенные клавиши и комбинации клавиш могли вести себя как другие клавиши или комбинации клавиш в Emacs. Например, я хочу, чтобы F5 вел себя как заменитель C-c для каждой возможной комбинации, связанной с ней, или C-S- как C-. Можно ли это сделать без ручного перебора всех таких комбинаций клавиш?

4b9b3361

Ответ 1

Ключи, к которым вы обращаетесь, называются "префиксными ключами". Ключ префикса имеет свою собственную раскладку, поэтому для того, чтобы другой ключ делал то же самое, вам нужно назначить его той же раскладке. Для управления-c вы используете mode-specific-map:

(global-set-key (kbd "<f5>") mode-specific-map)

Элемент управления сам по себе не является префиксным ключом или вообще не является ключом, поскольку он не отправляет нажатие клавиши Emacs [1], пока вы не нажмете другой ключ. Я не уверен, как переназначить C-S- на C- в Emacs. Вы можете сделать это в системе с помощью xmodmap, но это, вероятно, не то, что вы хотите.

[1] контрольная клавиша (и shift, alt) действительно отправляет нажатие клавиши в операционную систему, но Emacs не видит это, если не будет нажата еще одна клавиша в то же время

Ответ 2

Я предпочитаю

(define-key key-translation-map [f5] (kbd "\C-c"))

Вот хороший ресурс.

Подводя итог приведенной выше ссылке: Недостатком глобального набора ключей является то, что при определении комбинации клавиш для ввода символа он не работает в isearch.

key-translation-map также имеет проблему. Представьте, что вы определили символ | для выполнения команды и C-| для ввода символа |, нажатие C-| выполнит команду.