Forum: PC-Programmierung python evdev liest Tastendruck nicht


von Neo R. (neoneo)


Lesenswert?

Hey

ich möchte das evdev Modul von Python für ein Skript unter Linuxmint 
20.1 nutzen. Dabei sollen Events von einem USB-Fußschalter, der von 
Linux als HID Keyboard erkannt wird, ausgelesen werden. (Grundsätzlich 
funktioniert der Schalter und entspricht, in der aktuellen 
Konfiguration, bei Betätigung dem Drücken der B-Taste bei mir auf der 
Tastatur)
Jetzt wollte ich den Beispielcode aus der Dokumentation zu python evdev 
testen 
(https://python-evdev.readthedocs.io/en/latest/tutorial.html#reading-events):
1
dev = InputDevice('/dev/input/event5')
2
3
print(dev)
4
5
6
for event in dev.read_loop():
7
    if event.type == ecodes.EV_KEY:
8
        print(categorize(event))
und bekomme aber keinen Output. Die Funktion read_loop() scheint keinen 
Tastendruck zu registrieren (aber nen b wird trotzdem an die Stelle des 
Cursors im Terminal geschrieben).
Ich habe vorher mit evtest im Virtuellen Terminal die entsprechende 
eventfile zum Schalter rausgesucht - müsste eigentlich passen.
Weiß jemand, woran das liegen könnte?

(Drei Sachen sind mir noch aufgefallen, die für die Fehlersuche helfen 
könnten:
1. mit der Maus funktionierts, da bekomme ich einen entsprechenden 
Output bei re/li Click
2. python evdev liefert auch ein evtest Modul mit. Wenn ich das mit
Code: [Auswählen]

sudo python -m evdev.evtest

im Terminal ausführe und dann das eventfile vom Fußschalter auswähle 
passiert da bei Tastendruck auch nichts (beim ausführen von evtest im 
viruellen Terminal hingegen schon)
3. Im Zusammenhang mit evtest bin ich auf sudo fuser -v 
/dev/input/event... gestoßen und habe festgestellt, dass auf der 
entsprechenden eventfile einige root prozesse laufen)

Vielen Dank schon einmal für Eure Hilfe!

von Neo R. (neoneo)


Lesenswert?

Okay, hab jetzt rausgefunden, dass mehr als eine Eventfile dem Gerät 
zugeordnet ist und mit einer anderen gehts...

von Rolf M. (rmagnus)


Lesenswert?

Ich würde eher das passende Gerät unter /dev/input/by-id/ verwenden, 
weil die Nummern-Zuorndung bei /dev/input/event* sich immer ändern kann, 
je nach Reihenfolge der Erkennung der Geräte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.