Pourquoi Shift + Insert colle-t-il à partir de CLIPBOARD dans certaines applications et PRIMARY dans d'autres?

29

Comment puis-je coller à partir de la sélection PRIMAIRE (par exemple, du texte sélectionné par la souris) avec un raccourci clavier? Shift+Insertpâtes incohérentes de PRIMARY ou CLIPBOARD, selon l'application.

Contexte:

Ctrl+Ccopie le texte sélectionné dans CLIPBOARD tandis que la sélection de la souris copie dans PRIMARY. Coller avec CLIPBOARD avec Ctrl+Vet coller avec PRIMARY avec mouse-middle-click.

Dans un émulateur de terminal (gnome-terminal), collez depuis CLIPBOARD avec Ctrl+Shift+V. (Coller à partir de PRIMARY avec mouse-middle-clickstill.)

Je veux coller à partir de PRIMARY avec un raccourci clavier. Dans gnome-terminal, c'est Shift+Insert, mais dans gedit et Firefox, des Shift+Insertpâtes de CLIPBOARD. Je veux un raccourci qui colle systématiquement de CLIPBOARD et un raccourci différent qui colle systématiquement de PRIMARY.

J'utilise Ubuntu 14.04 avec xmonad et Firefox 34.0

reasgt
la source

Réponses:

30

Toutes les applications que vous avez mentionnées sont des gtk+applications, il est donc assez facile de répondre Pourquoi ... Parce que dans toutes les gtk+ applications ( sauf une ), Shift+ Insertpâtes de CLIPBOARD - c'est-à-dire que c'est équivalent à Ctrl+ V. Le raccourci est codé en dur gtkentry.c(ligne 2022) et gtktextview.c(ligne 1506):

gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
                "paste-clipboard", 0);

Il est également documenté dans le manuel de référence GTK + 3 sous GtkEntry:

The “paste-clipboard” signal
void
user_function (GtkEntry *entry,
               gpointer  user_data)
The ::paste-clipboard signal is a keybinding signal which gets emitted
to paste the contents of the clipboard into the text view.
The default bindings for this signal are Ctrl-v and Shift-Insert.

Pour autant que je sache, cela a été fait par souci de cohérence avec les autres DE (voir KDEles Qtraccourcis clavier de QTextEdit Class) et Windows OS 1 .
La seule exception est gnome-terminal. Après de longs débats, les développeurs ont décidé (par souci de cohérence avec les autres terminaux) que, dans gnome-terminal, Shift+ Insertdevrait coller à partir de PRIMARY et Ctrl+ Shift+ Vdevrait coller à partir de CLIPBOARD (bien que vous ayez les options pour personnaliser certains raccourcis).


Quant à savoir comment coller la sélection avec un raccourci clavier ... il n'y a pas de moyen simple.

Le moyen le plus simple consiste à attribuer un raccourci à un script qui s'exécute xdotool click 2(simule un clic avec le bouton central de la souris). Bien que cela fonctionne (et qu'il devrait fonctionner avec tous ou la plupart des DE et des boîtes à outils), cela ne fonctionne que si le curseur de la souris se trouve réellement sur la zone de saisie de texte, sinon il échoue.

Un autre moyen relativement simple est via Gnome Accessibility, s'il est disponible sur votre système. Il nécessite également la présence d'un pavé numérique. Allez à Universal Access>> Pointing & Clickinget activez Mouse Keys. Assurez-vous qu'il NumLockest éteint. Vous pouvez ensuite utiliser les touches du pavé numérique pour déplacer le curseur et cliquer. Pour simuler un clic du bouton central de la souris, appuyez sur (et relâchez) *(astérisque) puis appuyez sur 5(voici un petit guide ). Cette solution semble toujours fonctionner dans un gtk+environnement. L'inconvénient est qu'il nécessite Gnome Accessibilityet un pavé numérique. De plus, vous ne pouvez pas personnaliser le raccourci.

Une solution intéressante a été proposée sur gnome-bugzilla (bug 643391) . (Mise à jour 2018: le problème a maintenant été déplacé ici .) Il nécessite de corriger certains fichiers source et de définir des options de configuration dans ~/.config/gtk-3.0/gtk.css(ou ~/.gtkrc-2.0pour gtk+2 applications). Je ne l'ai pas essayé personnellement mais les retours sont positifs.

Idéalement, vous devez patcher les fichiers source et définir un "paste-selection"signal, puis lier Shift+ Insertà "paste-selection"au lieu de "paste-clipboard". Le code d'Andy (joint dans le rapport de bogue lié ci-dessus) pourrait servir de guide sur la façon de le faire. Même dans ce cas, cela n'affecterait que les gtk+applications (je ne suis pas un KDE/Qtgars, donc je ne sais pas comment modifier le Qtcomportement des applications).


1: (sans parler du CUA d'IBM)

don_crissti
la source
2
Merci pour cette explication. Dommage qu'il n'existe pas de meilleure solution, je manque beaucoup un raccourci clavier cohérent pour PRIMARY. La solution de contournement de l'émulation de la souris n'aide pas beaucoup car le but du raccourci est d'éviter d'avoir à traiter avec la souris.
didi_X8
1

Je suis désolé: je ne peux pas écrire de commentaire à cause de la réputation, alors j'écris comme réponse. Ce n'est pas une solution directe, mais cela m'aide ...

Vous pouvez utiliser une combinaison d'informations:

  1. Modifiez le thème gtk et autorisez la liaison de touches comme vous le souhaitez .

  2. Exemple de création de raccourcis clavier gtk 3.0 en CSS de thème .

  3. Exemple de substitution de raccourcis clavier gtk et de dissociation .

  4. Exemple de modification de la liaison de touches pour gnome-terminal

  5. Démarrage automatique de l'autocutsel avec les options par défaut pour synchroniser CLIPBOARD avec CUTBUFFER (ceci est facultatif). Ce lien est uniquement pour des informations sur le problème.

  6. Utilisez clipman pour accéder à plusieurs tampons (PRIMARY et CLIPBOARD), sans sélections de synchronisation automatique (la synchronisation automatique bidirectionnelle est incorrecte).

Donc, je sélectionne simplement le thème gtk et modifie le thème CSS pour les raccourcis clavier nécessaires pour les signaux de copie-presse-papiers (Ctrl + Insert) et de collage-presse-papiers (Shift + Insert).

user1742529
la source
1
Cela pourrait être le début d'une bonne réponse, si vous prenez le contenu de ces liens et combinez les informations. Dans l'état actuel des choses, ce n'est qu'une collection de liens, ce qui risque d'être supprimé. Veuillez remplir les informations afin qu'elles soient directement dans la réponse, et je suis sûr que vous obtiendrez des votes positifs (vous donnant ainsi suffisamment de réputation pour commenter). Merci!
Toby Speight