other languages
CONSOLE_CODES(4) | Manual do Programador Linux | CONSOLE_CODES(4) |
NOME¶
console_codes - Sequëncias de controle e saída do console LinuxDESCRIÇÃO¶
O console Linux implementa um vasto subconjunto de controles de terminais VT102, ECMA-48/ISO, 6429/ANSI X3.64, adicionando certas seqüencias em modo privativo para mudar a paleta de cor, conjunto de mapeamento de caracteres, etc. Na tabela abaixo, a segunda coluna fornece os mneumônicos ECMA-48 ou DEC (se prefixado com DEC) para a função fornecida. Seqüencias sem um menumônico não são ECMA-48 ou VT102. Após o resultado do processamento normal ter sido concluido e uma seqüencia de caracteres ter chegado ao driver de console para a impressão real, a primeira coisa que acontece é uma tradução do código usado para o processamento para o código usado para impressão. Se o console está no modelo UTF-8, então o bytes de entrada são primeiramente montados em códigos Unicode de 16bits. Caso contrário, cada byte é transformado de acordo com a tabela de mapeamento atual (o qual é traduzido para um valor Unicode). Veja a seção CONJUNTO DE CARACTERES abaixo para um discussão a respeito. No caso normal, o valor Unicode é convertido para um índice de fonte e armazenado na memória de video, de forma que o símbolo correspondente (como encontrado na ROM de vídeo) aparece na tela. Note que o uso do Unicode (e o projeto do PC) nos permite usar 512 símbolos simultaneamente. Se o valor Unicode atual é um caractere de controle ou nós estamos processando uma seqüencia de escape, o valor será tratado especialmente. No lugar de ir sendo transformado em um índice de fonte e desenhado como um símbolo, ele pode disparar o movimento do cursor ou outras funções de controle. Veja a seção CONTROLES DE CONSOLE LINUX abaixo para um discussão a respeito. Geralmente não é uma boa prática fixar códigos de controles de terminais dentro de programas. O Linux suporta uma base de dados terminfo(5) de capacidades de terminais. Ao invés de emitir manualmente uma seqüencia de escape, você irá quase sempre procurar usar uma biblioteca de tela terminfo ou utilitários como por exemplo ncurses(3), tput(1), ou reset(1).CONTROLES DE CONSOLE LINUX¶
Esta seção descreve todos os caracteres de controle e seqüencias de escape que chamam funções especiais (isto é, qualquer coisa exceto escrever um símbolo na localização atual do cursor) no console do Linux.Caracteres de Controle¶
Um caracter é dito de controle se (antes da transformação de acordo com a tabela de mapeamento) ele tem um dos 14 códigos 00 (NUL), 07 (BEL), 08 (BS), 09 (HT), 0a (LF), 0b (VT), 0c (FF), 0d (CR), 0e (SO), 0f (SI), 18 (CAN), 1a (SUB), 1b (ESC), 7f (DEL). Um conjunto pode selecionar um modo de 'caracter de controle de exibição' (veja abaixo), e permitir que 07, 09, 0b, 18, 1a, 7f sejam exibidos como símbolos. Por outro lado, em modo UTF-8 todos os códigos de 00-1f são respeitados como caracteres de controle, sem ligação com qualquer modoBEL (0x07,
^G) Emite um bip;
BS (0x08, ^H)
Retorna uma coluna (mas não passa do inicio da linha);
HT (0x09, ^I)
Vai para a próxima parada de tabulação ou para o fim da linha
se estiver na última tabulação;
LF (0x0A,
^J), VT (0x0B, ^K) e FF (0x0C, ^L) todos fornecem uma avanço de
linha;
CR (0x0D, ^M)
envia um retorno de carro;
SO (0x0E, ^N)
ativa o conjunto de caracteres G1, e se LF/NL (modo nova linha) é
selecionado, envia também um retorno de carro;
SI (0x0F, ^O)
ativa o conjunto de caracteres G0;
CAN (0x18,
^X) e SUB (0x1A, ^Z) interrompem a seqüencia de escape
ESC (0x1B,
^[) inicia uma seqüencia de escape;
DEL (0x7F)
é ignorado;
CSI (0x9B)
é equivalente a ESC [.
ESC - mas não a seqüencia CSI¶
ESC c | RIS | Reiniciar. |
ESC D | IND | Alimentação de linha. |
ESC E | NEL | Nova linha. |
ESC H | HTS | Seleciona uma parada de tabulação na coluna atual. |
ESC M | RI | Alimentação reversa de linha. |
ESC Z | DECID | Identificação pritativa DEC. O kernel |
retorna a cadeia de caracteres ESC [ ? 6 c, reinvindicando | ||
que ele é um vt102. | ||
ESC 7 | DECSC | Guarda o estado atual (coordenadas do cursor, |
atributos, conjunto de caracteres). | ||
ESC 8 | DECRC | Restaura o mais recente estado guardado. |
ESC [ | CSI | Introdutor de seqüencia de controle |
ESC % | Inicia uma seqüencia selecionando o conjunto de caracteres. | |
ESC % @ | Seleciona o padrão (ISO 646 / ISO 8859-1) | |
ESC % G | Seleciona UTF-8 | |
ESC % 8 | Seleciona UTF-8 (obsoleto) | |
ESC # 8 | DECALN | Teste de alinhamento de tela DEC - preenche a tela com E's. |
ESC ( | Inicia uma seqüencia definindo o conjunto de caracteres G0. | |
ESC ( B | Seleciona o padrão (mapeamento ISO 8859-1) | |
ESC ( 0 | Seleciona o mapeamento gráfico vt100 | |
ESC ( U | Seleciona o mapeamento nulo - correto para caracteres ROM | |
ESC ( K | Seleciona o mapeamento do usuário - o mapa que | |
é carregado pelo utilitário mapscrn(8). | ||
ESC ) | Inicia uma seqüencia definindo G1. | |
(seguido por um dos B, 0, U, K, como acima). | ||
ESC > | DECPNM | Seleciona o modo numérico do teclado numérico. |
ESC = | DECPAM | Seleciona o modo de aplicação do teclado numérico. |
ESC ] | OSC | (Comando do Sistema Operacional) |
ESC ] P nrrggbb: define a paleta com parâmetro | ||
passado em 7 dígitos hexadecimaias após o último P :-( | ||
Onde n é a cor (0-16) e rrggbb indica os | ||
valores RGB, vermelho/verde/azul (0-255). | ||
ESC ] R: reinicia a paleta. |
Seqüências ECMA-48 CSI¶
CSI (ou ESC [) é seguido por uma seqüência de parâmetros na maioria NPAR (16), que são números decimais separados por ponto-e-vírgula. Um parâmetro vazio ou ausente é interpretado como 0. A seqüência de parâmetros pode ser precedida pelo sinal de interrogação.@ | ICH | Insere a quantidade de caracteres brancos indicada. |
A | CUU | Move o cursor para cima N linhas. |
B | CUD | Move o cursor para baixo N linhas. |
C | CUF | Move o cursor para a direita N colunas. |
D | CUB | Move o cursor para a esquerda N colunas. |
E | CNL | Move o cursor para baixo N linhas a partir da coluna 1. |
F | CPL | Move o cursor para cima N linhas a partir da coluna 1. |
G | CHA | Move o cursor para a coluna indicada na linha corrente. |
H | CUP | Move o cursor para a linha e coluna indicada (inicio 1,1). |
J | ED | Limpa a tela (padrão: do cursor até o fim da tela). |
ESC [ 1 J: Limpa do inicio até o cursor. | ||
ESC [ 2 J: Limpa a tela toda. | ||
K | EL | Limpa a linha (padrão: do cursor até o fim da linha). |
ESC [ 1 K: Limpa do inicio da linha até o cursor. | ||
ESC [ 2 K: Limpa a linha inteira. | ||
L | IL | Insere N linhas em branco. |
M | DL | Apaga N linhas. |
P | DCH | Apaga N caracteres na linha atual. |
X | ECH | Apaga N caracteres na linha atual. |
a | HPR | Move o cursor para a direita N colunas. |
c | DA | Responde ESC [ ? 6 c: `Eu sou um VT102'. |
d | VPA | Move o cursor para a linha indicada mantendo a coluna atual |
e | VPR | Move o cursor para baixo N linhas. |
f | HVP | Move o cursor para a linha e coluna indicada. |
g | TBC | Sem parâmetro: limpa tabulação na posição atual. |
ESC [ 3 g: apaga todas as tabulações. | ||
h | SM | Modo de Configuração (Veja abaixo). |
l | RM | Modo de Reinicialização (Veja abaixo). |
m | SGR | Define atributos (Veja abaixo). |
n | DSR | Relata o Estado (Veja abaixo). |
q | DECLL | Define os LEDs do teclado. |
ESC [ 0 q: Limpa todos os LEDs | ||
ESC [ 1 q: LED Scroll Lock | ||
ESC [ 2 q: LED Num Lock | ||
ESC [ 3 q: LED Caps Lock | ||
r | DECSTBM | Define região de rolagem; Parâm.: Linha superior e inferior |
s | ? | Grava a localização do cursor. |
u | ? | Restaura a localização do cursor. |
` | HPA | Move o cursor na linha atual para a coluna indicada. |
ECMA-48 Define a Apresentação Gráfica¶
O ECMA-48 SGR seqüência ESC [ <parâmetros> m define os atributos de exibição. Vários atributos podem ser definidos na mesma seqüência.par | resultado |
0 | Ajusta todos os atributos para os valores padrões |
1 | Negrito |
2 | Meio Brilho (simulado com cor em um monitor colorido) |
4 | Sublinhado (simulado com cor em um monitor colorido) |
(As cores usadas para simulação são definidas | |
usando ESC ] ) | |
5 | Piscante |
7 | Vídeo Reverso |
10 | Reinicia para o mapeamento selecionado, mostra o sinal de controle |
e alterna meta sinalizadores. | |
11 | Seleciona mapeamento nulo, define o sinal de controle, reinicia |
meta sinalizadores. | |
12 | Seleciona mapeamento nulo, define o sinal de controle, alterna |
meta sinalizadores. (A alternância dos meta sinalizadores | |
alternar o bit de alta ordem do byte antes | |
que a tradução da tabela de mapeamento seja concluida). | |
21 | Intensidade normal (Não é compatível com ECMA-48) |
22 | Intensidade normal |
24 | Desativa Sublinhado |
25 | Desativa Piscante |
27 | Desativa Vídeo Reverso |
30 | Cor de Frente Preta |
31 | Cor de Frente Vermelha |
32 | Cor de Frente Verde |
33 | Cor de Frente Marrom |
34 | Cor de Frente Azul |
35 | Cor de Frente Magenta |
36 | Cor de Frente Ciano |
37 | Cor de Frente Branca |
38 | Ativa Sublinhado, define cor de frente padrão |
39 | Desativa Sublinhado, define cor de frente padrão |
40 | Cor de Fundo Preta |
41 | Cor de Fundo Vermelha |
42 | Cor de Fundo Verde |
43 | Cor de Fundo Marrom |
44 | Cor de Fundo Azul |
45 | Cor de Fundo Magenta |
46 | Cor de Fundo Ciano |
47 | Cor de Fundo Branca |
49 | Define Cor de Fundo Padrão |
Opções do Modo ECMA-48¶
- ESC [ 3 h
- DECCRM (Padrão Desativado): Caracteres de Controle de Exibição.
- ESC [ 4 h
- DECIM (Padrão Desativado): Define Modo de Inserção.
- ESC [ 20 h
- LF/NL (Padrão Desativado): Automáticamente segue o eco do LF, VT ou FF com CR.
ECMA-48 Comandos de Resultado de Estado¶
- ESC [ 5 n
- Informa o estado do dispositivo (DSR): A resposta é ESC [ 0 n (Terminal OK).
- ESC [ 6 n
- Informa a posição do cursor (CPR): A resposta
é ESC [ y ; x R, onde x,y é a
localização do cursor.
DEC Seqüência do Modo Privado (DECSET/DECRST).¶
Ele não é descrito no ECMA-48. Nós listamos a seqüência dos modos de configuração; as seqüências do Modo de Reinicialização são obtidas pela troca do `h' final por `l'.- ESC [ ? 1 h
- DECCKM (Padrão Desativado): Quando definido, as teclas de cursor enviam um prefixo ESC O, ao invés de ESC [.
- ESC [ ? 3 h
- DECCOLM (Padrão Desativado = 80 colunas): Alterna de 80/132 colunas. Este parâmetro sozinho nem sempre é suficiente, alguns utilitários em modo usuá rio como o resizecons(8) altera os registradores do equipamento na placa de vídeo.
- ESC [ ? 5 h
- DECSCNM (Padrão Desativado): Define o modo de vídeo reverso.
- ESC [ ? 6 h
- DECOM (Padrão Desativado): Quando definido, o endereçamento do cursor é relativo ao canto superior esquerdo da região de rolagem.
- ESC [ ? 7 h
- DECAWM (Padrão Ativo): Define quebra de linha automática. neste modo, um caracter gráfico emitido após a coluna 80 (ou coluna 132 se DECCOLM ativo) força uma quebra para o inicio da primeira linha seguinte.
- ESC [ ? 8 h
- DECARM (Padrão Ativo): Define autorepetição do teclado ativo.
- ESC [ ? 9 h
- X10 Informações do Mouse (Padrão Desativado): Define o modo de informações para 1 (ou reinicia para 0) - veja abaixo.
- ESC [ ? 25 h
- DECCM (Padrão Ativo): Torna o cursor visivel.
- ESC [ ? 1000 h
- X11 Informações do Mouse (Padrão
Desativado): Define o modo de informações para 2 (ou reinicia
para 0) - veja abaixo.
Seqüência de Console Linux Privada - CSI¶
As seqüências a seguir não são ECMA-48 nem VT102 nativa. Elas são nativas para o driver de console Linux. As cores estão nos parâmetros SGR: 0 = preta, 1 = vermelha, 2 = verde, 3 = marrom, 4 = azul, 5 = magenta, 6 = ciano, 7 = branca.ESC [ 1 ; n ] | Define cor n como cor de sublinhado |
ESC [ 2 ; n ] | Define cor n como cor dim |
ESC [ 8 ] | Torna o par de cor atual os atributos padrões. |
ESC [ 9 ; n ] | Ajusta o tempo de tela preta para n minutos. |
ESC [ 10 ; n ] | Ajusta a freqüencia do bip em Hz. |
ESC [ 11 ; n ] | Ajusta a duração do bip em segundos. |
ESC [ 12 ; n ] | Traz a console especificada para a frente. |
ESC [ 13 ] | Exibe a tela. |
ESC [ 14 ; n ] | Define o tempo para redução de consumo energia (VESA). |
CONJUNTO DE CARACTERS¶
O Linux conhece entorno de 4 traduções de bytes em símbolos de console de tela. As 4 tabelas são: a) Latin1 -> PC, b) VT100 gráfico -> PC, c) PC -> PC, d) definição-usuário.RASTREAMENTO DO MOUSE¶
A facilidade de rastreamento do mouse pretende retornar informações de estado do mouse compatível com xterm. Devido ao controlador de console não ter como saber o dispositivo e o tipo do mouse, estas informações são retornadas na seqüência de entrada da console apenas quando o controlador de terminal virtual recebe uma atualização através do ioctl. Estes ioctls são gerados pela aplicação relacionada ao mouse em modo usuário, tal como, o gpm(8).COMPARAÇÃO COM OUTROS TERMINAIS¶
Diferentes tipos de terminais são descritos, com a console Linux sendo `VT100-compatível'. Aqui nós discutimos diferenças entre a console Linux e outros dois mais importantes, o DEC VT102 e xterm(1).Tratamento dos caracteres de controle¶
O vt102 também reconhece os seguintes caracteres de controle:NUL (0x00)
foi ignorado;
ENQ (0x05)
resposta disparada;
DC1 (0x11,
^Q, XON) transmissão reiniciada;
DC3 (0x13,
^S, XOFF) faz o vt100 ignorar (e parar de transmitir) todos os códigos
exceto XOFF e XON.
O processamento DC1/DC3 similar ao VT100 pode ser habilitado pelo driver tty.
O programa xterm (no modo vt100) reconhece os caracteres de controle BEL,
BS, HT, LF, VT, FF, CR, SO, SI, ESC.
Seqüências Escape¶
Seqüências de console VT100 não implementadas na console Linux:ESC N | SS2 | Shift Simples 2. (Seleciona o conj. de caracteres G2 |
para o próximo caracter apenas.) | ||
ESC O | SS3 | Shift Simples 3. (Seleciona o conj. de caracteres G3 |
para o próximo caracter apenas.) | ||
ESC P | DCS | Caracteres de Controle de Dispositivo (terminada por ESC \) |
ESC X | SOS | Inicio de cadeia de caracteres. |
ESC ^ | PM | Mensagem privada (terminada por ESC \) |
ESC \ | ST | Terminador de cadeia de caracteres |
ESC * ... | Conjunto de caracteres G2 especificado | |
ESC + ... | Conjunto de caracteres G3 especificado |
ESC ] 0 ; txt BEL | Define o nome do ícone e título da janela para txt |
ESC ] 1 ; txt BEL | Define o nome do ícone para txt. |
ESC ] 2 ; txt BEL | Define o título da janela para txt. |
ESC ] 4 6 ; nome BEL | Muda o arquivo de registro para nome (normalmente |
desabilitado por opção de compilação) | |
ESC ] 5 0 ; fn BEL | Define o fonte para fn. |
ESC 7 DECSC | Grava o cursor | |
ESC 8 DECRC | Restaura o cursor |
ESC F | Cursor para o canto inferior esquerdo da tela (se | |
habilitado por hpLowerleftBugCompat) | ||
ESC l | Bloqueia Memória (para terminais HP). | |
Bloqueia memória acima do cursor. | ||
ESC m | Desbloqueia Memória (para terminais HP). | |
ESC n | LS2 | Invoca o conjunto de caracteres G2. |
ESC o | LS3 | Invoca o conjunto de caracteres G3. |
ESC | | LS3R | Invoca o conjunto de caracteres G3 como GR. |
Não tem efeito visível no xterm. | ||
ESC } | LS2R | Invoca o conjunto de caracteres G2 como GR. |
Não tem efeito visível no xterm. | ||
ESC ~ | LS1R | Invoca o conjunto de caracteres G1 como GR. |
Não tem efeito visível no xterm. |
Seqüência CSI¶
O programa xterm (como o do XFree86 3.1.2G) não reconhece os modos: piscante ou invisível SGRs. Algumas versões do X11R6 não reconhecem o conjunto de cores SGRs. Todas as demais seqüências ECMA-48 CSI reconhecidaas pelo Linux, também são reconhecidas pelo xterm, e vice-versa.PROBLEMAS¶
Na versão 2.0.23, o CSI é interrompido e o NUL não é ignorado dentro da seqüência escape.VEJA TAMBÉM¶
console(4), console_ioctl(4), charsets(7)TRADUZIDO POR LDP-BR em 21/08/2000.¶
Fábio Henrique F. Silva <fabiohfs@eol.com.br> (tradução) André L. Fassone Canova <lonelywolf@blv.com.br> (revisão)31/10/1996 | Linux |