Wie lese ich die Ereignisse aus einem HID-Gerät unter Ubuntu Jaunty?
Ich habe einen Linux USB-HID-Gerät ( Hama MCE ), und ich kann Lesen, seine Termine manuell durch das Lesen cat /dev/input/event7
und cat /dev/input/event8
. Immer, wenn ich drücken Sie eine Taste auf dem Gerät, ein paar bytes werden zum Lesen zur Verfügung, die mit einem der cat
oben genannten Befehle. Ich habe eine Standard-installation von Ubuntu Jaunty 64-bit-desktop auf die Maschine.
Ich denke, ich kann schreiben Sie einen parser interpretiert die bytes emittiert, die durch das Gerät, oder verwende ich libhid wenn es bequemer ist.
Meine Fragen sind:
- Wie kann ich verhindern, dass der text-Modus virtuelle Konsolen, die von der empfangenden einige Tastendrücke am Gerät als normale Tastendrücke? Jetzt, einige Gerätetasten Ergebnis einer Geben Sie, ein BackSpace, ein PageUp oder einer numerischen Tastatur zahlen.
- Ähnlich, wie verhindere ich, dass der X-server aus empfangen von Tastatur-und Maus-events von diesem Gerät? Ich habe mehrere USB-Tastaturen und-Mäuse an den computer angeschlossen. Ich will, dass die X-server-Ereignisse empfangen, die von allen von Ihnen, außer für dieses Gerät.
- Wie kann ich einstellen, dass wenn das Gerät an den computer angeschlossen, wird der Befehl
/usr/local/bin/keydumper /dev/input/event7 /dev/input/event8
(oder einem Befehl für jede/dev/
Weg), würde laufen zu bekommen, mit dem richtigen/dev/
Pfade in der Befehlszeile ersetzt wird?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beantwortung meiner eigenen Frage basiert auf den Antworten von der Linux USB-HID-Treiber Entwickler:
Frage 1. und 2.: Tun
Solange das filehandle geöffnet ist, werden die Ereignisse, die generiert werden würde nur gehen,
dieses filehandle (nicht zu anderen open()s mit dem gleichen Gerät oder auf der
system-Tastatur oder Maus-event-pool). Höchstens ein Prozess kann halten
erfolgreiche EVIOCGRAB bei einem HID-Gerät zu einer Zeit. Lirc konfiguriert werden können
ein EVIOCGRAB.
Frage 3.: Konfigurieren udev um das Programm zu starten, sobald das Gerät angeschlossen ist.
Habe ich nicht genügend Punkte für den Kommentar-leider.
Wenn Sie auf der Suche für die definition von EVIOCGRAB versuchen
Ich denke, die Lösung für alle Fragen können Sie schreiben eigene filter device Treiber, oder benutzerdefinierte Treiber für Ihr Gerät. Ich weiß, so eine Sache (filter device Treiber) ist auf windows so etwas ähnliches kann auch auf Linux. In diesem filter device-Treiber, die Sie blockieren könnten alle unerwünschten Ereignisse, die aus dem Ziel-Gerät, dass Sie möchten, um zu blockieren, ich weiß nicht wirklich 3 Frage also ich weiß nicht, wie zu beantworten für, die.