Wie wird die Anzeige aktualisiert, wenn das Löschzeichen in einen Terminalemulator eingegeben wird?

Wie wird die Anzeige aktualisiert, wenn das Löschzeichen in einen Terminalemulator eingegeben wird?

So wie ich es verstehe, erscheinen Zeichen beim Eintippen in einen Terminalemulator, weil sie „echoed“ sind. Wir stellen uns vor, dass das Terminal ein separates Gerät ist, das über einen bidirektionalen Kanal mit dem Computer kommuniziert, und dass jede eingegebene Taste den Bildschirm nicht sofort aktualisiert, sondern erscheint, wenn sie vom Computer zurückgesendet wird.

Meine Frage ist, wie es möglich ist, dass die Rücktaste oder eine andere Taste, die mit auf "Löschen" eingestellt ist stty, scheinbar ein Zeichen auf dem Bildschirm löscht. Wenn in einem xtermI

$ stty erase x
$ cat -
aaaaaaaaaax

das letzte, xdas ich eingebe, scheint das letzte zu löschen a. Wenn dies jedoch ein echtes Terminal wäre, das vom Computer getrennt ist, hätte es keine Möglichkeit zu wissen, welches stty eraseZeichen es war. Ich würde dieses Verhalten nur erwarten, wenn das Löschzeichen wäre ^Hund es wiederholt würde und das Terminal dies als spezielles Steuerzeichen interpretiert, das ihm sagt, das Zeichen vor dem Cursor zu löschen.

Ist das eine Eigenart von Terminalemulatoren, die „schummeln“ und nachschauen, um welches stty eraseZeichen es sich handelt?

Antwort1

Der Terminalemulator sendet das xZeichen und der Terminaltreiber erkennt, dass es als Löschzeichen konfiguriert wurde. Anstatt es also an den Emulator zurückzumelden, sendet er die entsprechende Sequenz zum Löschen des vorherigen Zeichens (z. B. Rücktaste-Leertaste-Rücktaste).

Selbst wenn das Löschzeichen auf eingestellt ist Backspace, würde eine einfache Wiederholung nicht wirklich das Eingegebene löschen. Wenn ein BSZeichen an ein Terminal gesendet wird, bewegt es den Cursor nur ein Zeichen nach links, es löscht es nicht. Der Terminaltreiber müsste also trotzdem eine zusätzliche Leertaste/Rücktaste senden, um es zu löschen und den Cursor an dieser Stelle zu belassen.

verwandte Informationen