在 rxvt-unicode 中映射 Control-Shift-Tab

在 rxvt-unicode 中映射 Control-Shift-Tab

我想将键绑定 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:第一个 return 产生符号,第二个 return 产生上面显示的最后一行。

下一次编辑:更多信息

如果您按下 ctrl-shift(同时松开而不按任何键),然后在另一个窗口中输入,会发生什么情况?

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

或者甚至只是 ctrl-shift-tab 然后在不同的窗口中输入(我的意思不是 rxvt,就像在 gedit 窗口或网络浏览器或其他窗口中一样。)

我得到一条新线。

如果您按shift+ctrl+tab [即下移、下移、制表、上移、上移],会发生什么情况,或者反之亦然(如果您正在这样做的话)会发生什么?

在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

答案1

我已经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>

答案2

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

urxvt 在 ctrl+shift 上有一个奇怪的映射,看起来你必须重新编译才能禁用它:请参阅这一页更多细节。编辑看起来在最新版本的 rxvt 中你可以简单地添加

URxvt.iso14755_52: False

答案3

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

URxvt.iso14755:    false
URxvt.iso14755_52: false

相关内容