Ich möchte einen RFID-Reader mittels Arduino Micro quasi als Tastatur am PC anbinden. Allerdings möchte ich verhindern, dass wenn der Cursor in einer anderen Anwendung steht, dort wirres Zeug "eingetippt" wird, sobald jemand versehentlich einen Transponder auf oder neben den Reader legt. Meine Frage nun: Kann man trotz Keyboard-Mode mit dem Arduino Micro kommunizieren, um diesen nur gezielt für eine bestimmte (eigene) Anwendung zu aktivieren/deaktivieren? Ich weiss, da bliebe noch der normale serielle Modus, den wollte ich aber wegen des Treiber-Geraffels vermeiden ...
Nein, es wird nur eine USB-Tastatur emuliert. Es ist nicht möglich zu erkennen welche Anwendung am PC gerade den Fokus hat.
Frank E. schrieb: > Meine Frage nun: Kann man trotz Keyboard-Mode mit dem Arduino Micro > kommunizieren, um diesen nur gezielt für eine bestimmte (eigene) > Anwendung zu aktivieren/deaktivieren? Die Anwendung könnte z.B. Scroll-Lock einschalten sobald das richtige Eingabefeld den Fokus hat, das kriegt die HID-Emulation mit, damit könntest du den NFC-Reader "scharfschalten".
Εrnst B. schrieb: > Die Anwendung könnte z.B. Scroll-Lock einschalten Das ist 'ne schicke Idee für einen Rückkanal zur "Tastatur". Klasse!
Muss es denn unbedingt ein emuliertes Keyboard sein? Du könntest ein natives eigenes USB-Protokoll implementieren, und dann eine eigene PC-Anwendung schreiben die die Daten entgegen nimmt. Wenn die Daten in eine bestimmte andere Anwendung rein müssen, kannst du von deiner Anwendung aus sie in deren Eingabefeld senden (das geht über bestimmte APIs).
Εrnst B. schrieb: > Frank E. schrieb: >> Meine Frage nun: Kann man trotz Keyboard-Mode mit dem Arduino Micro >> kommunizieren, um diesen nur gezielt für eine bestimmte (eigene) >> Anwendung zu aktivieren/deaktivieren? > > Die Anwendung könnte z.B. Scroll-Lock einschalten sobald das richtige > Eingabefeld den Fokus hat, das kriegt die HID-Emulation mit, damit > könntest du den NFC-Reader "scharfschalten". Könntest du bitte näher erklären, wie man das genau macht? Danke.
Frank E. schrieb: > Könntest du bitte näher erklären, wie man das genau macht? Danke. Hängt natürlich von den von dir Verwendeten libraries ab, aber
1 | if (Keyboard.getLeds() & LED_SCROLL_LOCK) { |
2 | // Mach was mit RFID
|
3 | } else { |
4 | // Oder eben nicht
|
5 | }
|
mit https://github.com/NicoHood/HID/blob/30685e322c583d03c9675fed2276c69215da65f7/src/KeyboardLayouts/ImprovedKeylayouts.h#L40 wäre z.B. möglich. Auf PC-Seite: Wie du Scoll-Lock ein/ausschaltest ist auch sehr unterschiedlich zwischen verschiedenen Programmiersprachen&Libraries. Läuft vtml. am Ende auf einen Aufruf der void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo); aus der user32.dll hinaus, mit verschieden dicken Abstraktionslayern davor. -> SendInput aus der winuser.h https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendinput
:
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.