Mit Arduino Micro im Keyboardmode kommunizieren?

OP (Firma: Q3) #7196539
Lesenswert?

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 ...
#7197127
Lesenswert?

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".
Persönliche Seite #7197195
Lesenswert?

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).
OP (Firma: Q3) #7210814
Lesenswert?

Ε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.
#7211038
Lesenswert?

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

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