web-dev-qa-db-fra.com

Raccourci clavier pour coller la sélection principale

Existe-t-il un raccourci clavier standard ou conventionnel pour coller la sélection principale?

Je voudrais sélectionner du texte et aller dans une autre application pour coller sans mettre à la corbeille le contenu de mon presse-papiers. Je préfère garder les doigts sur le clavier que de passer à la souris, de rechercher le pointeur, de le placer où je veux et de cliquer avec le bouton du milieu.

S'il n'y a rien de conventionnel, ou si cela dépend de l'application et n'est pas pris en charge par beaucoup, existe-t-il une solution de contournement pour que cela fonctionne globalement? (Ou du moins dans plusieurs applications.)

39
Roger Pate

L'envoi de pressions de touche virtuelles ne fonctionne pas pour moi (voir commentaires ), mais cette réponse m'a incité à rechercher des solutions similaires. L'envoi d'un événement "texte" avec xvkbd ignore l'état actuel de votre clavier physique:

sh -c 'xsel | xvkbd -xsendevent -file - 2>/dev/null'

xvkbd -text utilise quelques séquences de barres obliques inverses. Ainsi, plutôt que de danser avec l'échappement, -file fonctionne. xvkbd affiche également un texte d'avertissement sur les modificateurs, mais il semble ne pas être pertinent pour cette utilisation (mais je ne voulais pas le voir dans ~/.xsession-errors).

J'ai lié cela à un raccourci utilisant Système> Préférences> Raccourcis clavier .

Notez que vous devez installer les packages xsel et xvkbd:

Sudo apt-get install xsel xvkbd
32
Roger Pate

Vous pouvez obtenir ceci en combinant les programmes xdotool ( cliquez pour installer ) et xsel ( cliquez pour installer =).

xdotoolpeut simuler la saisie dans une fenêtre; xselrenvoie le contenu de la sélection PRIMARY (par défaut); le shell one-line suivant fera l'affaire:

 xdotool type `xsel`

Pour associer cela à n'importe quelle touche à l'aide de l'élément de menu Système-> Préférences-> Raccourcis clavier , il est nécessaire de l'envelopper dans une invocation de shell:

 sh -c 'xdotool type --clearmodifiers -- "`xsel`"'

Taper xdotoolne fonctionnera pas avec certains programmes; voir les notes dans documentation xdotool .

7
Riccardo Murri

Je cherchais une réponse à cette même question, et j’ai trouvé cette réponse qui dit que Shift+Insert travaille pour coller la sélection primaire. Je travaille pour moi Plus simple.

5
Anne

L'appel de xdotool click --clearmodifiers 2 simule un clic sur le bouton central de la souris. Cela fonctionne beaucoup mieux que d'utiliser xsel (du moins pour moi). Bien que vous deviez positionner votre souris avant de taper ...

2
Robert Jakob

Une autre suggestion de xdotool, travaillant dans Debian Jessie 8.7 (Jan 2017):

xdotool click --delay 0 --clearmodifiers 2
  • xdotool gère les chaînes multi-octets (p.e. UTF-8), contrairement à xvkbd.
  • xdotool click simule un clic réel, vous n'avez donc pas besoin de cliquer vous-même pour coller à la position de la souris, comme vous le feriez si vous utilisiez xdotool type ou xvkbd.

Le seul problème est que --clearmodifiers "appuiera" sur tout modificateur (Ctrl/Alt/Shift/Meta) que vous utiliserez après avoir simulé le clic. Même avec --delay 0 (au lieu de 12ms), la commande prend un peu à exécuter. Si vous relâchez les touches avant la fin, vos modificateurs seront à nouveau "pressés" et collés jusqu'à ce que vous appuyiez une nouvelle fois sur la touche réelle.

Donc, avec cela, vous devez être un peu "lent" (50ms?) Pour libérer vos modificateurs, si vous en utilisez.

Vous pouvez tester cela en configurant votre raccourci clavier, en l'utilisant dans un éditeur de texte, puis en appuyant sur une touche (telle que aou une flèche). La lettre doit apparaître en minuscule. Si quelque chose d'autre se produit, vous êtes trop rapide et un modificateur est bloqué (par exemple, Maj si c'est en majuscule, Ctrl si vous avez sélectionné tout le texte, Alt si vous avez ouvert un menu). Appuyez et relâchez à nouveau vos modificateurs pour les réinitialiser.

Si vous êtes trop rapide, vous pouvez utiliser la suggestion de ilkerk:

sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0  "`xsel`"'

Ensuite, vous devez les libérer dans moins de que 300 ms et attendez une demi-seconde que le texte apparaisse.

De plus, utiliser xdotool type signifie que vous insérez le texte comme si vous tapiez, à la position du curseur de texte et non au pointeur de la souris. Vous pouvez le changer en clicksi vous préférez le comportement habituel du clic moyen.

(fait cet article pour que les nouveaux arrivants n'aient pas à reconstituer les pièces du puzzle dispersées dans les commentaires)

1
Chema

J'ai eu des problèmes avec les solutions qui simulent le collage de la sélection PRIMARYname__, aussi j’ai ajouté un raccourci qui copie le PRIMARYselection to CLIPBOARDname __. Après avoir utilisé mon raccourci, je colle CLIPBOARDde la manière habituelle, avec Ctrl+V, Ctrl+Shift+V ou Shift+Insert, en fonction de l'application.

La commande permettant de copier la sélection PRIMARYdans le CLIPBOARDest

sh -c 'xsel --output --primary | xsel --input --cliboard'

que je lie à Ctrl+Insert (choix arbitraire) dans les paramètres de raccourci Gnome sous System Settings -> Devices -> Keyboard

Résumé des problèmes avec d'autres solutions: J'ai essayé les solutions xsel | xvkbd ... et xsel | xdotool ..., mais j'ai constaté qu'elles ne fonctionnaient pas très bien, car elles simulent en tapant la sélection PRIMARYcaractère par caractère, ce qui n'est pas la même chose que le coller avec le clic du milieu. Les problèmes incluent: il y a un long délai pendant lequel une sélection importante est insérée un caractère à la fois; si vous voulez annuler le "coller", vous devez l'annuler caractère par caractère, ce qui est lent; si vous utilisez des "clés mortes", tout est brouillé, par exemple, "coller" "e produit ë; xvkdbne gère pas correctement les caractères unicode.

Attention: Cette solution écrase le contenu existant de CLIPBOARDname__, mais l'OP a demandé des solutions préservant le contenu existant de CLIPBOARDname__.

1
ntc2

J'ai eu le même problème et la recherche sur Internet ne m'a pas beaucoup aidé. Le problème simulant le clic 2 est gênant comme l'OP mentionné.

Le problème avec les noms xdotool et xsel proposés ci-dessus est lorsque xdotool commence à "taper" lorsque vous appuyez toujours sur une autre touche. Cela ne résulte pas toujours avec une sortie. Par exemple, si vous le liez à la touche "insert", xdotool envoie des clés pendant que votre doigt appuie sur la touche "insert", ce qui ne cause rien.

Vous trouverez ci-dessous une solution de contournement pour la relier à une touche:

sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0  "`xsel`"'

ce n'est pas parfait mais ça marche. vous avez maintenant 0,3 seconde pour terminer votre sélection de touche (et touche suivante).

0
ilkerk