Forum: Mikrocontroller und Digitale Elektronik USB Usage Id's für eigene Zwecke verwenden


von Hansi (Gast)


Angehängte Dateien:

Lesenswert?

Moin zusammen,

folgende Frage:

Ich habe einen USB-Tastaturcontroller, den ich frei programmieren kann. 
Also die Tastenbelegungen der Tasten eigene Usage Id's zuweisen. Soweit 
kein Problem mit "normalen" Tasten wie ABCD....

Jetzt habe ich einen Buttonhandler der auf bestimmte Make/Break-Codes 
reagiert und dadurch bestimmte Programme aufruft. Das funktioniert alles 
soweit wenn ich ganz normale Tasten hernehme die auch wirklich auf einem 
Keyboard vorhanden sind. Dadurch, dass es eigene Programme sind soll 
natürlich auf herkömmliche Tasten nicht reagiert werden. Also brauch ich 
wohl Usage Id's, die noch nicht vergeben sind. Bei Microsoft hab ich ein 
Dokument gefunden (Teilausschnitt im Anhang) da stehen alle Usage Id's 
drauf. Dort findet man dann einige mit "Reserved". Habe die mal in 
meinen Controller gebrannt und mit einem Tool geschaut ob da Scancodes 
ankommen. Bei 3 Tasten funktionierts, beim Rest nicht. Also auch keine 
wirklich gute Möglichkeit.


Jemand Ahnung wie das mit den Usage Id's abläuft? Ich muss sicher 
stellen, dass ein User nicht durch die normalen Tasten auf der Tastatur 
die Programme starten kann. Gibt es überhaupt "freie" Usage Id's?


Danke

von Mars (Gast)


Lesenswert?

Hi!

Eventuell kann dir die Raw Input API helfen.
=>http://msdn.microsoft.com/en-us/library/ms645536(VS.85).aspx

Lg

von Guido Körber (Gast)


Lesenswert?

Das wird nichts. Entweder sind die UsageIDs in der HID Spec definiert 
und damit zum größeren Teils als Standardtasten verfügbar, oder Du musst 
den Controller dazu bringen Vendor Specific Usages zu senden. Das wird 
aber kein Standardcontroller erlauben, dazu müsste man u.a. den Report 
Descriptor ändern können.

von Hansi (Gast)


Lesenswert?

Hi,

@Mars: Softwareseitig sollen die Brake/Make-Codes nur empfangen werden. 
Damit hab ich weniger zutun. Ich muss nur meinen Controller dazu bringen 
die richtigen Codes zu senden.

@Guido: Den Reportdescriptor kann ich auch verändern. Wie meinst du das 
genau? Was ist der Unterschied zu den normalen Usage Id's?

Bei dem Chip handelt es sich übrigens um dem ALCOR AU9410.

Gruß

von Guido Körber (Gast)


Lesenswert?

Zieh Dir mal die HID Spezifikation. Es gibt die Möglichkeit Vendor 
specified IDs zu definieren. Die werden von MacOS und Windows ignoriert, 
Linux versucht die leider zu dekodieren, was Freude bereitet und einen 
Treiber erforderlich macht um an solche Daten ranzukommen.

Zuverlässig klappen kann das aber nur wenn man eine eigene VendorID hat.

Besser wäre es einen Chip zu nehmen, der sich garnicht erst als Tastatur 
anmeldet.

von Hansi (Gast)


Lesenswert?

Hi,

wenn Windows aber die Daten ignoriert, wie soll ich dann rankommen? Dann 
müsste ich ja auch einen Treiber haben der vorher die Daten abgreift.

Gruß

von Guido Körber (Gast)


Lesenswert?

RawInput über den Tastaturtreiber.

Wie gesagt ist es aber sinnvoller einen Chip zu verwenden, der garnicht 
erst als Tastatur auftaucht wenn er auch nicht als Tastatur 
funktionieren soll.

von Hansi (Gast)


Lesenswert?

Aha ok, hast du eine Empfehlung was man da verwenden könnte? Wie gesagt, 
softwaremäßig gibt es keinen Treiber oder was. Ich kann also nur das 
übernehmen was Windows mir liefert.

Gruß

von Guido Körber (Gast)


Lesenswert?

Joystickcontroller oder Generic HID, z.B. den IO-Warrior.

Wie viele Tasten sollen es denn sein?

von Hansi (Gast)


Lesenswert?

max. 10 Tasten

von Guido Körber (Gast)


Lesenswert?

Ja, dann würde ein IO-Warrior gut passen.

von Michael W. (mictronics) Benutzerseite


Lesenswert?

Oder ein ATmega8, der also USB-Joystick läuft.
zB. http://www.mictronics.de/?page=avr_usb_joystick

von Hansi (Gast)


Lesenswert?

Hi,

die Versionen hören sich schonmal nicht schlecht an!

Jetzt muss ich aber doch nochmal eine Frage loswerden:

Wenn ich einfach irgendeine nicht belegte Usage Id in mein Controller 
eintrage, und dann einfach mit der Software schaue ob da irgendwas 
ankommt. Könnte doch auch funktionieren? Oder schmeißt Windows mit 
Sicherheit die Id bzw. die Make/Brake Codes weg weil sie laut Liste 
nicht vergeben sind?

Gruß

von Guido Körber (Gast)


Lesenswert?

Windows schmeißt die Usages weg die es nicht kennt.

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.