在 xterm 中将 F1 键编程为 ^[[A 而不是 ^[OP

在 xterm 中将 F1 键编程为 ^[[A 而不是 ^[OP

出于安全原因,我接到一项任务,将旧的 telnet 系统转换为 ssh。我们的员工使用小型手持设备来运行与服务器的 telnet 连接并运行curses 程序。

我遇到的问题是,他们之前使用的奇怪的 telnet 软件连接时读取的功能键与 ssh + xterm 现在读取的功能键不同。

在运行的curses程序中,当用户按下它时F1,它应该发送^[[A1B 5B 5B 41以十六进制形式),并且程序读取该内容并执行操作。然而,它目前正在接收^[OP(我认为是1B 5B 4F 50)。

我在谷歌搜索这个问题时发现了各种各样的东西,但它们似乎都不是我需要的,因为我不知道^[[Akeysym 中应该有什么。

我已经inputrc尝试过了

^[OP: ^[[A

但这只会返回一个错误,指出这^[[A是一个未知命令。

xmodmap似乎并没有帮助枯萎,因为它正在寻找一个名字,而我不知道那应该是什么。我也必须这样F2F9

我使用的环境是一个运行 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

相关内容