Barcode scanner Tastatur linux umleiten

OP #7233478
Lesenswert?

Ich Programmiere aktuell in c++ unter Linux ein Programm das einen 
Barcode Scanner auswerten soll.

Der Scanner wird von Linux als Tastatur erkannt und eingebunden. 
/dev/input/event20 wenn ich was scanne, landet die Eingabe über stdio 
auf der Konsole. Das möchte ich ändern. Ich hätte gerne das die Eingaben 
nicht im der stdio landen sondern in einer Pip. Diese möchte ich dann im 
C++ Programm auslesen und Auswerten. Die normale Tastatur soll aber 
weiterhin auf der stdio landen und mir eingaben in die Konsole 
ermöglichen.

Wie mache ich das?

Ich müsste die Eingaben schon vor der stdin abfangen und umleiten. Ich 
habe bisher in c++ aber immer nur die stdin selbst umgeleitet. Wenn ich 
die Datei /dev/input/event20 lese bekomme ich zudem keine chr Zeichen 
sondern Tasten events. Die müssten noch umgewandelt werden.
(Firma: Q3) #7233839
Lesenswert?

Du musst unterbinden, dass sich der Scanner als HID/Tastatur 
registrieren kann, sondern nur als serial device. Das kannst du dann 
gezielt auslesen.

Viele Barcode-Scanner können durch das Einlesen spezieller Cofig-Codes 
aus dem Hanbuch entsprechend konfiguriert werden.
Gast #7233960
Lesenswert?

Ich bin mir nicht sicher, was da die beste Methode ist. Was es so alles 
gibt:
* Unter X11 können Anwendungen per xi2 (xinput2) keyboard und co, 
auflisten, pointer zuweisen, solche erstellen, diese auch davon weg 
nehmen, und dann gibt es diverse "grabs", mit dem man devices, 
Tastenkombinationen, etc. exclusiv für seine Anwendung beanspruchen 
kann.
* Libinput und libev sind eine ebene tiefer, nutzen die /dev/input/* 
devices und so.
* Ich glaube bei libinput und anderen Programmen die das nutzen kann man 
bei den Eingabegeräten zeugs verstellen, indem man per udev gewisse tags 
setzt. Vielleicht kann man das darüber ja irgendwie als scanner angeben?
* Diverse Bild/Kamera software qr und barcode scanner können das 
Resultat per dbus API an Anwendungen mitteilen

Am besten wäre es vermutlich, wenn man den Scanner irgendwie an die DBuS 
API Anbinden könnte, und das programm dann auch. Aber da kenn ich mich 
absolut nicht aus.
#7234153
Lesenswert?

Schau mal die Ausgabe von "xinput list" an.
Da gibt's ein "Virtual core keyboard", an das alle anderen 
Tasten-ähnlichen Geräte ihre Events schicken, und von diesem virtuellen 
Keyboard geht's dann an die Konsole & co.

Das muss nicht so sein, du könntest z.B. den Barcode-Scanner "float"en 
lassen oder an einen eigenen Virtuellen Tastatur-Master (mit SendCore=0) 
umhängen.


Ahso, sollte nicht unerwähnt bleiben: "xinput" ist natürlich X11. Für 
eine Konsole/Headless/Server-Anwendung also nix, und genauso wenig für 
Wayland.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren