是否可以通过VT100 / xterm终端(Mac OS X终端)以任何方式发送密钥“C-(”到Emacs?是否有可以发送的转义序列以实现等效?
我怀疑基本问题是控制与字符“(”(以及使用shift生成的其他此类字符)组合的概念不存在。
注意:使用Cocoa Emacs不是一种选择。需要“C-(”的原因是paredit.el在其他键组合中使用它,并且最好不重新映射它(因为将它放在“C - (”)上是有意义的。
答案 0 :(得分:15)
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。
有关详细信息,请参阅man xterm
和http://invisible-island.net/xterm/ctlseqs/ctlseqs.html。不知道Terminal.app是否支持任何一个。