Terminal

當我嘗試使用 Alt+Delete 刪除文本時,終端中的輸出到底是什麼?

  • October 29, 2022

Alt+Backspace 在終端中工作,這經常導致我錯誤地嘗試 Alt+Delete,然後添加一個~. 那裡到底發生了什麼?

它是無法辨識的掃描碼的殘餘。

鍵盤上的按鈕會發送一個或多個字節來指示按下了哪個按鈕。這些字節通過鍵盤驅動程序進行一些轉換,最終被應用程序(在本例中為終端)擷取。應用程序正在嘗試辨識哪個熱鍵是該字節集並採取相應的行動。如果無法辨識,應用程序通常會忽略此類字元串,或者您可能會出現“奇怪的行為”。

要了解您可以為哪個按鈕或按鈕組合獲取哪些字節cat /dev/tty。它將為每個按鈕列印一組符號 - 因為驅動程序將它們報告給應用程序。

在您了解為特定按鈕組合發送的符號組合後,您可以轉到應用程序的配置文件並添加它,或者如果應用程序期望熱鍵的字元集不同,則修復它。

由於歷史上具有不同鍵盤的物理終端種類繁多,對於邏輯上相同的鍵,可能存在許多不同的掃描碼。於是數據庫terminfo應運而生。它知道很多實際的終端(物理終端),並且知道為哪個組合鍵發送哪個字元串。如果你想教你的終端一個新的熱鍵,你需要編寫自己的 terminfo 條目,並選擇TERM環境變數。

您只看到一個符號這一事實~意味著您目前的終端與您目前的 TERM 以某種方式辨識並使用鍵盤驅動程序發送到終端的部分字元串並執行某些操作,並列印序列的剩餘部分。

引用自:https://unix.stackexchange.com/questions/722876