¿Cómo se actualiza la pantalla cuando se escribe el carácter de borrado en un emulador de terminal?

¿Cómo se actualiza la pantalla cuando se escribe el carácter de borrado en un emulador de terminal?

Según tengo entendido, al escribir caracteres en un emulador de terminal, aparecen porque se les "repite". Imaginamos que el terminal es un dispositivo separado que se comunica con la computadora a través de un canal bidireccional, y cada tecla ingresada no actualiza la pantalla inmediatamente, sino que aparece cuando se envía de regreso desde la computadora.

Mi pregunta es cómo es posible que la tecla de retroceso, o cualquier tecla configurada para "borrar" stty, parezca borrar un carácter en la pantalla. si en un xtermlo hago

$ stty erase x
$ cat -
aaaaaaaaaax

lo último xque escribo parece borrar lo último a. Sin embargo, si se tratara de una terminal real, separada de la computadora, no tendría ninguna forma de saber cuál stty erasees el personaje. La única forma en que esperaría obtener este comportamiento sería si el carácter de borrado fuera ^Hrepetido, y el terminal interpretara esto como un carácter de control especial que le indicara que borrara el carácter antes del cursor.

¿Es esta una peculiaridad de los emuladores de terminal, donde "hacen trampa" y buscan cuál stty erasees el personaje?

Respuesta1

El emulador de terminal envía el xcarácter y el controlador del terminal ve que se ha configurado como carácter de borrado. Entonces, en lugar de devolverlo al emulador, envía la secuencia apropiada para borrar el carácter anterior (por ejemplo, retroceso-espacio-retroceso).

Incluso cuando el carácter de borrado está configurado en Backspace, simplemente repetirlo no borrará lo que se escribió. Cuando BSse envía un carácter a una terminal, simplemente mueve el cursor un carácter hacia la izquierda, no lo borra. Por lo tanto, el controlador del terminal aún tendría que enviar un espacio-retroceso adicional para borrarlo y dejar el cursor en esa ubicación.

información relacionada