Código de escape ANSI
Las secuencias de escape ANSI son un estándar para la señalización en banda para controlar la ubicación del cursor, el color, el estilo de fuente y otras opciones en terminales de texto de video y emuladores de terminales. Ciertas secuencias de bytes, la mayoría comenzando con un carácter de escape ASCII y un carácter de corchete, están incrustadas en el texto. El terminal interpreta estas secuencias como comandos, en lugar de texto para mostrar textualmente.
Las secuencias ANSI se introdujeron en la década de 1970 para reemplazar las secuencias específicas del proveedor y se generalizaron en el mercado de equipos informáticos a principios de la década de 1980. Se utilizan en aplicaciones de desarrollo, científicas y comerciales basadas en texto, así como en sistemas de tablones de anuncios para ofrecer una funcionalidad estandarizada.
Aunque los terminales de texto de hardware se han vuelto cada vez más escasos en el siglo XXI, la relevancia del estándar ANSI persiste porque la gran mayoría de los emuladores de terminales y las consolas de comando interpretan al menos una parte del estándar ANSI.
Historia
Casi todos los fabricantes de terminales de video agregaron secuencias de escape específicas del proveedor para realizar operaciones como colocar el cursor en posiciones arbitrarias en la pantalla. Un ejemplo es el terminal VT52, que permitía colocar el cursor en una ubicación x,y en la pantalla enviando el ESC
carácter, un Y
, y luego dos caracteres que representen valores numéricos iguales a la ubicación x,y más 32 (comenzando así en el carácter de espacio ASCII y evitando los caracteres de control). El Hazeltine 1500 tenía una característica similar, invocada usando ~
, DC1
y luego las posiciones X e Y separadas con una coma Si bien los dos terminales tenían una funcionalidad idéntica en este sentido, se tuvieron que usar diferentes secuencias de control para invocarlos.
Como estas secuencias eran diferentes para diferentes terminales, se tuvieron que crear bibliotecas elaboradas como termcap ("capacidades de terminal") y utilidades como tput para que los programas pudieran usar la misma API para trabajar con cualquier terminal. Además, muchas de estas terminales requerían enviar números (como fila y columna) como los valores binarios de los caracteres; para algunos lenguajes de programación y para sistemas que no usaban ASCII internamente, a menudo era difícil convertir un número en el carácter correcto.
El estándar ANSI intentó abordar estos problemas creando un conjunto de comandos que todos los terminales usarían y requiriendo que toda la información numérica se transmitiera como números ASCII. El primer estándar de la serie fue ECMA-48, adoptado en 1976. Fue una continuación de una serie de estándares de codificación de caracteres, siendo el primero ECMA-6 de 1965, un estándar de 7 bits del que se origina ISO 646. El nombre "secuencia de escape ANSI" data de 1979 cuando ANSI adoptó ANSI X3.64. El comité ANSI X3L2 colaboró con el comité ECMA TC 1 para producir estándares casi idénticos. Estos dos estándares se fusionaron en un estándar internacional, ISO 6429. En 1994, ANSI retiró su estándar a favor del estándar internacional.
El primer terminal de video popular que admitió estas secuencias fue el Digital VT100, presentado en 1978. Este modelo tuvo mucho éxito en el mercado, lo que provocó una variedad de clones VT100, entre los primeros y más populares de los cuales estaba el mucho más asequible Zenith Z-19 en 1979. Otros incluyeron Qume QVT-108, Televideo TVI-970, Wyse WY-99GT, así como el opcional "VT100" o "VT103" o "ANSI" modos con diversos grados de compatibilidad en muchas otras marcas. La popularidad de estos gradualmente condujo a más y más software (especialmente sistemas de tablones de anuncios y otros servicios en línea) suponiendo que las secuencias de escape funcionaran, lo que llevó a casi todas las nuevas terminales y programas emuladores a admitirlas.
En 1981, la publicación 86 de FIPS adoptó ANSI X3.64 para su uso en el gobierno de los EE. UU. Más tarde, el gobierno de los EE. UU. dejó de duplicar los estándares de la industria, por lo que la publicación FIPS. 86 fue retirado.
ECMA-48 se ha actualizado varias veces y actualmente se encuentra en su quinta edición, de 1991. También es adoptado por ISO e IEC como estándar ISO/IEC 6429. Se adopta una versión como estándar industrial japonés, como JIS X 0211.
Los estándares relacionados incluyen ITU T.61, el estándar Teletex, y ISO/IEC 8613, el estándar de Arquitectura de documento abierto (principalmente ISO/IEC 8613-6 o ITU T.416). Los dos sistemas comparten muchos códigos de escape con el sistema ANSI, con extensiones que no son necesariamente significativas para las terminales de computadora. Ambos sistemas cayeron rápidamente en desuso, pero ECMA-48 marca las extensiones utilizadas en ellos como reservadas.
Soporte de plataforma
Sistemas similares a Unix
En estos sistemas, el terminal (o emulador) se autoidentifica mediante la variable de entorno $TERM
. Una biblioteca de base de datos como termcap o terminfo realizaría una búsqueda para derivar las capacidades del terminal y las secuencias de escape específicas para usar las capacidades, que pueden desviarse de ANSI en los primeros días.
Aunque estas bibliotecas se desarrollaron principalmente en y para Unix, a mediados de la década de 1980, los programas que se ejecutaban en sistemas operativos similares a Unix casi siempre podían asumir que estaban usando un terminal o emulador compatible con secuencias ANSI; esto condujo al uso generalizado de ANSI por parte de los programas que se ejecutan en esas plataformas. Por ejemplo, muchos juegos y scripts de shell, y utilidades como listas de directorios de colores, escriben directamente las secuencias ANSI y, por lo tanto, no se pueden usar en una terminal que no las interprete. Muchos programas, incluidos los editores de texto como vi y GNU Emacs, usan termcap o terminfo, o usan bibliotecas como curses que usan termcap o terminfo y, por lo tanto, en teoría admiten terminales que no son ANSI, pero esto se prueba tan raramente hoy en día que son es poco probable que funcione con esos terminales.
Los emuladores de terminal para comunicarse con programas locales, así como con máquinas remotas y la consola del sistema de texto casi siempre admiten códigos de escape ANSI. Esto incluye emuladores de terminal como xterm, rxvt, GNOME Terminal y Konsole en sistemas con sistemas de ventanas basados en X11 o Wayland, y Terminal.app y emuladores de terminal de terceros como iTerm2 en macOS.
CP/M
Las máquinas CP/M variaban y existían varias terminales de la competencia, como para impresoras, cada una con sus propias secuencias de control. Algunos de los primeros sistemas no tenían periféricos (necesitaban una terminal externa) y las computadoras personales con una pantalla nativa generalmente emulaban una terminal. Los desarrolladores de aplicaciones tenían que admitir varios terminales populares y proporcionar un programa de instalación para configurarlos. A pesar de la capa de abstracción de hardware (BIOS) de CP/M, incluso para el mismo microprocesador, los proveedores proporcionaron versiones específicas de la plataforma debido a los formatos de disco de la competencia, que también estarían preconfigurados para el terminal nativo (por ejemplo, varias adaptaciones de WordStar específicas de la máquina). fueron liberados).
Por lo general, el Altair 8800 sin auriculares se conectaba a un teletipo como el Model 33 ASR oa un terminal externo como el TeleVideo 920C, que necesitaba emitir sus respectivas secuencias. Las computadoras Osborne 1 y Kaypro II emularon de forma nativa un subconjunto de los códigos de control TeleVideo 920C y ADM-3A, respectivamente. El TRS-80 Model 4 y el Xerox 820 también emularon el Lear Siegler ADM-3A. Las computadoras Zenith Z-89, Heathkit H8 y Amstrad PCW CP/M-80 implementaron los códigos de terminal Zenith Z19 (Heathkit H19), en su mayoría compatibles con VT52, el manual Z-89 también lo describe como compatible con ANSI.
La Microsoft Z-80 SoftCard para Apple II emuló un subconjunto limitado de Videx Videoterm, correspondiente a las secuencias Datamedia 1520 que admitía Apple Pascal basado en UCSD. Su CP/M disponía del comando CONFIGIO para adaptar terminales externos o ejecutar aplicaciones locales que emitían otros códigos de control. Los terminales externos admitidos fueron Soroc IQ 120/140 y Hazeltine 1500/1510.
DOS, OS/2 y Windows
MS-DOS 1.x no admitía ANSI ni ninguna otra secuencia de escape. El BIOS subyacente solo interpretó unos pocos caracteres de control (BEL, CR, LF, BS), lo que hace que sea casi imposible realizar cualquier tipo de aplicación de pantalla completa. Cualquier efecto de visualización tenía que hacerse con llamadas al BIOS, que eran notoriamente lentas, o manipulando directamente el hardware de la PC de IBM.
DOS 2.0 introdujo la capacidad de agregar un controlador de dispositivo para las secuencias de escape ANSI; el estándar de facto es ANSI.SYS, pero otros como ANSI.COM, NANSI.SYS y ANSIPLUS.EXE se utilizan como bien (estos son considerablemente más rápidos ya que pasan por alto el BIOS). La lentitud y el hecho de que no estuviera instalado por defecto hacía que el software rara vez lo aprovechara; en cambio, las aplicaciones continuaron manipulando directamente el hardware para obtener la visualización de texto necesaria. ANSI.SYS y controladores similares continuaron funcionando en Windows 9x hasta Windows Me y en sistemas derivados de NT para programas heredados de 16 bits que se ejecutan bajo NTVDM.
Muchos clones de DOS pudieron interpretar las secuencias y no requieren que se cargue un controlador ANSI por separado. PTS-DOS, así como DOS concurrente, DOS multiusuario y REAL/32 tienen soporte integrado (además de una serie de extensiones). OS/2 tenía un comando ANSI que habilitaba las secuencias.
La consola de Windows no admitía secuencias de escape ANSI, ni Microsoft proporcionó ningún método para habilitarlas. Algunos reemplazos o adiciones para la ventana de la consola, como TCC de JP Software (anteriormente 4NT), ANSI.COM de Michael J. Mefford, ANSICON y ConEmu de Maximus5 interpretó las secuencias de escape ANSI impresas por los programas. Un paquete de Python llamado colorama interpreta internamente las secuencias de escape ANSI en el texto que se está imprimiendo, traduciéndolas a llamadas win32 para modificar el estado de la terminal, para facilitar la transferencia del código Python usando ANSI a Windows. Cygwin realiza una traducción similar a todos los resultados escritos en la consola usando los descriptores de archivos de Cygwin, el filtrado se realiza mediante las funciones de salida de cygwin1.dll, para permitir la transferencia del código POSIX C a Windows.
En 2016, Microsoft lanzó la actualización de Windows 10, versión 1511, que inesperadamente implementó la compatibilidad con las secuencias de escape ANSI, más de dos décadas después del debut de Windows NT. Esto se hizo junto con el subsistema de Windows para Linux, lo que permitió que el software basado en terminal similar a Unix usara las secuencias en la consola de Windows. El valor predeterminado es desactivado, pero Windows PowerShell 5.1 lo habilitó. PowerShell 6 hizo posible incrustar el carácter ESC necesario en una cadena con `e
.
Windows Terminal, presentado en 2019, admite las secuencias de forma predeterminada y Microsoft tiene la intención de reemplazar la Consola de Windows con Windows Terminal.
Serie Atari ST/TT/Falcon
Atari TOS usó el sistema de comandos adaptado del VT52 con algunas expansiones para admitir colores, en lugar de admitir códigos de escape ANSI.
Amiga OS
AmigaOS no solo interpreta las secuencias de código ANSI para la salida de texto en la pantalla, el controlador de impresora de AmigaOS también las interpreta (con extensiones propias de AmigaOS) y las traduce a los códigos requeridos para la impresora en particular que está realmente conectada.
Efecto | |
---|---|
ESC [ # | Establece la longitud máxima de las líneas en la ventana a n. |
ESC [ # | Establece el número máximo de líneas en ventana a n. |
ESC [ # | Empieza texto n píxeles desde el borde izquierdo de la ventana. |
ESC [ # | Empieza texto n píxeles desde el borde superior de la ventana. |
VMS/OpenVMS
VMS fue diseñado para ser controlado mediante terminales de video basados en texto de Digital, como el mencionado VT100; por lo tanto, el software tiende a escribir las secuencias de escape ANSI directamente (y no funcionará en terminales que no sean ANSI).
Descripción
Códigos de control C0
Casi todos los usuarios asumen algunas funciones de algunos caracteres de un solo byte. Inicialmente definido como parte de ASCII, el conjunto de códigos de control C0 predeterminado ahora se define en ISO 6429 (ECMA-48), lo que lo convierte en parte del mismo estándar que el conjunto C1 invocado por las secuencias de escape ANSI (aunque ISO 2022 permite que ISO 6429 C0 configurado para usarse sin el conjunto ISO 6429 C1, y viceversa, siempre que 0x1B sea siempre ESC). Esto se usa para acortar la cantidad de datos transmitidos o para realizar algunas funciones que no están disponibles en las secuencias de escape:
^ | C0 | Abbr | Nombre | Efecto |
---|---|---|---|---|
^ G | 7 | BEL | Bell | Hace un ruido audible. |
^ H | 8 | BS | Backspace | Mueva el cursor izquierdo (pero puede "envolver" si el cursor está al inicio de la línea). |
^ I | 9 | HT | Tab | Mueva el cursor derecho al siguiente múltiplo de 8. |
^J | 0x0A | LF | Línea de alimentación | Se mueve a la siguiente línea, desplaza la pantalla hacia arriba si en la parte inferior de la pantalla. Normalmente no se mueve horizontalmente, aunque los programas no deben depender de esto. |
^ L | 0x0C | FF | Forma Feed | Mueva una impresora a la parte superior de la siguiente página. Normalmente no se mueve horizontalmente, aunque los programas no deben depender de esto. Efecto en terminales de vídeo varía. |
^M | 0x0D | CR | Carriage Return | Mueva el cursor a la columna cero. |
^ | 0x1B | ESC | Escape | Empieza todas las secuencias de escape |
Las secuencias de escape varían en duración. El formato general para una secuencia de escape compatible con ANSI está definido por ANSI X3.41 (equivalente a ECMA-35 o ISO/IEC 2022). Las secuencias de escape constan solo de bytes en el rango 0x20—0x7F (todos los caracteres ASCII que no son de control) y se pueden analizar sin mirar hacia adelante. El comportamiento cuando se encuentra un carácter de control, un byte con el bit alto establecido o un byte que no forma parte de ninguna secuencia válida, se encuentra antes del final no está definido.
Fe Secuencias de escape
Si ESC va seguido de un byte en el rango de 0x40 a 0x5F, la secuencia de escape es del tipo Fe
. Su interpretación se delega al estándar de código de control C1 aplicable. En consecuencia, todas las secuencias de escape correspondientes a los códigos de control C1 de ANSI X3.64 / ECMA-48 siguen este formato.
El estándar dice que, en entornos de 8 bits, el control funciona correspondiente al tipo Fe
(aquellas del conjunto de códigos de control C1) se pueden representar como bytes individuales en el rango 0x80–0x9F. Esto es posible en codificaciones de caracteres conforme a las disposiciones para un código de 8 bits realizadas en ISO 2022, como la serie ISO 8859. Sin embargo, en las codificaciones de caracteres que se usan en dispositivos modernos como UTF-8 o CP-1252, esos códigos a menudo se usan para otros fines, por lo que normalmente solo se usa la secuencia de 2 bytes. En el caso de UTF-8, representar un código de control C1 a través de los controles C1 y el bloque Suplemento Latin-1 da como resultado un código diferente de dos bytes (por ejemplo, 0xC2,0x8E para U+008E), pero no se guarda espacio de esta manera.
Código | C1 | Abbr | Nombre | Efecto |
---|---|---|---|---|
ESC N | 0x8E | SS2 | Cambio único Dos. | Seleccione un único personaje de uno de los conjuntos de caracteres alternativos. SS2 selecciona el conjunto de caracteres G2, y SS3 selecciona el conjunto de caracteres G3. En un entorno de 7 bits, esto es seguido por uno o más bytes GL (0x20–0x7F) especificando un personaje de ese conjunto. En un entorno de 8 bits, estos pueden ser bytes GR (0xA0-0xFF). |
ESC O | 0x8F | SS3 | Cambio único Tres. | |
ESC P | 0x90 | DCS | Cierre de control de dispositivos | Terminado por ST. Los usos de esta secuencia de Xterm incluyen definir Claves definidas por el Usuario y solicitar o establecer datos de Termcap/Terminfo. |
ESC [ | 0x9B | CSI | Control Sequence Introducer | Empieza la mayoría de las secuencias útiles, terminadas por un byte en el rango 0x40 a 0x7E. |
ESC | 0x9C | ST | String Terminator | Termina cadenas en otros controles. |
ESC ] | 0x9D | OSC | Mando del sistema operativo | Empieza una cadena de control para el sistema operativo a utilizar, terminada por ST. |
ESC X | 0x98 | SOS | Inicio de la cuerda | Toma un argumento de una cadena de texto, terminada por ST. Los usos para estas secuencias de control de cadenas se definen por la aplicación o disciplina de privacidad. Estas funciones rara vez se implementan y los argumentos son ignorados por xterm. Algunos clientes de Kermit permiten que el servidor ejecute automáticamente comandos de Kermit en el cliente incrustándolos en secuencias APC; este es un riesgo potencial de seguridad si el servidor no está conectado. |
ESC ^ | 0x9E | PM | Mensaje de privacidad | |
ESC _ | 0x9F | APC | Application Program Command |
Secuencias CSI (introductor de secuencia de control)
Para los comandos del Introductor de secuencia de control, o CSI, el ESC [
(escrito como e[
o 33[
en varios lenguajes de programación y secuencias de comandos) va seguido de cualquier número (incluido ninguno) de "bytes de parámetro" en el rango 0x30–0x3F (ASCII 0–9:;<=>?
), luego por cualquier número de "bytes intermedios" en el rango 0x20–0x2F (espacio ASCII y !" #$%&'()*+,-./
), y finalmente por un único "byte final" en el rango 0x40–0x7E (ASCII @A–Z[]^_`a–z{|}~
).
Todas las secuencias comunes solo usan los parámetros como una serie de números separados por punto y coma, como 1;2;3
. Los números que faltan se tratan como 0
(1;;3
actúa como si el número del medio fuera 0
, y ningún parámetro en ESC[m
actúa como un 0
código de reinicio). Algunas secuencias (como CUU) tratan 0
como 1
para que los parámetros faltantes sean útiles.
Un subconjunto de arreglos fue declarado "privado" para que los fabricantes de terminales pudieran insertar sus propias secuencias sin entrar en conflicto con el estándar. Las secuencias que contienen los bytes de parámetro <=>?
o los bytes finales 0x70–0x7E (p–z{|}~
) son privadas.
El comportamiento del terminal no está definido en el caso de que una secuencia CSI contenga cualquier carácter fuera del rango 0x20–0x7E. Estos caracteres ilegales son caracteres de control C0 (el rango 0–0x1F), DEL (0x7F) o bytes con el conjunto de bits alto. Las posibles respuestas son ignorar el byte, procesarlo de inmediato y, además, continuar con la secuencia CSI, abortarla de inmediato o ignorar el resto.
Código | Abbr | Nombre | Efecto |
---|---|---|---|
CSI n A | CUU | Cursor Up | Mueva el cursor n (default) 1 ) células en la dirección dada. Si el cursor ya está al borde de la pantalla, esto no tiene efecto.
|
CSI n B | CUD | Cursor Down | |
CSI n C | CUF | Cursor Forward | |
CSI n D | CUB | Cursor Back | |
CSI n E | CNL | Cursor Next Line | Mueva el cursor al comienzo de la línea n (default) 1 Las líneas abajo. (no ANSI.SYS)
|
CSI n F | CPL | Cursor Línea anterior | Mueva el cursor al comienzo de la línea n (default) 1 En fila. (no ANSI.SYS)
|
CSI n G | CHA | Cursor Absoluto Horizontal | Mueva el cursor a la columna n (default) 1 ). (no ANSI.SYS)
|
CSIn;mH | CUP | Posición del cursor | Mueva el cursor a fila n, columna m. Los valores están basados en 1 y por defecto 1 Si se omite. Una secuencia como CSI;5H es un sinónimo CSI 1;5H así como CSI 17;H es lo mismo que CSI 17H y CSI 17;1H |
CSI n J | ED | Borrar en pantalla | Limpia parte de la pantalla. Si n es 0 (o falta), claro desde el cursor hasta el final de la pantalla. Si n es 1 , claro desde el cursor hasta el comienzo de la pantalla. Si n es 2 , pantalla completa clara (y mueve cursor a la izquierda superior en DOS ANSI.SYS). Si n es 3 , pantalla completa clara y eliminar todas las líneas guardadas en el búfer de desplazamiento (esta característica fue agregada para xterm y es compatible con otras aplicaciones terminales).
|
CSI n K | EL | Borrar la línea | Borra parte de la línea. Si n es 0 (o falta), claro desde el cursor hasta el final de la línea. Si n es 1 , claro desde el cursor hasta el comienzo de la línea. Si n es 2 , clara línea completa. La posición del cursor no cambia.
|
CSI n S | Seguro. | Scroll Up | Desplazar toda la página por n (default) 1 Líneas. Se añaden nuevas líneas en la parte inferior. (no ANSI.SYS)
|
CSI n T | SD | Abajo. | Desplazar toda la página abajo n (default) 1 Líneas. Se añaden nuevas líneas en la parte superior. (no ANSI.SYS)
|
CSI n; m f | HVP | Posición vertical horizontal | Igual que CUP, pero cuenta como una función de efector de formato (como CR o LF) en lugar de una función de editor (como CUD o CNL). Esto puede llevar a un manejo diferente en ciertos modos terminales. |
CSI n m | SGR | Select Graphic Rendition | Establece colores y estilo de los personajes siguiendo este código |
CSI 5i | Puerto AUX en | Permitir aux puerto serie generalmente para la impresora serial local | |
CSI 4i | AUX Puerto Off | Desactivar el puerto serie aux generalmente para la impresora serial local
| |
CSI 6n | DSR | Informe sobre el estado de los dispositivos | Informa la posición del cursor (CPR) por transmisión ESC[n;mR , donde n es la fila y m es la columna.
|
Código | Abbr | Nombre | Efecto |
---|---|---|---|
CSI s | SCP, SCOSC | Guardar la posición actual del cursor | Guarda la posición del cursor/estado en modo consola SCO. En modo de pantalla dividida vertical, en lugar de fijar (como CSI n; n s ) o restablecer los márgenes izquierdo y derecho.
|
CSI u | RCP, SCORC | Restaurar la posición del cursor guardado | Restaura la posición del cursor/estado en modo consola SCO. |
CSI? 25 h | DECTCEM | Muestra el cursor, del VT220. | |
CSI? 25 l | DECTCEM | Oculta el cursor. | |
¿CSI? 1004 h | Activar el enfoque de presentación de informes. Los informes cuando el emulador terminal entra o sale se centran como ESC [I y ESC [O , respectivamente.
| ||
¿CSI? 1004 l | Desactivar el enfoque de presentación de informes. | ||
¿CSI? 1049 h | Activar el búfer de pantalla alternativa, desde xterm | ||
¿CSI? 1049 l | Desactivar el búfer de pantalla alternativa, desde xterm | ||
¿CSI? 2004 h | Activa el modo de pasta entre corchetes. En modo de pasta entre corchetes, el texto pegado al terminal estará rodeado por ESC [200~ y ESC [201~ ; los programas que se ejecutan en el terminal no deben tratar caracteres entre corchetes por esas secuencias como comandos (Vim, por ejemplo, no los trata como comandos). De xterm
| ||
¿CSI? 2004 l | Apaga el modo de pasta entre corchetes. |
Parámetros SGR (Seleccionar Representación Gráfica)
La secuencia de control CSI n m
, llamada Select Graphic Rendition (SGR), establece los atributos de visualización. Se pueden establecer varios atributos en la misma secuencia, separados por punto y coma. Cada atributo de visualización permanece en vigor hasta que una siguiente aparición de SGR lo restablece. Si no se proporcionan códigos, CSI m
se trata como CSI 0 m
(restablecer/normal).
n | Nombre | Nota |
---|---|---|
0 | Reset o normal | Todos los atributos apagados |
1 | Intensidad audaz o mayor | Como con débil, el cambio de color es una invención PC (SCO / CGA). |
2 | Faint, disminución de la intensidad, o dim | Puede ser implementado como un peso de fuente ligera como bold. |
3 | Italic | No es ampliamente apoyado. A veces se trata como inverso o parpadea. |
4 | Subsidio | Las extensiones de estilo existen para Kitty, VTE, mintty y iTerm2. |
5 | Pasillo lento | Sets parpadeando a menos de 150 veces por minuto |
6 | Enlace rápido | MS-DOS ANSI. SYS, 150+ por minuto; no ampliamente apoyado |
7 | vídeo inverso o invertidos | Swap foreground y colores de fondo; emulación inconsistente |
8 | Conceal o escondido | No es ampliamente apoyado. |
9 | Cruzado, o huelga | Personajes legibles pero marcados como para la eliminación. No compatible con Terminal.app |
10 | Fuente primaria (por defecto) | |
11 a 19 | Fuente alternativa | Seleccionar fuente alternativa n 10 - 10 |
20 | Fraktur (Gothic) | Respaldado |
21 | Doubly highlighted; or: not bold | Doble-entendido por ECMA-48, pero en cambio desactiva la intensidad audaz en varios terminales, incluso en la consola del kernel de Linux antes de la versión 4.17. |
22 | Intensidad normal | Ni audaz ni débil; cambios de color donde la intensidad se implementa como tal. |
23 | Ni italic, ni blackletter | |
24 | No subrayado | Ni cantadas ni doblemente subrayadas |
25 | No parpadear | Apaga el parpadeo |
26 | Espaciamiento proporcional | UIT T.61 y T.416, no conocidos por ser utilizados en terminales |
27 | No se revierte | |
28 | Reveal | No ocultado |
29 | No se ha cruzado | |
30-37 | Establecer color de primer plano | |
38 | Establecer color de primer plano | Los siguientes argumentos son 5;n o 2;r;g;b |
39 | Color predeterminado | Aplicación definida (según norma) |
40–47 | Color de fondo | |
48 | Color de fondo | Los siguientes argumentos son 5;n o 2;r;g;b |
49 | Color de fondo predeterminado | Aplicación definida (según norma) |
50 | Espaciamiento proporcional deficiente | T.61 y T.416 |
51 | Framed | Se implementó como "emoji selector de variación" en menta. |
52 | Alrededores | |
53 | Overlined | No compatible con Terminal.app |
54 | Ni enmarcado ni rodeado | |
55 | No está sobrelineado | |
58 | Conjunto de color bajo línea | No en estándar; implementado en Kitty, VTE, mintty, e iTerm2. Los siguientes argumentos son 5;n o 2;r;g;b. |
59 | Color bajo línea predeterminado | No en estándar; implementado en Kitty, VTE, mintty, e iTerm2. |
60 | Ideograma bajo línea o línea lateral derecha | Respaldado |
61 | Ideogram doble subrayado, o doble línea en el lado derecho | |
62 | Línea superior o línea lateral izquierda | |
63 | Ideograma doble sobrelínea, o doble línea en el lado izquierdo | |
64 | Marca de estrés de Ideograma | |
65 | No atributos de ideograma | Restablecer los efectos de todos los 60 –64 |
73 | Superscript | Aplicada sólo en mintty |
74 | Subscript | |
75 | Ni superscript ni subscript | |
90–97 | Color de primer plano brillante | No en estándar; originalmente implementado por aixterm |
100–107 | Color de fondo brillante |
Colores
3 bits y 4 bits
La especificación original solo tenía 8 colores y solo les daba nombres. Los parámetros SGR 30–37 seleccionaron el color de primer plano, mientras que 40–47 seleccionaron el fondo. Bastantes terminales implementaron "negrita" (código SGR 1) como un color más brillante en lugar de una fuente diferente, proporcionando así 8 colores de primer plano adicionales. Por lo general, no podría obtener estos como colores de fondo, aunque a veces el video inverso (código SGR 7) lo permitiría. Ejemplos: para obtener letras negras sobre fondo blanco, use ESC[30;47m
, para obtener rojo use ESC[31m
, para obtener un color rojo brillante, use ESC[1;31m
. Para restablecer los colores a sus valores predeterminados, use ESC[39;49m
(no compatible con algunos terminales), o restablecer todos los atributos con ESC[0m
. Los terminales posteriores agregaron la capacidad de especificar directamente el "brillante" colores con 90–97 y 100–107.
Cuando el hardware comenzó a utilizar convertidores de digital a analógico (DAC) de 8 bits, varias piezas de software asignaron números de color de 24 bits a estos nombres. La siguiente tabla muestra los valores predeterminados enviados al DAC para algunos hardware y software comunes; en la mayoría de los casos son configurables.
FG | BG | Nombre | VGA | Windows XPConsole | WindowsPower Shell 6 | Visual Studio Code | Windows 10Console | Terminal.app | PuTTY | mIRC | xterm | Ubuntu | Terminal de Eclipse |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
30 | 40 | Negro | 0, 0, 0 | 12, 12, 12 | 0, 0, 0 | 1, 1, 1 | 0, 0, 0 | ||||||
31 | 41 | Rojo | 170, 0, 0 | 128, 0, 0 | 205, 49, 49 | 197, 15, 31 | 194, 54, 33 | 187, 0, 0 | 127, 0, 0 | 205, 0, 0 | 222, 56, 43 | 205, 0, 0 | |
32 | 42 | Verde | 0, 170, 0 | 0, 128, 0 | 13, 188, 121 | 19, 161, 14 | 37, 188, 36 | 0, 187, 0 | 0, 147, 0 | 0, 205, 0 | 57, 181, 74 | 0, 205, 0 | |
33 | 43 | Amarillo | 170, 85, 0 | 128, 128, 0 | 238, 237, 240 | 229, 229, 16 | 193, 156, 0 | 173, 173, 39 | 187, 187, 0 | 252, 127, 0 | 205, 205, 0 | 255, 199, 6 | 205, 205, 0 |
34 | 44 | Azul | 0, 0, 170 | 0, 0, 128 | 36, 114, 200 | 0, 55, 218 | 73, 46, 225 | 0, 0, 187 | 0, 0, 127 | 0, 0, 238 | 0, 111, 184 | 0, 0, 238 | |
35 | 45 | Magenta | 170, 0, 170 | 128, 0, 128 | 1, 36, 86 | 188, 63, 188 | 136, 23, 152 | 211, 56, 211 | 187, 0, 187 | 156, 0, 156 | 205, 0, 205 | 118, 38, 113 | 205, 0, 205 |
36 | 46 | Cyan | 0, 170, 170 | 0, 128, 128 | 17, 168, 205 | 58, 150, 221 | 51, 187, 200 | 0, 187, 187 | 0, 147, 147 | 0, 205, 205 | 44, 181, 233 | 205, 0, 205 | |
37 | 47 | Blanco | 170, 170, 170 | 192, 192, 192 | 229, 229, 229 | 204, 204, 204 | 203, 204, 205 | 187, 187, 187 | 210, 210, 210 | 229, 229, 229 | 204, 204, 204 | 229, 229, 229 | |
90 | 100 | Negro brillante (Gray) | 85, 85, 85 | 128, 128, 128 | 102, 102, 102 | 118, 118, 118 | 129, 131, 131 | 85, 85, 85 | 127, 127, 127 | 127, 127, 127 | 128, 128, 128 | 0, 0, 0 | |
91 | 101 | Rojo brillante | 255, 85, 85 | 255, 0, 0 | 241, 76, 76 | 231, 72, 86 | 252, 57, 31 | 255, 85, 85 | 255, 0, 0 | ||||
92 | 102 | Verde brillante | 85, 255, 85 | 0, 255, 0 | 35, 209, 139 | 22, 198, 12 | 49, 231, 34 | 85, 255, 85 | 0, 252, 0 | 0, 255, 0 | |||
93 | 103 | Amarillo brillante | 255, 255, 85 | 255, 255, 0 | 245, 245, 67 | 249, 241, 165 | 234, 236, 35 | 255, 255, 85 | 255, 255, 0 | ||||
94 | 104 | Azul brillante | 85, 85, 255 | 0, 0, 255 | 59, 142, 234 | 59, 120, 255 | 88, 51, 255 | 85, 85, 255 | 0, 0, 252 | 92, 92, 255 | 0, 0, 255 | 92, 92, 255 | |
95 | 105 | Bright Magenta | 255, 85, 255 | 255, 0, 255 | 214, 112, 214 | 180, 0, 158 | 249, 53, 248 | 255, 85, 255 | 255, 0, 255 | ||||
96 | 106 | Bright Cyan | 85, 255, 255 | 0, 255, 255 | 41, 184, 219 | 97, 214, 214 | 20, 240, 240 | 85, 255, 255 | 0, 255, 255 | ||||
97 | 107 | Blanco brillante | 255, 255, 255 | 229, 229, 229 | 242, 242, 242 | 233, 235, 235 | 255, 255, 255 |
8 bits
A medida que las tablas de búsqueda de 256 colores se volvieron comunes en las tarjetas gráficas, se agregaron secuencias de escape para seleccionar de un conjunto predefinido de 256 colores:
ESC[38;5; Seleccione el color del primer plano donde n es un número de la tabla abajo ESC[48;5; Seleccione color de fondo 0- 7: colores estándar (como en ESC [ 30–37 m) 8- 15: colores de alta intensidad (como en ESC [ 90-97 m) 16-231: 6 × 6 × 6 cubo (216 colores): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5) 232-255: grayscale de la oscuridad a la luz en 24 pasos
La tecnología de la información T.416 de la UIT - Arquitectura de documento abierto (ODA) y formato de intercambio: las arquitecturas de contenido de caracteres utilizan ":" como caracteres separadores en su lugar:
ESC[38:5: Seleccione el color del primer plano donde n es un número de la tabla abajo ESC[48:5: Seleccione color de fondo
Modo 256-color - primer plano: ESC[38;5; fondo#m: ESC[48;5;#m | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Colores estándar | Colores de alta intensidad | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
216 colores | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | ||||||||||||||||||||||||
52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | ||||||||||||||||||||||||
88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | ||||||||||||||||||||||||
124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | ||||||||||||||||||||||||
160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | ||||||||||||||||||||||||
196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | ||||||||||||||||||||||||
Colores grises | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
También ha habido una codificación de 88 colores similar pero incompatible usando la misma secuencia de escape, vista en rxvt
y xterm -88color
. No se sabe mucho sobre el esquema además de los códigos de color. Utiliza un cubo de color de 4×4×4.
24 bits
Como "color verdadero" Las tarjetas gráficas con 16 a 24 bits de color se hicieron comunes, las aplicaciones comenzaron a admitir colores de 24 bits. Los emuladores de terminal que admiten la configuración de colores de primer plano y de fondo de 24 bits con secuencias de escape incluyen Xterm, Konsole de KDE e iTerm, así como todos los terminales basados en libvte, incluido GNOME Terminal.
ESC[ 38;2; cosechar caminos; pedazos; ESC[ 48;2; cosechar caminos; pedazog);
Es probable que la sintaxis se base en la arquitectura abierta de documentos (ODA) T.416 de la UIT y el formato de intercambio: arquitecturas de contenido de caracteres, que se adoptó como ISO/IEC 8613-6 pero terminó como un fracaso comercial. La versión ODA es más elaborada y, por lo tanto, incompatible:
- Los parámetros después del '2' (r, g, y b) son opcionales y se pueden dejar vacíos.
- Semicolons son reemplazados por colones, como arriba.
- Hay un "idente colorespacial" líder. La definición del ID colorspace no está incluida en ese documento, por lo que puede estar en blanco para representar el defecto no especificado.
- Además del valor '2' después de 48 para especificar un formato Red-Green-Blue (y el '5' arriba para un color indexado 0-255), hay alternativas de '0' para la implementación definida y '1' para transparente - ninguno de los cuales tienen otros parámetros marcados; '3' especifica los colores utilizando un esquema Cyan-Magenta-Yellow, y '4' para un componente Cyan-Magenta-Y
ESC[ 38:2: "Color-Space-ID." Color-Espacio asociado con tolerancia: 0 para "CIELUV"; 1 para "CIELAB" m Seleccione el color de primer plano RGB ESC[ 48:2: "Color-Space-ID." Color-Espacio asociado con tolerancia: 0 para "CIELUV"; 1 para "CIELAB" m Seleccione el color de fondo RGB
La variación ITU-RGB es compatible con xterm, con la identificación del espacio de color y los parámetros de tolerancia ignorados. El esquema más simple que usa punto y coma se encuentra inicialmente en Konsole.
Variables de entorno de Unix relacionadas con la compatibilidad con el color
Antes de que termcap y terminfo pudieran indicar soporte para colores, la biblioteca S-Lang usaba $COLORTERM
para indicar si un emulador de terminal podría usar colores (luego reinterpretado como 256 colores) y si admite color de 24 bits. Este sistema, aunque mal documentado, se generalizó lo suficiente como para que Fedora y RHEL consideraran usarlo como un mecanismo de detección más simple y universal en comparación con consultar las bibliotecas ahora actualizadas. Sin embargo, gnome-terminal 3.14 eliminó esta variable porque sus autores la consideraron incorrecta y ya no necesaria.
Algunos emuladores de terminal (urxvt, konsole) configuran $COLORFGBG
para informar sobre el esquema de color del terminal (principalmente fondo claro versus fondo oscuro). Este comportamiento se originó en S-Lang y lo utiliza vim. Nuevamente, gnome-terminal se niega a agregar este comportamiento, ya que es más "adecuado" Las secuencias xterm OSC 4/10/11 ya existen.
Secuencias OSC (Operating System Command)
Xterm definió la mayoría de las secuencias de comandos del sistema operativo, pero muchas también son compatibles con otros emuladores de terminal. Por razones históricas, Xterm puede terminar el comando con BEL así como con el estándar ST
. Por ejemplo, Xterm permite que el título de la ventana se establezca mediante ESC ]0;este es el título de la ventana BEL
.
Una extensión que no es xterm es el hipervínculo, ESC ]8;;enlace ST
de 2017, utilizado por VTE, iTerm2 y mintty.
La consola Linux usa ESC ] P n rr gg bb
para cambiar la paleta, que, si está codificada en una aplicación, puede bloquear otros terminales. Sin embargo, Linux ignorará la adición de ST
y formará una secuencia adecuada e ignorable para otros terminales.
Fs Secuencias de escape
Si ESC
va seguido de un byte en el rango 0x60—0x7E, la secuencia de escape es del tipo Fs
. Este tipo se utiliza para funciones de control registradas individualmente con el registro ISO-IR y, en consecuencia, disponible incluso en contextos donde se utiliza un conjunto de códigos de control C1 diferente. Específicamente, corresponden a funciones de control únicas aprobadas por ISO/IEC JTC 1/SC 2 y estandarizadas por ISO o un organismo reconocido por ISO. Algunos de estos se especifican en ECMA-35 (ISO 2022 / ANSI X3.41), otros en ECMA-48 (ISO 6429 / ANSI X3.64). ECMA-48 se refiere a estos como "funciones de control independientes".
Abbr | Nombre | Efecto | |
---|---|---|---|
ESC c | RIS | Reset to Initial State | Provoca un restablecimiento completo de la terminal a su estado original. Esto puede incluir (si es aplicable): reiniciar la entrega gráfica, paradas de tabulación claras, restablecer a la fuente predeterminada, y más. |
Fp Secuencias de escape
Si ESC
va seguido de un byte en el rango 0x30—0x3F, la secuencia de escape es de tipo Fp
, que se reserva para hasta dieciséis funciones de control de uso privado.
Abbr | Nombre | Efecto | |
---|---|---|---|
ESC 7 | DECSC | DEC Guardar cursor | Ahorra la posición del cursor, codificando los atributos de estado de cambio y formato. |
ESC 8 | DECRC | DEC Restore Cursor | Restaura la posición del cursor, el estado de cambio de codificación y los atributos de formato de la DECSC anterior si los hay, de lo contrario reasienta todos a sus predeterminados. |
Secuencias de escape NF
Si ESC
va seguido de un byte en el rango 0x20—0x2F, la secuencia de escape es de tipo nF
. Dicho byte es seguido por cualquier cantidad de bytes adicionales en este rango, y luego un byte en el rango 0x30-0x7E. Estas secuencias de escape se subcategorizan aún más por los cuatro bits inferiores del primer byte, p. "escriba 2F
" para secuencias donde el primer byte es 0x22; y si el byte final está en el rango 0x30—0x3F que indica un uso privado (por ejemplo, "escriba 2Fp
") o no (por ejemplo, "escriba 2Ft
").
Las secuencias de escape de este tipo se usan principalmente para mecanismos de cambio de código ANSI/ISO como los que usa ISO-2022-JP, excepto para el tipo 3F
secuencias (aquellas donde el primer byte intermedio es 0x23
), que se utilizan para funciones de control individuales. Las secuencias de tipo 3Ft
están reservadas para ISO-IR adicionales registrados funciones de control individuales, mientras que las secuencias de tipo 3Fp
están disponibles para funciones de control de uso privado. A diferencia de las secuencias de tipo Fs
, ningún tipo 3Ft
están actualmente registradas.
Abbr | Nombre | Efecto | |
---|---|---|---|
ESC SP F |
|
| Definido en ECMA-35 (ANSI X3.41 / ISO 2022). Hace que las teclas de función envíen ESC + letra en lugar de 8 bits C1 códigos. |
ESC SP G |
|
| Definido en ECMA-35. Hace que las teclas de función envíen códigos C1 de 8 bits. |
Abbr | Nombre | Efecto | |
---|---|---|---|
ESC # 3 | DECDHL | DEC Cartas de doble altura, la mitad superior | Hace que la línea actual use caracteres dos veces más alto. Este código es para la mitad superior. |
ESC # 4 | DECDHL | DEC Cartas de doble altura, mitad inferior | Hace que la línea actual use caracteres dos veces más alto. Este código es para la mitad inferior. |
ESC # 5 | DECSWL | DEC Línea de una mujer | Hace que la línea actual use caracteres de un solo ancho, por el comportamiento predeterminado. |
ESC # 6 | DECDWL | DEC Línea de doble ancho | Hace que la línea actual use caracteres de doble ancho, descartando cualquier personaje en la segunda mitad de la línea. |
Ejemplos
CSI 2 J
— Esto borra la pantalla y, en algunos dispositivos, ubica el cursor en la posición y,x 1,1 (esquina superior izquierda).
CSI 32 m
— Esto hace que el texto sea verde. El verde puede ser un verde oscuro y apagado, por lo que es posible que desee habilitar Negrita con la secuencia CSI 1 m
que lo haría verde brillante, o combinado como CSI 32; 1 m
. Algunas implementaciones usan el estado Negrita para hacer que el carácter sea Brillante.
CSI 0; 6 8; "DIR"; 13 p
— Esto reasigna la tecla F10 para enviar al búfer del teclado la cadena "DIR" y ENTER, que en la línea de comandos de DOS mostraría el contenido del directorio actual. (Solo MS-DOS ANSI.SYS) A veces se usaba para bombas ANSI. Este es un código de uso privado (como lo indica la letra p), que usa una extensión no estándar para incluir un parámetro con valor de cadena. Seguir la letra del estándar consideraría que la secuencia termina en la letra D.
CSI s
— Esto guarda la posición del cursor. Usando la secuencia CSI u
lo restaurará a la posición. Digamos que la posición actual del cursor es 7(y) y 10(x). La secuencia CSI s
guardará esos dos números. Ahora puede moverse a una posición de cursor diferente, como 20(y) y 3(x), usando la secuencia CSI 20; 3 H
o CSI 20; 3 f
. Ahora, si usa la secuencia CSI u, la posición del cursor volverá a 7 (y) y 10 (x). Algunas terminales requieren las secuencias DEC ESC 7
/ ESC 8
en su lugar, que es más compatible.
Secuencias de comandos de shell
Los códigos de escape ANSI se utilizan a menudo en terminales UNIX y similares a UNIX para resaltar la sintaxis. Por ejemplo, en terminales compatibles, el siguiente comando list codifica con colores los nombres de archivos y directorios por tipo.
ls --color
Los usuarios pueden emplear códigos de escape en sus scripts incluyéndolos como parte de la salida estándar o error estándar. Por ejemplo, el siguiente comando GNU sed embellece la salida del comando make al mostrar líneas que contienen palabras que comienzan con "WARN" en video inverso y palabras que comienzan con "ERR" en amarillo brillante sobre un fondo rojo oscuro (se ignoran las mayúsculas y minúsculas). Las representaciones de los códigos están resaltadas.
hacer 2 contactos1 Silencioso -e 's/.*bWARN.*/x1b[7m"x1b[0m/i' -e 's/.*bERR.*/x1b[93;41m"x1b[0m/i '
La siguiente función Bash hace parpadear el terminal (enviando alternativamente códigos de modo de video inverso y normal) hasta que el usuario presiona una tecla.
flasher () { while true; do printf
¿Qué? 5h; sleep 0.1; printf
¿Qué? 5l; read -s -n1 -t1 && break; done; }
Esto se puede usar para alertar a un programador cuando termina un comando largo, como con hacer; flasher
.
printf \033c
Esto reiniciará la consola, similar al comando reset
en sistemas Linux modernos; sin embargo, debería funcionar incluso en sistemas Linux más antiguos y en otras variantes de UNIX (no Linux).
En C
#include Identificado.hint principal()vacío){} int i, j, n; para ()i = 0; i . 11; i++) {} para ()j = 0; j . 10; j++) {} n = 10 * i + j; si ()n ■ 108) descanso; printf()"33[%dm%3d33[m], n, n); } printf()"n"); } retorno 0;}
Secuencias de entrada de terminales
Al presionar teclas especiales en el teclado, además de generar muchas secuencias xterm CSI, DCS u OSC, a menudo se produce una secuencia CSI, DCS u OSC, que se envía desde la terminal a la computadora como si el usuario la hubiera escrito.
Al escribir una entrada en un terminal, las pulsaciones de teclas fuera del área normal del teclado alfanumérico principal se pueden enviar al host como secuencias ANSI. Para las teclas que tienen una función de salida equivalente, como las teclas de cursor, a menudo reflejan las secuencias de salida. Sin embargo, para la mayoría de las pulsaciones de teclas no hay una secuencia de salida equivalente para usar.
Existen varios esquemas de codificación y, lamentablemente, la mayoría de los terminales mezclan secuencias de diferentes esquemas, por lo que el software host debe poder manejar las secuencias de entrada utilizando cualquier esquema. Para complicar el asunto, los propios terminales VT tienen dos esquemas de entrada, modo normal y modo de aplicación que pueden ser cambiados por la aplicación.
(sección borrador)
Identificar confianza char Identificado por el título esc - No. esc > > Alt-keypress o secuencia de código clave "[']" Alt-[ "['" (según el título) secuencia de código clave, <modifier ratio es un número decimal y predeterminados a 1 (xterm) "['" (Secuencia de código claves claves, ") "~" - secuencia de códigos clave, "Código de claves claves claves" y "Nombres especificados" son números decimales y por defecto a 1 (vt)
Si el carácter de terminación es '~', el primer número debe estar presente y es un número de código clave, el segundo número es un valor modificador opcional. Si la terminación carácter es una letra, la letra es el valor del código clave y el número opcional es el valor del modificador.
El valor predeterminado del modificador es 1, y después de restar 1 es un mapa de bits del modificador
teclas que se presionan: Meta+Ctrl+Alt +⇧ Shift. Entonces, por ejemplo, <esc>[4;2~
es
⇧ Mayús+Fin, <esc>[20~
es tecla de función F9, <esc>[5C
es Ctrl+ →.
En otras palabras, el modificador es la suma de los siguientes números:
Key pressed | Número | Comentario |
---|---|---|
1 | siempre añadido, el resto es opcional | |
Cambio | 1 | |
(Left) Alt | 2 | |
Control | 4 | |
Meta | 8 |
secuencias vt: Identificado [1~ - Página de inicio [16~] - [31~ - F17 [2~ - Introducir > [17~ - F6 > [32~ - F18 [3~ - Eliminar las instrucciones c] [18~ - F7] [4~ - Finalización de las instrucciones c] [19~ - F8] [5~ - PgUp]sc confianza[20~ - F9 - [35~ - [6~ - PgDn [21~ - F10 [7~ - Home] Identificado [8~ - Finalización [23~ - F11] [24~ - F12] [25~ - F13] [11~ - F1] [12~ - F2] [13~ - F3] [14~ - F4] [15~ - F5] secuencias xterm: [A - Up - Up - [K - ] [B - Abajo] [C - Derecho] [D - Izquierda] [E - iereesc] [F - Finales]c confianza[1P - F1] [G - Keypad 5](1Q - F2 [H - Home]sc confianza[1R - F3 [1S - F4] [T]
<esc>[A
a <esc>[D
] son las mismas que las secuencias de salida ANSI. El <modifier>
normalmente se omite si no se presiona ninguna tecla modificadora, pero la mayoría de las implementaciones siempre emiten el <modifier>
para F1–F4. (borrador de sección)
Xterm tiene una página de documentación completa sobre los diversos esquemas de secuencia de entrada de mouse y teclas de función de los terminales VT de DEC y varios otros terminales que emula. Thomas Dickey le ha agregado mucho apoyo a lo largo del tiempo; también mantiene una lista de claves predeterminadas utilizadas por otros emuladores de terminal para comparar.
- En la consola Linux, ciertas teclas de función generan secuencias del formulario
CSI [ char
. La secuencia CSI debe terminar en[
. - Versiones antiguas de Terminator generan
SS3 1; modifiers char
cuando F1 – F4 son presionados con modificadores. El comportamiento defectuoso fue copiado de GNOME Terminal. - respuestas por períodos
CSI row; column R
si se solicita la posición del cursor yCSI 1; modifiers R
si F3 llave se presiona con modificadores, que collide en el caso derow == 1
. Esto se puede evitar utilizando el ? modificador privado comoCSI ? 6 n
, que se reflejará en la respuestaCSI ? row; column R
. - muchos terminales prependiendo
ESC
a cualquier personaje que se escribe con la tecla Alt abajo. Esto crea ambigüedad para letras mayúsculas y símbolos@[]^_
, que formaría códigos C1. - Konsole genera
SS3 modifiers char
cuando F1 – F4 son presionados con modificadores.
Contenido relacionado
Prefijo binario
Lenguaje formal
ETag HTTP