【发布时间】:2012-08-14 04:26:03
【问题描述】:
我的目标是设置一个终端,其中命令行界面程序的行为与键盘输入的预期一样(该程序最初是用 xharbour 为 Windows 编写的,但现在我想将它移植到 linux)。 我选择 xterm 开始,因为它更简单,无需禁用默认终端组合键。
使用 putty 时,大多数角色都可以很好地工作,而对于那些不使用的角色,我使用 autohotkey,一个 ahk 脚本就可以了。例如,对于 Ctrl+F1:
^F1::SendInput ^[O5P
我尝试并修改,重新编译 terminfo,更改它并更改键盘类型,但无法获得 ^[O5P 在终端中按 Ctrl+F1 的响应。 如果您知道进行此更改的任何方式,请告诉我...我已经阅读了数百页据称可以执行此操作的页面,但所有这些更改都没有产生任何效果或没有达到预期的效果。
所以我尝试修改终端设置以实现我的 Ctrl+F1 到 ^[O5P 目标,并尝试了一些类似于自动热键的命令和程序:
-
xmodmap,但是对于组合键它不起作用 -
xdotoolwindowactivate xyz type ^[O5P,这里返回单个字符的char码 -
xmacro,它不会将击键发送到其他窗口 -
ironahk,我刚开始尝试运行 example.ahk 时遇到错误,并且在其简易手册中找不到我想要的命令。 -
bind '\e[1;5P":"\e[O5P"',这里的第一个键码是我当前在键入 ctrl+f1 时得到的,然后是我希望通过这个组合得到的键码。没有效果。 -
xbindkeys+xvkbd,也没有帮助。
如果您已经知道,请帮助我,以某种方式实现了这一点(更改为组合键返回的键码)。
我使用最新的 CentOS 和 Ubuntu 进行测试。
【问题讨论】:
-
我不明白您在做什么,但是如果您想更改 xterm 为某个键生成的转义序列,您需要修改其转换表。我在in-ulm.de/~mascheck/X11/xterm/XTerm 找到了一个很好的例子
-
您链接中的翻译表看起来很有趣...我必须找出它在 Centos 中的位置...可能我以复杂的方式告诉它我在做什么,但你明白了我想做的是:更改 xterm 为 KEY COMBINATION 生成的转义序列。
-
我链接到的示例文件是一个 X 资源文件。这些通常放在
/etc/X11/app-defaults/中用于系统范围的配置,或$HOME/.Xresources或$HOME/.Xdefaults用于单个用户配置。如果你把它放在正确的位置(无论它可能是 Centos 的哪个位置),文件将在你的 X 会话开始时加载,你可以在会话中间使用xrdb -merge filename重新加载它 -
还有另一个选项:您可以通过将翻译表资源作为
-xrm选项将翻译添加到一个特定的xterm 实例。使用示例文件中的一小部分进行演示:xterm -xrm 'XTerm.VT100.translations: #override Ctrl<Key>Left: string(0x1b) string("b") \n Ctrl<Key>Right: string(0x1b) string("f")' -
为什么不使用 xterm 实际生成的字符序列并将其解释为 Ctrl+F1?这是 xHarbour 的终端库的限制吗?
标签: linux keyboard terminal autohotkey terminfo