如何让 xterm 识别控制斜杠?

如何让 xterm 识别控制斜杠?

当我使用 xterm 时,键盘序列 Ctrl+/ 会生成 Ctrl-_。这是showkey -a先点击Ctrl+ Shift+ -,然后点击Ctrl+的结果/。我使用的是美国 ANSI 键盘。

[ ~ ] showkey -a

Press any keys - Ctrl-D will terminate this program

^_       31 0037 0x1f
^_       31 0037 0x1f

我想真正得到^/(或者任何它看起来像的东西),因为我在 Emacs 中有一个与 C-/ 相关的自定义绑定,如果我启动 Emacs GUI,它工作得很好,但当我运行时根本不起作用,emacs -nw因为它只接收 C -_(执行“撤消”操作)。

我不需要搞乱 xmodmap (实际密钥映射没问题)。我研究了 vt100 翻译,例如我已经有以下内容(来自文档这里等):

XTerm*VT100.translations: #override \n\
    <Key> Prior: scroll-back(1, halfpage) \n\
    <Key> Next: scroll-forw(1, halfpage)

但是我可以使用翻译来获取不同的密钥而不是运行命令吗?我尝试添加一行,仅Ctrl <Key> /:使用 usinginsert()来覆盖,但这不起作用。我尝试过使用string("0xffe4") string("0x2f"), 这给了我斜线,但是尝试输入 Ctrl 却奇怪地失败了......我通过查看 得到了 Ctrl_R 的键符号xev,但我不确定这是正确的使用方法。

我还查看了modifyOtherKeys它的文档这里,但将其设置为 1 并没有帮助,将其设置为 2 几乎破坏了一切。

什么是拦截C-/并将其变成C-_,我可以克服它吗?

重要说明:我不是 root,也没有相关系统的任何超级用户权限。东西在这个问题看起来相关,但任何调用loadkeys都会给我一个与权限有关的错误。

答案1

感谢 Stéphane Chazelas,我能够执行以下操作并解决问题 - 我将其放入Ctrl <Key> /: string("0x1b") string("/")vt100.translations 资源中,如下所示:

XTerm*VT100.translations: #override \n\
    <Key> Prior: scroll-back(1, halfpage) \n\
    <Key> Next: scroll-forw(1, halfpage) \n\
    Ctrl <Key> /: string("0x1b") string("/")

这使得Ctrl+/传输“ESC-/”(它使用转义,转义是 0x1b 或 27,我真的很想念)。然后我可以在 Emacs 中添加另一个绑定来处理这个问题,就像我当前的 C-/ 绑定一样。这样,我现在可以按键盘上的Ctrl+并使 Emacs 接收 M-/(Emacs 符号) 1,以便它在 GUI 和终端中的行为相同。/


1 Emacs 在 M-/ 上已经默认绑定到“dabbrev-expand”。因为我从来没有使用过它,所以我毫不犹豫地推翻它。

相关内容