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
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.
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.
Viele Barcode Scanner kann man umschalten. Also entweder spielen die "Tastatur" oder serielles Interface. Schonmal im Manual nach so einer Möglichkeit gesucht? 73
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.