# Caractere de controle

Na computação, um caractere de controle ou carácter de controlo é um número pertencente a um conjunto de caracteres que não representa por si só um símbolo da escrita. Todas as entradas abaixo do 32 na tabela ASCII são deste tipo, inclusive o BEL (que serve para produzir um sinal audível), SYN (que é um sinal de sincronismo), e ENQ (um sinal que se destina a gerar uma resposta no receptor, permitindo saber se ele está presente). O padrão Unicode adicionou vários outros símbolos não imprimíveis.

## No ASCII

Os caracteres de controlo da tabela ASCII ainda em uso incluem:
* 7 (bell), que deve fazer o dispositivo que o recebe emitir um sinal de aviso de algum tipo (normalmente audível).
* 8 (backspace), é usado para apagar o último caractere impresso ou para sobre-escrevê-lo.
* 9 (tab horizontal), move a posição de impressão alguns espaços para a direita.
* 10 (Line Feed), é usado como marcador de fim de linha no UNIX.
* 12 (form feed), leva a impressora a ejetar o papel e se posicionar no topo da próxima página, ou um terminal de vídeo a limpar a tela.
* 13 (carriage return), é usado como marcador de fim de linha Mac OS, OS-9, FLEX. A combinação return/line feed é usada pelo CP/M-80 e derivados incluindo o DOS e o Windows, e pelo HTTP
* 27 (escape). Embora muitos destes caracteres de controle sejam raramente usados, ao combinar caracteres de controle misturadas com caracteres imprimíveis podemos enviar centenas de instruções aos dispositivos. Normalmente o código 27 é o primeiro caractere de tal sequência, alertando o dispositivo que os caracteres seguintes devem ser interpretados como uma sequência de controle e não como um texto. No fim da sequência deve haver um ou mais caracteres que indiquem que o dispositivo deve voltar a interpretar os caracteres normalmente.
Por exemplo, a sequência composta pelo código 27 seguida pelos caracteres imprimíveis "[2;10H", faz com que um terminal Digital VT-102 mova o cursor para a décima coluna da segunda linha da tela. Há vários padrões para tais sequências, por exemplo o ANSI X3.64 (1979), que se baseou no comportamento dos terminais VT-100.

## Como os caracteres de controle são mapeados no teclado

Os teclados do PC não enviam códigos ASCII para o PC, eles enviam códigos de varredura que são, então, traduzidos em códigos do conjunto de caracteres do sistema, unicode ou algum outro pelo sistema operacional.
Teclados com ASCII possuem uma tecla chamada "control" ou "Ctrl" (por vezes chamada "Ctrl") que é usada de maneira semelhante a uma tecla shift, podendo ser pressionada em combinação com outra letra ou tecla de símbolo. Desta maneira, a tecla control gera um código que é 64 unidades inferior ao código da letra (normalmente) maiúscula associada à tecla com qual é pressionada simultaneamente (ou seja, subtrai 64 do código ASCII em decimal do código desta tecla), produzindo um dos 32 códigos de controle a tabela ASCII.
Por exemplo, pressionando "control" e a letra "G" (código 71 base 10, que é 01000111 em binário, obtemos o código 7 (Bell, 7 na base 10, ou 00000111 binário). Esta associação é usada para representar caracteres de controle em uma forma que pode ser impressa chamada notação caret (acento circunflexo ); por exemplo, ^G representa o código 7.
Os teclados também possuem algumas teclas que geram diretamente caracteres de controle. Por exemplo, a tecla "Backspace" normalmente gera o código 8, "Tab" gera 9, "Enter" ou "Return" gera o código 13 (embora alguns teclados possam gerar o código 10 para o "Enter").