mardi 5 juin 2007
MX Revolution
Par Michael, mardi 5 juin 2007 à 20:02 :: General
Voila quelques temps que je voulais changer ma souris Wireless IntelliMouse Explorer de Micromou et après quelques comparatifs et quelques prises de têtes avec un certain site de vente dont le nom commence par "cdis" et finit par "count" (oui je sais je suis une tombe, je lâche rien comme info) j'ai fini par recevoir une MX Revolution de Logitech.
Je vais pas faire le détails des fonctions et boutons de la souris, il y en a un peu trop. Au lieu de ça je préfère parler de sa configuration sous Linux des fois que ça serve à quelqu'un. Je n'ai pas inventé grand chose de la configuration, c'est essentiellement de la repompe remise à ma sauce.
De base la souris est utilisable, mais seule la moitié des boutons sont reconnus et le clic du milieu ne déclenche aucun événement et modifie le comportement de molette (défilement libre ou "crantée"). Perso, je peux pas vivre sans clic du milieu, copier/coller, onglets dans firefox, c'est quand on l'a plus qu'on se rend compte à quel point on l'utilise.
Configuration du serveur X
Pour pouvoir utiliser tous les boutons, il suffit de créer une nouvelle section InputDevice en utilisant le driver evdev, dispo dans le paquet xserver-xorg-input-evdev dans ma distrib :
Section "InputDevice" Identifier "MX Revolution" Driver "evdev" Option "Protocol" "Auto" Option "Name" "Logitech USB Receiver" Option "Phys" "usb-*/input0 EndSection
Il faut ensuite ajouter ce périphérique à la section ServerLayout :
Section "ServerLayout" ... InputDevice "Configured Mouse" "CorePointer" InputDevice "MX Revolution" "SendCoreEvents" ... EndSection
Clic central
Pour modifier le comportement de la molette, la seule solution semble être l'application revoco qui permet de choisir le mode de fonctionnement la molette (libre, crantée, changement automatique en fonction de la vitesse de rotation). Elle nécessite le support de hiddev dans votre noyau. Personnellement j'ai configuré ma souris ainsi : revoco auto=20,24
XModMap
Pour modifier l'affectation des boutons de la souris et associer la touche "XF86Search" j'ai rempli mon .Xmodmap de la manière suivante :
pointer = 1 2 3 4 5 7 6 8 9 10 11 12 13 14 15 16 17 18 19 20 keycode 122 = XF86Search
Que faire de tous ces boutons ?
Bon maintenant tous les boutons et autres molettes sont reconnues, mais on en fait quoi ? Idéalement j'aimerai pouvoir configurer un comportement pour chaque application : changer de chanson pour amarok, changer d'onglets avec firefox, etc ...
La solution que je suis en train de mettre en oeuvre est d'utiliser xbinkeys pour générer des événements et les envoyer à un démon. Mon fichier .xbinkeys :
# Side-buttons front "echo next > /tmp/mx" m:0x0 + b:9 # Side-buttons back "echo prev > /tmp/mx" m:0x0 + b:8 # Thumb-wheel front "echo front > /tmp/mx" m:0x0 + b:13 # Thumb-wheel push "echo click > /tmp/mx" m:0x0 + b:17 # Thumb-wheel back "echo back > /tmp/mx" m:0x0 + b:1
L'idée qui m'est venue est d'utiliser une fifo (/tmp/mx) dans laquelle des messages sont écrit lorsqu'on utilise les boutons de la souris et de lire son contenu dans un démon. N'ayant pas (encore) trouvé comment identifier l'application au premier plan, j'utilise deux boutons de la souris pour naviguer entre les applications configurées et les autres pour déclencher des événements spécifiques aux applications. Le tout est fonctionnel, mais il reste encore du boulot avant que ce soit distribuable et j'ai peur de ne pas avoir le temps de le terminer.
Si le source actuel vous intéresse, faites le moi savoir et je vous l'enverrai.
Sur ce je vous laisse, je dois me préparer pour le cours de rock avec au programme révision de la choré de fin d'année.