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;