O comportamento de C-m
, C-i
, etc. é implementado por bash, mas o fato de que eles são a mesma coisa que Retorna , Tab , etc. é devido ao comportamento do terminal. Todos os terminais se comportam assim porque todos os terminais sempre se comportaram assim e é o que as aplicações esperam. A interface entre um terminal e um aplicativo é baseada em caracteres (na verdade, bytes), não em chaves, portanto, chaves que não enviam caracteres imprimíveis e combinações de teclas precisam ser codificadas de alguma forma. Consulte Como a entrada de teclado e a saída de texto funcionam? para mais sobre este assunto. Consulte também link
TAB
é o caractere de tabulação em ASCII , e é a mesma coisa que o caractere Ctrl + I em ASCII . Da mesma forma para as outras chaves. Os terminais enviam esse caractere quando o usuário pressiona a tecla Tab e quando o usuário pressiona Ctrl + I . Idem para RET
(CR) e C-m
, para LFD
e C-j
(que a maioria dos teclados não possui) e para ESC
e C-[
. Há também BackSpace que envia C-h
ou C-?
, o que é um problema.
A configuração do terminal ( stty
settings) também pode ser usada, e isso afeta algumas das configurações do bash (por exemplo, após stty erase @
, o bash tratará pressionando @
como BackSpace), mas não C-m
e C-j
para enviar a linha atual.
^[[D
é Esc [ D , mas com um% mai D
. Se você pressionar Esc [ D , o bash verá a tecla Esquerda , devido à declaração das seqüências de escape da chave do cursor no termcap ou terminfo banco de dados. Não há nenhuma ligação padrão para Esc [ d (não é uma seqüência de escape que os terminais comuns enviam).