console_codes(4) Device Drivers Manual console_codes(4) NOME console_codes - Sequencias de controle e saida do console Linux DESCRICAO The Linux console implements a large subset of the VT102 and ECMA-48 / ISO/IEC 6429 / ANSI X3.64 terminal controls, plus certain private-mode sequences for changing the color palette, character-set mapping, and so on. In the tabular descriptions below, the second column gives ECMA-48 or DEC mnemonics (the latter if prefixed with DEC) for the given function. Sequences without a mnemonic are neither ECMA-48 nor VT102. Apos o resultado do processamento normal ter sido concluido e uma sequencia de caracteres ter chegado ao driver de console para a impressao real, a primeira coisa que acontece e uma traducao do codigo usado para o processamento para o codigo usado para impressao. Se o console esta no modelo UTF-8, entao o bytes de entrada sao primeiramente montados em codigos Unicode de 16bits. Caso contrario, cada byte e transformado de acordo com a tabela de mapeamento atual (o qual e traduzido para um valor Unicode). Veja a secao Conjunto de caracteres abaixo para um discussao a respeito. No caso normal, o valor Unicode e convertido para um indice de fonte e armazenado na memoria de video, de forma que o simbolo correspondente (como encontrado na ROM de video) aparece na tela. Note que o uso do Unicode (e o projeto do PC) nos permite usar 512 simbolos simultaneamente. If the current Unicode value is a control character, or we are currently processing an escape sequence, the value will treated specially. Instead of being turned into a font index and rendered as a glyph, it may trigger cursor movement or other control functions. See the Linux Console Controls section below for discussion. Geralmente nao e uma boa pratica fixar codigos de controles de terminais dentro de programas. O Linux suporta uma base de dados terminfo(5) de capacidades de terminais. Ao inves de emitir manualmente uma sequencia de escape, voce ira quase sempre procurar usar uma biblioteca de tela terminfo ou utilitarios como por exemplo ncurses(3), tput(1) ou reset(1). Linux console controls Esta secao descreve todos os caracteres de controle e sequencias de escape que chamam funcoes especiais (isto e, qualquer coisa exceto escrever um simbolo na localizacao atual do cursor) no console do Linux. Caracteres de Controle Um caracter e dito de controle se (antes da transformacao de acordo com a tabela de mapeamento) ele tem um dos 14 codigos 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 exibicao" (veja abaixo), e permitir que 07, 09, 0b, 18, 1a, 7f sejam exibidos como simbolos. Por outro lado, em modo UTF-8 todos os codigos de 00-1f sao respeitados como caracteres de controle, sem ligacao com qualquer modo "caracter de controle de exibicao". Se nos temos um caracter de controle, ele e manipulado imediatamente e entao descartado (mesmo que no meio de um sequencia de escape) e a sequencia de escape continua com o proximo caracter. (De qualquer forma, ESC inicia uma nova sequencia de escape, possivelmente abortando uma sequencia anterior inacabada, CAN e SUB abortam qualquer sequencia de escape). Os caracteres de controle reconhecidos sao: BEL, BS, HT, LF, VT, FF, CR, SO, SI, CAN, SUB, ESC, DEL, CSI. Eles fazem o que e esperado: BEL (0x07, ^G) Emite um beep; BS (0x08, ^H) Retorna uma coluna (mas nao passa do inicio da linha); HT (0x09, ^I) Vai para a proxima parada de tabulacao ou para o fim da linha se estiver na ultima tabulacao; LF (0x0A, ^J) VT (0x0B, ^K) FF (0x0C, ^L) all give a linefeed, and if LF/NL (new-line mode) is set also a carriage return; CR (0x0D, ^M) gives a carriage return; SO (0x0E, ^N) ativa o conjunto de caracteres G1; SI (0x0F, ^O) ativa o conjunto de caracteres G0; CAN (0x18, ^X) SUB (0x1A, ^Z) abort escape sequences; ESC (0x1B, ^[) inicia uma sequencia de escape; DEL (0x7F) is ignored; CSI (0x9B) e equivalente a ESC [. ESC - mas nao a sequencia CSI ESC c RIS Reiniciar ESC D IND Alimentacao de linha. ESC E NEL Nova linha. ESC H HTS Seleciona uma parada de tabulacao na coluna atual. ESC M RI Alimentacao reversa de linha. ESC Z DECID DEC private identification. The kernel returns the string ESC [ ? 6 c, claiming that it is a VT102. ESC 7 DECSC Save current state (cursor coordinates, attributes, character sets pointed at by G0, G1). ESC 8 DECRC Restore state most recently saved by ESC 7. ESC % Inicia uma sequencia selecionando o conjunto de caracteres. ESC % @ Select default (ISO/IEC 646 / ISO/IEC 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 ( Start sequence defining G0 character set (followed by one of B, 0, U, K, as below) ESC ( B Select default (ISO/IEC 8859-1 mapping). ESC ( 0 Seleciona o mapeamento grafico VT100. ESC ( U Seleciona o mapeamento nulo - correto para caracteres ROM. ESC ( K Select user mapping - the map that is loaded by the utility mapscrn(8). ESC ) Start sequence defining G1 (followed by one of B, 0, U, K, as above). ESC > DECPNM Seleciona o modo numerico do teclado numerico. ESC = DECPAM Seleciona o modo de aplicacao do teclado numerico. ESC ] OSC Operating System Command prefix. ESC ] R Reset palette. ESC ] P Set palette, with parameter given in 7 hexadecimal digits nrrggbb after the final P. Here n is the color (0-15), and rrggbb indicates the red/green/blue values (0-255). Sequencias ECMA-48 CSI CSI (ou ESC [) e seguido por uma sequencia de parametros na maioria NPAR (16), que sao numeros decimais separados por ponto-e-virgula. Um parametro vazio ou ausente e interpretado como 0. A sequencia de parametros pode ser precedida pelo sinal de interrogacao. Entretanto, apos o CSI [ (ou ESC [ [) um unico caracter e lido e a sequencia inteira e ignorada. (A ideia e ignorar uma tecla de funcao que seja ecoada). A acao de uma sequencia CSI e determinada pelo seu caracter final. @ 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 (padrao: do cursor ate o fim da tela). ESC [ 1 J: Limpa do inicio ate o cursor. ESC [ 2 J: Limpa a tela toda. ESC [ 3 J: erase whole display including scroll-back buffer (since Linux 3.0). K EL Limpa a linha (padrao: do cursor ate o fim da linha). ESC [ 1 K: Limpa do inicio da linha ate 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 Erase the indicated # of characters on current line. 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 parametro: limpa tabulacao na posicao atual. ESC [ 3 g: apaga todas as tabulacoes. h SM Modo de Configuracao (Veja abaixo). l RM Modo de Reinicializacao (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 regiao de rolagem; Param.: Linha superior e inferior s ? Grava a localizacao do cursor. u ? Restaura a localizacao do cursor. ` HPA Move o cursor para a coluna indicada na linha corrente. ECMA-48 Select Graphic Rendition The ECMA-48 SGR sequence ESC [ parameters m sets display attributes. Several attributes can be set in the same sequence, separated by semicolons. An empty parameter (between semicolons or string initiator or terminator) is interpreted as a zero. param resultado 0 Ajusta todos os atributos para os valores padroes 1 Negrito 2 Meio Brilho (simulado com cor em um monitor colorido) 3 set italic (since Linux 2.6.22; simulated with color on a color display) 4 set underscore (simulated with color on a color display) (the colors used to simulate dim or underline are set using ESC ] ...) 5 Piscante 7 Video Reverso 10 reset selected mapping, display control flag, and toggle meta flag (ECMA-48 says "primary font"). 11 select null mapping, set display control flag, reset toggle meta flag (ECMA-48 says "first alternate font"). 12 select null mapping, set display control flag, set toggle meta flag (ECMA-48 says "second alternate font"). The toggle meta flag causes the high bit of a byte to be toggled before the mapping table translation is done. 21 set underline; before Linux 4.17, this value set normal intensity (as is done in many other terminals) 22 Intensidade normal 23 italic off (since Linux 2.6.22) 24 Desativa Sublinhado 25 Desativa Piscante 27 Desativa Video 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 256/24-bit foreground color follows, shoehorned into 16 basic colors (before Linux 3.16: set underscore on, set default foreground color) 39 set default foreground color (before Linux 3.16: set underscore off, set default foreground color) 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 48 256/24-bit background color follows, shoehorned into 8 basic colors 49 Define Cor de Fundo Padrao 90..97 set foreground to bright versions of 30..37 100..107 set background, same as 40..47 (bright not supported) Commands 38 and 48 require further arguments: ;5;x 256 color: values 0..15 are IBGR (black, red, green, ... white), 16..231 a 6x6x6 color cube, 232..255 a grayscale ramp ;2;r;g;b 24-bit color, r/g/b components are in the range 0..255 Opcoes do Modo ECMA-48 ESC [ 3 h DECCRM (Padrao Desativado): Caracteres de Controle de Exibicao. ESC [ 4 h DECIM (Padrao Desativado): Define Modo de Insercao. ESC [ 20 h LF/NL (Padrao Desativado): Automaticamente 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 e ESC [ 0 n (Terminal OK). ESC [ 6 n Informa a posicao do cursor (CPR): A resposta e ESC [ y; x R, onde x,y e a localizacao do cursor. Sequencia do Modo Privativo DEC (DECSET/DECRST) Ele nao e descrito no ECMA-48. Nos listamos a sequencia dos modos de configuracao; as sequencias do Modo de Reinicializacao sao obtidas pela troca do 'h' final por 'l'. ESC [ ? 1 h DECCKM (Padrao Desativado): Quando definido, as teclas de cursor enviam um prefixo ESC O, ao inves de ESC [. ESC [ ? 3 h DECCOLM (Padrao Desativado = 80 colunas): Alterna de 80/132 colunas. Este parametro sozinho nem sempre e suficiente, alguns utilitarios em modo usua rio como o resizecons(8) altera os registradores do equipamento na placa de video. ESC [ ? 5 h DECSCNM (Padrao Desativado): Define o modo de video reverso. ESC [ ? 6 h DECOM (Padrao Desativado): Quando definido, o enderecamento do cursor e relativo ao canto superior esquerdo da regiao de rolagem. ESC [ ? 7 h DECAWM (Padrao Ativo): Define quebra de linha automatica. neste modo, um caracter grafico emitido apos a coluna 80 (ou coluna 132 se DECCOLM ativo) forca uma quebra para o inicio da primeira linha seguinte. ESC [ ? 8 h DECARM (Padrao Ativo): Define autorepeticao do teclado ativo. ESC [ ? 9 h X10 Informacoes do Mouse (Padrao Desativado): Define o modo de informacoes para 1 (ou reinicia para 0)--veja abaixo. ESC [ ? 25 h DECTECM (Padrao Ativo): Torna o cursor visivel. ESC [ ? 1000 h X11 Informacoes do Mouse (Padrao Desativado): Define o modo de informacoes para 2 (ou reinicia para 0)--veja abaixo. Sequencia de Console Linux Privada - CSI The following sequences are neither ECMA-48 nor native VT102. They are native to the Linux console driver. Colors are in SGR parameters: 0 = black, 1 = red, 2 = green, 3 = brown, 4 = blue, 5 = magenta, 6 = cyan, 7 = white; 8-15 = bright versions of 0-7. 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 padroes. ESC [ 9 ; n ] Ajusta o tempo de tela preta para n minutos. ESC [ 10 ; n ] Ajusta a frequencia do bip em Hz. ESC [ 11 ; n ] Ajusta a duracao do bip em segundos. ESC [ 12 ; n ] Traz a console especificada para a frente. ESC [ 13 ] Tela nao vazia. ESC [ 14 ; n ] Define o tempo para reducao de consumo energia (VESA). ESC [ 15 ] Bring the previous console to the front (since Linux 2.6.0). ESC [ 16 ; n ] Set the cursor blink interval in milliseconds (since Linux 4.2). Character sets O Linux conhece entorno de 4 traducoes de bytes em simbolos de console de tela. As 4 tabelas sao: a) Latin1 -> PC, b) VT100 grafico -> PC, c) PC -> PC, d) definicao-usuario. Existem dois conjuntos de caracteres chamados G0 e G1 e um deles e o conjunto corrente. (Inicialmente G0.) Digitar ^N torna o G1 o corrente, ^NO torna o G0 corrente. Estas variaveis G0 e G1 estao na tabela de traducao e podem ser alteradas pelo usuario. Inicialmente elas apontam a tabela a) e b), respectivamente. As sequencias ESC ( B e ESC ( 0 e ESC ( U e ESC ( K fazem G0 apontar para a tabela de tracucao a), b), c) e d), respectivamente. As sequencias ESC ) B e ESC ) 0 e ESC ) U e ESC ) K fazem G1 apontar para a tabela de traducao a), b), c) e d), respectivamente. A sequencia ESC c reinicializa o terminal, que e o que voce vai querer se a tela esta com sujeiras. O aviso "echo ^V^O" tornara apenas G0 corrente, mas nao ha garantias de que G0 aponta a tabela a). Em algumas distribuicoes ha um programa reset(1) que apenas executa um "echo ^[c". Se sua entrada terminfo para a console esta correta (e tem uma entrada rs1=\Ec), entao "tput reset" funcionara. A tabela de mapeamento definida pelo usuario pode ser usada atraves do mapscrn(8). O resultado do mapeamento e que se o simbolo c e impresso, o simbolo s = map[c] e enviado para a memoria de video. O bitmap que corresponde a s e encontrado na ROM de caracter e pode ser alterado usando o setfont(8). Mouse tracking A facilidade de rastreamento do mouse pretende retornar informacoes de estado do mouse compativel com xterm(1). Devido ao controlador de console nao ter como saber o dispositivo e o tipo do mouse, estas informacoes sao retornadas na sequencia de entrada da console apenas quando o controlador de terminal virtual recebe uma atualizacao atraves do ioctl. Estes ioctls sao gerados pela aplicacao relacionada ao mouse em modo usuario, tal como, o gpm(8). The mouse tracking escape sequences generated by xterm(1) encode numeric parameters in a single character as value+040. For example, '!' is 1. The screen coordinate system is 1-based. O modo de compatibilidade X10 envia um sequencia escape ao pressionar um botao codificando a localizacao e o botao pressionado. Isto e habilitado enviando ESC [ ? 9 h e desativado com ESC [ ? 9 l. Ao pressionar o botao, o xterm(1) envia ESC [ M bxy (6 caracteres). Aqui b e o botao-1, e x e y sao as coordenadas x e y do mouse quando o botao foi pressionado. Este e o mesmo codigo que o nucleo tambem produz. O modo de rastreamento normal (nao implementado no Linux 2.0.24) envia uma sequencia escape quando o botao e pressiondo e liberado. Modificadores de informacoes tambem sao enviados. Isto e habilitado enviado ESC [ ? 1000 h e desativado com ESC [ ? 1000 l. Ao pressionar e liberar o botao, o xterm(1) envia ESC [ M bxy. Os dois bits baixos de b codifica informacoes do botao: 0=MB1 pressionado, 1=MB2 pressionado, 2=MB3 pressionado, 3=liberado. Os bits altos codificam que os modificadores foram teclados quando o botao foi pressionado e acrescentado junto: 4=Shift, 8=Meta, 16=Control. De novo x e y sao as coordenadas x e y do mouse. O canto superior esquerdo e (1,1). Comparisons with other terminals Diferentes tipos de terminais sao descritos, com a console Linux sendo "VT100-compativel". Aqui nos discutimos diferencas entre a console Linux e outros dois mais importantes, o DEC VT102 e xterm(1). Tratamento dos caracteres de controle O VT102 tambem reconhece os seguintes caracteres de controle: NUL (0x00) foi ignorado; ENQ (0x05) resposta disparada; DC1 (0x11, ^Q, XON) transmissao reiniciada; DC3 (0x13, ^S, XOFF) faz o VT100 ignorar (e parar de transmitir) todos os codigos exceto XOFF e XON. VT100-like DC1/DC3 processing may be enabled by the terminal driver. O programa xterm(1) (no modo VT100) reconhece os caracteres de controle BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC. Sequencias Escape Sequencias de console VT100 nao implementadas na console Linux: ESC N SS2 Single shift 2. (Select G2 character set for the next character only.) ESC O SS3 Single shift 3. (Select G3 character set for the next character only.) 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 The program xterm(1) (in VT100 mode) recognizes ESC c, ESC # 8, ESC >, ESC =, ESC D, ESC E, ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \, ESC Z (it answers ESC [ ? 1 ; 2 c, "I am a VT100 with advanced video option") and ESC ^ ... ESC \ with the same meanings as indicated above. It accepts ESC (, ESC ), ESC *, ESC + followed by 0, A, B for the DEC special character and line drawing set, UK, and US-ASCII, respectively. The user can configure xterm(1) to respond to VT220-specific control sequences, and it will identify itself as a VT52, VT100, and up depending on the way it is configured and initialized. It accepts ESC ] (OSC) for the setting of certain resources. In addition to the ECMA-48 string terminator (ST), xterm(1) accepts a BEL to terminate an OSC string. These are a few of the OSC control sequences recognized by xterm(1): ESC ] 0 ; txt ST Define o nome do icone e titulo da janela para txt. ESC ] 1 ; txt ST Define o nome do icone para txt. ESC ] 2 ; txt ST Define o titulo da janela para txt. ESC ] 4 ; num; txt ST Set ANSI color num to txt. ESC ] 10 ; txt ST Set dynamic text color to txt. ESC ] 4 6 ; nome ST Change log file to name (normally disabled by a compile-time option). ESC ] 5 0 ; fn ST Define o fonte para fn. It recognizes the following with slightly modified meaning (saving more state, behaving closer to VT100/VT220): ESC 7 DECSC Grava o cursor ESC 8 DECRC Restaura o cursor Ele tambem reconhece ESC F Cursor to lower left corner of screen (if enabled by xterm(1)'s hpLowerleftBugCompat resource). ESC l Bloqueia Memoria (para terminais HP). Bloqueia memoria acima do cursor. ESC m Desbloqueia Memoria (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. ESC } LS2R Invoca o conjunto de caracteres G2 como GR. ESC ~ LS1R Invoca o conjunto de caracteres G1 como GR. It also recognizes ESC % and provides a more complete UTF-8 implementation than Linux console. Sequencia CSI Old versions of xterm(1), for example, from X11R5, interpret the blink SGR as a bold SGR. Later versions which implemented ANSI colors, for example, XFree86 3.1.2A in 1995, improved this by allowing the blink attribute to be displayed as a color. Modern versions of xterm implement blink SGR as blinking text and still allow colored text as an alternate rendering of SGRs. Stock X11R6 versions did not recognize the color-setting SGRs until the X11R6.8 release, which incorporated XFree86 xterm. All ECMA-48 CSI sequences recognized by Linux are also recognized by xterm, however xterm(1) implements several ECMA-48 and DEC control sequences not recognized by Linux. The xterm(1) program recognizes all of the DEC Private Mode sequences listed above, but none of the Linux private-mode sequences. For discussion of xterm(1)'s own private-mode sequences, refer to the Xterm Control Sequences document by Edward Moy, Stephen Gildea, and Thomas E. Dickey available with the X distribution. That document, though terse, is much longer than this manual page. For a chronological overview, details changes to xterm. The vttest program demonstrates many of these control sequences. The xterm(1) source distribution also contains sample scripts which exercise other features. NOTAS ESC 8 (DECRC) is not able to restore the character set changed with ESC %. BUGS In Linux 2.0.23, CSI is broken, and NUL is not ignored inside escape sequences. Some older kernel versions (after Linux 2.0) interpret 8-bit control sequences. These "C1 controls" use codes between 128 and 159 to replace ESC [, ESC ] and similar two-byte control sequence initiators. There are fragments of that in modern kernels (either overlooked or broken by changes to support UTF-8), but the implementation is incomplete and should be regarded as unreliable. Linux "private mode" sequences do not follow the rules in ECMA-48 for private mode control sequences. In particular, those ending with ] do not use a standard terminating character. The OSC (set palette) sequence is a greater problem, since xterm(1) may interpret this as a control sequence which requires a string terminator (ST). Unlike the setterm(1) sequences which will be ignored (since they are invalid control sequences), the palette sequence will make xterm(1) appear to hang (though pressing the return-key will fix that). To accommodate applications which have been hardcoded to use Linux control sequences, set the xterm(1) resource brokenLinuxOSC to true. An older version of this document implied that Linux recognizes the ECMA-48 control sequence for invisible text. It is ignored. VEJA TAMBEM ioctl_console(2), charsets(7) TRADUCAO A traducao para portugues brasileiro desta pagina man foi criada por Fabio Henrique F. Silva e Andre Luiz Fassone Esta traducao e uma documentacao livre; leia a Licenca Publica Geral GNU Versao 3 ou posterior para as condicoes de direitos autorais. Nenhuma responsabilidade e aceita. Se voce encontrar algum erro na traducao desta pagina de manual, envie um e-mail para a lista de discussao de tradutores . Linux man-pages 6.06 28 janeiro 2024 console_codes(4)