« Hardware-hard autres-sourisLogitechMediaPlay » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
(balises code)
 
Ligne 18 : Ligne 18 :
Téléchargez le module [http://daemon.prozone.org/~david/projects/lmpcm_usb/ "lmpcm_usb" de David Oliveira]. Ensuite, le décompresser, le compiler et l'installer. À la commande ''sudo'', entrez votre mot de pase. Évidemment, changez le nom du fichier au besoin :
Téléchargez le module [http://daemon.prozone.org/~david/projects/lmpcm_usb/ "lmpcm_usb" de David Oliveira]. Ensuite, le décompresser, le compiler et l'installer. À la commande ''sudo'', entrez votre mot de pase. Évidemment, changez le nom du fichier au besoin :


<code multi>
<div class="code">
$ tar zxvf lmpcm_usb-0.5.5.tar.gz
$ tar zxvf lmpcm_usb-0.5.5.tar.gz
$ cd lmpcm_usb-0.5.5
$ cd lmpcm_usb-0.5.5
$ make
$ make
$ sudo make install
$ sudo make install
</code>
</div>


Selon votre distribution, au lieu d'utiliser ''sudo'' vous pouvez aussi changer d'utilisateur pour devenir ''root'' avec la commande ''su'' :  
Selon votre distribution, au lieu d'utiliser ''sudo'' vous pouvez aussi changer d'utilisateur pour devenir ''root'' avec la commande ''su'' :  


<code multi>
<div class="code">
$ su
$ su
Password:
Password:
# make install
# make install
# exit
# exit
</code>
</div>


Dans la version 0.5.5 la commande ''depmod'' est en commentaire dans le fichier Makefile, probablement une erreur du développeur. Vous devez donc la tapper manuellement :
Dans la version 0.5.5 la commande ''depmod'' est en commentaire dans le fichier Makefile, probablement une erreur du développeur. Vous devez donc la tapper manuellement :
<code>$ sudo depmod -A</code>
<div class="code">$ sudo depmod -A</div>


Maintenant, chargez le module pour voir s'il est bien compilé et qu'il se charge sans problème :
Maintenant, chargez le module pour voir s'il est bien compilé et qu'il se charge sans problème :
<code>$ sudo modprobe lmpcm_usb</code>
<div class="code">$ sudo modprobe lmpcm_usb</div>


Pour voir s'il est bien chargé :
Pour voir s'il est bien chargé :
<code multi>
<div class="code">
$ lsmod | grep lmpcm
$ lsmod | grep lmpcm
lmpcm_usb              7680  0
lmpcm_usb              7680  0
usbcore              134912  5 usbhid,lmpcm_usb,ehci_hcd,ohci_hcd
usbcore              134912  5 usbhid,lmpcm_usb,ehci_hcd,ohci_hcd


$ dmesg | grep MediaPlay
$ dmesg | grep MediaPlay
[17179595.036000] /home/alain/src/lmpcm_usb-0.5.5/lmpcm_usb.c: v0.5.5:USB Logitech MediaPlay Cordless Mouse driver
[17179595.036000] /home/alain/src/lmpcm_usb-0.5.5/lmpcm_usb.c: v0.5.5:USB Logitech MediaPlay Cordless Mouse driver
</code>
</div>


== Modifier l'ordre de chargement des modules ==
== Modifier l'ordre de chargement des modules ==
Ligne 55 : Ligne 55 :
Pour que le module lmpcm_usb soit chargé en premier, il faut modifier le fichier '''modules.dep''' pour rendre usbmouse et usbhid dépendant de lmpcm_usb, ce qui oblige lmpcm_usb à être chargé en premier. Ici on utilise l'éditeur graphique ''kate'' ou l'éditeur texte ''emacs''. Utilisez l'éditeur de votre choix. Dans ''kate'', décochez l'option ''Retour à la ligne dynamique'' du menu ''Affichage'' pour plus de facilité. Vous devez modifier le fichier correspondant à la version de votre kernel, ici le 2.6.17-11.
Pour que le module lmpcm_usb soit chargé en premier, il faut modifier le fichier '''modules.dep''' pour rendre usbmouse et usbhid dépendant de lmpcm_usb, ce qui oblige lmpcm_usb à être chargé en premier. Ici on utilise l'éditeur graphique ''kate'' ou l'éditeur texte ''emacs''. Utilisez l'éditeur de votre choix. Dans ''kate'', décochez l'option ''Retour à la ligne dynamique'' du menu ''Affichage'' pour plus de facilité. Vous devez modifier le fichier correspondant à la version de votre kernel, ici le 2.6.17-11.


<code>kdesu kate /lib/modules/2.6.17-11-generic/modules.dep</code>
<div class="code">kdesu kate /lib/modules/2.6.17-11-generic/modules.dep</div>
ou
ou
<code>sudo emacs /lib/modules/2.6.17-11-generic/modules.dep</code>
<div class="code">sudo emacs /lib/modules/2.6.17-11-generic/modules.dep</div>


Repérez la ligne correspondant à lmpcm_usb :
Repérez la ligne correspondant à lmpcm_usb :
<code>/lib/modules/2.6.17-11-generic/misc/lmpcm_usb.ko: /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko</code>
<div class="code">/lib/modules/2.6.17-11-generic/misc/lmpcm_usb.ko: /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko</div>
et ajoutez-la aux modules ''usbhid'' et ''usbmouse'' (entre le ":" et le module usbcore) .
et ajoutez-la aux modules ''usbhid'' et ''usbmouse'' (entre le ":" et le module usbcore) .


Avant :
Avant :
<code multi>
<div class="code">
/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbmouse.ko: /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko
/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbmouse.ko: /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko
/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbhid.ko: /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko
/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbhid.ko: /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko
</code>
</div>


Après :
Après :
<code multi>
<div class="code">
/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbmouse.ko: /lib/modules/2.6.17-11-generic/misc/lmpcm_usb.ko /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko
/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbmouse.ko: /lib/modules/2.6.17-11-generic/misc/lmpcm_usb.ko /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko
/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbhid.ko: /lib/modules/2.6.17-11-generic/misc/lmpcm_usb.ko /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko
/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbhid.ko: /lib/modules/2.6.17-11-generic/misc/lmpcm_usb.ko /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko
</code>
</div>


== Configuration du serveur X ==
== Configuration du serveur X ==
Pour que le serveur X puisse utiliser les boutons multimédia, on doit d'abord changer la configuration de la souris.  
Pour que le serveur X puisse utiliser les boutons multimédia, on doit d'abord changer la configuration de la souris.  
Faites une copie de sauvegarde de votre fichier xorg.conf au cas où ça tournerait mal :
Faites une copie de sauvegarde de votre fichier xorg.conf au cas où ça tournerait mal :
<code multi>
<div class="code">
$ cd /etc/X11
$ cd /etc/X11
$ sudo cp xorg.conf xorg.conf.backup
$ sudo cp xorg.conf xorg.conf.backup
$ kdesu kate xorg.conf
$ kdesu kate xorg.conf
</code>
</div>


Ajoutez les options suivantes :
Ajoutez les options suivantes :


Avant :
Avant :
<code multi>
<div class="code">
Section "InputDevice"
Section "InputDevice"
   Identifier "Configured Mouse"
   Identifier "Configured Mouse"
   Driver "mouse"
   Driver "mouse"
Ligne 96 : Ligne 96 :
   option "ZAxisMapping" "4 5"
   option "ZAxisMapping" "4 5"
   option "Emulate3Buttons" "true"
   option "Emulate3Buttons" "true"
EndSection
EndSection


Section "ServerLayout"
Section "ServerLayout"
...
...
   InputDevice "Configured Mouse"
   InputDevice "Configured Mouse"
...
...
EndSection
EndSection
</code>
</div>


Après :
Après :
<code multi>
<div class="code">
Section "InputDevice"
Section "InputDevice"
   Identifier "LMPCM"
   Identifier "LMPCM"
   Driver "mouse"
   Driver "mouse"
Ligne 117 : Ligne 117 :
   Option "Name" "MediaPlay"
   Option "Name" "MediaPlay"
   Option "Vendor" "Logitech"
   Option "Vendor" "Logitech"
EndSection
EndSection


Section "ServerLayout"
Section "ServerLayout"
...
...
   InputDevice "LMPCM"
   InputDevice "LMPCM"
...
...
EndSection
EndSection
</code>
</div>


== Redémarrer ==
== Redémarrer ==
Ligne 177 : Ligne 177 :


À ce point-ci les boutons devraient être reconnus par le kernel. Pour connaître les ''keycodes'' et pour être certains qu'ils sont bien reconnu on peut exécuter xev et voir quel code est associé à quel bouton en appuyant sur chacun d'eux :
À ce point-ci les boutons devraient être reconnus par le kernel. Pour connaître les ''keycodes'' et pour être certains qu'ils sont bien reconnu on peut exécuter xev et voir quel code est associé à quel bouton en appuyant sur chacun d'eux :
<code multi>
<div class="code">
$ xev
$ xev
...
...
KeyRelease event, serial 31, synthetic NO, window 0x2e00001,
KeyRelease event, serial 31, synthetic NO, window 0x2e00001,
     root 0x75, subw 0x0, time 4143197446, (76,59), root:(79,853),
     root 0x75, subw 0x0, time 4143197446, (76,59), root:(79,853),
     state 0x10, keycode 176 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
     state 0x10, keycode 176 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
Ligne 186 : Ligne 186 :
     XFilterEvent returns: False
     XFilterEvent returns: False


KeyRelease event, serial 31, synthetic NO, window 0x2e00001,
KeyRelease event, serial 31, synthetic NO, window 0x2e00001,
     root 0x75, subw 0x0, time 4143199326, (76,59), root:(79,853),
     root 0x75, subw 0x0, time 4143199326, (76,59), root:(79,853),
     state 0x10, keycode 168 (keysym 0x1008ff32, XF86AudioMedia), same_screen YES,
     state 0x10, keycode 168 (keysym 0x1008ff32, XF86AudioMedia), same_screen YES,
     XLookupString gives 0 bytes:
     XLookupString gives 0 bytes:
     XFilterEvent returns: False
     XFilterEvent returns: False
...
...
</code>
</div>


Pour que le serveur X reconnaisse les nouveaux boutons, il faut exécuter '''xmodmap'''. Pour ne pas avoir à l'exécuter à la main à chaque redémarrage, nous allons faire un petit script.
Pour que le serveur X reconnaisse les nouveaux boutons, il faut exécuter '''xmodmap'''. Pour ne pas avoir à l'exécuter à la main à chaque redémarrage, nous allons faire un petit script.


Fichier '''.Xmodmap''' à placer dans votre répertoire ''home'' : '''~/''' ou '''/home/votre_usager/''' :
Fichier '''.Xmodmap''' à placer dans votre répertoire ''home'' : '''~/''' ou '''/home/votre_usager/''' :
<code multi>
<div class="code">
keycode 234 = XF86Back
keycode 234 = XF86Back
keycode 233 = XF86Forward
keycode 233 = XF86Forward
keycode 174 = XF86AudioLowerVolume
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 176 = XF86AudioRaiseVolume
keycode 162 = XF86AudioPlay
keycode 162 = XF86AudioPlay
keycode 144 = XF86AudioPrev
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
keycode 153 = XF86AudioNext
keycode 168 = XF86AudioMedia
keycode 168 = XF86AudioMedia
pointer = 1 2 3 4 5 8 9 6 7
pointer = 1 2 3 4 5 8 9 6 7
</code>
</div>


Fichier '''mediaplay.sh''' à placer dans le répertoire '''~/.kde/Autostart''' :
Fichier '''mediaplay.sh''' à placer dans le répertoire '''~/.kde/Autostart''' :
<code multi>
<div class="code">
xmodmap ~/.Xmodmap
xmodmap ~/.Xmodmap
</code>
</div>


Rendez le exécutable : <code>chmod +x ~/.kde/Autostart/mediaplay.sh</code>
Rendez le exécutable : <div class="code">chmod +x ~/.kde/Autostart/mediaplay.sh</div>
et exécutez-le : <code>~/.kde/Autostart/mediaplay.sh</code>
et exécutez-le : <div class="code">~/.kde/Autostart/mediaplay.sh</div>
Vous pouvez aussi terminer votre session et vous reconnecter pour vous assurer qu'il est bien exécuté automatiquement.
Vous pouvez aussi terminer votre session et vous reconnecter pour vous assurer qu'il est bien exécuté automatiquement.



Dernière version du 3 mai 2012 à 19:11


Configuration de la souris Logitech MediaPlay

Introduction

Voici comment configurer les boutons multimédia de la souris Logitech MediaPlay. J'ai fait cette installation avec la distribution Kubuntu 6.10 Edy Eft et un kernel 2.6.17.

Ce n'est pas bien long ni bien compliqué, les étapes sont :

  • Installer le module lmpcm_usb
  • Modifier l'ordre de chargement des modules
  • Modifier la configuration du serveur X
  • Redémarrer le PC
  • Configurer les boutons à l'aide d'un script à exécuter au démarrage

Installer le module lmpcm_usb

Ce n'est sûrement pas toutes les souris multimédia qui sont bien reconnue sous Linux, mais heureusement quelqu'un a codé un pilote pour gérer la souris MediaPlay de Logitech. On peux dire merci à David Oliveira pour son travail!

Téléchargez le module "lmpcm_usb" de David Oliveira. Ensuite, le décompresser, le compiler et l'installer. À la commande sudo, entrez votre mot de pase. Évidemment, changez le nom du fichier au besoin :

$ tar zxvf lmpcm_usb-0.5.5.tar.gz
$ cd lmpcm_usb-0.5.5
$ make
$ sudo make install

Selon votre distribution, au lieu d'utiliser sudo vous pouvez aussi changer d'utilisateur pour devenir root avec la commande su :

$ su
Password:
# make install
# exit

Dans la version 0.5.5 la commande depmod est en commentaire dans le fichier Makefile, probablement une erreur du développeur. Vous devez donc la tapper manuellement :

$ sudo depmod -A

Maintenant, chargez le module pour voir s'il est bien compilé et qu'il se charge sans problème :

$ sudo modprobe lmpcm_usb

Pour voir s'il est bien chargé :

$ lsmod | grep lmpcm
lmpcm_usb               7680  0
usbcore               134912  5 usbhid,lmpcm_usb,ehci_hcd,ohci_hcd
$ dmesg | grep MediaPlay
[17179595.036000] /home/alain/src/lmpcm_usb-0.5.5/lmpcm_usb.c: v0.5.5:USB Logitech MediaPlay Cordless Mouse driver

Modifier l'ordre de chargement des modules

Pour que le module lmpcm_usb soit utilisé pour gérer la souris MediaPlay, il faut qu'il soit chargé avant les modules usbmouse et usbhid. Dans la documentation de lmpcm_usb on demande d'enlever les modules usbmouse et usbhid. Le problème est qu'on peut en avoir besoin pour d'autres périphériques, par exemple le clavier Logitech G15 a besoin du module usbhid.

Pour que le module lmpcm_usb soit chargé en premier, il faut modifier le fichier modules.dep pour rendre usbmouse et usbhid dépendant de lmpcm_usb, ce qui oblige lmpcm_usb à être chargé en premier. Ici on utilise l'éditeur graphique kate ou l'éditeur texte emacs. Utilisez l'éditeur de votre choix. Dans kate, décochez l'option Retour à la ligne dynamique du menu Affichage pour plus de facilité. Vous devez modifier le fichier correspondant à la version de votre kernel, ici le 2.6.17-11.

kdesu kate /lib/modules/2.6.17-11-generic/modules.dep

ou

sudo emacs /lib/modules/2.6.17-11-generic/modules.dep

Repérez la ligne correspondant à lmpcm_usb :

/lib/modules/2.6.17-11-generic/misc/lmpcm_usb.ko: /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko

et ajoutez-la aux modules usbhid et usbmouse (entre le ":" et le module usbcore) .

Avant :

/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbmouse.ko: /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko
/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbhid.ko: /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko

Après :

/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbmouse.ko: /lib/modules/2.6.17-11-generic/misc/lmpcm_usb.ko /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko
/lib/modules/2.6.17-11-generic/kernel/drivers/usb/input/usbhid.ko: /lib/modules/2.6.17-11-generic/misc/lmpcm_usb.ko /lib/modules/2.6.17-11-generic/kernel/drivers/usb/core/usbcore.ko

Configuration du serveur X

Pour que le serveur X puisse utiliser les boutons multimédia, on doit d'abord changer la configuration de la souris. Faites une copie de sauvegarde de votre fichier xorg.conf au cas où ça tournerait mal :

$ cd /etc/X11
$ sudo cp xorg.conf xorg.conf.backup
$ kdesu kate xorg.conf

Ajoutez les options suivantes :

Avant :

Section "InputDevice"
 Identifier "Configured Mouse"
 Driver "mouse"
 option "CorePointer"
 option "Device" "/dev/input/mice"
 option "Protocol" "ExplorerPS/2"
 option "ZAxisMapping" "4 5"
 option "Emulate3Buttons" "true"
EndSection
Section "ServerLayout"
...
 InputDevice "Configured Mouse"
...
EndSection

Après :

Section "InputDevice"
 Identifier "LMPCM"
 Driver "mouse"
 option "CorePointer"
 option "Device" "/dev/input/mice"
 option "Protocol" "ExplorerPS/2"
 option "ZAxisMapping" "4 5 6 7"
 Option "Buttons" "9"
 Option "Name" "MediaPlay"
 Option "Vendor" "Logitech"
EndSection
Section "ServerLayout"
...
 InputDevice "LMPCM"
...
EndSection

Redémarrer

À ce point-ci, un redémarrage de la machine est nécéssaire. Il faut que les modules soient chargés dans le bon ordre (changé précédemment dans le fichier modules.dep) et le serveur X doit être redémarré pour que les nouveaux paramètres soient prit en compte (changé précédemment dans le fichier xorg.conf).

On pourrait tenter de décharger les modules à la main avec rmmod et les recharger avec modprobe dans le bon ordre, mais on risquerait de se retrouver sans clavier opérationnel si on possède un clavier USB. Il faudrait ensuite fermer notre session et redémarrer le serveur X. Un redémarrage est beaucoup plus simple et va nous confirmer que tout est bien configuré.

Si par malheur vous avez fait une erreur et que ça ne démarre plus, choisissez l'option rescue mode dans le menu de Grub (menu apparaîssant au boot). Si ça ne marche pas non plus, bootez avec le CD de Kubuntu, ou tout autre Live CD. Ça va vous permettre de faire les changements nécéssaires aux fichiers de configuration.

Configuration des boutons

Pour bien configurer la souris il faut savoir que certains boutons de la souris sont perçu comme étant des boutons normaux de souris, alors que d'autres sont perçu comme des touches de clavier. Ce qui permet de leur assigner facilement une fonctions dans KDE ou Gnome.

<cadre type=note> Numéros des boutons de souris

Bouton de gauche 1
Clic de la molette 2
Bouton de droite 3
Molette vers le haut 6
Molette vers le bas 7
Bouton bleu précédant 8
Bouton bleu suivant 9

Codes des touches de clavier

Molette vers la droite 233
Molette vers la gauche 234
Media 168
Play / pause 162
Piste suivante 153
Piste précédante 144
Volume + 176
Volume - 174

</cadre>

Il faut maintenant dire au serveur X d'utiliser tout ces beaux boutons! En plus du fichier xorg.conf, il faut exécuter un script pour faire connaître les nouveaux boutons qui sont perçu comme des touches de clavier grâce à leur keycode.

À ce point-ci les boutons devraient être reconnus par le kernel. Pour connaître les keycodes et pour être certains qu'ils sont bien reconnu on peut exécuter xev et voir quel code est associé à quel bouton en appuyant sur chacun d'eux :

$ xev
...
KeyRelease event, serial 31, synthetic NO, window 0x2e00001,
   root 0x75, subw 0x0, time 4143197446, (76,59), root:(79,853),
   state 0x10, keycode 176 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
   XLookupString gives 0 bytes:
   XFilterEvent returns: False
KeyRelease event, serial 31, synthetic NO, window 0x2e00001,
   root 0x75, subw 0x0, time 4143199326, (76,59), root:(79,853),
   state 0x10, keycode 168 (keysym 0x1008ff32, XF86AudioMedia), same_screen YES,
   XLookupString gives 0 bytes:
   XFilterEvent returns: False
...

Pour que le serveur X reconnaisse les nouveaux boutons, il faut exécuter xmodmap. Pour ne pas avoir à l'exécuter à la main à chaque redémarrage, nous allons faire un petit script.

Fichier .Xmodmap à placer dans votre répertoire home : ~/ ou /home/votre_usager/ :

keycode 234 = XF86Back
keycode 233 = XF86Forward
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 162 = XF86AudioPlay
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
keycode 168 = XF86AudioMedia
pointer = 1 2 3 4 5 8 9 6 7

Fichier mediaplay.sh à placer dans le répertoire ~/.kde/Autostart :

xmodmap ~/.Xmodmap

Rendez le exécutable :

chmod +x ~/.kde/Autostart/mediaplay.sh

et exécutez-le :

~/.kde/Autostart/mediaplay.sh

Vous pouvez aussi terminer votre session et vous reconnecter pour vous assurer qu'il est bien exécuté automatiquement.

Conclusion

Ben voilà, c'était pas si compliqué, juste un peu chiant! Ça devrait être la job de Logitech de se tapper tout ce trouble, mais bon, faut pas trop rêver! Une chance qu'il y a Léa! ;-)



@ Retour à la rubrique Matériel

--Meloman 19 fév 2007 à 04:11 (CET) Alain Rivest