Device File (/dev/input) lesen

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Device File (/dev/input) lesen

Beitrag von Programie »

Hi,

nach etwa 7 Jahren Pause habe ich mal wieder den Weg zurueck zu PureBasic gefunden. RSBasic hat mich gestern auf eine interessante Idee gebracht: Er verwendet unter Windows eine separate Tastatur fuer Shortcuts. Das moechte ich jetzt unter Linux mit PureBasic umsetzen.

Ich habe schon rausgefunden wie man die Tastatureingaben direkt aus dem Device File liest und verhindert dass der X Server darauf reagiert. Also habe ich mal versucht in PB das Device File mit ReadFile zu oeffen und Bytes rauszulesen. Laut einem Blogartikel ist jedes Keyboard Event 24 Byte lang. Allerdings scheint PB mit den Read* Funktionen auf mehr Bytes zu warten.

Beispiel:

Code: Alles auswählen

EnableExplicit
ReadFile(0, "/dev/input/event12")

Define *memory = AllocateMemory(24)
ReadData(0, *memory, 24)

Debug PeekS(*memory, 16) ; timestamp
Debug PeekW(*memory + 16); type
Debug PeekW(*memory + 18); code
Debug PeekL(*memory + 20); value
Wenn ich das Programm starte, wartet es trotz Eingabe auf der Tastatur auf ReadData. Erst nach etwa 30 Tastendruecken bekomme ich ein Ergebnis obwohl doch durch das erste Event (Key Down) schon 24 Bytes zum Lesen vorhanden sind. Es ist auch kein Read Timeout oder aehnliches, denn wenn ich keine Eingabe mache wartet das Programm ewig.

Mit dem Python Script aus dem Blogartikel funktioniert das Auslesen problemlos.

Hat jemand eine Idee was ich falsch mache?
Zuletzt geändert von Programie am 21.11.2018 19:25, insgesamt 1-mal geändert.
BildBildBildBild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Device File (/dev/input) lesen

Beitrag von RSBasic »

[ot]
Willkommen zurück. :allright:
[/ot]
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Re: Device File (/dev/input) lesen

Beitrag von Programie »

Problem gefunden: File Buffering

Bei ReadFile "#PB_File_NoBuffering" als Flag angegeben und tut.
BildBildBildBild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Device File (/dev/input) lesen

Beitrag von NicTheQuick »

Cool, halt uns mal auf dem Laufenden. :allright:
Bild
Antworten