Forum Linux.général Scancodes complexes de télécommande !

Posté par .
Étiquettes : aucune
0
8
août
2006
Bonjour!

Je suis en pleine configuration d’une télécommande logitech ultraX media remote control sous debian, avec un noyau 2.6.16 qui la reconnaît tout seul donc tout va bien, quelques keycodes sont reconnus avec xev et donc paramétrables dans xmodmap, mais pas tous !

En effet, la plupart des boutons un tant soit peu spéciaux ne sont pas reconnus par xev, le /var/log/messages ne me dit rien (je le soupçonne d’être configuré par Elive pour me cacher des choses), mais showkeys me donne les scancodes de ces touches.
Le problème, c’est que, contrairement à plusieurs textes qui précise que, grace au noyau, l’utilisateur n’a besoin de manipuler que des scancodes simples (type 0xxx , e0xx ou une combinaison des deux), je me retrouve avec mes touches avec des scancodes du type « 0x83 0x00 0xf6 » (et la même chose pour le bouton relevé)…

Y aurait-il moyen de leur affecter quand même un keycode ? ou bien est-il plus simple de passer par le module evdev et lirc ? (j’ai essayé cette dernière solution, mais irrecord n’a jamais réussi à initialiser le périphérique d’entrée)

Merci pour votre aide
  • # J'ai la même

    Posté par . Évalué à 2.

    J'ai acheté la même, et je commence à m'en mordre les doigts ! Je l'utilise sous KnoppMyth, mais en effet, je n'ai pas encore réussi à configurer toutes les touches. Par contre, je serais intéressé si tu me donnais la liste de la documentation que tu as déjà trouvé !
    • [^] # Re: J'ai la même

      Posté par . Évalué à 1.

      Oups j'avais pas vu ta réponse ! Merci ! je ne suis pas seul ! je viens de poster un nouveau message dans le forum linux.noyau, mais voici ce que j'ai déjà testé :
    • xmodmap avec keycodes complexes : échec. http://www.lea-linux.org/cached/index/Hardware-hard_autres-c(...) et pleins d'autres dans le même styles qui ne m'ont pas apporté grand chose de plus
    • module evdev et lirc : http://forum.hardware.fr/hardwarefr/OSAlternatifs/Ati-remote(...) échec, sûrement un problème de configuration dans lircd.conf, mais je n'ai rien trouvé de mieux (voir manuel de lirc : file:///usr/share/doc/lirc/html/configure.html , pas très loquace sur ce sujet)
    • module evdev et le fabuleux paquet inputlirc (dispo sous debian testing): http://www.nabble.com/inputlirc:-zeroconf-LIRC-daemon-using-(...) pas de configuration, donc pas trop de modification possible (j'ai vaguement lu les fichiers sources, mais bof, mais je ne suis pas du tout expert) ce dernier a marché !
    • avec le paquet input-utils, utilise #input-events X avec X entre correspondant à ta télécommande (ou autre périph) dans /dev/input/eventX, chez moi 4 qui donne ceci :
      /dev/input/event4
       bustype : BUS_USB
       vendor : 0x46d
       product : 0xc101
       version : 259
       name : "Logitech USB Receiver"
       phys : "usb-.&checktime(0000,02,00,':').0-1/input1"
       uniq : ""
       bits ev : EV_SYN EV_KEY EV_REP
      waiting for events
      14:46:59.471797: EV_KEY KEY_HOME pressed
      14:46:59.471813: EV_KEY KEY_HOME released
      14:46:59.471834: EV_SYN code=0 value=0
      
      ça fait plaisir, reste plus qu'à configurer .lircrc, avec de trucs dans le style :
      begin
       prog = irexec
       button = KEY_VOLUMEUP
       config = aumix -v +2
      end
      
      le problème suivant (car oui il y en a un), est que, comme remarqué par input-events, le nom de la touche est le même lorsque celle-ci est pressée que lorsqu'elle est relâchée... et donc la commande associée s'exécute 2 fois ! sympa, non ? surtout pour un mute, ou play/pause, tout ça... je me suis donc écrit un petit script moche (ce fut l'occasion d'apprendre l'écriture de scripts) qui n'exécute l'action que la 2e fois qu'elle est appelée, et j'ai rencontré des problèmes de tubes avec des echo, des greps et des osd_cat, mais ceci est une autre histoire dépendant des mes connaissances en script bash... mais pour le moment ça marche à peu près. Le problème suivant (oui oui) est que les commandes présentes dans mon lircrc ne s'exécutent que si et seulement si (à quelques exceptions auxquelles je n'ai rien compris) irexec est lancé dans un terminal et que le teminal est actif... et des fois ça marche avec irexec -d (en démon), mais des fois non... voilà, si quelqu'un passe par là et veut bien nous donner un coup de main... :o) je commence à fatiguer sur le sujet moi...
  • [^] # Re: J'ai la même

    Posté par . Évalué à 1.

    Bon je crois que je viens de nous sauver la vie (j'ai pas encore exploré la solution en profondeur mais ça a l'air pas mal) ! Démonstration : Utiliser EvRouter ! Ce petit programme date de 2004 et n'est plus intégré dans Debian (s'il l'a jamais été, mais ce que j'ai cru comprendre dans des anciens posts), il faut donc aller le chercher sur : http://www.bedroomlan.org/~alexios/coding_evrouter.html (dispo en source, rpm et deb) et l'installer (#dpkg -i *.deb) et configurer le .evrouterrc à partir du fichier d'exemple à trouver dans /usr/share/doc/evrouter/examples/example.gz (à décompresser) et de la page de man mais en gros pour la configuration, faut récupérer la sortie de
    # evrouter -d /dev/input/event4
    device 0: /dev/input/event4: Logitech USB Receiver
    Display name: :0.0
    Window "Terminal": # Window title
    # Window "urxvt": # Resource name
    # Window "URxvt": # Class name
    "Logitech USB Receiver" "/dev/input/event4" none key/398 "fill this in!"
    
    et donc en gros dans le fichier de conf, il faut simplement répéter
    "Logitech USB Receiver" "/dev/input/event4" none key/398 "Shell/mplayer"
    en précisant l'action à exécuter entre les derniers "", avec la possibilité de configurer une XKey/espace ou n'importe quelle touche clavier ou souris suivant la fenêtre active ! (attention à la première ligne du fichier de conf je crois) Voilà !!! si je trouve encore des trucs un peu chauds je remets un post ici, mais j'avoue que je suis assez fier de moi ;o) bonne soirée !
    • [^] # Re: J'ai la même

      Posté par . Évalué à 1.

      bon je confirme, j'ai passé la soirée dessus, et evrouter c vraiment la classe, je vais pouvoir me passer de xbindkeys et tout mettre dans mon .evrouterrc :o)

      mais le seul problème est que du coup faut mettre /dev/input/eventx (suivant ce qu'on utilise dans evrouter, tout est possible) en lecture autorisée à l'utilisateur, mais a priori niveau sécurité ça craint pas trop je pense... surtout que je suis tout seul sur mon portable ;o)

      bon allez, bonne nuit !

      (si t'as des questions, n'hésite pas)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.