Safia de Bug Repelent recuperó hace tiempo en una anotación algo sobre el funcionamiento de los códigos de escape ANSI, incluyendo una especie de editor interactivo en la propia página web. Los códigos ANSI son una de esas piezas de museo informático que llevan ahí desde hace medio siglo pero siguen funcionando como si tal cosa.Y es que cada vez que una ventana de terminal muestra texto en rojo, una barra de progreso o una interfaz más o menos «coloreada» quiere decir que por detrás hay toda una ristra de caracteres raros diciéndole a la pantalla qué debe hacer. Están dibujados en Código ANSI X3.64, también llamado ECMA-48, un estándar de la vieja escuela que servía para darle un mínimo de formato y color a los textos.La idea viene de los viejos tiempos de los terminales físicos, cuando las pantallas CRT conectadas a los grandes ordenadores recibían los textos carácter a carácter. Como la forma de enviarlo era como «texto plano», se definió el estándar ANSI para incluir pequeñas instrucciones dentro del flujo: mover el cursor, cambiar los colores, borrar la pantalla o aplicar ciertos estilos. Era habitual usarlos en las conexiones vía módem a los BBS y cada software de BBS tenía su peculiar estilo e interfaz para hacerlo diferente.Los ANSI se conocen popularmente como «códigos de escape» porque la secuencia empieza con el carácter ESC (de la tecla Escape), correspondiente al ASCII 27, escrito en hexadecimal como \x1b., al que sigue un corchete (ASCII 91) y el valor. Por ejemplo:\x1b[31m: cambia el texto a rojo.\x1b[1m: activa la negrita.\x1b[0m: reinicia el formato.\x1b[2J: limpia toda la pantalla.\x1b[H: mueve el cursor a la esquina superior izquierda.\x1b[1;31m: combina atributos, en este caso negrita y rojo.El estándar de 1979 definía solo 8 colores para el texto y el fondo: negro, rojo, verde, amarillo, azul, magenta, cián y blanco. Pero las terminales modernas lo han ampliado un poco: primero a 256 colores, como \x1b[38;5;208m, y después al color real de 24 bits, con valores RGB al estilo \x1b[38;2;255;128;0m. Suena un poco a conjuro mágico, pero es eficaz.Lo curioso es que esta tecnología sigue siendo la base de muchas interfaces de línea de comandos. Hay bibliotecas con estos códigos para crear spinners (que simulan un movimiento del tipo «procesando…»), barras de progreso y otros efectos. Programas como Vim o htop usan los movimientos de cursor para construir interfaces completas solo con texto. También hay un código muy divertido: el otro es el famoso blink («parpadeo») que tan odioso resulta en HTML. Recuerda la regla: puedes usarlo, pero sólo una vez en tu vida.Combinándolo con los códigos ASCII semigráficos (IBM code page 437) y cierta habilidad se podrían crear auténticas virguerías, muy retro y resultonas incluso hoy en día.Relacionado:¡Ah, aquellos tiempos en los que las interfaces se construían con cajitas de rayas y bloques de colores!Viaje al pasado: así era la edad dorada de las BBSMicrosiervos: Artículos relacionados (IA)Historias del código ASCII, los códigos de escape y los terminalesArte ASCIILa vida en ASCII en los terminales HP 264x: eran glacialmente lentosTextfiles: regreso a los 80# Enlace Permanente