¿Cuál es el historial de las teclas Mayús + Flecha en la terminal?

20

Me pregunto por qué Shift + Tecla de flecha da como resultado una de las letras A , B , C o D .

¿Por qué no otras cartas? ¿Por qué alguna carta?

    
pregunta Dan 23.04.2013 - 17:17

1 respuesta

26

Los emuladores de terminal como gnome-terminal ("Terminal" en Ubuntu) pero también xterm y urxvt tienen el nombre de "emuladores" porque reproducen el comportamiento de terminales anteriores que eran la única pantalla de una computadora. Tales terminales se comunicaron con la computadora con un protocolo basado en texto y se diseñaron inicialmente para recibir solo texto. Rápidamente, se necesitaba más control: ¿cómo borrar una línea? Usa colores? ¿O cambiar la posición del cursor?

Fuente: El arte de la facilidad de uso de Unix: interfaces de línea de comandos

Las secuencias de escape se diseñaron para que cada terminal haga tales cosas. Se llaman escape porque comienzan con el código de escape ASCII: 33 . No hay forma de imprimir dicho personaje directamente, lo que lo hace adecuado para esas secuencias. Cuando todavía queremos mostrar esta característica, se usa ^[[ , y esto es lo que usaré en mis explicaciones.

Cuando el terminal recibía ^[[A , no significaba "imprimir ^ [[A", sino "el usuario presionó la tecla de flecha hacia arriba". "A" aquí es totalmente arbitrario: simplemente es la carta que todos acordaron, porque eso es lo que utilizaron el DEC VT-52 y su sucesor, el popular terminal VT-100.

Fuente: DEC VT-52 Maintenance Manual 1976

Esta sigue siendo la forma en que funcionan actualmente los emuladores de terminal: dependiendo de la variable $TERM , una base de datos llamada terminfo es responsable de decir qué códigos deben enviarse al shell (bash, sh, zsh ...), que luego es responsable de entenderlos y reaccionar ante ellos.

Ahora, el código para Shift + arriba pasa a ser ^[[1;2A : el emulador de terminal envía este código al shell, que intenta interpretar ^[[1;2 pero no muestra nada porque no sabe acerca de esa secuencia de escape. Pero A queda y se muestra.

    
respondido por el Jennifer Wilson 23.04.2013 - 19:51

Lea otras preguntas en las etiquetas