
據我了解,當在終端模擬器中鍵入字元時,它們會出現,因為它們被“回顯”。我們想像終端是一個單獨的設備,透過雙向通道與電腦進行通信,輸入的每個鍵不會立即更新螢幕,而是在從電腦發送回時出現。
我的問題是退格鍵或任何設定為“擦除”的鍵如何stty
能夠看起來擦除螢幕上的字元。如果xterm
我做
$ stty erase x
$ cat -
aaaaaaaaaax
我最後x
輸入的內容似乎會刪除最後一個a
.然而,如果這是一個真正的終端,與電腦分離,它就無法知道該stty erase
字元是什麼。我期望得到這種行為的唯一方法是如果擦除字符是^H
並且它被回顯,並且終端將其解釋為特殊控製字符,告訴它擦除遊標之前的字符。
這是終端仿真器的特性嗎stty erase
?
答案1
終端模擬器發送該x
字符,終端驅動程式發現該字符已被配置為擦除字符。因此,它不是將其回顯給模擬器,而是發送適當的序列來擦除前一個字元(例如退格-空格-退格)。
即使擦除字元設定為Backspace,簡單地回顯也不會真正擦除鍵入的內容。當一個BS
字符被發送到終端時,它只是將遊標向左移動一個字符,並不會清除它。因此,終端驅動程式仍然需要發送額外的空格-退格鍵來清除它並將遊標保留在該位置。