Logitech MX Revolution sur Ubuntu Edgy
27 nov. 2006
Par Bibinsa - Linux - Lien permanent
J'ai décidé de changer de souris (ma MX700 commençait à s'user de tous les côtés).
Mon choix s'est porté sur la Logitech MX Revolution (histoire de rester dans la même série mais de monter un peu en gamme) qui a quelques particularités assez intéressantes.
Naïvement, je me suis dit que la configuration de cette souris sous Linux (Ubuntu Edgy) serait relativement similaire à la MX700... Et bien non, d'où ce billet !
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.
Commentaires
Totalement d'accord !!
ChlipouniniJuste un petit commentaire: la prochaine fois n'hésite pas à me demander ma souris plutôt que d'y passer 3 jours; tu la branches sur le port USB et elle marche !! Magique !
Une petite typo, dans la ligne à ajouter à /etc/udev/rules.d/19-local.rules : tu as oublié le 'c' à bInterfaceNumber
GruntGruntEn effet, c'est corrigé. Merci bien.
BibinsaBonjour,
droidepourrait tu m'expliquer comment tu as mis les nouvelles foncions plus précisément car j'ai suivit ton tuto mais rien n'a changer, toujours pas plus de fonctions par les boutons de bases.
Merci.
Droide > et bien normalement, tout est expliqué sur cette page :
Bibinsa- configuration du /dev pour avoir la souris
- configuration de Xorg (bien vérifier que la souris est sur event2 comme chez moi sinon changer ce paramètre)
- configuration de Xmodmap
Et le tour est joué, on peut utiliser la souris avec XGL pour faire tourner le cube ou activer la fonction exposé
Très bonnes explications.
SwiSelon vous est-ce que cette méthode est reproduisible sur Debian-Sarge?
Le problème c'est que je n'ai pas accès root sur la station et je devrai le faire faire par un tech.
Présentement ma MX est complètement déréglée! je n'ai qu'un déplacement vertical et le déplacement horizontal semble être décodé comme un défillement de roulette... Les boutons de base sont correct.
Merci!
Merci pour ce tutorial !
16aRY'a des choses ou j'ai pas tout compris, mais ca fonctionne !
Enfin... j'ai du commenter la ligne Device dans mon xorg.conf... Il y'en a plus une seule des deux maintenant ... Sinon X démarrait sans erreur, mais impossible de bouger le pointeur, et xev ne renvoyait rien (meme si un bon vieux : sudo cat /dev/input/mice , changeait bien de valeur quand je bougeais la souris)
Bon ben finalement, ma souris n'est plus détectée...
16aRJ'ai un preInit failed dans mon log Xorg, ou alors X fonctionne, mais impossible de bouger le curseur ...
Pourtant les devices sont créé dans /dev/input/
j'ai : mice, mouse0, event0, event2, event3, MXRevolution
J'ai essayé avec chacun des devices, et pas 1 n'a marché. J'ai aussi essayé sans Device (vu que la premiere que je l'avais fait, ca fonctionnait comme ca), et pas de résultat...
:'(
Bonjour 16aR.
BibinsaSais-tu sur quel device ta souris pointe ? (dans /dev)
Si tu n'es pas sur, essaye de faire un cat /dev/.. sur chaque (event, mice, input, ..) pour tenter de la trouver.
Normalement avec udev, tu devrais voir quel device est créé.
Swi > oui je pense qu'il n'y a aucune raison pour que cela ne fonctionne pas sur debian sarge... à moins que le serveur X soit trop vieux... En tout cas, côté configuration, c'est la même chose
BibinsaBonjour,
WillyJe suis presque content de ce tuto
Presque parce que j'arrive à faire fonctionner la souris correctement avec le bon n° d'event. Le seul problème, c'est que ce n° n'est pas fixe : il change à chaque redémarrage de la machine.
Du coup, j'ai créé le /dev/input/MXRevvolution et lorsque je fais un cat dessus : ça fonctionne. Par contre si je choisis ce device dans la configuration de X, ça plante (comme c'est explicitement dit dans le tuto d'aillleurs...)
Du coup, les deux solutions qui s'offrent à moi sont:
- utiliser /dev/input/mice, mais dans ce cas je ne peux pas configurer les boutons supplémentaires
- modifier le fichier conf de X à chaque redémarrage de la machine pour être sur le bon event (c'est très très lourd)
Auriez-vous une solution à ce problème?
Bonjour !
BibinsaMalheureusement je n'ai pas de solution à ce problème.
Il faut peut-être d'ailleurs le remonter au niveau des devs d'X.org car ça me parait assez étrange.
Par contre, avoir le device qui change au boot ce n'est pas cool.
Est-ce que la souris est seule sur le bus USB ou non ? (moi par exemple, elle est seule sur les ports intégrés à la carte mère, les autres périphériques USB sont sur les extensions)
Il faut peut-être investiguer de ce côté.
Bonjour,
eLR!CAprès une lecture rapide du man, il s'avère que evdev n'accepte que des devices en input/eventX.
Pour éviter les désagréments dus aux affectations automatiques d'events, il suffit de créer une device "event9" bidon avec udev (on nomme la device "event9" à la place de "MXRevolution" dans la règle créée pour udev)
On corrige ensuite le mapping côté déclaration de device dans xorg.conf en le faisant pointer sur "/dev/input/event9"
C'est pas super propre, mais en attendant, ça marche ...
Bonjour,
SudiskJ'ai trouvé plus simple sur ce site, planet.gentoo.org/develop...
Section "InputDevice"
Identifier "Mx Rev"
Driver "evdev"
Option "Protocol" "Auto"
Option "Name" "Logitech USB Receiver"
Option "Phys" "usb-*/input0
EndSection
En utilisant le champs Phys au lieu de Event, on n'a plus besoin de se fatiguer avec udev
Et surtout ne pas oublier de retirer dans la section "ServerLayout" la référence à la souris de base...
Merci pour ces conseils et les outils associés.
Re-Bonjour !
WillyJe n'avais pas eu le temps de me repencher sur la question jusque là et je dois avouer que j'ai été agréablement surpris de voir ces réponses. Pour info, j'ai essayé les deux techniques, elles fonctionnent bien toutes les deux. J'avoue avoir un petite préférence pour la seconde qui est plus propre.
Quoiqu'il en soit, un grand merci à Bibinsa, eLR!C et Sudisk! C'est un vrai plaisir à utiliser maintenant
Merci tout le monde pour ces infos, je vais rapidement modifier cet article afin que chacun puisse configurer proprement la MX1000.
BibinsaCa fonctionne impec avec le tip de sudisk (Phys au lieu de device)
16aRMerci
besoin d aide les boutons ne fonctionne pas pas de reaction et en plus (et même plus possibilité de déplacer le cub 3d).
charlotte51et malgré les divers info sur le forum.
mon fichier xorg.conf :
Section "Files"
EndSection
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "fr"
Option "XkbVariant" "oss"
Option "XkbOptions" "lv3:ralt_switch"
EndSection
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "true"
EndSection
#########################
## Souris MX Revolution #
#########################
#Section "InputDevice"
# Identifier "Mx Revolution"
# Driver "evdev"
# Option "Protocol" "Auto"
# Option "Name" "Logitech USB Receiver"
# Option "Phys" "usb-*/input0
# Option "WHEELRelativeAxisButtons" "4 5"
# Option "HWHEELRelativeAxisButtons" "6 7"
# Option "SendCoreEvents" "true"
# Option "Emulate3Buttons" "false"
# Option "CorePointer"
# Option "Buttons" "20"
#EndSection
Section "InputDevice"
Driver "wacom"
Identifier "stylus"
Option "Device" "/dev/input/wacom"
Option "Type" "stylus"
Option "ForceDevice" "ISDV4"# Tablet PC ONLY
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "eraser"
Option "Device" "/dev/input/wacom"
Option "Type" "eraser"
Option "ForceDevice" "ISDV4"# Tablet PC ONLY
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "cursor"
Option "Device" "/dev/input/wacom"
Option "Type" "cursor"
Option "ForceDevice" "ISDV4"# Tablet PC ONLY
EndSection
Section "Device"
Identifier "Carte vidéo générique"
Boardname "nv"
Busid "PCI:1:0:0"
Driver "nvidia"
Screen 0
EndSection
Section "Monitor"
Identifier "Écran générique"
Vendorname "Iiyama"
Modelname "Iiyama HM903DT, VisionMaster Pro 454"
Horizsync 30-132
Vertrefresh 45-200
modeline "640x480@60" 25.2 640 656 752 800 480 490 492 525 -vsync -hsync
modeline "640x480@72" 31.5 640 664 704 832 480 489 491 520 -vsync -hsync
modeline "640x480@75" 31.5 640 656 720 840 480 481 484 500 -vsync -hsync
modeline "640x480@85" 36.0 640 696 752 832 480 481 484 509 -vsync -hsync
modeline "800x600@56" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync
modeline "800x600@72" 50.0 800 856 976 1040 600 637 643 666 +hsync +vsync
modeline "800x600@75" 49.5 800 816 896 1056 600 601 604 625 +hsync +vsync
modeline "800x600@85" 56.3 800 832 896 1048 600 601 604 631 +hsync +vsync
modeline "800x600@60" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync
modeline "832x624@75" 57.284 832 864 928 1152 624 625 628 667 -vsync -hsync
modeline "1024x768@85" 94.5 1024 1072 1168 1376 768 769 772 808 +hsync +vsync
modeline "1024x768@75" 78.8 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
modeline "1024x768@70" 75.0 1024 1048 1184 1328 768 771 777 806 -vsync -hsync
modeline "1024x768@60" 65.0 1024 1048 1184 1344 768 771 777 806 -vsync -hsync
modeline "1024x768@43" 44.9 1024 1032 1208 1264 768 768 776 817 +hsync interlace +vsync
modeline "1152x864@75" 108.0 1152 1216 1344 1600 864 865 868 900 +hsync +vsync
modeline "1280x1024@75" 135.0 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
modeline "1280x960@60" 102.1 1280 1360 1496 1712 960 961 964 994 -hsync +vsync
modeline "1280x960@85" 148.5 1280 1344 1504 1728 960 961 964 1011 +hsync +vsync
modeline "1280x1024@85" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +hsync +vsync
modeline "1280x1024@60" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
modeline "1280x960@75" 129.86 1280 1368 1504 1728 960 961 964 1002 -hsync +vsync
modeline "1400x1050@60" 122.61 1400 1488 1640 1880 1050 1051 1054 1087 -hsync +vsync
modeline "1400x1050@75" 155.85 1400 1496 1648 1896 1050 1051 1054 1096 -hsync +vsync
modeline "1600x1200@65" 175.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
modeline "1600x1200@60" 162.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
modeline "1600x1200@75" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
modeline "1600x1200@70" 189.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
modeline "1600x1200@85" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
modeline "1792x1344@75" 261.0 1792 1888 2104 2456 1344 1345 1348 1417 -hsync +vsync
modeline "1792x1344@60" 204.8 1792 1920 2120 2448 1344 1345 1348 1394 -hsync +vsync
modeline "1856x1392@60" 218.3 1856 1952 2176 2528 1392 1393 1396 1439 -hsync +vsync
modeline "1856x1392@75" 288.0 1856 1984 2208 2560 1392 1393 1396 1500 -hsync +vsync
modeline "1920x1440@85" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync
modeline "1920x1440@60" 234.0 1920 2048 2256 2600 1440 1441 1444 1500 -hsync +vsync
modeline "1920x1440@75" 297.0 1920 2064 2288 2640 1440 1441 1444 1500 -hsync +vsync
modeline "2048x1536@60" 266.95 2048 2200 2424 2800 1536 1537 1540 1589 -hsync +vsync
modeline "2048x1536@75" 340.48 2048 2216 2440 2832 1536 1537 1540 1603 -hsync +vsync
Gamma 1.0
EndSection
Section "Screen"
Identifier "Default Screen"
Device "Carte vidéo générique"
Monitor "Écran générique"
Defaultdepth 24
SubSection "Display"
Depth 24
Virtual 2048 1536
Modes "1280x960@75" "1280x1024@85" "1400x1050@60" "1280x960@85" "1400x1050@75" "1280x960@60" "1600x1200@65" "1280x1024@75" "1600x1200@60" "1152x864@75" "1600x1200@75" "1024x768@43" "1600x1200@70" "1024x768@60" "1600x1200@85" "1024x768@70" "1792x1344@75" "1024x768@75" "1792x1344@60" "1024x768@85" "1856x1392@60" "832x624@75" "1856x1392@75" "800x600@60" "1920x1440@85" "800x600@85" "1920x1440@60" "800x600@75" "1920x1440@75" "800x600@72" "2048x1536@60" "800x600@56" "2048x1536@75" "640x480@85" "640x480@75" "640x480@72" "640x480@60"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Default Layout"
screen 0 "Default Screen" 0 0
Inputdevice "Generic Keyboard"
# InputDevice "MX Revolution" "CorePointer"
Inputdevice "Configured Mouse"
# Uncomment if you have a wacom tablet
# InputDevice "stylus" "SendCoreEvents"
# InputDevice "cursor" "SendCoreEvents"
# InputDevice "eraser" "SendCoreEvents"
EndSection
Section "Module"
Load "glx"
Load "v4l"
EndSection
Section "device" #
Identifier "device1"
Boardname "nv"
Busid "PCI:1:0:0"
Driver "nvidia"
Screen 1
EndSection
Section "screen" #
Identifier "screen1"
Device "device1"
Defaultdepth 24
Monitor "monitor1"
SubSection "Display"
Depth 24
Modes "640x480@60"
EndSubSection
EndSection
Section "monitor" #
Identifier "monitor1"
Vendorname "Plug 'n' Play"
Modelname "Plug 'n' Play"
modeline "640x480@60" 25.2 640 656 752 800 480 490 492 525 -vsync -hsync
Gamma 1.0
EndSection
Section "ServerFlags"
EndSection
merci a tous pour l aide, charlotte. big_smile
Testé sous Ubuntu Gutsy et la MX Revolution tout juste achetée :
MithrillAvec 1 et 3 combinés nous obtenons 2. C'est à dire clic gauche et droit fait un clic milieu, et celà n'est pas désagréable ;]
Hello,
OmnisilverDeux petites questions : Est-ce que la procédure reste la même sous Hardy ? Quel est l'avantage d'éditer le xorg par rapport à l'utilisation de btnx ?
Cordialement,