Converter uma chave normal em uma chave modificadora

11

Eu tenho um teclado que, por algum motivo inexplicável, possui uma tecla que envia o símbolo do dólar dinamarquês para o OS X - §. Com shift envia o símbolo de mais / menos - ±.

É possível no Emacs ver a §chave e convertê-la em Hyper ou Super? Então, se eu segurar essa §tecla e pressionar f, ela será ativada H-fno Emacs.

Eu tentei o seguinte, que não funciona:

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

Diz apenas <Hyper> is undefinedao pressionar a tecla e não atua como um modificador.

Isso também não funciona:

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

que apenas transforma a §chave em uma <chave.

Matt Darling
fonte
2
Você deve conseguir fazer isso no nível do sistema operacional, mas não no emacs.
Malabarba 8/11

Respostas:

4

Versão curta : nos termos do Emacs, o que eu realmente precisava era de acordes-chave .


@Malabarba e @XinUmbralis parecem estar certos - o Emacs não permite transformar uma chave normal em uma tecla modificadora normalmente. Eu realmente não gosto da idéia de combinar todas as teclas modificadoras do teclado e chamar isso de "Hyper", porque poderia entrar em conflito com outras coisas no futuro.

Eu já uso o Karabiner e, aparentemente, você pode criar modificadores personalizados com ele. Mas isso requer o mapeamento de todas as combinações no nível do SO, para que, digamos, §-aenvie algo que o Emacs saiba como lidar.

Lembrei-me da biblioteca de acordes de chaves e percebi que essa era a verdadeira terminologia do Emacs para o que eu queria. Exemplo de configuração:

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

O único problema que tenho com o acorde de teclas é que a semântica de um acorde de teclas é um pouco diferente de um modificador + tecla - não há repetição permitida, e todo o acorde deve ser inserido rapidamente.

Se eu encontrar uma solução para esses problemas, vou escrever sobre isso em algum lugar e fornecer um link em uma edição para esta resposta.

Matt Darling
fonte
3

Talvez você não consiga reconectar a tecla de sinal de seção (tecla §) para enviar o comando hyper; no entanto, você pode reconectar a tecla caps-lock para enviar Hyper, usando Seil PCKeyboardHack .

Para religar a tecla caps-lock em Seil, faça o seguinte:

  1. Abra o Seil e clique em 'Alterar a tecla Caps Lock'.
  2. Marque a caixa de seleção ao lado de 'Alterar a tecla maiúscula'.
  3. Clique duas vezes no código e digite o código 80.
graycodes
fonte
1
Essa resposta provavelmente seria melhor como um comentário. Em geral, as respostas devem fazer mais do que fornecer links, em parte porque os links podem desaparecer a qualquer momento. Você poderia editar sua resposta para torná-la mais independente?
Dan
Infelizmente, pelo menos para mim, definir o código-chave para 80 não faz nada.
Marcin