Bash

將 F1 鍵程式為 ^[[A 而不是 xterm 中的 ^[OP

  • February 21, 2018

出於安全原因,我被賦予了將舊的 telnet 系統轉換為 ssh 的任務。我們的員工使用的手持設備很少,可以執行到伺服器的 telnet 連接並執行 curses 程序。

我遇到的問題是,他們之前用來連接的奇怪的 telnet 軟體讀取的功能鍵與 ssh + xterm 現在讀取的功能鍵不同。

在執行的 curses 程序中,當使用者按下F1它應該發送^[[A1B 5B 5B 41十六進制)並且程序讀取並執行操作。但是,它目前正在接收^[OP(我認為是1B 5B 4F 50)。

我在Google搜尋這個問題時發現了各種各樣的東西,但它們似乎都不是我需要的,因為我不知道^[[Akeysym應該是什麼。

inputrc試過了

^[OP: ^[[A

但這只會返回一個錯誤,說明這^[[A是一個未知命令。

xmodmap似乎沒有幫助凋謝,因為它正在尋找一個名字,我不知道那應該是什麼。我也必須這樣F2F9

我使用的環境是一個執行 openbox 的真正受限的 Linux 設備。

xterm允許您將鍵轉換為字元序列。這是通過設置資源來完成的,例如:

XTerm*VT100.Translations: #override\n\
<Key>F1: string(0x1b) string("[A")\n\
<Key>F2: string(0x1b) string("[B")\n

通常,您可以將這些行放在~/.Xdefaults文件中,並在啟動時由伺服器讀取。更動態地,您可以將其載入或重新載入到正在執行的伺服器中

xrdb -merge <~/.Xdefaults

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