2012-05-04 4 views
13

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

ответ

8

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

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

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

[1] ключ управления (и сдвиг, альт) пошлите нажатие клавиши к операционной системе, но Emacs не «видит» это, если нет другого нажата клавиша одновременно

+1

+1, но ... * «Управление само по себе не является префиксным ключом или действительно ключом, поскольку он не отправляет нажатие клавиши« * ... Управление определенно действительно посылает нажатие клавиши самостоятельно , Вы можете использовать, скажем, * xev * под Linux, чтобы это увидеть. Он посылает нажатие клавиши и нажатия клавиши, когда вы отпускаете ее. A * xev * output для CTRL в моей системе дает: * Событие KeyPress eventKeyPress ... состояние 0x14, keycode 37 (keysym 0xffe3, Control_L) ... * и т. Д. Я вроде бы спорю, что вы написали, что элемент управления не «действительно ключ вообще ". Переключить CTRL и CAPS-LOCK на клавиатуре, чтобы действовать как CTRL, нужно обидеть;) – TacticalCoder

+1

@TacticalCoder: справедливая точка, насколько это касается X. Но я не думаю, что keypress, зарегистрированный X, виден Emacs сам по себе. В любом случае Emacs не может обнаружить или ответить на ключ модификатора, если он не модифицирует другой ключ. Таким образом, с точки зрения Emacs, CTRL сам по себе не является ключом, пока он не будет объединен с другим ключом. – Tyler

5

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

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

Адрес good resource.

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

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

Смежные вопросы