Повернення CTRL-ALT- [C | V] до CTRL-SHIFT- [C | V] в URxvt> = 9.20


16

Починаючи з URxvt9.20, текст можна скопіювати у буфер обміну за допомогою Ctrl+ Alt+ C(а також вставити з Ctrl+ Alt+ V).

Але я вже використовую ці прив’язки для іншої речі.

Тож як я можу відновлювати, в URxvt> = 9.20 це Ctrl+ Shift+ CCtrl+ Shift+ Vдля вставки)?


Пов'язаний з цим питання про SO stackoverflow.com/questions/43305190 / ...
anarcat

Відповіді:


22

Розширення eval, що поставляється з rxvt-unicode, має для цього дії paste_clipboard та selection_to_clipboard, які можуть бути пов'язані з будь-яким ключем (див. Тут ).

У вашому .Xresourcesоних:

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

Щоб вимкнути попередні вкладки, вам також знадобиться:

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

Ви можете завантажити файл за допомогою:

xrdb -load .Xresources

Щоб зміни набули чинності, вам потрібно буде перезапустити rxvt.


1
це взагалі не працювало, поки я також не додав або відредагував це .Xresources: URxvt.perl-ext-common: default #also відключити keycaps відповідно до цієї відповіді: unix.stackexchange.com/a/444777/8827
marinara

2

Код реалізує такі дві прив’язки, як це:

  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;
    }

Ви не можете використовувати keysymресурс для відновлення чогось іншого, оскільки це відображається лише до рядків (ніяких модифікаторів, таких як controlі alt).

Однак ви можете використовувати розширення Perl, яке має методи роботи з виділеннями. Але вам доведеться написати сценарій Perl, щоб зв'язати їх разом.


1

Щоб використовувати розширення ( paste_clipboardта selection_to_clipboard) eval, згадані у відповіді @ Enno, ви можете додати у свій .Xresourcesфайл таке:

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

Саме по собі це насправді не відповідає на питання. Ви можете вдосконалити його, описавши, як використовувати .Xresourcesфайл для прив’язки клавіш, оскільки відповідь Енно не відповідає .
G-Man каже: "Відновіть Моніку"

1

Усі існуючі відповіді стосуються другої половини запитання (як додати прив'язки клавіш для операцій з буфером обміну до нових клавіш), але не відповідають на першу половину (як звільнити вихідні клавіші).

Відповідь - просто прив’язати їх builtin-string:(якщо ви хочете, щоб вони були надіслані дослівно; в іншому випадку - до бажаної дії). Тобто, в .Xresources:

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

Або в командному рядку:

-keysym.C-M-c builtin-string:
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.