Bash

如何臨時禁用終端中的 Escape 鍵?

  • October 13, 2015

我正在解析鍵盤輸入read -n 1,但我還沒有找到一種方法來區分鍵的實際按鍵Escape和其他按鍵生成的控制序列的第一個轉義字元(字節),例如。LEFT, RIGHT

期間我不需要Escape密鑰read,因此禁用它應該可以解決問題。Escape有沒有辦法以本地化的方式禁用或重新分配密鑰?…僅適用於目前終端,僅適用於目前腳本。

無法從終端內部執行此操作。不幸的是,同一個ESC字元既可以用作鍵盤上特定鍵發送的字元,也可以用作多字元序列中的前綴。雙方的歷史先例都太強大了,無法被淹沒。

應用程序要麼避免Esc單獨賦予意義,要麼延遲(1 秒很常見)。例如,在 vim 中,進入插入模式并ESC O D快速按下;這相當於Left按鍵。但是,如果您在按下 後等待太久Esc,您將切換到正常模式並在目前模式上方插入一行(O正常模式命令)。

您也許可以重新配置終端仿真器,以便密鑰發送除( ) 字元Esc之外的一些轉義序列。但是,如果您執行一個密集使用密鑰的應用程序,例如 vi(m),這可能會適得其反。ESC``\e``ESC

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