Перепривязка 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, которые можно привязать к любому keysym (см. Здесь ).

В вашем .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 изменил это, чтобы # также отключить колпачки клавиш согласно этому ответу: 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

Чтобы использовать eval расширения ( paste_clipboardи selection_to_clipboard), упомянутые в ответе @ 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:
Владимир Пантелеев
источник