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.
Respostas:
Esses códigos hexadecimais são apenas sequências de bytes. Por exemplo o mapeamento de uma combinação de teclas para
0x66 0x6f 0x6f
tornaria inserirfoo
.0xc3 0xa4
insira ä se você usar UTF-8.0x1b 0x1b 0x5b 0x43
meiosescape 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):
Você pode fazer ⌥⌦ excluir uma palavra para a frente, atribuindo-a a
\ed
:Alterar ⌥ ← e ⌥ → para
\eb
e\ef
nas 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 :Você pode executar
read
e pressionar combinações de teclas para ver quais caracteres eles inserem. Por exemplo, ⌥ ← insere^[^[[D
por padrão, onde^[
é escape na notação de sinal de intercalação .Veja também http://code.google.com/p/iterm2/wiki/Keybindings .
fonte
Ctrl+Alt+<char>
com<char>
sendoi
,j
,k
,l
eu
)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 (⌦
),…Abra o aplicativo e pressione
Ctrl-D
De volta ao iTerm 2, adicione o atalho Unicode em iTerm> Preferências> Chaves
Nota: Não copie e cole, basta digitar o Unicode sem espaços.
fonte
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 0x4
onde0x840101
está 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.
fonte
Confira Karabiner .
Nesta ferramenta, você pode criar mapeamentos personalizados importantes, específicos para aplicativos. Ele vem com algumas ferramentas para ajudar nisso.
fonte