Mapear Control-Shift-Tab no rxvt-unicode


9

Gostaria de mapear a combinação de teclas Ctrl+ Shift+ Tabin rxvt-unicode. Eu consegui mapear Ctrl+ da Tabseguinte maneira. A entrada correspondente em .Xresourcesé

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

O uso cat -vconfirma que esse mapeamento funciona:

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

A sequência ^[[27;5;9~pode ser usada em aplicativos como o vimmapeamento Ctrl+ Tab. Eu esperaria que a seguinte .Xresourcesentrada funcionasse da mesma maneira.

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

No entanto, catnão mostra o mapeamento correto:

$ cat -v
^[[Z

Como configurar o mapeamento Ctrl+ Shift+ Tab?

Editar

Os mapeamentos

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

se comporta da mesma maneira. Depois de pressionar Ctrl+ Tab, liberar os dois e pressionar Return duas vezes e pressionar Ctrl+ Shift+ Tab, liberar tudo e pressionar Return duas vezes , recebo a seguinte saída:

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


^[[27;6;9~↵
^[[27;6;9~M-bM-^FM-5
  • Case Ctrl+ Tab: O primeiro retorno faz com que a entrada apareça novamente como saída.
  • Caso Ctrl+ Shift+ Tab: O primeiro retorno produz o sinal , o segundo retorno produz a última linha mostrada acima.

Próxima edição: Mais informações

O que acontece se você pressionar ctrl-shift (solte os dois sem pressionar nenhuma tecla) e depois entrar em uma janela diferente?

Em uma janela urxvt diferente? Quando pressiono Ctrl + Shift e solto as duas teclas, uma caixa amarela estridente aparece no canto inferior esquerdo: KEYCAP PICTURE INSERT MODEparece vir do urxvt, não aparece em outros aplicativos.

Ou apenas pressione Ctrl-Shift-Tab e entre em uma janela diferente (não quero dizer rxvt, como em uma janela do Gedit ou no navegador da Web ou algo assim.)

Eu recebo uma nova linha.

O que acontece se você pressionar Shift + Ctrl + Tab [ie Shift, Ctrl Down, Tab, Ctrl Up, Shift Up] ou vice-versa, se era isso que você estava fazendo?

No 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)

Estou tentando restringir as coisas porque acho que você pode ter algum tipo de mapeamento em "ctrl + shift" no xcompose ou algo assim.

Não que eu saiba, mas você nunca sabe.

Qual é a saída do xev quando você pressiona "ctrl + shift + tab, enter"?

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

Não tenho idéia se isso vai funcionar, por isso ainda não estou postando como resposta, mas tente Control-Shift-ISO_Left_Tab ou Control-ISO_Left_Tab.
usar o seguinte código

@ Random832 É definitivamente uma cutucada na direção certa, mas o mapeamento se comporta de forma estranha. Quando pressiono Ctrl-Tab cat -vgera a sequência mencionada, Ctrl-Shift-Tabgera a sequência correta, ^[[27;6;9~no entanto, a próxima pressão de tecla não é interpretada como de costume. Na cat -vsaída Ctrl-Shift-Tab+ enter é exibido como ^[[27;6;9~↵, em vez de duas linhas ^[[27;6;9~(uma para entrada e uma para saída). Esse mapeamento não funcionaria no vim. Você tem outra idéia?
8133 Marco Marco

Como um símbolo literal? Você está liberando ctrl-shift antes de pressionar enter? Qual dos dois mapeamentos que sugeri funcionou, para que eu possa começar a escrever uma resposta?
usar o seguinte código

@ Random832 Adicionei mais informações detalhadas (veja editar). Obrigado pelo seu esforço até agora.
8132 Marco Marco

O que acontece se você pressionar ctrl-shift (solte os dois sem pressionar nenhuma tecla) e depois entrar em uma janela diferente? Ou apenas pressione Ctrl-Shift-Tab e entre em uma janela diferente (quero dizer, não rxvt, como em uma janela do Gedit ou no navegador da Web ou algo assim.) O que acontece se você pressionar Shift + Ctrl + Tab , tab, pressione Ctrl, Shift] e vice-versa, se era isso que você estava fazendo? Estou tentando restringir as coisas porque acho que você pode ter algum tipo de mapeamento em "ctrl + shift" no xcompose ou algo assim. Qual é o resultado de xevquando você pressiona "ctrl + shift + tab, enter"?
usar o seguinte código

Respostas:


2

ShiftO + Tabé frequentemente mapeado para o ISO_Left_Tabteclado no X11, portanto, alguns programas podem precisar disso em vez de uma literal 'shift-tab' em sua configuração.

O urxvt possui um mapeamento estranho no ctrl + shift, parece que você precisará recompilar para desativá-lo: consulte esta página para obter mais detalhes. EDIT Parece que nas versões recentes do rxvt você pode simplesmente adicionar

URxvt.iso14755_52: False

3

Eu tenho S-Tabtrabalhado com isso:

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

e no vim eu tenho

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

1

Resposta parcial: Você pode desativar o modo Control-Shift ISO 14755 - pelo menos no URxvt moderno - adicionando o seguinte ao seu arquivo .Xdefaults (ou talvez .Xresources, dependendo do seu sistema):

URxvt.iso14755:    false
URxvt.iso14755_52: false
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.