【问题标题】:Send "C-(" to Emacs in VT100/xterm terminal (Mac OS X's Terminal)?在 VT100/xterm 终端(Mac OS X 的终端)中向 Emacs 发送“C-(”?
【发布时间】:2011-05-19 06:42:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: macos emacs terminal vt100


    【解决方案1】:

    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 是否支持其中任何一个。

    【讨论】:

    • 谢谢,这几乎是正确的。难题的一部分是找到会生成“C-(”的转义码,您提供了它——我设法验证它也适用于 MacOS X 的终端。但是现在我注意到 MacOS X 的终端很遗憾不提供任意映射用于转义序列的键(在本例中为 Ctrl + 括号)——只能映射函数、箭头和其他一些键。
    • iTerm2 将允许您重新映射任意键以转义序列。
    • 4 岁多,还在救人。好人@ak2 :)
    猜你喜欢
    • 2012-09-28
    • 2010-10-29
    • 2015-10-23
    • 2016-01-10
    • 2011-11-13
    • 2015-11-18
    • 2013-07-17
    • 2011-01-09
    • 2013-07-07
    相关资源
    最近更新 更多