以rxvt-unicode映射Map-Shift-Tab


9

我想映射按键绑定 Ctrl+ Shift+ Tabrxvt-unicode。我设法按如下方式映射Ctrl+ Tab。对应的条目.Xresources

URxvt.keysym.Control-Tab: \033[27;5;9~

使用cat -v确认此映射有效:

$ cat -v
^[[27;5;9~

^[[27;5;9~然后可以将该序列vim用于映射Ctrl+ 等应用程序 Tab。我希望以下.Xresources条目能够正常工作。

URxvt.keysym.Control-Shift-Tab: \033[27;6;9~

但是,cat没有显示正确的映射:

$ cat -v
^[[Z

如何建立Ctrl+ Shift+ Tab映射?

编辑

映射

URxvt.keysym.Control-ISO_Left_Tab: \033[27;6;9~    
URxvt.keysym.Control-Shift-ISO_Left_Tab: \033[27;6;9~

表现相同。首先按Ctrl+ Tab,释放两个,然后按Return 两次,然后按Ctrl+ Shift+ Tab,释放所有,然后按Return 两次,得到以下输出:

$ cat -v
^[[27;5;9~
^[[27;5;9~


^[[27;6;9~↵
^[[27;6;9~M-bM-^FM-5
  • Case Ctrl+ Tab:第一个返回使输入再次作为输出出现。
  • Case Ctrl+ Shift+ Tab:第一个返回产生符号,第二个返回产生上一行。

下一个编辑:更多信息

如果您按ctrl-shift(在不按任何键的情况下释放两个键)然后在另一个窗口中输入,会发生什么情况?

在不同的urxvt窗口中?当我按下Ctrl + Shift并同时松开两个键时,左下角会出现一个明显的黄色框:KEYCAP PICTURE INSERT MODE它似乎来自urxvt,在其他应用程序中却没有出现。

甚至只是ctrl-shift-tab然后在另一个窗口中输入(我的意思不是rxvt,例如在gedit窗口或Web浏览器之类的东西中。)

我换了一行。

如果您按shift + ctrl + tab键(即向下移动,ctrl向下,tab,ctrl向上,上移)会发生什么,反之亦然(如果您正在这样做)?

在urxvt?

$ cat -v
shift+ctrl+tab then enter: ^[[27;6;9~
ctrl+shift+down: ↓
ctrl+shift+up: ↑
shift+down: ^[[b
shift+up: ^[[a
ctrl+down: ^[Ob
ctrl+up: ^[Oa
tab: |       | (tab)

我正在尝试缩小范围,因为我认为您可能在xcompose中的“ ctrl + shift”上有某种映射。

不是我知道的,但你永远不会知道。

当您按“ Ctrl + Shift + Tab,输入”时,xev的输出是什么?

KeyPress event, serial 32, synthetic NO, window 0x4800001,
    root 0xb4, subw 0x0, time 311734869, (567,395), root:(567,411),
    state 0x0, keycode 66 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 35, synthetic NO, window 0x4800001,
    root 0xb4, subw 0x0, time 311734971, (567,395), root:(567,411),
    state 0x4, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 35, synthetic NO, window 0x4800001,
    root 0xb4, subw 0x0, time 311736110, (567,395), root:(567,411),
    state 0x5, keycode 23 (keysym 0xfe20, ISO_Left_Tab), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 35, synthetic NO, window 0x4800001,
    root 0xb4, subw 0x0, time 311736494, (567,395), root:(567,411),
    state 0x5, keycode 23 (keysym 0xfe20, ISO_Left_Tab), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 35, synthetic NO, window 0x4800001,
    root 0xb4, subw 0x0, time 311736525, (567,395), root:(567,411),
    state 0x5, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 35, synthetic NO, window 0x4800001,
    root 0xb4, subw 0x0, time 311736525, (567,395), root:(567,411),
    state 0x4, keycode 66 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 35, synthetic NO, window 0x4800001,
    root 0xb4, subw 0x0, time 311737530, (567,395), root:(567,411),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
"   XLookupString gives 1 bytes: (0d) "
"   XmbLookupString gives 1 bytes: (0d) "
    XFilterEvent returns: False

KeyRelease event, serial 35, synthetic NO, window 0x4800001,
    root 0xb4, subw 0x0, time 311737633, (567,395), root:(567,411),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
"   XLookupString gives 1 bytes: (0d) "
    XFilterEvent returns: False

我不知道这是否行得通,所以还没有发布答案,而是尝试Control-Shift-ISO_Left_Tab或Control-ISO_Left_Tab。
Random832

@ Random832绝对是正确方向上的微调,但映射行为异常。当我按下Ctrl-Tab cat -v输出所提到的顺序时,Ctrl-Shift-Tab输出正确的顺序,^[[27;6;9~但是下一次按键的解释却不像平常一样。在cat -v输出Ctrl-Shift-Tab+输入中,显示为^[[27;6;9~↵,而不是两行^[[27;6;9~(一行用于输入,一行用于输出)。这种映射在vim中不起作用。你还有其他主意吗?
马可(Marco)2012年

像文字literal符号​​一样?在按Enter键之前要释放ctrl-shift吗?我建议使用两个映射中的哪个映射,以便开始写答案?
Random832

@ Random832我添加了更多详细信息(请参阅编辑)。感谢您到目前为止的努力。
马可(Marco)2012年

如果您按ctrl-shift(在不按任何键的情况下释放两个键)然后在另一个窗口中输入,会发生什么情况?甚至只按ctrl-shift-tab键,然后在另一个窗口中输入(我的意思不是rxvt,例如在gedit窗口或Web浏览器之类的东西中。)如果按shift + ctrl + tab键,会发生什么情况[即,下移,ctrl向下,制表符,按Ctrl向上移,向上移),或者反之亦然(如果您正在执行此操作)?我正在尝试缩小范围,因为我认为您可能在xcompose中的“ ctrl + shift”上有某种映射。xev当您按“ Ctrl + Shift + Tab,输入”时,输出是什么?
2012年

Answers:


2

Shift+ Tab通常ISO_Left_Tab在X11中映射到keyym,因此某些程序可能需要它而不是其配置中的文字“ shift-tab”。

urxvt在ctrl + shift上有一个奇怪的映射,您似乎必须重新编译才能禁用它:有关更多详细信息,请参见此页面。编辑看起来像在最新版本的rxvt中,您可以简单地添加

URxvt.iso14755_52: False

3

S-Tab正在处理这个:

URxvt.keysym.C-Tab: \033{
URxvt.keysym.Control-Shift-ISO_Left_Tab: \033} 
! disable ctrl-shift
URxvt*iso14755: False 
URxvt*iso14755_52: False

在vim中,我有

nmap ^[{ :tabnext<cr>
imap ^[{ <ESC>:tabnext<cr>
nmap ^[} :tabprevious<cr>
imap ^[} <ESC>:tabprevious<cr>

1

部分答案:您可以通过将以下内容添加到.Xdefaults文件(或也许是.Xresources,具体取决于您的系统)中,以至少在现代URxvt中禁用Control-Shift ISO 14755模式:

URxvt.iso14755:    false
URxvt.iso14755_52: false
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.