10

是否可以通过 VT100/xterm 终端(Mac OS X 终端)以任何方式将密钥“C-(”发送到 Emacs?是否可以发送转义序列以实现等效?

我怀疑根本问题是不存在将控制与字符“(”(以及使用 shift 产生的其他此类字符)相结合的概念。

注意:使用 Cocoa Emacs 不是一个选项。需要“C-(”的原因是 paredit.el 在其他组合键中使用它,最好不要重新映射它(因为将它放在“C-(”) 上很有意义)。

4

1 回答 1

16

VT100 终端无法做到这一点,因为没有与 .^(对应的控制字符(。然而,xterm 有所谓的“modifyOtherKeys”模式,它允许为这样的组合发送唯一的键码。

要启用它,请设置modifyOtherKeys资源,例如~/.Xdefaults

XTerm*vt100.modifyOtherKeys: 1

这样,Ctrl+( 将发送以下键码:

^[[27;6;40~

不过这相当长,因此引入了另一种类似的键码格式,可以通过设置formatOtherKeys资源来启用:

XTerm*vt100.formatOtherKeys: 1

有了它, Ctrl+( 发送:

^[[40;6u

在这两个键码中,40 是十进制 ASCII 码(,而 6 代表 Ctrl。

See man xterm and http://invisible-island.net/xterm/ctlseqs/ctlseqs.html for further details. No idea whether Terminal.app supports any of it.

于 2010-12-02T21:38:37.717 回答