xterm formatOtherKeys 在 Ubuntu 上不起作用?

xterm formatOtherKeys 在 Ubuntu 上不起作用?

我正在尝试运行 xterm 并让它获取键绑定,例如

Ctrl-; 
Ctrl-.
Ctrl-,
etc..

(我喜欢在 emacs -nw 中使用这些绑定)

在网上阅读一些内容后,我设法在我的 ~/.Xresources 文件中使用以下行在办公室的桌面(运行 fedora 20)上获得工作设置:

xterm*formatOtherKeys: 1

但这似乎不适用于我的家庭桌面,它运行 Windows 7 并在 VirtualBox 上运行 Ubuntu 12.04.5 LTS。我设法确认 ~/.Xresources 文件实际上正在加载(因为我可以从其中控制字体大小),但似乎 formatOtherKeys 的效果与办公室桌面上的效果不同。

有谁知道为什么它没有拾取这些键绑定?

编辑:

xterm -v 返回 XTerm(271)。

这就是当我按下(并释放)Ctrl- 时 xdev 打印的内容;

KeyPress event, serial 32, synthetic NO, window 0x3e00001,
    root 0x139, subw 0x0, time 63644841, (806,220), root:(824,274),
    state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 32, synthetic NO, window 0x3e00001,
    root 0x139, subw 0x0, time 63645458, (806,220), root:(824,274),
    state 0x14, keycode 47 (keysym 0x3b, semicolon), same_screen YES,
    XLookupString gives 1 bytes: (3b) ";"
    XmbLookupString gives 1 bytes: (3b) ";"
    XFilterEvent returns: False

KeyRelease event, serial 32, synthetic NO, window 0x3e00001,
    root 0x139, subw 0x0, time 63645579, (806,220), root:(824,274),
    state 0x14, keycode 47 (keysym 0x3b, semicolon), same_screen YES,
    XLookupString gives 1 bytes: (3b) ";"
    XFilterEvent returns: False

KeyRelease event, serial 32, synthetic NO, window 0x3e00001,
    root 0x139, subw 0x0, time 63645939, (806,220), root:(824,274),
    state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

答案1

显然我应该使用的配置是这样的:

xterm*modifyOtherKeys: 1

现在,emacs 可以正确识别以下所有键绑定。您可能需要将它们映射到 .emacs 中才能使用它们:

(define-key input-decode-map "\e[46;5u" (kbd "C-."))
(define-key input-decode-map "\e[44;5u" (kbd "C-,"))
(define-key input-decode-map "\e[60;6u" (kbd "C-<"))
(define-key input-decode-map "\e[62;6u" (kbd "C->"))
(define-key input-decode-map "\e[59;5u" (kbd "C-;"))
(define-key input-decode-map "\e[40;6u" (kbd "C-("))
(define-key input-decode-map "\e[41;6u" (kbd "C-)"))
(define-key input-decode-map "\e[49;5u" (kbd "C-1"))
(define-key input-decode-map "\e[39;5u" (kbd "C-'"))
(define-key input-decode-map "\e[45;5u" (kbd "C--"))
(define-key input-decode-map "\e[43;6u" (kbd "C-+"))
(define-key input-decode-map "\e[61;5u" (kbd "C-="))
(define-key input-decode-map "\e[63;6u" (kbd "C-?"))

答案2

有几种可能性需要检查:

  • formatOtherKeys已添加到补丁 #235 中(“xterm -v”至少应该显示这一点)。
  • 不同的环境可能有不同的键码。您可能会发现xev您想要使用的组合存在一些差异。

您的问题没有提到必要的资源设置modifyOtherKeys。这formatOtherKeys资源改变所使用的控制序列modifyOtherKeys(您可能在不同系统上重用设置时忽略了这一点)。

例如,我可以使用它(在不同的系统上......)来显示修改后的键:

xterm -xrm '*modifyOtherKeys:1' -xrm '*formatOtherKeys:1' -e cat -v

相关内容