web-dev-qa-db-fra.com

Rebinding Ctrl-Alt- [C | V] à Ctrl-Shift- [C | V] dans URXVT> = 9,20

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

Mais j'utilise déjà ces liaisons pour une autre chose.

Alors comment puis-je reculer, dans URxvt> = 9.20 il à Ctrl+Shift+C (et Ctrl+Shift+V pour la pâte)?

19
fauve

L'extension EVAL expédiée avec RXVT-Unicode comporte des actions en pâte_clipboard et Selection_To_Clipboard pour cela, pouvant être liée à n'importe quel keysym (voir ici ).

Dans ton .Xresources ajouter:

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

Pour désactiver les clés précédents, vous aurez également besoin de:

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.

24
Enno

Le code implémente ces deux liaisons comme celle-ci:

  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 ressource keysym pour rejeter quelque chose d'autre, car -Ça uniquement mapper des chaînes (aucun modificateur tel que control et alt).

Cependant, vous pouvez utiliser l'extension PERL, qui a des méthodes de travail avec des sélections. Mais vous devez écrire un script Perl pour attacher ceux ensemble.

2
Thomas Dickey

Toutes les réponses existantes gèrent la seconde moitié de la question (comment ajouter des clés pour les opérations de presse-papiers aux nouvelles clés), mais ne répondez pas à la première moitié (comment -libérer Les bornes d'origine).

La réponse est de simplement les lier à builtin-string: (Si vous souhaitez qu'ils soient envoyés, Verbatim; 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:
2
Vladimir Panteleev

Utiliser les extensions d'évaluation (paste_clipboard et selection_to_clipboard) mentionné dans la réponse de @ Enno Vous pouvez ajouter ce qui suit à votre .Xresources déposer:

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