Преобразовать обычный ключ в ключ-модификатор

11

У меня есть клавиатура, которая по какой-то необъяснимой причине имеет клавишу, которая отправляет символ датского доллара в OS X - §. При сдвиге отправляет символ плюс / минус - ±.

Возможно ли в Emacs увидеть §ключ и преобразовать его в Hyper или Super? Поэтому, если я удерживаю эту §клавишу и нажимаю f, она активируется H-fв Emacs.

Я пробовал следующее, которое не работает:

(define-key key-translation-map (kbd "§") (kbd "<Hyper>"))

Он просто говорит <Hyper> is undefinedо нажатии клавиши и вообще не действует как модификатор.

Это также не работает:

(define-key key-translation-map (kbd "§") "<Hyper>")

это просто превращает §ключ в <ключ.

Мэтт Дарлинг
источник
2
Вы должны быть в состоянии сделать это на уровне операционной системы, но не в emacs.
Малабарба

Ответы:

4

Короткая версия : в терминах Emacs мне действительно нужны были ключевые аккорды .


@Malabarba и @XinUmbralis кажутся правы - Emacs не позволяет вам превращать обычный ключ в ключ-модификатор. Мне не очень нравится идея комбинировать каждую клавишу-модификатор на клавиатуре и называть ее «Hyper», потому что в будущем она может конфликтовать с другими вещами.

Я уже использую Karabiner, и, видимо, вы можете создавать собственные модификаторы с ним. Но для этого требуется сопоставить каждую комбинацию на уровне ОС, чтобы, скажем, §-aотправить что-то, что Emacs знает, как с этим справиться.

Затем я вспомнил библиотеку клавишных аккордов и понял, что это настоящая терминология Emacs для того, что я хотел. Пример конфигурации:

(require 'key-chord)
(key-chord-mode 1)
(key-chord-define-global "§a" 'other-frame)

Единственная проблема, которую я имею с key-chord, заключается в том, что семантика key-chord немного отличается от модификатора + key - повторение не допускается, и весь аккорд должен быть введен очень быстро.

Если я придумаю решение этих проблем, я напишу об этом где-нибудь и предоставлю ссылку в редактировании этого ответа.

Мэтт Дарлинг
источник
3

Вы можете и не может быть не в состоянии привязать ключ раздела знак (§ ключ) , чтобы отправить команду гипер, однако вы можете привязать ключ колпачков-блокировки для отправки Hyper, используя SEIL PCKeyboardHack .

Чтобы заново связать ключ caps-lock в Seil, просто сделайте следующее:

  1. Откройте Seil и нажмите «Изменить ключ блокировки колпачков».
  2. Установите флажок «Изменить ключ блокировки заглавных букв».
  3. Дважды щелкните код ключа и введите код ключа 80.
graycodes
источник
1
Этот ответ, вероятно, будет лучше в качестве комментария. В общем, ответы должны делать больше, чем просто давать ссылки, отчасти потому, что ссылки могут исчезнуть в любое время. Не могли бы вы отредактировать свой ответ, чтобы сделать его более автономным?
Дан
К сожалению, по крайней мере для меня, установка кода ключа на 80 ничего не делает.
Марчин