Mappa Control-Shift-Tab in rxvt-unicode


9

Vorrei mappare il keybinding Ctrl+ Shift+ Tabin rxvt-unicode. Sono riuscito a mappare Ctrl+ Tabcome segue. La voce corrispondente .Xresourcesè

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

L'utilizzo cat -vconferma che questa mappatura funziona:

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

La sequenza ^[[27;5;9~può quindi essere utilizzata in applicazioni come vimper la mappatura Ctrl+ Tab. Mi aspetto che la seguente .Xresourcesvoce funzioni allo stesso modo.

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

Tuttavia, catnon mostra il mapping corretto:

$ cat -v
^[[Z

Come impostare la mappatura Ctrl+ Shift+ Tab?

modificare

Le mappature

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

comportarsi allo stesso modo. Dopo aver prima premuto Ctrl+ Tab, rilasciando entrambi e poi premendo Return due volte e quindi premendo Ctrl+ Shift+ Tab, rilasciando tutto e quindi premendo Return due volte ottengo il seguente output:

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


^[[27;6;9~↵
^[[27;6;9~M-bM-^FM-5
  • Caso Ctrl+ Tab: il primo ritorno fa apparire di nuovo l'input come output.
  • Caso Ctrl+ Shift+ Tab: il primo ritorno produce il segno , il secondo ritorno produce l'ultima riga mostrata sopra.

Prossima modifica: ulteriori informazioni

Cosa succede se si preme ctrl-shift (rilasciare entrambi senza premere alcun tasto), quindi si accede, in una finestra diversa?

In un'altra finestra di urxvt? Quando premo Ctrl + Maiusc e rilascio entrambi i tasti, nell'angolo in basso a sinistra appare una casella gialla stridente: KEYCAP PICTURE INSERT MODEsembra provenire da urxvt, non appare in altre applicazioni.

O anche semplicemente ctrl-shift-tab quindi entrare in una finestra diversa (intendo non rxvt, come in una finestra gedit o nel browser web o qualcosa del genere).

Ho una nuova linea.

Cosa succede se si preme MAIUSC + CTRL + TAB [ovvero MAIUSC, CTRL GIÙ, TAB, CTRL SU, MAIUSC] invece, o viceversa se era quello che stavi facendo?

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

Sto cercando di restringere le cose perché penso che potresti avere una sorta di mappatura su "ctrl + shift" in xcompose o qualcosa del genere.

Non che ne sia consapevole, ma non lo sai mai.

Qual è l'output di xev quando premi "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

Non ho idea se funzionerà, quindi non pubblicare ancora una risposta, ma prova Control-Shift-ISO_Left_Tab o Control-ISO_Left_Tab.
Casuale 832

@ Random832 È sicuramente una spinta nella giusta direzione, ma la mappatura si comporta in modo strano. Quando premo Ctrl-Tab cat -vemette la sequenza menzionata, Ctrl-Shift-Tabemette la sequenza corretta, ^[[27;6;9~tuttavia la successiva pressione del tasto non viene interpretata come al solito. In cat -vuscita Ctrl-Shift-Tab+ immettere mostra come ^[[27;6;9~↵, invece di due linee ^[[27;6;9~(uno per l'ingresso, uno per l'uscita). Questa mappatura non funzionerebbe in vim. Hai un'altra idea?
Marco,

Come un letterale simbolo ↵? Rilasci ctrl-shift prima di premere Invio? Quale delle due mappature che ho suggerito ha funzionato, così posso iniziare a scrivere una risposta?
Casuale 832

@ Random832 Ho aggiunto ulteriori informazioni dettagliate (vedi modifica). Grazie per il tuo impegno finora.
Marco,

Cosa succede se si preme ctrl-shift (rilasciare entrambi senza premere alcun tasto), quindi si accede, in una finestra diversa? O anche semplicemente ctrl-shift-tab quindi entra in una finestra diversa (intendo non rxvt, come in una finestra gedit o nel browser web o qualcosa del genere). Cosa succede se si preme shift + ctrl + tab [cioè si sposta in basso, ctrl in basso , tab, ctrl up, shift up] o viceversa se era quello che stavi facendo? Sto cercando di restringere le cose perché penso che potresti avere una sorta di mappatura su "ctrl + shift" in xcompose o qualcosa del genere. Qual è l'output di xevquando si preme "ctrl + maiusc + tab, invio"?
Casuale 832

Risposte:


2

Shift+ Tabè spesso mappato sul ISO_Left_Tabkeysym in X11, quindi alcuni programmi potrebbero aver bisogno di questo invece di un letterale "shift-tab" nella loro configurazione.

urxvt ha una strana mappatura su ctrl + shift, sembra che dovrai ricompilarlo per disabilitarlo: vedi questa pagina per maggiori dettagli. EDIT Sembra che nelle ultime versioni di rxvt puoi semplicemente aggiungere

URxvt.iso14755_52: False

3

Ho S-Tablavorato con questo:

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

e in verità ho

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

1

Risposta parziale: è possibile disabilitare la modalità ISO 14755 Control-Shift - almeno nella moderna URxvt - aggiungendo quanto segue al file .Xdefaults (o forse .Xresources, a seconda del sistema):

URxvt.iso14755:    false
URxvt.iso14755_52: false
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.