Comment déboguer l'entrée à partir d'un périphérique d'entrée (/ dev / input / event *)

19

J'ai un récepteur IR qui utilise le pilote d'imon et je voudrais le faire fonctionner avec le noyau. À l'heure actuelle, la moitié des touches de la télécommande ( image ) fonctionne, mais une réflexion tout aussi importante que les touches numériques ne fonctionne pas!

La pensée étrange est que le module de mappage de clés du noyau (rc-imon-pad) semble être correct, mais il semble qu'il ne soit pas vraiment utilisé, car les mêmes clés fonctionnent sans ce module.

Il semble que le module rc-imon-pad soit toujours chargé lorsque je charge imon, puis je soupçonne que les codes clés sont mis en cache, donc cela ne fait aucune différence si je décharge rc-imon-pad

Maintenant, je suis perdu, si je le fais cat /dev/input/event5ou ir-keytable -ts'il y a des données, quelle que soit la touche sur laquelle j'appuie, le pilote enregistre les boutons, mais il semble juste qu'ils soient traduits dans les mauvais codes.

My kernels est un noyau de stock Ubuntu de Natty (Linux xbmc 2.6.37-11-generic # 25-Ubuntu SMP Tue Dec 21 23:42:56 UTC 2010 x86_64 GNU / Linux)

LassePoulsen
la source
2
Il semble que le problème soit que le noyau envoie des codes clés supérieurs à 255 que X n'enregistre pas car il est limité à un entier 8 bits non signé. Et je recompile maintenant le module du noyau avec des codes clés modifiés pour tester cette théorie ...
LassePoulsen
1
Btw, au lieu de catvous pouvez utiliser evtestce qui donne des informations bien analysées.
9000

Réponses:

3

J'ai la même télécommande et je l'ai en envoyant des codes clés corrects à mon noyau 2.6.38-gentoo-r3. Je n'ai pas compilé de codes clés en tant que module, car ils n'ont probablement pas encore eu le temps de permettre de sélectionner des cartes clés individuelles. C'est tout ou rien et je n'aime pas qu'un million de modules inutiles m'encombrent. Au lieu de cela, je laisse v4l-utils le gérer avec udev.

Quelques choses que j'ai apprises:

  • Vérifiez la sortie de ir-keytable -r, il devrait répertorier tous les codes clés applicables à votre télécommande.
  • Chargez la table des clés manuellement: ir-keytable -c -w bleh / keymaps / imon_pad, après quoi ir-keytable -r devrait vous rendre la table
  • Vous avez peut-être un récepteur défectueux, vous ne mentionnez rien de l'histoire. Je me souviens avoir vu au moins un message sur lirc-list où un gars a dit avoir renvoyé l'affaire et en avoir un nouveau résolu ses problèmes.

Faites-nous savoir comment cela s'est passé.

lkraav
la source
Assurez-vous de vérifier cette réponse tout le monde, xinput testest très utile ici. unix.stackexchange.com/a/6231/27902
Elijah Lynn
17

Vous pouvez trouver utile xinput listet xinput test <device>.

Par exemple,

$ xinput list
⎡ ID du pointeur du noyau virtuel = 2 [pointeur maître (3)]
⎜ ↳ Id du pointeur XTEST du noyau virtuel = 4 [pointeur esclave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [pointeur esclave (2)]
⎣ ID du clavier du noyau virtuel = 3 [clavier maître (2)]
    ↳ ID du clavier XTEST du noyau virtuel = 5 [clavier esclave (3)]
    ↳ ID du bouton d'alimentation = 6 [clavier esclave (3)]
    ↳ ID du bus vidéo = 7 [clavier esclave (3)]
    ↳ ID du bouton de veille = 8 [clavier esclave (3)]
    ↳ Boutons supplémentaires pour ordinateur portable Asus id = 9 [clavier esclave (3)]
    ↳ AT Translated Set 2 id clavier = 10 [clavier esclave (3)]

et je peux surveiller mon clavier ( xinput test 10) ou mon pavé tactile ( xinput test 11, ou même xinput test "SynPS/2 Synaptics TouchPad") pour toutes sortes d'événements d'entrée, et ils sont assez imprimés sur la console, et les paramètres sont également extraits et imprimés.

Cela ne résoudra pas votre problème, mais au moins vous aidera un peu en déchiffrant l'encombrement qui, par exemple, cat /dev/input/event1produit.

ulidtko
la source
1
Merci beaucoup! J'ai construit un détecteur de clavier basé sur cette réponse.
l0b0