Provided by:
manpages-es_1.55-10_all 
NOMBRE
console_codes - secuencias de escape y control de la consola de Linux
DESCRIPCI'ON
La consola de Linux implementa un vasto subconjunto de los controles de
terminal de la VT102 y del estandar ECMA-48/ISO 6429/ANSI X3.64, mas
ciertas secuencias de modo privadas para cambiar la paleta de colores,
asociaciones de conjuntos de caracteres, etc. En las descripciones
tabulares de abajo, la 2a columna da los mnemonicos ECMA-48 o DEC
(estos, prefijados por DEC) para la funcion dada. Las secuencias sin
un mnemonico no son ni ECMA-48 ni VT102.
Despues de haber hecho todo el procesamiento de salida normal, y de que
un flujo de caracteres llega al controlador de consola para la
impresion de verdad, la 1a cosa que ocurre es una traduccion del codigo
empleado para el procesamiento al codigo empleado para la impresion.
Si la consola esta en el modo UTF-8, entonces los bytes que llegan se
ensamblan 1o a los codigos de 16 b Unicode. Si no, cada byte se
transforma segun la tabla de asociaciones en curso (que lo traduce a un
valor Unicode). Vea mas abajo la seccion CONJUNTOS DE CARACTERES para
la discusion sobre esto.
En el caso normal, el valor Unicode se convierte a un indice de tipo de
letra, y este se almacena en memoria de video, de forma que aparezca en
la pantalla el grafo correspondiente (segun se encuentra en la ROM de
video). Observe que el empleo de Unicode (y el diseno del hardware del
PC) nos permite usar 512 grafos diferentes simultaneamente.
Si el valor actual Unicode es un caracter de control, o estamos
actualmente procesando una secuencia de escape, el valor se tratara
especialmente. En vez de convertirse a un indice de tipo y presentarse
como un grafismo, puede lanzar un movimiento del cursor u otra funcion
de control. Vea la seccion CONTROLES DE LA CONSOLA DE LINUX abajo para
la discusion sobre esto.
Generalmente no es una buena idea codificar directamente controles de
terminal en programas. Linux tiene una base de datos terminfo(5) de
capacidades de terminales. En vez de emitir a mano secuencias de
escape de la consola, Ud. deberia casi siempre utilizar una biblioteca
de pantalla que consultara terminfo o una utilidad, como ncurses(3),
tput(1), o reset(1).
CONTROLES DE LA CONSOLA DE LINUX
Esta seccion describe todos los caracteres de control y secuencias de
escape que llaman a funciones especiales (i.e., cualquier otra cosa
distinta a escribir un grafo en la localizacion del cursor en curso) en
la consola de Linux.
Caracteres de control
Un caracter lo es de control si (antes de la transformacion segun la
tabla de asociaciones) tiene uno de los 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). Uno puede establecer un modo
de `mostrar caracteres de control' (vea mas abajo), y permitir que los
codigos 07, 09, 0b, 18, 1a, 7f se muestren como grafos. Por otro lado,
en modo UTF-8 todos los codigos 00-1f se miran como caracteres de
control, sin importar ningun modo `mostrar caracteres de control'.
Si tenemos un caracter de control, se actua inmediatamente y luego se
descarta (incluso en medio de una secuencia de escape) y la secuencia
de escape continua con el siguiente caracter. (Sin embargo, ESC
empieza una nueva secuencia de escape, posiblemente abortando una
anterior no acabada, y CAN y SUB abortan cualquier secuencia de
escape). Los caracteres de control reconocidos son BEL, BS, HT, LF,
VT, FF, CR, SO, SI, CAN, SUB, ESC, DEL, CSI. Hacen lo que uno
esperaria:
BEL (0x07, ^G) pita;
BS (0x08, ^H) va un espacio atras a la columna anterior (pero no pasa
del principio de la linea);
HT (0x09, ^I) va a la siguiente parada de tabulacion o al final de la
linea si no hay antes una parada de tabulacion;
LF (0x0A, ^J), VT (0x0B, ^K) y FF (0x0C, ^L) todos dan un salto de
linea;
CR (0x0D, ^M) da un retorno de carro;
SO (0x0E, ^N) activa el conjunto de caracteres G1, y si esta activado
LF/NL (modo de nueva linea), tambien un retorno de carro;
SI (0x0F, ^O) activa el conjunto de carcteres G0;
CAN (0x18, ^X) y SUB (0x1A, ^Z) interrumpen secuencias de escape;
ESC (0x1B, ^[) empieza una secuencia de escape;
DEL (0x7F) no es tenido en cuenta;
CSI (0x9B) es equivalente a ESC [.
Secuencias de ESC, pero no CSI
ESC c RIS Inicio.
ESC D IND Salto de linea.
ESC E NEL Nueva linea.
ESC H HTS Pone parada tab en esta columna.
ESC M RI Salto de linea inverso.
ESC Z DECID DEC identificacion privada. El nucleo
devuelve la cadena ESC [ ? 6 c, diciendo
que es una VT102.
ESC 7 DECSC Salva el estado actual (cordenadas del cursor,
atributos, conjuntos de caracteres apuntados por G0, G1).
ESC 8 DECRC Restaura el estado salvado mas reciente por ESC 7.
ESC [ CSI Introductor de secuencia de control
ESC % Empieza la secuencia de seleccion de conjunto de caracteres
ESC % @ Selecciona el predeterminado (ISO 646 / ISO 8859-1)
ESC % G Selecciona UTF-8
ESC % 8 Selecciona UTF-8 (obsoleto)
ESC # 8 DECALN DEC prueba de alineacion en pantalla - la llena de E's.
ESC ( Empieza secuencia de definicion del conjunto G0
ESC ( B Selecciona predeterminado (asociacion ISO 8859-1)
ESC ( 0 Selecciona asociacion de graficos vt100
ESC ( U Selecciona ninguna asociacion - derecho a la ROM
ESC ( K Selecciona asociacion del usuario - la que se carga con
la utilidad mapscrn(8).
ESC ) Empieza la secuencia de definicion de G1
(seguido por uno de B, 0, U, K, como arriba).
ESC > DECPNM Pone el teclado auxiliar en modo numerico
ESC = DECPAM Pone el teclado auxiliar en modo aplicacion
ESC ] OSC (Deberia ser: Orden del sistema operativo)
ESC ] P nrrggbb: pone paleta, con parametro
dado en 7 digitos hexadecimales tras la P final :-(.
Aqui n es el color (0-15), y rrggbb indica
los valores rojo/verde/azul (0-255).
ESC ] R: restaura paleta
Secuencias ECMA-48 CSI
CSI (o ESC [) es seguido por una secuencia de parametros, como mucho
NPAR (16), que son los numeros decimales separados por punto y comas.
Un parametro vacio o ausente se toma como 0. La secuencia de
parametros puede ir precedida por un signo de interrogacion.
Sin embargo, tras CSI [ (o ESC [ [) se lee un caracter solo y esta
secuencia entera no es tenida en cuenta. (La idea es no hacer caso de
una tecla de funcion que se muestra.)
La accion de una secuencia CSI se determina por su caracter final.
@ ICH Insertar el No indicado de caracteres blancos
A CUU Mover cursor arriba el No indicado de filas
B CUD Mover cursor abajo el No indicado de filas
C CUF Mover cursor a la derecha el No indicado de columnas
D CUB Mover cursor a la izquierda el No indicado de columnas
E CNL Mover cursor abajo el No indicado de filas, a la columna 1
F CPL Mover cursor arriba el No indicado de filas, a la columna 1
G CHA Mover cursor a la columna indicada en la fila actual
H CUP Mover cursor a la fila y columna indicadas (origen en 1,1)
J ED Borrar pantalla (p. o.: desde el cursor al final de la pantalla).
ESC [ 1 J: borrar desde el comienzo hasta el cursor.
ESC [ 2 J: borrar la pantalla entera.
K EL Borrar linea (p.o.: desde el cursor al final de la linea).
ESC [ 1 K: borrar desde el comienzo de la linea al cursor
ESC [ 2 K: borrar la linea entera.
L IL Insertar el No indicado de lineas en blanco
M DL Borrar el No indicado de lineas
P DCH Borrar el No indicado de caracteres en la linea actual
X ECH Borrar el No indicado de caracteres en la linea actual
a HPR Mover cursor a la derecha el No indicado de columnas
c DA Reponder ESC [ ? 6 c: `Yo soy una VT102'.
d VPA Mover cursor a la fila y columna indicadas
e VPR Mover cursor abajo el No indicado de filas
f HVP Mover cursor a la fila y columna indicadas
g TBC Sin parametro: quita parada TAB en la posicion actual
ESC [ 3 g: borra todas las paradas de tabulacion
h SM Establece Modo (vea abajo).
l RM Restablece Modo (vea abajo).
m SGR Establece atributos (vea abajo).
n DSR Informe de estado (vea abajo).
q DECLL Establece los LEDs del teclado.
ESC [ 0 q: apaga todos los LEDs
ESC [ 1 q: pone LED Bloq. Despl.
ESC [ 2 q: pone LED Bloq. Num.
ESC [ 3 q: pone LED Bloq. Mayus.
r DECSTBM Establece region de rodadura; los parametros son la fila de arriba y abajo
s ? Salva la localizacion del cursor
u ? Restaura la localizacion del cursor.
` HPA Mover cursor a la columna indicada en la fila indicada
ECMA-48 Pone modo Gr'afico
La secuencia ECMA-48 SGR ESC [ <parametros> m establece los atributos
de la pantalla. Se pueden poner varios atributos en la misma
secuencia.
par resultado
0 restablece todos los atributos a sus valores predeterminados
1 pone negrillas
2 pone medio brillo (simulado con color en una pantalla a color)
4 pone subrayado (simulado con color en una pantalla a color)
(los colores para simular disminucion o subrayado se ponen con
ESC ] ...)
5 pone intermitencia
7 pone video inverso
10 restaura asociacion seleccionada, indicador de control de
pantalla y cambia el indicador meta
11 selecciona no asociacion, pone indicador de control de
pantalla, restaura indicador de cambio meta
12 selecciona no asociacion, pone indicador de control de
pantalla, pone indicador de cambio meta (que hace que el bit
mas alto de un byte cambie antes de que se haga la traduccion
de la tabla de asociacion.)
21 pone intensidad normal (esto no es compatible con ECMA-48)
22 pone intensidad normal
24 quita subrayado
25 quita intermitencia
27 quita video inverso
30 pone negro
31 pone rojo
32 pone verde
33 pone marron
34 pone azul
35 pone rosa
36 pone celeste
37 pone blanco
38 pone subrayado, color predeterminado
39 quita subrayado, pone color predeterminado
40 pone negro de fondo
41 pone rojo de fondo
42 pone verde de fondo
43 pone marron de fondo
44 pone azul de fondo
45 pone rosa de fondo
46 pone celeste de fondo
47 pone blanco de fondo
49 pone el color de fondo predeterminado
Interruptores de Modo ECMA-48
ESC [ 3 h
DECCRM (por omision desactivado): Mostrar caracteres de control
ESC [ 4 h
DECIM (por omision desactivado): Poner modo de insercion
ESC [ 20 h
LF/NL (por omision desactivado): Automaticamente seguir a LF, VT
o FF con CR.
'Ordenes de Informe de Estado ECMA-48
ESC [ 5 n
Informe de estado de dispositivo (DSR): La respuesta es ESC [ 0
n (Terminal OK).
ESC [ 6 n
Informe de posicion de cursor (CPR): La respuesta es ESC [ y ; x
R, donde x,y es la localizacion del cursor.
Secuencias de Modo Privado DEC (DECSET/DECRST).
Estas no se describen en ECMA-48. Listamos las secuencias de Establecer
Modo; las de Reestablecer Modo se obtienen reemplazando la hache final
por ele.
ESC [ ? 1 h
DECCKM (por omisison desactivado): Cuando esta activado, las
teclas de cursor envian un prefijo ESC O, en vez de ESC [.
ESC [ ? 3 h
DECCOLM (por omision desactivado = 80 columnas): interruptor de
modo 80/132 columnas. En los fuentes del controlador se hace
notar que esto solo no basta; alguna utilidad de usuario como
resizecons(8) tiene que cambiar los registros de hardware en la
tarjeta de video de consola.
ESC [ ? 5 h
DECSCNM (por omision desactivado): Pone el modo de video inverso
ESC [ ? 6 h
DECOM (por omision desactivado): Cuando esta activado, el
direccionamiento del cursor es relativo a la esquina superior
izquierda de la region de rodadura.
ESC [ ? 7 h
DECAWM (por omision activado): Activa el paso automatico de
renglon. En este modo, un caracter grafico emitido tras la
columna 80 (o la 132 si esta activado DECCOLM) fuerza un cambio
al principio de la siguiente linea.
ESC [ ? 8 h
DECARM (por omision activado): Activa la auto-repeticion del
teclado
ESC [ ? 9 h
Informe de Raton X10 (por omision desactivado): Establece el
modo de informe a 1 (o lo restaura a 0) - vea abajo.
ESC [ ? 25 h
DECCM (por omision activado): Hace visible el cursor.
ESC [ ? 1000 h
Informe de Raton X11 (por omision desactivado): Establece el
modo de informe a 2 (o lo restaura a 0) - vea abajo.
Secuencias Privadas de Consola de Linux CSI
Las siguientes secuencias no son ni ECMA-48 ni VT102 nativas. Son
nativas al controlador de consola de Linux. Los colores estan en los
parametros SGR: 0 = negro, 1 = rojo, 2 = verde, 3 = marron, 4 = azul, 5
= rosa, 6 = celeste, 7 = blanco.
ESC [ 1 ; n ] Pone el color n como el de subrayado
ESC [ 2 ; n ] Pone el color n como el disminuido
ESC [ 8 ] Hace al color actual el de los atributos predeterminados
ESC [ 9 ; n ] Pone el tiempo de espera del blanqueado de la terminal a n min.
ESC [ 10 ; n ] Establece la frecuencia del pito en Hz.
ESC [ 11 ; n ] Establece la duracion del pitido en ms.
ESC [ 12 ; n ] Trae al frente la consola especificada.
ESC [ 13 ] Quita el blanco de la pantalla.
ESC [ 14 ; n ] Establece el intervalo de apagado VESA en min.
CONJUNTOS DE CARACTERES
El nucleo sabe de 4 traducciones de bytes a simbolos de la pantalla de
la consola. Las cuatro tablas son: a) Latin1 -> PC, b) graficos VT100
-> PC, c) PC -> PC, d) definida por el usuario.
Hay dos conjuntos de caracteres, llamados G0 y G1, y uno de ellos es el
actual. (Inicialmente G0.)
Teclear ^N hace que G1 sea el actual, ^O hace a G0 el actual.
Estas variables G0 y G1 apuntan a una tabla de traduccion, y pueden ser
cambiadas por el usuario. Inicialmente apuntan a las tablas a) y b)
respectivamente. Las secuencias ESC ( B y ESC ( 0 y ESC ( U y ESC ( K
causan que G0 apunte a la tabla a), b), c) y d) respectivamente. Las
secuencias ESC ) B y ESC ) 0 y ESC ) U y ESC ) K causan que G1 apunte a
la tabla a), b), c) y d), respectivamente.
La secuencia ESC c provoca una puesta a cero de la terminal, que es lo
que uno quiere cuando la pantalla esta liada. El otrora truco "echo
^V^O" solamente hace G0 actual, pero no hay garantias de que G0 apunte
a la tabla a). En algunas distribuciones hay un programa reset(1) que
simplemente hace "echo ^[c". Si su entrada de terminfo para la consola
es correcto (y tiene una entrada rs1=\Ec), entonces "tput reset"
tambien funcionara.
La tabla de asociacion definida por el usuario puede ponerse con
mapscrn(8). El resultado de la asociacion es que si hay un simbolo c
que se imprime, se envia a la memoria de video el simbolo s = map[c].
El mapa de bits que corresponde a s se encuentra en la ROM de
caracteres, y puede cambiarse mediante setfont(8).
PISTA DEL RAT'ON
La facilidad de seguimiento de pista del raton sirve para devolver
informes de estado del raton compatibles con xterm. Puesto que el
controlador de consola no tiene forma de conocer el dispositivo ni tipo
del raton, estos informes se devuelven en el flujo de entrada de la
consola solo cuando del controlador de terminal virtual recibe un ioctl
de actualizacion de raton. Estos ioctls deben ser generados por una
aplicacion de usuario que haga uso del raton como el duende gpm(8).
Los parametros para todas las secuencias de escape de pista del raton
generadas por xterm codifican los parametros numericos en un simple
caracter como valor+040. Por ejemplo, `!' es 1. El sistema de
coordenadas de la pantalla empieza en 1.
El modo de compatibilidad X10 envia una secuencia de escape cuando se
pulsa un boton codificando la localizacion y el boton del raton
pulsado. Esto se activa enviando ESC [ ? 9 h y se desactiva con ESC [
? 9 l. Cuando se pulsa un boton, xterm envia ESC [ M bxy (6
caracteres). Aqui b es boton-1, y x y y son las coordenadas x e y del
raton cuando se pulso el boton. Esto es el mismo codigo que el nucleo
tambien produce.
El modo de pista normal (no implementado en Linux 2.0.24) envia una
secuencia de escape cuando se pulas o se libera un boton. Tambien se
envia informacion de modificador. Se habilita enviando ESC [ ? 1000 h y
se inhabilita con ESC [ 1000 l. Cuando se pulas o libera un boton,
xtermenvia ESC [ M bxy. Los dos bits bajos de b codifican informacion
del boton: 0=MB1 pulsado, 1=MB2 pulsado, 2=MB3 pulsado, 3=liberar. Los
bits mas altos codifican que modificadores estaban pulsados cuando el
boton se hubo presionado y se anaden juntos: 4=Mayusculas, 8=Meta,
16=Control. De nuevo x e y son las coordenadas x e y del evento de
raton. La esquina superior izquierda es (1,1).
COMPARACIONES CON OTRAS TERMINALES
Muchos tipos diferentes de terminal se describen, como la consola de
Linux, como `compatibles VT100'. Aqui se discuten las diferencias entre
la consola de Linux y las otras dos mas importantes, la VT102 de DEC y
la xterm(1).
Manejo de caracteres de control
La vt102 tambien reconocia los siguientes caracteres de control:
NUL (0x00) no era tenido en cuenta;
ENQ (0x05) lanzaba un mensaje de reconocimiento;
DC1 (0x11, ^Q, XON) reanudaba la transmision;
DC3 (0x13, ^S, XOFF) hacia que la vt100 no tuviera en cuenta (y parara
la transmision) ningun codigo excepto XOFF y XON.
El controlador de tty puede habilitar el procesamiento de DC1/DC3 al
estilo de la VT100.
El programa xterm (en modo vt100) reconoce los caracteres de control
BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC.
Secuencias de Escape
Secuncias de consola VT100 no implementadas en la consola de Linux:
ESC N SS2 Simple cambio 2. (Selecciona el conjunto de caracteres
G2 solo para el sgute. caracter.)
ESC O SS3 Simple cambio 3. (Selecciona el conjunto de caracteres
G3 solo para el sgute. caracter.)
ESC P DCS Cadena de control de dispositivo (acabada por ESC \)
ESC X SOS Comienzo de cadena.
ESC ^ PM Mensaje de privacidad (acabado por ESC \)
ESC \ ST Terminador de caadena
ESC * ... Designa el conjunto de caracteres G2
ESC + ... Designa el conjunto de caracteres G3
El programa xterm (en modo vt100) reconoce ESC c, ESC # 8, ESC >, ESC
=, ESC D, ESC E, ESC H, ESC M, ESC N, ESC O, ESC P ... ESC ESC Z
(responde ESC [ ? 1 ; 2 c, `Yo soy una vt100 con opcion de video
avanzado') y ESC ^ ... ESC con los mismos significados que los arriba
indicados. Acepta ESC (, ESC ), ESC *, ESC + seguidos por 0, A, B
para el conjunto de caracteres especiales y lineas de dibujo de DEC, UK
y US-ASCII, respectivamente. Acepta ESC ] para el establecimiento de
ciertos recursos:
ESC ] 0 ; txt BEL Pone nombre de icono y titulo de ventana como txt.
ESC ] 1 ; txt BEL Pone txt como nombre de icono.
ESC ] 2 ; txt BEL Pone txt como titulo de ventana.
ESC ] 4 6 ; log BEL Cambia el nombre del fichero de registro a log
(normalmente deshabilitado por una opcion de tiempo de
compilacion)
ESC ] 5 0 ; fn BEL Pone fn como el tipo de letra.
Reconoce lo siguiente con un significado ligeramente modificado:
ESC 7 DECSC Salva el cursor
ESC 8 DECRC Restaura el cursor
Tambien reconoce
ESC F Cursor a esquina inferior izda. de la pantalla (si
permitido por el recurso hpLowerleftBugCompat)
ESC l Bloqueo de memoria (por terminales HP).
Bloquea la memoria sobre el cursor.
ESC m Desbloqueo de memoria (por terminales HP).
ESC n LS2 Invoca el conjunto de caracteres G2.
ESC o LS3 Invoca el conjunto de caracteres G2.
ESC | LS3R Invoca el conjunto de caracteres G3 como GR.
No tiene efecto visible en xterm.
ESC } LS2R Invoca el conjunto de caracteres G2 como GR.
No tiene efecto visible en xterm.
ESC ~ LS1R Invoca el conjunto de caracteres G1 como GR.
No tiene efecto visible en xterm.
No reconoce ESC % ...
Secuencias CSI
El programa xterm (en XFree86 3.1.2G) no reconoce los SGRs de modo
invisible o parpadeo. Versiones originales X11R6 no reconocen los SGRs
de establecimiento de colores. Todas las otras secuencias CSI de
ECMA-48 reconocidas por Linux tambien lo son por xterm, y viceversa.
El programa xterm reconocera todas las secuencias de Modo Privado de
DEC listadas arriba, pero ninguna de las secuencias de modo privado de
Linux. Para una discusion sobre las propias secuencias de modo privado
de xterm, refierase al documento Xterm Control Sequences por Edward Moy
& Stephen Gildea, disponible con la distribucion X-Window.
FALLOS
En 2.0.23, CSI no funciona, y NUL es tenido en cuenta dentro de
secuencias de escape.
V'EASE TAMBI'EN
console(4), console_ioctl(4), charsets(7)