Comment puis-je lire les événements à partir d'un périphérique HID sous Ubuntu Jaunty?

StackOverflow https://stackoverflow.com/questions/1521986

Question

J'ai un périphérique USB HID Linux ( Hama MCE), et je peux lire ses événements manuellement en lisant cat /dev/input/event7 et cat /dev/input/event8. Chaque fois que j'appuie sur une touche sur l'appareil, quelques octets sont disponibles en lecture avec l'une des commandes de cat ci-dessus. J'ai une installation par défaut d'Ubuntu Jaunty bureau 64 bits sur la machine.

Je pense que je peux écrire un analyseur pour interpréter les octets émis par le dispositif, ou je vais utiliser libhid si elle est plus pratique.

Mes questions sont les suivantes:

  1. Comment puis-je empêcher le texte en mode console virtuelle de recevoir quelques-unes des touches sur l'appareil comme normales pressions sur les touches? A ce jour, le résultat des touches de l'appareil une Entrée , BackSpace , PageUp ou les numéros de pavé numérique.
  2. De même, comment puis-je prévenir le serveur X de recevoir clavier et souris événements de cet appareil? J'ai plusieurs claviers et souris USB connectés à l'ordinateur. Je veux que le serveur X recevoir des événements de tous, sauf pour cet appareil.
  3. Comment puis-je configurer que chaque fois que l'appareil se connecte à l'ordinateur, la commande /usr/local/bin/keydumper /dev/input/event7 /dev/input/event8 (ou une commande pour chaque chemin de /dev/) obtiendrait l'exécution, les chemins de /dev/ appropriés substitués dans la ligne de commande?
Était-ce utile?

La solution

répondre à ma propre question en fonction des réponses de l'USB HID Linux développeurs de pilotes:

Question 1. et 2 .: Do

ioctl(open("/dev/input/event7", O_RDONLY), EVIOCGRAB, 1);

Tant que cette filehandle est ouvert, les événements générés iraient seulement à ce descripteur de fichier (et non avec une autre ouverture () s du même dispositif ou à la clavier du système ou à la piscine de l'événement de la souris). Tout au plus un processus peut contenir EVIOCGRAB réussi à un dispositif HID à la fois. Lirc peut être configuré pour faire une EVIOCGRAB.

Question 3 .: udev Configurer pour démarrer le programme une fois que l'appareil est connecté.

Autres conseils

Je n'ai pas assez de points pour commenter malheureusement.

Si vous cherchez la définition d'essayer de EVIOCGRAB

    #include <linux/input.h>

Je pense que la solution pour toutes les questions peuvent être en train d'écrire propre pilote de périphérique de filtre ou pilote personnalisé pour votre appareil. Je sais une chose (pilote de périphérique de filtre) est disponible sous windows afin quelque chose de semblable peut être sous Linux. Dans ce pilote de périphérique de filtre, vous pouvez bloquer tous les événements indésirables de l'appareil cible que vous souhaitez bloquer, je ne comprends vraiment pas 3 question donc je ne sais pas comment répondre à cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top