Forum: PC-Programmierung Barcode scanner Tastatur linux umleiten


von Joachim J. (felidae)


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.

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


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.

von DPA (Gast)


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.

von Hans W. (Firma: Wilhelm.Consulting) (hans-)


Lesenswert?

Viele Barcode Scanner kann man umschalten. Also entweder spielen die 
"Tastatur" oder serielles Interface.

Schonmal im Manual nach so einer Möglichkeit gesucht?

73

von Εrnst B. (ernst)


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.

: Bearbeitet durch User
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.