出于安全原因,我接到一项任务,将旧的 telnet 系统转换为 ssh。我们的员工使用小型手持设备来运行与服务器的 telnet 连接并运行curses 程序。
我遇到的问题是,他们之前使用的奇怪的 telnet 软件连接时读取的功能键与 ssh + xterm 现在读取的功能键不同。
在运行的curses程序中,当用户按下它时F1,它应该发送^[[A
(1B 5B 5B 41
以十六进制形式),并且程序读取该内容并执行操作。然而,它目前正在接收^[OP
(我认为是1B 5B 4F 50
)。
我在谷歌搜索这个问题时发现了各种各样的东西,但它们似乎都不是我需要的,因为我不知道^[[A
keysym 中应该有什么。
我已经inputrc
尝试过了
^[OP: ^[[A
但这只会返回一个错误,指出这^[[A
是一个未知命令。
xmodmap
似乎并没有帮助枯萎,因为它正在寻找一个名字,而我不知道那应该是什么。我也必须这样F2做F9。
我使用的环境是一个运行 openbox 的非常受限的 Linux 设备。
答案1
xterm
允许您将键转换为字符序列。这是通过设置资源来完成的,例如:
XTerm*VT100.Translations: #override\n\
<Key>F1: string(0x1b) string("[A")\n\
<Key>F2: string(0x1b) string("[B")\n
通常,您可以将这些行放入~/.Xdefaults
文件中,服务器在启动时会读取该文件。更动态地,您可以将其加载或重新加载到正在运行的服务器中
xrdb -merge <~/.Xdefaults