Que tal uma tecla Bloqueio de controle ?
Um obstáculo para um equivalente completo ao Controle é que ele precisaria saber quando foi mantido pressionado e quando foi liberado. Os eventos de teclado do Emacs (ao contrário dos eventos de mouse) não são divididos em partes 'para baixo' e 'para cima', o que torna 'liberado' para nós detectarmos lá. Por exemplo, a única diferença significativa entre C-x C-o e C-xo é o evento 'control-up' antes do segundo caractere. No entanto, isso é apenas um problema se você 'soltar' parte de uma sequência de teclas
O método aqui permite ligar qualquer tecla como Bloqueio de controle dentro do Emacs. Eu também incluí algumas soluções fáceis para seqüências de teclas que liberam a tecla Control na metade.
O código a seguir fornece uma ligação 'Control Lock', que mantém pressionado o modificador para uma sequência de teclas inteira. O exemplo abaixo vincula isso a ö , mas você pode vinculá-lo a qualquer coisa que desejar.
(defun read-control-sequence (prompt)
(let (keys)
(setq extra-keyboard-modifiers ?\C-a)
(setq keys (read-key-sequence-vector (or prompt "[Control lock]")))
(setq extra-keyboard-modifiers 0)
keys))
(define-key key-translation-map [?ö] 'read-control-sequence)
Para usar isto, simplesmente pressione (e solte) ö . A próxima tecla agirá como se control fosse pressionado. Se a chave que você digitou era uma chave de prefixo (por exemplo, você pressionou x para obter Cx ) então o control permanecerá pressionado para a próxima chave, e assim por diante até você pressionar uma tecla sem prefixo.
Se você usa muito isso, você também pode querer adicionar ligações em seu .emacs
para comandos comuns que não 'soltam' o controle no meio do caminho. Por exemplo, isso:
(global-set-key (kbd "C-x C-4")
(lookup-key (current-global-map)
(kbd "C-x 4")))
fará com que todos os comandos que estão iniciando Cx 4 também estejam disponíveis em Cx C-4 , de modo que digitar ö x 4 f execute find-file-other-window
.
Você também pode achar útil adicionar um mapeamento (por exemplo, capital Ö ) apenas para fornecer um C-x autônomo:
(define-key key-translation-map [?Ö] [(control ?x)])
Todo o código acima pode ser instalado (como de costume) adicionando-o ao seu arquivo .emacs
e reiniciando o Emacs, ou digitando C-x C-e após cada expressão de nível superior. Você deve descobrir que essa abordagem se integra com o resto do Emacs mais ou menos perfeitamente.