Na verdade, se você digitar um caractere em um terminal, o aplicativo lerá esse caractere.
Bem, mais precisamente, se você digitar um caractere em um terminal, ele será convertido em um ou mais bytes - a maioria dos sistemas Unix modernos usa o UTF-8 codificação de caracteres. O aplicativo lê esses bytes e remonta os caracteres. Isso ainda não é códigos ASCII - ASCII é uma codificação de 7 bits, então todos os caracteres no conjunto de caracteres ASCII cabem em um byte.
Quando você digita uma função ou tecla do cursor como BackSpace , Tab , Retorna , F1 , < kbd> À esquerda , etc., é codificado como um caractere de controle ou um escape de sequência . Existem alguns caracteres de controle que correspondem a teclas de função, como ^ I (valor de byte 9) para Tab e ^ M (valor de byte 13) para Return . A maioria das outras teclas de função envia uma seqüência de escape começando com o caractere de escape (^ [ valor de byte 27).
BackSpace envia um caractere de controle. Por razões históricas, o caractere de controle que ele envia depende do terminal e de sua configuração: pode ser ^ H (valor de byte 8) ou ^? (valor de byte 127). Em muitos terminais modernos, você pode alterar isso na configuração; consulte Como permitir backspaces no modo unbuffered / non-canonical Caso a configuração não seja selecionada automaticamente, você poderá declará-la com stty
.
Para mais informações, consulte Como entrada de teclado e trabalho de saída de texto? e Como fazer um conjunto abrangente de possibilidades para definir" caracteres de comando "na tela GNU?