202 votes

Comment puis-je désactiver le collage en cliquant sur le bouton du milieu de la souris ?

Existe-t-il un moyen de désactiver le comportement de collage du bouton du milieu de la souris qui est activé par défaut sur gnome?

J'ai une molette de souris sensible et à chaque fois que je fais défiler du texte, parfois, des choses sont collées aléatoirement dans le texte. Je perds pas mal de crédibilité lorsque j'envoie un fichier à quelqu'un et qu'il contient des extraits de texte aléatoires collés un peu partout.

J'ai vu une solution qui consiste à mapper le bouton du milieu de la souris sur un bouton de souris inexistant, mais cela implique de se débarrasser complètement du bouton du milieu de la souris (c'est-à-dire pas de fermeture d'onglets, ouverture automatique des liens dans un nouvel onglet, etc.). J'aimerais pouvoir utiliser mon bouton du milieu de la souris, mais simplement désactiver le comportement de collage.

Cela se produit également lorsque je fais défiler du texte avec mon touchpad (je touche accidentellement avec deux doigts sans bouger, bam.)

Le problème ne sera donc pas résolu en changeant de souris (en fait je crois que cela se produit plus souvent avec mon touchpad qu'avec ma souris).

17voto

Jelle Geerts Points 342

Pour une solution au problème, veuillez consulter ce guide que j'ai écrit:

Il y a quelque temps, j'ai écrit un correctif pour désactiver la fonctionnalité de collage avec le bouton du milieu de la souris dans GTK. J'ai pensé qu'il y aurait d'autres personnes qui voudraient le désactiver également, et donc j'ai pensé que je devrais écrire un petit guide pour expliquer comment cet exploit peut être accompli.

Maintenant, certains pourraient demander, pourquoi quelqu'un voudrait-il le désactiver? Il y a quelques raisons:

  • Le bouton du milieu de la souris ne colle pas en réalité le presse-papiers dit XA_CLIPBOARD, mais le presse-papiers XA_PRIMARY. Cela peut être contre-intuitif pour beaucoup (utilisateurs venant de Windows, peut-être), et donc certains peuvent le considérer plus convivial pour les utilisateurs de désactiver le comportement "incohérent" ou inattendu.
  • Certains peuvent coller accidentellement du texte en utilisant le bouton du milieu de la souris, et veulent éviter cela.

Un peu de contexte concernant les presse-papiers XA_CLIPBOARD et XA_PRIMARY: Le presse-papiers XA_PRIMARY est principalement utilisé pour stocker des sélections. Chaque fois que vous sélectionnez du texte par exemple dans l'Éditeur de texte GNOME (gedit), ce texte est copié dans le presse-papiers XA_PRIMARY. Ce texte n'est pas collé lorsque vous utilisez l'élément de menu 'Édition -> Coller', uniquement lorsque vous cliquez avec le bouton du milieu de la souris. Le presse-papiers XA_CLIPBOARD est principalement utilisé lorsque l'on utilise la fonctionnalité générale 'Copier/Coller' (via des raccourcis clavier, tels que CTRL+C et CTRL+V, ou via les éléments de menu 'Édition -> Copier' et 'Édition -> Coller').

Peut-être qu'un correctif de ce genre (ou des changements plus drastiques au presse-papiers X et/ou à la façon dont les bibliothèques/applications l'utilisent) pourraient un jour devenir standard dans Linux. Je réalise que les opinions à ce sujet diffèrent grandement. Cependant, pour les personnes qui cherchent à minimiser les chances de coller accidentellement un texte aléatoire, le correctif peut être très utile. Par exemple, avec le correctif, vous ne pouvez pas coller accidentellement (du moins, avec le bouton du milieu de la souris) du texte dans un document que vous êtes en train d'éditer, ou dans une page web, ou dans un message instantané, etc.

Le guide est pour les distributions Linux basées sur Debian ou Debian telles qu'Ubuntu et Mint.

Ce qui suit sont des commandes de terminal avec une brève description de ce qu'elles font (les lignes commençant par # sont des commentaires, qui contiennent ces descriptions). Vous devriez ouvrir un terminal et entrer les commandes une par une, après avoir lu attentivement les descriptions.

# C'est un petit guide expliquant comment patcher GTK afin que le bouton du milieu de la souris
# ne colle plus de texte.

# REMARQUE:
# Les instructions ci-dessous sont pour GTK2. Toutefois, elles devraient être faciles à adapter
# pour GTK3 (au moment de l'écriture, le correctif fonctionne également pour GTK3).

# Tout d'abord, mettez à jour le système en synchronisant d'abord les fichiers d'index des paquets, puis
# en mettant à jour les paquets.
sudo apt-get update
sudo apt-get upgrade

# Obtenez les dépendances de compilation et les paquets essentiels nécessaires pour compiler
# du code et créer des paquets.
sudo apt-get build-dep libgtk2.0-0
sudo apt-get install build-essential

# Créez un répertoire temporaire, dans lequel nous stockerons les sources de GTK et
# ensuite les paquets.
mkdir /tmp/gtk
cd /tmp/gtk

# Téléchargez le correctif réel qui désactivera la fonctionnalité de collage avec le bouton du milieu de la souris
# (il devrait être stocké dans le répertoire '/tmp/gtk', et le sera,
# si vous avez effectivement exécuté la commande 'cd /tmp/gtk').
wget http://subversion.assembla.com/svn/slipstream/patches/gtk_disable_middle_mouse_button_paste.patch

# Récupérez les sources de GTK.
apt-get source libgtk2.0-0

# Vous devriez adapter cette ligne pour qu'elle change vers le répertoire correct (le
# nom du répertoire que j'ai utilisé ici ne correspondra probablement pas au nom du
# répertoire qui a été créé lors de 'apt-get source libgtk2.0-0', car il
# contient un numéro de version qui change souvent). Vous pouvez découvrir quel est
# le répertoire correct en entrant 'ls -d */' (sans les guillemets) et en regardant
# les noms des répertoires qu'il montre.
cd gtk+2.0-2.20.1

# Appliquez le correctif que nous avons téléchargé précédemment.
patch -p1 < /tmp/gtk/gtk_disable_middle_mouse_button_paste.patch

# La sortie de la commande précédente devrait être:
# patching file gtk/gtkselection.c
# Sinon, quelque chose s'est mal passé. Peut-être avez-vous fait une faute de frappe, peut-être
# le répertoire actuel n'est pas le bon répertoire, peut-être que les sources de GTK
# ont été modifiées et le correctif ne fonctionne plus, etc.

# Construisez le paquet (vous devrez peut-être être patient, cela peut prendre ou non
# un certain temps).
dpkg-buildpackage -uc -us --source-option=--auto-commit

# Vous devriez adapter cette ligne pour qu'elle installe le bon paquet. Le
# paquet que nous voulons installer est le paquet contenant la bibliothèque GTK,
# donc pas le paquet 'bin', 'udeb', 'common', 'dev', ou 'doc'. Pour découvrir
# quel est le paquet exact que vous devriez installer, tentez de trouver le paquet (un
# fichier avec un nom se terminant en '.deb') qui est le plus proche du nom de fichier exemple que j'ai
# utilisé ici (les paquets sont stockés dans '/tmp/gtk', et vous pouvez lister les
# paquets en utilisant la commande 'ls /tmp/gtk/*.deb' (sans les guillemets)).
sudo dpkg -i ../libgtk2.0-0_2.20.1-2_i386.deb

# Et enfin, pour vous assurer que seule la bibliothèque patchée est utilisée, vous devriez
# soit vous déconnecter et vous reconnecter, soit redémarrer votre ordinateur.
# Et ensuite, la fonctionnalité de collage avec le bouton du milieu de la souris devrait être désactivée.
# Pour tester si c'est le cas, essayez de sélectionner du texte dans l'Éditeur de texte GNOME, ou
# dans un Terminal GNOME, puis appuyez sur le bouton du milieu de la souris lorsque le curseur
# survole un endroit où vous pouvez normalement saisir du texte. Si en effet aucun texte
# n'apparaît, alors il semble que le correctif a fonctionné.
# Si toutefois, le correctif n'a pas fonctionné, essayez de relire ce document, pour voir si
# vous avez commis une erreur. Et si c'est le cas, vous voudrez peut-être recommencer depuis le début
# (cela devrait être sans risque d'échec), ou continuer avec le guide à partir du point où
# vous avez fait une erreur.

Ou, plus directement, voici le correctif pour désactiver la fonctionnalité de collage avec le bouton du milieu de la souris dans GTK:

diff -ur gtk+2.0-2.20.1/gtk/gtkselection.c gtk+2.0-2.20.1-patched/gtk/gtkselection.c
--- gtk+2.0-2.20.1/gtk/gtkselection.c   2010-05-01 22:14:29.000000000 -0500
+++ gtk+2.0-2.20.1-patched/gtk/gtkselection.c   2011-09-17 10:45:37.000000000 -0500
@@ -1065,6 +1065,24 @@
   display = gtk_widget_get_display (widget);
   owner_window = gdk_selection_owner_get_for_display (display, selection);

+  if (selection == gdk_atom_intern("PRIMARY", TRUE)) {
+      GtkSelectionData selection_data;
+
+      selection_data.selection = selection;
+      selection_data.target = target;
+      selection_data.type = gdk_atom_intern("STRING", TRUE);
+      selection_data.format = 8;
+      selection_data.data = (unsigned char *)"";
+      selection_data.length = 0;
+      selection_data.display = display;
+
+      gtk_selection_retrieval_report(info, selection_data.type,
+              selection_data.format, selection_data.data,
+              selection_data.length, time_);
+
+      return TRUE;
+  }
+ 
   if (owner_window != NULL)
     {
       GtkWidget *owner_widget;

9voto

Kvothe Points 377

La seule réponse qui a fonctionné pour moi a été donnée sur https://unix.stackexchange.com/a/277488/288916 Radivarig (Tous les crédits lui reviennent). Notez que j'ai dû apporter un changement pour que cela fonctionne :

Installer xbindkeys :

sudo apt-get install xbindkeys xsel xdotool

Créez un fichier de configuration pour xbindkeys ~/.xbindkeysrc avec le texte :

"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
b:2

Chargez le fichier de configuration en utilisant

xbindkeys -p

Ajoutez cette ligne à ~./bashrc pour que xbindkeys se charge toujours au démarrage.

C'est ce qui fonctionne pour moi mais ce que Radivarig suggère est d'utiliser à la place la ligne

"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
    b:2 + Release

Cette dernière n'a pas fonctionné pour moi mais si l'une des versions ne fonctionne pas, je suggère d'essayer l'autre.

Après avoir passé beaucoup de temps à chercher, c'est la seule solution que j'ai trouvée qui fonctionne pour désactiver le bouton de collage de souris universellement sans avoir à désactiver complètement le bouton de la souris centrale.


Notez que pour les réponses existantes et bien notées, soit elles ne répondent pas à la question, vous disant plutôt comment désactiver complètement le bouton de la souris centrale, soit elles donnent une solution qui ne fonctionne que dans quelques programmes (solution de bricolage uniquement dans gedit et le terminal gnome et quelques autres), soit elles disent simplement que c'est impossible.


La réponse de spawn est de la même veine et pourrait également fonctionner, je ne l'ai pas vue avant de trouver cette solution.

5voto

spawn Points 81

Je suggère d'utiliser l'un de ceux-ci, qui fonctionnent généralement bien pour moi :

en utilisant xbindkeys : chaque fois que le bouton du milieu est pressé, efface le presse-papiers principal. Au moins sur mon système, il est effacé, avant que le collage ne se produise. Détails : créer xbindkeys-config :

xbindkeys --defaults > $HOME/.xbindkeysrc

Collez le nouveau raccourci suivant :

"xclip -i /dev/null"    
    b:2``

Rechargez xbindkeys (par exemple killall xbindkeys;xbindkeys). Terminé.

en utilisant xdotool : Effacez le presse-papiers lorsque vous changez de fenêtre (cela devrait fonctionner avec la plupart des gestionnaires de fenêtres). Détails : Exécutez la commande suivante :

xdotool search --onlyvisible . behave %@ focus exec xclip -i /dev/null

Remarque : avec cette commande, vous pouvez toujours utiliser le presse-papiers principal dans la même fenêtre, ou appuyer sur le bouton du milieu sur une autre fenêtre AVANT de la mettre au premier plan (si vous n'avez pas activé "focus follows mouse", ou quelque chose du genre).

5voto

Cestarian Points 211

Voici la solution la plus simple que j'ai trouvée pour garder la fonctionnalité du clic du milieu sans coller les choses.

Commencez par installer sxhkd et xsel.

Ensuite configurez ./.config/.sxhkd/sxhkdrc comme ceci

~button2
    echo -n | xsel -n -i
~control + c
    echo -n | xsel -n -i
~control + x
    echo -n | xsel -n -i

Et c'est à peu près tout.

Maintenant démarrez sxhkd (ou configurez-le pour se lancer au démarrage). Désormais, la souris du milieu ne collera plus rien mais fonctionnera normalement. (Tant que vous n'utilisez que ctrl+c et ctrl+x pour copier des choses, si vous copiez des choses avec la souris, cela peut coller une fois avant de revenir à la normale.)

4voto

Ilario Gelmetti Points 109

Pour les applications Gnome, vous pouvez utiliser gnome-tweaks (nouveau nom du package gnome-tweak-tool) sous l'onglet "Clavier & Souris" où se trouve l'option "Coller avec le clic du milieu" ou en modifiant directement l'option Gnome org.gnome.desktop.interface/gtk-enable-primary-paste.

Pour les applications KDE, il semble qu'il existe une solution équivalente.

Pour l'ensemble de X (y compris les applications non Gnome), vous pouvez installer XMousePasteBlock qui devra ensuite être en cours d'exécution (par l'utilisateur suffit, aucun accès root requis) pour fonctionner. Cela désactive complètement le collage avec le clic du milieu sans désactiver les autres fonctions du clic du milieu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X