Ponowne wiązanie CTRL-ALT- [C | V] do CTRL-SHIFT- [C | V] w URxvt> = 9.20

16

Od URxvt9.20 tekst można kopiować do schowka za pomocą Ctrl+ Alt+ C(a także wklejać za pomocą Ctrl+ Alt+ V).

Ale już używam tych powiązań do innej rzeczy.

Jak mogę ponownie powiązać, w URxvt> = 9.20 to Ctrl+ Shift+ C(i Ctrl+ Shift+ w Vprzypadku wklejenia)?

fauve
źródło
powiązane pytanie na SO stackoverflow.com/questions/43305190/...
anarcat

Odpowiedzi:

22

Rozszerzenie eval dostarczane z rxvt-unicode ma do tego działania paste_clipboard i selection_to_clipboard, które można powiązać z dowolnym klawiszem (patrz tutaj ).

W swoim .Xresourcesdodaniu:

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

Aby wyłączyć poprzednie skróty klawiszowe, będziesz także potrzebować:

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

Możesz ponownie załadować plik za pomocą:

xrdb -load .Xresources

Musisz ponownie uruchomić rxvt, aby zmiany odniosły skutek.

Enno
źródło
1
to w ogóle nie działało, dopóki nie dodałem ani nie zredagowałem tego # .Xresources: URxvt.perl-ext-common: default # także wyłącza klawisze zgodnie z następującą odpowiedzią: unix.stackexchange.com/a/444777/8827
marinara
2

Kod implementuje następujące dwa wiązania:

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

Nie możesz użyć tego keysymzasobu do ponownego powiązania czegoś innego, ponieważ to odwzorowuje tylko ciągi (bez modyfikatorów takich jak controli alt).

Można jednak użyć rozszerzenia Perl, które ma metody pracy z zaznaczeniami. Ale musiałbyś napisać skrypt Perla, aby powiązać je ze sobą.

Thomas Dickey
źródło
1

Aby użyć rozszerzeń eval ( paste_clipboardi selection_to_clipboard) wymienionych w odpowiedzi @ Enno , możesz dodać do swojego .Xresourcespliku:

URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard
Spencer Miller
źródło
Samo w sobie tak naprawdę nie odpowiada na pytanie. Możesz to poprawić, opisując, jak używać .Xresourcespliku do wiązania kluczy, ponieważ odpowiedź Enno nie.
G-Man mówi „Przywróć Monikę”
1

Wszystkie istniejące odpowiedzi obsługują drugą połowę pytania (jak dodawać skróty klawiszowe do operacji schowka do nowych kluczy), ale nie odpowiadają na pierwszą połowę (jak zwolnić oryginalne skróty klawiszowe).

Odpowiedzią jest po prostu związanie ich builtin-string:(jeśli chcesz, aby zostały wysłane dosłownie; w przeciwnym razie, do pożądanego działania). Tj. W .Xresources:

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

Lub w wierszu poleceń:

-keysym.C-M-c builtin-string:
Vladimir Panteleev
źródło