Petite présentation de la MX Revolution :

Souris de chez Logitech, pas ordinaire... En effet, elle possède une roulette appelée modestement MicroGear Precision Scroll Wheel et qui fonctionne à deux vitesse :

  • le défilement classique cranté.
  • un défilement en roue libre qui permet de faire défiler les pages ultra rapidement.

Le passage d'un mode à l'autre se fait en cliquant sur la molette ou via un logiciel sur le PC.

Autre point notable, la molette de côté, qui n'en est pas une. C'est plutôt une sorte de bouton à trois positions (haut, bas, clic) placé directement sous le pouce. Original !

Configuration de Udev :

Tout d'abord, nous allons profiter de l'excellent udev pour la création du device dans /dev.
On regarde la liste des devices de type input :

I: Bus=0003 Vendor=046d Product=c51a Version=4101
N: Name="Logitech USB Receiver"
P: Phys=usb-0000:00:10.0-1/input0
S: Sysfs=/class/input/input7
H: Handlers=mouse0 event2 ts0 
B: EV=7
B: KEY=ffff0000 0 0 0 0 0 0 0 0
B: REL=143
I: Bus=0003 Vendor=046d Product=c51a Version=4101
N: Name="Logitech USB Receiver"
P: Phys=usb-0000:00:10.0-1/input1
S: Sysfs=/class/input/input8
H: Handlers=kbd event3 
B: EV=f
B: KEY=c0002 400 0 0 1 f80 78000 6639fa d84157ad 8e0000 0 0 0
B: REL=40
B: ABS=1 0

Le système détecte deux devices au branchement de la souris :

  • un pour le bouton "recherche" au dessus de la roulette centrale
  • un pour l'ensemble des boutons de la souris

Pour qu'Xorg utilise le bon event, nous allons créer un device identifiant exactement la souris sous le nom de /dev/input/MXRevolution.
En regardant plus en détails les fichiers et répertoires de /sys/class/input/input7/ et /sys/class/input/input8/, on remarque qu'un paramètre varie entre les deux : le device/bInterfaceNumber (00 pour souris et 01 pour le bouton "recherche").
Nous avons notre discriminant, nous pouvons ajouter la ligne suivante ligne dans un fichier qu'on nommera /etc/udev/rules.d/19-local.rules :

KERNEL=="event[0-9]*", SYSFS{../name}=="Logitech USB Receiver", SYSFS{../device/bInterfaceNumber}=="00", NAME="input/MXRevolution"

On recharge udev :

$ sudo /etc/init.d/udev restart

Configuration de Xorg :

Notre device est bien créé, maintenant place à la configuration du serveur X.
Il faut au préalable, installer le module evdev d'Xorg :

$ sudo apt-get install xserver-xorg-input-evdev

On commence ensuite par créer une nouvelle section de type "InputDevice" :



Version plus propre, plus simple et sans udev (merci Sudisk) :

#########################
## Souris MX Revolution #
#########################

Section "InputDevice"
	Identifier "Mx Revolution"
	Driver "evdev"
	Option "Protocol" "Auto"
	Option "Name" "Logitech USB Receiver"
	Option "Phys" "usb-*/input0
EndSection

Ancienne version :

#########################
## Souris MX Revolution #
#########################

Section "InputDevice"
	Identifier      "MX Revolution"
	Driver		"evdev"
	Option		"Name" "Logitech*"
	Option		"SendCoreEvents" "true"
	Option		"WHEELRelativeAxisButtons" "4 5"
	Option		"HWHEELRelativeAxisButtons" "6 7"
#	Option		"Device" "/dev/input/MXRevolution"
	Option		"Device" "/dev/input/event2"
	Option		"Emulate3Buttons" "false"
	Option		"CorePointer"
	Option		"Buttons" "20"
EndSection

Ne pas oublier l'option CorePointer car sinon Xorg détectera la MX Revolution mais utilisera une configuration par défaut.
Pour le moment je fais pointer le Device sur /dev/input/event2 (voir la section Udev) car le /dev/input/MXRevolution fait planter Xorg au démarrage.

Dans la section ServerLayout, il faut ajouter la souris comme suit :

Section "ServerLayout"
	...
	InputDevice	"MX Revolution" "CorePointer"
EndSection

Normalement, tout est OK, il faut redémarrer le serveur X avec gdm :

$ sudo /etc/init.d/gdm restart

Derniers petits réglages :

A ce stade, le serveur X doit se lancer correctement et tous les boutons doivent être reconnus (vérifier avec xev).
Nous allons terminer par un petit tunning des boutons.
La détection des boutons se fait comme ci-dessous normalement :

Petits problèmes :

  • clic milieu (coller la sélection) = bouton 2 qui n'est pas définit.
  • back et forward = boutons 6 et 7 qui sont mappés sur la roulette centrale.

Solutions :

  • clic milieu : bouton 17 (clic roulette côté)
  • back et forward : boutons 15 et 13 (roulette côté)

Il faut donc corriger tout ça avec xmodmap comme suit, ajouter dans le fichier ~/.Xmodmap :

pointer = 1 17 3 4 5 15 13 8 9 10 11 12 7 14 6 16 2 18 19 20

Gnome se chargera de le lancer au prochain login, sinon il faut taper la commande suivante

xmodmap .Xmodmap

C'est terminé, la MX Revolution est fonctionnelle !
J'ai trouvé quelques utilitaires assez sympas sur le net qui permettent de faire des choses rigolotes avec cette souris.
J'en ferai peut être un billet plus tard.