我想将键绑定
Ctrl++Shift映射Tab到rxvt-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