Peta Control-Shift-Tab di rxvt-unicode

9

Saya ingin memetakan pengikat tombol Ctrl+ Shift+ Tabdi rxvt-unicode. Saya berhasil memetakan Ctrl+ Tabsebagai berikut. Entri yang sesuai dalam .Xresourcesadalah

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

Menggunakan cat -vmengkonfirmasi bahwa pemetaan ini berfungsi:

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

Urutan ^[[27;5;9~kemudian dapat digunakan dalam aplikasi seperti vimuntuk memetakan Ctrl+ Tab. Saya berharap .Xresourcesentri berikut berfungsi sama.

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

Namun, cattidak menunjukkan pemetaan yang benar:

$ cat -v
^[[Z

Bagaimana cara mengatur pemetaan Ctrl+ Shift+ Tab?

Edit

Pemetaan

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

berperilaku sama. Setelah menekan Ctrl+ pertama Tab, melepaskan keduanya lalu menekan Return dua kali lalu menekan Ctrl+ Shift+ Tab, melepaskan semua lalu menekan Return dua kali saya mendapatkan output berikut:

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


^[[27;6;9~↵
^[[27;6;9~M-bM-^FM-5
  • Kasus Ctrl+ Tab: Pengembalian pertama membuat input muncul lagi sebagai output.
  • Kasus Ctrl+ Shift+ Tab: Pengembalian pertama menghasilkan tanda , pengembalian kedua menghasilkan baris terakhir yang ditunjukkan di atas.

Sunting selanjutnya: Informasi lebih lanjut

Apa yang terjadi jika Anda menekan ctrl-shift (lepaskan keduanya tanpa menekan tombol apa pun), lalu masuk, di jendela yang berbeda?

Di jendela urxvt yang berbeda? Ketika saya menekan Ctrl + Shift dan melepaskan kedua tombol kotak kuning nyaring muncul di sudut kiri bawah: KEYCAP PICTURE INSERT MODEtampaknya berasal dari urxvt, itu tidak muncul di aplikasi lain.

Atau bahkan hanya ctrl-shift-tab lalu masuk di jendela yang berbeda (maksud saya bukan rxvt, seperti di jendela gedit atau browser web atau sesuatu.)

Saya mendapat baris baru.

Apa yang terjadi jika Anda menekan shift + ctrl + tab [yaitu bergeser ke bawah, ctrl ke bawah, tab, ctrl ke atas, menggeser ke atas] sebagai gantinya, atau sebaliknya jika itu yang Anda lakukan?

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

Saya mencoba untuk mempersempit hal-hal karena saya pikir Anda mungkin memiliki semacam pemetaan pada "ctrl + shift" di xcompose atau sesuatu.

Bukannya aku sadar, tapi kamu tidak pernah tahu.

Apa output xev ketika Anda menekan "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
Marco
sumber
Saya tidak tahu apakah ini akan berhasil, jadi belum memposting sebagai jawaban, tetapi coba Control-Shift-ISO_Left_Tab atau Control-ISO_Left_Tab.
Random832
@ Random832 Jelas merupakan dorongan dalam arah yang benar, tetapi pemetaannya berperilaku aneh. Ketika saya menekan Ctrl-Tab cat -voutput urutan yang disebutkan, Ctrl-Shift-Tabmengeluarkan urutan yang benar ^[[27;6;9~namun penekanan tombol berikutnya tidak ditafsirkan seperti biasa. Pada cat -voutput Ctrl-Shift-Tab+ enter display sebagai ^[[27;6;9~↵, alih-alih dua baris ^[[27;6;9~(satu untuk input, satu untuk output). Pemetaan ini tidak akan berfungsi di vim. Anda punya ide lain?
Marco
Seperti simbol ↵ literal? Apakah Anda melepaskan ctrl-shift sebelum menekan enter? Manakah dari dua pemetaan yang saya sarankan berhasil, sehingga saya dapat mulai menulis jawaban?
Random832
@ Random832 Saya menambahkan lebih banyak informasi terperinci (lihat edit). Terima kasih atas usaha Anda sejauh ini.
Marco
Apa yang terjadi jika Anda menekan ctrl-shift (lepaskan keduanya tanpa menekan tombol apa pun), lalu masuk, di jendela yang berbeda? Atau bahkan hanya ctrl-shift-tab kemudian masukkan di jendela yang berbeda (maksud saya bukan rxvt, seperti di jendela gedit atau browser web atau sesuatu.) Apa yang terjadi jika Anda menekan shift + ctrl + tab [yaitu bergeser ke bawah, ctrl ke bawah , tab, ctrl atas, geser ke atas], atau sebaliknya jika itu yang Anda lakukan? Saya mencoba untuk mempersempit hal-hal karena saya pikir Anda mungkin memiliki semacam pemetaan pada "ctrl + shift" di xcompose atau sesuatu. Apa output dari xevketika Anda menekan "ctrl + shift + tab, enter"?
Random832

Jawaban:

2

Shift+ Tabsering dipetakan ke ISO_Left_Tabkeysym di X11, jadi beberapa program mungkin memerlukan ini alih-alih 'shift-tab' secara literal dalam konfigurasinya.

urxvt memiliki pemetaan aneh pada ctrl + shift, sepertinya Anda harus mengkompilasi ulang untuk menonaktifkannya: lihat halaman ini untuk detail lebih lanjut. EDIT Sepertinya dalam versi terbaru dari rxvt Anda cukup menambahkan

URxvt.iso14755_52: False
Random832
sumber
3

Saya sudah S-Tabbekerja dengan ini:

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

dan dalam vim saya miliki

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

Sebagian jawaban: Anda dapat menonaktifkan mode Control-Shift ISO 14755 - setidaknya di URxvt modern - dengan menambahkan berikut ini ke file .Xdefaults Anda (atau mungkin .Xresources, tergantung pada sistem Anda):

URxvt.iso14755:    false
URxvt.iso14755_52: false
Peter
sumber