O emulador de terminal traduz eventos como “a tecla Tab foi pressionada” em seqüências de caracteres que o aplicativo em execução no terminal (bash, no seu caso) lê. Consulte Como a entrada de teclado e a saída de texto funcionam? para uma apresentação mais detalhada deste tópico.
Por razões históricas, algumas teclas enviam um caractere que é o mesmo que pressionar Ctrl com outro caractere: Tab = Ctrl + I , Retorna = Ctrl + M , Esc = Ctrl + [. Isso ocorre porque os terminais físicos históricos fizeram isso, portanto, os aplicativos executados nos terminais esperam isso, portanto os terminais fazem isso.
Tanto o Guake como o Gnome-terminal usam a biblioteca VTE , que não permite o mapeamento de acordes chave para sequências de caracteres a serem configuradas. Você tem o mesmo problema que bash - ligações de sequência de chaves erradas com controle + alt + espaço
O Xterm possui atalhos de teclado totalmente configuráveis. Você pode fazer a tecla Tab enviar um caractere de tabulação (que é o padrão), ou fazer com que ela envie a string hello
, ou o que você escolher. O Xterm é configurado através dos recursos X . Por exemplo, para fazer a Tab enviar a seqüência de escape \e[t
quando pressionada e \e]t
quando liberada, coloque isso no seu ~/.Xresources
:
XTerm.vt100.translations: #override \
<Key>Tab: string("3[t") \n\
<KeyRelease>Tab: string("3]t") \n\
Ou talvez você deixe o Tab enviando o caractere de tabulação e faça Ctrl + eu enviar outra coisa:
XTerm.vt100.translations: #override \
Ctrl~Meta~Shift<Key>I: string("3[a5i") \n\
Ctrl~Meta Shift<Key>I: string("3[a6i") \n\
Você pode vincular \e[a5i
ao que você quiser no bash e em outros aplicativos de terminal com atalhos de teclado configuráveis.
Observe que, por convenção, as seqüências de escape de vários caracteres começam com o caractere de escape (geralmente representado como \e
ou 3
ou \x1b
em linguagens de programação e arquivos de configuração); algumas aplicações podem ter problemas com sequências de escape começando com outros personagens, e é claro que você não pode ter um personagem que seja uma seqüência de escape e uma chave própria, a menos que você esteja disposto a aceitar um tempo limite (é assim que funciona aplicações como vi, onde Esc por si só está ligado a alguma funcionalidade). Se você definir suas próprias seqüências de teclas, tome cuidado para não entrar em conflito com aquelas enviadas pelas teclas de função e cursor, que são mais ou menos padronizado de fato .