是否可以通过 VT100/xterm 终端(Mac OS X 终端)以任何方式将密钥“C-(”发送到 Emacs?是否可以发送转义序列以实现等效?
我怀疑根本问题是不存在将控制与字符“(”(以及使用 shift 产生的其他此类字符)相结合的概念。
注意:使用 Cocoa Emacs 不是一个选项。需要“C-(”的原因是 paredit.el 在其他组合键中使用它,最好不要重新映射它(因为将它放在“C-(”) 上很有意义)。
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.