Использование функциональных клавиш в качестве «липких» клавиш-модификаторов

10

Есть ли способ использовать функциональную клавишу (например <f8>) как своего рода событие нажатия супер-клавиши, а затем выполнить следующее нажатие клавиши (например, с) как s-s? Другими словами, это будет похоже на липкие клавиши-модификаторы, но только для emacs, а не для самой ОС.

Я знаю о режиме клавишных аккордов и о том, что вы можете использовать такие комбинации клавиш (global-set-key (kbd "<f8> b t") 'undo)для сохранения сочетаний клавиш. Но я бы хотел что-то, что работает с моими существующими привязками к супер ключу и не требует, чтобы я связывал все дважды в будущем (т.е. одну привязку для суперключа и одну для функциональной клавиши).

Var87
источник

Ответы:

14

Если ваш рабочий процесс:

  1. Пресс и релиз F8
  2. Нажмите и отпустите s, ожидайте, что это вызовет привязку дляs-s
  3. Какая бы клавиша не нажималась впоследствии, sмодификатор не будет иметь значения , если вы не нажмете F8снова

тогда эта особенность существует в самом Emacs . По C-x @ sумолчанию он привязан (явно предназначен только для очень редкого использования). Команда event-apply-super-modifier(существуют аналогичные функции для control, shift, meta, altи hyper). По умолчанию используются привязки function-key-map, которые переопределяются привязками в глобальных или локальных таблицах ключей. Вы можете использовать key-translation-mapвместо этого, если хотите использовать модификатор apply, который имеет приоритет.

(define-key function-key-map [f8] 'event-apply-super-modifier)
Жиль "ТАК - перестань быть злым"
источник
Больше причин любить Emacs!
А. Метель