Ma vie rêvée

Aller au contenu | Aller au menu | Aller à la recherche

Une souris MX1000 sous GNU/Linux avec xorg 6.9 (ou comment utiliser tout les boutons)

Attention, une mise à jour simplificatrice est disponible dans cet article.

Pour ceux qui suivent un peu ce carnet, vous vous souvenez qu'il y a presque un an, j'ai reçu des mains de ma tendre et chère une magnifique souris Logitech MX1000. A l'époque, j'en avais un peu bavé pour que Xorg reconnaisse tout les boutons. Il m'avais fallu patcher manuellement xorg 6.8 avant de le recompiler et le résultat, si il était fonctionnel, laissait quand même un peu à désirer (en clair, ça me pourrissait mes logs de messages d'erreurs).

Autres temps, autres distributions, je viens d'upgrader ma Mandrake 10.1 vers une mandriva 2006 et celle-ci fournis en standard xorg 6.9 (version de développement puis version finale via les mises à jour).

Xorg 6.9 est vraiment une évolution majeure de xorg et le driver pour les MX1000 a été intégré. Comme ce n'est pas tout à fait le même que le précédent, il m'a fallu reconfigurer la souris pour réobtenir l'usage de tous les boutons. Cet article est donc le fruit de tout cela.

Retrouver la souris

Votre souris branchée en USB (pas testé en PS/2) se voit attribuer un nom de périphérique par udev du type /dev/input/event1. Pour le trouver, branchez la souris et lire le fichier /proc/bus/input/device :

[jules@tue-amour ~]$ cat /proc/bus/input/devices 
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
H: Handlers=kbd event0 
B: EV=120013 
B: KEY=402000000 2b803878f840d001 feffffdfffefffff ffffffffffffffff 
B: MSC=10 
B: LED=7 

I: Bus=0003 Vendor=046d Product=c50e Version=2500
N: Name="Logitech USB Receiver"
P: Phys=usb-0000:00:02.0-2/input0
H: Handlers=mouse0 event1 ts0 
B: EV=7 
B: KEY=ffff0000 0 0 0 0 
B: REL=143 

Ici, on voit dans le deuxième bloc que ma souris est reconnue (Logitech USB Receiver) et qu'elle porte le nom event1. A ce stade, 2 solutions s'offrent à vous, soit on garde event1 mais cette valeur peut changer si vous bougez la souris de port ou si vous branchez autre chose sur un port usb (X ne démarrera plus, notons que ça ne bougera pas forcément, ça dépend des cas), soit on décide de lui donner un nom spécifique.

Dans ce cas, il faut ajouter une règle à udev pour donner un nom à notre souris. J'ai donc créé un fichier de conf pour udev que j'ai placé dans /etc/udev/rules.d (l'emplacement varie selon les distributions), précédé d'un nombre qui le fait s'éxécuter en premier :

[jules@tue-amour ~]$ cat /etc/udev/rules.d/10-local.rules 
KERNEL=="event*", SYSFS{../manufacturer}=="Logitech", SYSFS{../product}=="USB Receiver", NAME="input/mx1000", MODE="664", GROUP="root"

On redémarre udev ou la machine et voilà, notre souris s'appelle maintenant /dev/input/mx1000 ; c'est cool non ? :)

Configurer Xorg

La configuration de xorg qui était une véritable horreur avec l'ancienne version du driver devient maintenant d'une simplicité enfantine !

On définit la souris avec le bloc suivant dans /etc/X11/xorg.conf (le device change en fonction de ce que vous avez trouvé au premier chapitre bien sur ;) )

Section "InputDevice"
    Identifier "MX1000"
    Driver "evdev"
    Option "Device" "/dev/input/mx1000"
EndSection

Et on dit à xorg d'utiliser cette souris en modifiant le dernier bloc (en bas du fichier de conf) de la manière suivante (bien sur, seule la ligne MX1000 est à modifier/ajouter, les autres doivent rester les mêmes) :

Section "ServerLayout"
    Identifier "layout1"
    InputDevice "Keyboard1" "CoreKeyboard"
    InputDevice "MX1000" "CorePointer"
    Screen "screen1"
EndSection

On enregistre, on redémarre X et normalement, notre nouvelle souris fonctionne !

Les boutons supplémentaires

Normalement, avec la configuration par défaut, les boutons sont correctement attribués d'emblée (i.e. le bouton droit est un click droit, la roulette monte et descend, etc). Si ce n'est pas le cas, vérifiez que vous n'avez pas de réattribution automatique des boutons qui se lance avec X. Par exemple, sur mandriva, dans /etc/X11/xinit.d, il y a un fichier mouse_correct qui réattribue les boutons. Cette réattribution entre en conflit avec notre nouvelle configuration, donc vous pouvez la virer.

Chez moi, sans plus de configuration, les boutons qui marchaient était les boutons gauche, droites, molette, plus molette haut et molette bas. Chez d'autres, les boutons précédents et suivants fonctionnaient aussi directement.

Pour faire fonctionner les autres boutons, j'utilise xbindkeys associé à xvkbd. xbindkeys est lancé en même temps que mon gestionnaire de fenêtre/bureau et il permet de déclencher un événement lorsque qu'un des boutons est pressé. Dans mon cas, je lui fait éxécuter une combinaison de touche grâce à xvkbd. Mon fichier de configuration de xbindkeys ( .xbindkeysrc ) est le suivant :

# recharger la page en cours
    "xvkbd -xsendevent -text "\Cr""   
     m:0x10 + b:6
     
    # changer d'onglet sous mozilla
    "xvkbd -xsendevent -text "\C\[Tab]""   
     m:0x10 + b:7
     
    # bouton suivant
    "xvkbd -xsendevent -text "\[Alt_L]\[Right]""  
    m:0x10 + b:9
     
    # bouton précédent
    "xvkbd -xsendevent -text "\[Alt_L]\[Left]""  
    m:0x10 + b:8
     
    # nouvel onglet sous mozilla
    "xvkbd -xsendevent -text "\Ct""    
    m:0x10 + b:10 

Je pense qu'il parle de lui même ;). Voilà, maintenant, vous avez une souris qui marche bien avec tous ses boutons.

PS : pour ma part, je préfère utiliser la bouton entre précédent et suivant à la place du bouton sur la molette. J'ai donc inversé les 2 boutons à l'aide de xmodmap (fichier que j'ai placé dans /etc/X11/xinit.d) :

xmodmap -e "pointer = 1 3 10 4 5 6 7 8 9 2 11 12"

Sources et liens

La page de Floam qui m'a permis de configurer ma souris facilement et a été la source de cet article

Le sujet correspondant sur le forum Hardware.fr

Commentaires

1. Le mercredi 8 février 2006, 20:05 par mirtouf

BUS="usb", SYSFS{idVendor}="xxx", SYSFS{idProduct}="xxx",NAME="input/%k", SYMLINK="input/MX1000", GROUP="yyy", MODE="0664"

devrait aussi fonctionner (après avoir modifier ce qui va bien) ?

2. Le mercredi 8 février 2006, 20:57 par Mjules

Surement, je ne suis pas du tout expert en règle pour udev ;) j'ai repris celle là sur le site de floam en adaptant pour le groupe root.