Usando teclas de função como teclas modificadoras "adesivas"

10

Existe uma maneira de usar uma tecla de função (como <f8>) como uma espécie de evento de super-tecla pressionada e depois fazer com que o próximo pressionamento de tecla (por exemplo, s) seja interpetado como s-s? Em outras palavras, isso será semelhante às teclas modificadoras, mas apenas para o emacs, não para o próprio sistema operacional.

Eu sei sobre o modo de acordes de teclas e o fato de que você pode usar combinações de teclas como essa (global-set-key (kbd "<f8> b t") 'undo)para salvar atalhos de teclado. Mas eu gostaria de algo que funcione com minhas ligações existentes à super chave e não exija que eu vincule tudo duas vezes no futuro (ou seja, uma ligação para a super chave e outra para a tecla de função).

Var87
fonte

Respostas:

14

Se o seu fluxo de trabalho for:

  1. pressione e solte F8
  2. Pressione e solte s, espere que ele ative a ligação paras-s
  3. Qualquer tecla que você pressionar depois não terá o smodificador, a menos que você pressione F8novamente

então esse recurso existe no próprio Emacs . É vinculado C-x @ spor padrão (claramente destinado apenas para uso muito ocasional). O comando é event-apply-super-modifier(existem funções semelhantes para control, shift, meta, alte hyper). As ligações padrão estão presentes function-key-map, que são substituídas pelas ligações nos mapas de teclas globais ou locais. Você pode usar key-translation-mapse quiser que o significado do modificador de aplicação tenha precedência.

(define-key function-key-map [f8] 'event-apply-super-modifier)
Gilles 'SO- parar de ser mau'
fonte
Mais razões para amar o Emacs!
A. Blizzard