端末エミュレータに削除文字を入力すると、ディスプレイはどのように更新されますか?

端末エミュレータに削除文字を入力すると、ディスプレイはどのように更新されますか?

私が理解したのは、端末エミュレータに文字を入力すると「エコー」されるために表示されることです。我々は、端末が双方向チャネルを介してコンピュータと通信する別々のデバイスであると想像しています。

私の質問は、バックスペースキーまたは「消去」に設定されたキーが画面上の文字を消去するsttyように見えることです。もしxterm私がするなら

$ stty erase x
$ cat -
aaaaaaaaaax

最後に入力した内容がx最後の内容を削除しているようです。しかし、これがコンピュータとは別に実際の端末である場合、その文字が何であるかをa知る方法はありません。stty eraseこの動作を得ることが期待される唯一の方法は、消去文字が^Hエコーされ、端末がそれを大きくして前の文字を消去するように指示する特殊制御文字として解釈することです。

これが端末エミュレータの機能ですか?彼らはstty eraseどんなキャラクターを「だまして」探しますか?

答え1

端末エミュレータはこのx文字を送信し、端末ドライバはこの文字が削除文字で構成されていることを発見します。したがって、シミュレータに再エコーする代わりに、前の文字(バックスペース - スペース - バックスペースなど)を消去する適切なシーケンスを送信します。

文字消去がに設定されていても、Backspace単にエコだけで入力した内容が実際に消去されません。文字が端末に送信されると、カーソルは1文字のBS左に移動して消去されません。したがって、ターミナルドライバはそれをクリアし、カーソルをその位置に保持するために追加のスペースバックスペースキーを送信する必要があります。

関連情報