Forum: Mikrocontroller und Digitale Elektronik Mit Arduino Micro im Keyboardmode kommunizieren?


von Frank E. (Firma: Q3) (qualidat)


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 ...

von C.K. (Gast)


Lesenswert?

Nein, es wird nur eine USB-Tastatur emuliert.

Es ist nicht möglich zu erkennen welche Anwendung am PC gerade den Fokus 
hat.

von Εrnst B. (ernst)


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".

von DerEinzigeBernd (Gast)


Lesenswert?

Ε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!

von Niklas G. (erlkoenig) Benutzerseite


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).

von Frank E. (Firma: Q3) (qualidat)


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.

von Εrnst B. (ernst)


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

: 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.