Remapeando chaves no iterm2

15

Estou tentando remapear algumas das combinações de teclas padrão no iTerm2 e gostaria de entender o que está acontecendo quando vinculo as teclas a "Enviar códigos hexadecimais".

Uma postagem anterior me ajudou a começar a remapear os combos de teclas ctrl-a e ctrl-e para cmd-left e cmd-right, respectivamente, mas eu gostaria de remapear outros combos de teclas também. ( Link para a postagem anterior do Stackoverflow ).

Tenho um entendimento vago de que há códigos hexadecimais envolvidos, mas estou em um ponto em que não consigo descobrir para onde ir para entender o que está acontecendo ou o que fazer.

Comunidade
fonte
Não tem nada a ver com o bash. Etiqueta removida.

Respostas:

16

Esses códigos hexadecimais são apenas sequências de bytes. Por exemplo o mapeamento de uma combinação de teclas para 0x66 0x6f 0x6ftornaria inserir foo. 0xc3 0xa4insira ä se você usar UTF-8. 0x1b 0x1b 0x5b 0x43meios escape escape [ C.

Algumas seqüências de bytes, como seqüências de escape ANSI, e até mesmo bytes únicos, como caracteres de controle ASCII, têm significados especiais nos terminais.

Para fazer ⌘ ← e ⌘ → ir para o início e o fim da linha, você pode atribuí-los a 0x01 (^ A na notação de intercalação) e 0x05 (^ E na notação de intercalação):

  • ⌘ ←: Enviar códigos hexadecimais: 0x01
  • ⌘ →: Enviar códigos hexadecimais: 0x05

Você pode fazer ⌥⌦ excluir uma palavra para a frente, atribuindo-a a \ed:

  • Send: Enviar ^ [d

Alterar ⌥ ← e ⌥ → para \ebe \efnas preferências do iTerm também os alteraria em programas que não suportam atalhos de teclado no estilo readline ou emacs. Outra opção é adicionar isso ao ~ / .inputrc :

"\e\e[D": backward-word
"\e\e[C": forward-word

Você pode executar reade pressionar combinações de teclas para ver quais caracteres eles inserem. Por exemplo, ⌥ ← insere ^[^[[Dpor padrão, onde ^[é escape na notação de sinal de intercalação .

Veja também http://code.google.com/p/iterm2/wiki/Keybindings .

Lri
fonte
Obrigado. Encontro essa resposta ao procurar uma solução para minha pergunta aqui . Como posso procurar o código hexadecimal para uma combinação de teclas específica? (no meu caso eu estou interessado nas combinações Ctrl+Alt+<char>com <char>sendo i, j, k, le u)
Amelio Vazquez-Reina
6

Sugiro instalar os códigos-chave (US $ 0) pelo Many Tricks e descobrir os atalhos por si mesmo.

Por exemplo, se você deseja remapear o atalho padrão para (encaminhar) excluir um caractere - que é Ctrl-D ( ⌃D) - para ser tão simples quanto pressionar a tecla de encaminhamento ( ),…

  1. Abra o aplicativo e pressione Ctrl-D

    Exemplo de códigos-chave

  2. De volta ao iTerm 2, adicione o atalho Unicode em iTerm> Preferências> Chaves

    iTerm Enviar códigos hexadecimais

Nota: Não copie e cole, basta digitar o Unicode sem espaços.

patrick
fonte
2

A melhor maneira que encontrei foi enviando códigos de teclas (conforme descrito por @pattulus ou usando ligações de teclas vim.

Nota sobre códigos de chave: Na verdade, você não pode fazê-lo funcionar enviando a cadeia de caracteres unicode conforme descrito acima, você precisa enviar o modificador e a chave para obter no caso de Control+, Dvocê precisa enviar isso como código: 0x840101 0x4onde 0x840101está o modificador de chave de controle e pode ser obtido através do Key Code .

Nota sobre o envio como sequência do vim : Conforme descrito na documentação do iTerm2 , você pode enviar um código-chave no formato de ligações do vim, como \<C-d>no envio de Control+ D(observe que \é importante).

Pessoalmente, prefiro a ligação de chaves do vim porque é mais legível e mais tarde você entenderá o que fez.

ExistMe
fonte
1

Confira Karabiner .

Nesta ferramenta, você pode criar mapeamentos personalizados importantes, específicos para aplicativos. Ele vem com algumas ferramentas para ajudar nisso.

bdecaf
fonte