2011-07-10 23:32

Linux : configurer la souris pour un gaucher

mr_bump

C'est marrant comme chaque action quotidienne devient compliquée avec le bras droit dans le plâtre. Tout devient complexe : valider un ticket SNCF/RATP (on valide sa carte du mauvais côté), utiliser des ciseaux (on ne voit pas ce qu'on coupe), se servir d'un ordinateur (la souris devient inutilisable), ouvrir son canif (prévu pour s'ouvrir d'une seule main, mais de la droite)...
L'avantage, pour la souris, c'est qu'on peut modifier facilement sa configuration et l'adapter à ses besoins.

La manière la plus simple de le faire et d'utiliser xmodmap. Mais cette méthode modifie le mapping de manière identique pour toutes les souris connectées.
À l'inverse, xinput permet de configurer indépendamment chaque souris. Il permet par exemple de modifier le mapping d'une souris USB sans toucher à celui du touchpad. C'est cet outil que je vais utiliser.


Configurer la souris


Il faut d'abord lister les différents périphériques connectés :

~$ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                   	id=10	[slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                   	id=11	[slave  pointer  (2)]
⎜   ↳ ImPS/2 Generic Wheel Mouse              	id=14	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
↳ Power Button                            	id=6	[slave  keyboard (3)]
↳ Video Bus                               	id=7	[slave  keyboard (3)]
↳ Power Button                            	id=8	[slave  keyboard (3)]
↳ Sleep Button                            	id=9	[slave  keyboard (3)]
↳ HP Webcam-50                            	id=12	[slave  keyboard (3)]
↳ AT Translated Set 2 keyboard            	id=13	[slave  keyboard (3)]
↳ HP WMI hotkeys                          	id=15	[slave  keyboard (3)]

On voit que deux périphériques correspondent à ma souris et portent le même nom. L'option --long permet d'avoir une description plus détaillée.
~$ xinput list --long
[...]
⎜   ↳ Logitech USB Receiver                   	id=10	[slave  pointer  (2)]
Reporting 3 classes:
Class originated from: 10
Buttons supported: 24
Button labels: Button Left Button Middle Button Right Button Wheel Up Button Wheel Down Button Horiz Wheel Left Button Horiz Wheel Right Button Side Button Extra Button Forward Button Back Button Task Button Unknown Button Unknown Button Unknown Button Unknown Button Unknown Button Unknown Button Unknown Button Unknown Button Unknown Button Unknown Button Unknown Button Unknown
Button state:
Class originated from: 10
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
⎜   ↳ Logitech USB Receiver                   	id=11	[slave  pointer  (2)]
Reporting 3 classes:
Class originated from: 11
Buttons supported: 7
Button labels: Button 0 Button Unknown Button Unknown Button Wheel Up Button Wheel Down Button Horiz Wheel Left Button Horiz Wheel Right
Button state:
Class originated from: 11
Keycodes supported: 248
Class originated from: 11
Detail for Valuator 0:
Label: None
Range: 1.000000 - 652.000000
Resolution: 10000 units/m
Mode: absolute
Current value: 683.000000
[...]

C'est donc la première qui possède les boutons à inverser (Button Left, Button Middle et Button Right). On note qu'elle est identifiée par l'id 10. On va tester ça tout de suite. Pas trop d'hésitations à avoir : si on s'est trompé, un redémarrage de X.org rétablira les paramètres d'origine.

 ~$ xinput set-button-map 10 3 2 1

10 correspond ici à l'ID de la souris. Les trois chiffres qui suivent correspondent aux différentes actions affectées, dans l'ordre des boutons : 1 correspond au clic gauche pour un droitier, 2 au clic du milieu, et 3 au clic droit pour un droitier. On inverse ici les actions 1 et 3.

Conserver la configuration au redémarrage


La souris devrait maintenant fonctionner comme attendu, mais les paramètres d'origine seront restaurés au prochain redémarrage de X.org ou de l'ordinateur. Il faudra donc lancer cette commande à chaque lancement de X.org.

Pour les utilisateurs d'OpenBox, il suffit d'éditer ~/.config/openbox/autostart.sh et d'ajouter la ligne :

xinput set-button-map <id> 3 2 1 &
Où <id> correspond à l'identifiant de la souris, 10 chez moi.

Pour les utilisateurs de gnome, il faut créer un script de démarrage. Ouvrir un éditeur de texte et coller le texte suivant :

#!/bin/sh
xinput set-button-map <id> 3 2 1 &
exit 0
Où <id> correspond à l'identifiant de la souris, 10 chez moi.

L'enregistrer, par exemple sous dans ~/.lhmouse.sh, et le rendre exécutable :

chmod +x ~/.lhmouse.sh

Il faudra ensuite ajouter ce script aux programmes lancés au démarrage par gnome (Système → Préférences → Applications au démarrage).


Posted by St3rk | Permanent link | File under: linux