Memutar ulang CTRL-ALT- [C | V] ke CTRL-SHIFT- [C | V] di URxvt> = 9.20

16

Sejak URxvt9.20, teks dapat disalin ke clipboard dengan Ctrl+ Alt+ C(dan juga disisipkan dari dengan Ctrl+ Alt+ V).

Tapi, saya sudah menggunakan binding ini untuk hal lain.

Jadi, bagaimana saya dapat memutar ulang, di URxvt> = 9.20 ke Ctrl+ Shift+ C(dan Ctrl+ Shift+ Vuntuk tempel)?

fauve
sumber
pertanyaan terkait pada SO stackoverflow.com/questions/43305190/…
anarcat

Jawaban:

22

Ekstensi eval yang dikirimkan dengan rxvt-unicode memiliki tindakan paste_clipboard dan selection_to_clipboard untuk ini, yang dapat diikat ke sembarang kunci (lihat di sini ).

Di .Xresourcesadd Anda :

URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard

Untuk menonaktifkan ikatan kunci sebelumnya, Anda juga perlu:

URxvt.keysym.Control-Meta-c: builtin-string:
URxvt.keysym.Control-Meta-v: builtin-string:

Anda dapat memuat ulang file dengan:

xrdb -load .Xresources

Anda harus memulai ulang rxvt agar perubahan diterapkan.

Enno
sumber
1
ini tidak berfungsi sama sekali sampai saya juga menambahkan atau mengedit ini untuk .Xresources: URxvt.perl-ext-common: default # juga menonaktifkan keycaps sesuai jawaban ini: unix.stackexchange.com/a/444777/8827
marinara
2

Kode mengimplementasikan dua ikatan ini seperti ini:

  if (ctrl && meta && (keysym == XK_c || keysym == XK_v))
    { 
      if (keysym == XK_v)
        selection_request (ev.time, Sel_Clipboard);
      else if (selection.len > 0)
        { 
          free (selection.clip_text);
          selection.clip_text = rxvt_wcsdup (selection.text, selection.len);
          selection.clip_len = selection.len;
          selection_grab (CurrentTime, true);
        }

      return;
    }

Anda tidak dapat menggunakan keysymsumber daya untuk memutar ulang sesuatu yang lain, karena itu hanya memetakan ke string (tidak ada pengubah seperti controldan alt).

Namun, Anda bisa menggunakan ekstensi Perl, yang memiliki metode untuk bekerja dengan pilihan. Tetapi Anda harus menulis skrip Perl untuk mengikatnya.

Thomas Dickey
sumber
1

Untuk menggunakan ekstensi eval ( paste_clipboarddan selection_to_clipboard) yang disebutkan dalam jawaban @ Enno Anda dapat menambahkan yang berikut ke .Xresourcesfile Anda :

URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard
Spencer Miller
sumber
Dengan sendirinya, ini tidak benar-benar menjawab pertanyaan. Anda dapat memperbaikinya dengan menjelaskan cara menggunakan .Xresourcesfile untuk mengikat kunci, karena jawaban Enno tidak.
G-Man Mengatakan 'Reinstate Monica'
1

Semua jawaban yang ada menangani bagian kedua dari pertanyaan (bagaimana cara menambahkan keybindings untuk operasi clipboard ke kunci baru), tetapi jangan menjawab bagian pertama (bagaimana membebaskan keybindings asli).

Jawabannya adalah dengan hanya mengikat mereka builtin-string:(jika Anda ingin mereka dikirim kata demi kata; jika tidak, untuk tindakan yang diinginkan). Yaitu, di .Xresources:

URxvt.keysym.C-M-c: builtin-string:

Atau, pada baris perintah:

-keysym.C-M-c builtin-string:
Vladimir Panteleev
sumber