在終端模擬器中鍵入擦除字元時,顯示如何更新?

在終端模擬器中鍵入擦除字元時,顯示如何更新?

據我了解,當在終端模擬器中鍵入字元時,它們會出現,因為它們被“回顯”。我們想像終端是一個單獨的設備,透過雙向通道與電腦進行通信,輸入的每個鍵不會立即更新螢幕,而是在從電腦發送回時出現。

我的問題是退格鍵或任何設定為“擦除”的鍵如何stty能夠看起來擦除螢幕上的字元。如果xterm我做

$ stty erase x
$ cat -
aaaaaaaaaax

我最後x輸入的內容似乎會刪除最後一個a.然而,如果這是一個真正的終端,與電腦分離,它就無法知道該stty erase字元是什麼。我期望得到這種行為的唯一方法是如果擦除字符是^H並且它被回顯,並且終端將其解釋為特殊控製字符,告訴它擦除遊標之前的字符。

這是終端仿真器的特性嗎stty erase

答案1

終端模擬器發送該x字符,終端驅動程式發現該字符已被配置為擦除字符。因此,它不是將其回顯給模擬器,而是發送適當的序列來擦除前一個字元(例如退格-空格-退格)。

即使擦除字元設定為Backspace,簡單地回顯也不會真正擦除鍵入的內容。當一個BS字符被發送到終端時,它只是將遊標向左移動一個字符,並不會清除它。因此,終端驅動程式仍然需要發送額外的空格-退格鍵來清除它並將遊標保留在該位置。

相關內容