Relier CTRL-ALT- [C | V] à CTRL-SHIFT- [C | V] dans URxvt> = 9.20

16

Depuis URxvt9.20, le texte peut être copié dans le presse-papiers avec Ctrl+ Alt+ C(et également collé avec Ctrl+ Alt+ V).

Mais, j'utilise déjà ces fixations pour autre chose.

Alors, comment puis-je le relier, dans URxvt> = 9.20 à Ctrl+ Shift+ C(et Ctrl+ Shift+ Vpour coller)?

fauve
la source
question connexe sur SO stackoverflow.com/questions/43305190/…
anarcat

Réponses:

22

L'extension eval livrée avec rxvt-unicode a pour cela des actions paste_clipboard et selection_to_clipboard, qui peuvent être liées à n'importe quelle clé (voir ici ).

Dans votre .Xresourcesajout:

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

Pour désactiver les raccourcis clavier précédents, vous aurez également besoin:

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

Vous pouvez recharger le fichier avec:

xrdb -load .Xresources

Vous devrez redémarrer rxvt pour que les modifications prennent effet.

Enno
la source
1
cela n'a pas fonctionné du tout jusqu'à ce que .Xresources: URxvt.perl-ext-common: default j'ajoute ou modifie également ceci pour #désactiver également les keycaps selon cette réponse: unix.stackexchange.com/a/444777/8827
marinara
2

Le code implémente ces deux liaisons comme ceci:

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

Vous ne pouvez pas utiliser la keysymressource pour relier autre chose, car cela ne correspond qu'aux chaînes (pas de modificateurs tels que controlet alt).

Cependant, vous pouvez utiliser l'extension Perl, qui a des méthodes pour travailler avec les sélections. Mais vous devez écrire un script Perl pour les lier ensemble.

Thomas Dickey
la source
1

Pour utiliser les extensions eval ( paste_clipboardet selection_to_clipboard) mentionnées dans la réponse de @ Enno, vous pouvez ajouter ce qui suit à votre .Xresourcesfichier:

URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard
Spencer Miller
la source
En soi, cela ne répond pas vraiment à la question. Vous pouvez l'améliorer en décrivant comment utiliser le .Xresourcesfichier pour lier les clés, car la réponse d'Enno ne le fait pas.
G-Man dit `` Réinstalle Monica '' le
1

Toutes les réponses existantes traitent la deuxième moitié de la question (comment ajouter des raccourcis clavier pour les opérations du presse-papiers aux nouvelles clés), mais ne répondent pas à la première moitié (comment libérer les raccourcis clavier d'origine).

La réponse est simplement de les lier à builtin-string:(si vous souhaitez qu'ils soient envoyés textuellement; sinon, à l'action souhaitée). C'est-à-dire, en .Xresources:

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

Ou, sur la ligne de commande:

-keysym.C-M-c builtin-string:
Vladimir Panteleev
la source