Forum: PC-Programmierung python evdev liest Tastendruck nicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.