O que um aplicativo lê quando o usuário pressiona um backspace no terminal no modo raw?

1

No modo raw, se você digitar um caractere no terminal, o aplicativo no outro lado lerá o código ASCII para o caractere digitado.

Mas e quando você pressiona a tecla de retrocesso no terminal, o que a aplicação do outro lado lê?

    
por user259116 05.11.2017 / 21:48

1 resposta

2

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?

    
por 06.11.2017 / 00:30