发送"C-("到VT100/xterm终端的Emacs(Mac OS X的终端)?

Mar*_*ann 9 macos emacs terminal vt100

是否有可能通过VT100/xterm终端(Mac OS X终端)将密钥"C-("发送到Emacs?是否有可以发送的转义序列以实现等效?

我怀疑基本问题是控制与字符"("(以及使用shift生成的其他此类字符)组合的概念不存在.

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

ak2*_*ak2 15

VT100终端无法做到这一点,因为没有^(对应的控制字符(.但是,xterm具有所谓的"modifyOtherKeys"模式,它允许为这样的组合发送唯一的密钥代码.

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

XTerm*vt100.modifyOtherKeys: 1
Run Code Online (Sandbox Code Playgroud)

有了它,Ctrl +(将发送以下密钥代码:

^[[27;6;40~
Run Code Online (Sandbox Code Playgroud)

这是相当长的,所以引入了类似密钥代码的另一种格式,可以通过设置formatOtherKeys资源来启用:

XTerm*vt100.formatOtherKeys: 1
Run Code Online (Sandbox Code Playgroud)

有了它,Ctrl +(发送:

^[[40;6u
Run Code Online (Sandbox Code Playgroud)

在这两个密钥代码中,40是十进制ASCII代码(,而6代表Ctrl.

man xtermhttp://invisible-island.net/xterm/ctlseqs/ctlseqs.html进一步的细节.不知道Terminal.app是否支持它.