Перепривязка 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:
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.