Hallo zusammen,
ich habe das Forum schon ein wenig durchstöbert, hänge gerade ein
wenig....
Kann ich generell jedes USB Gerät als virtuelles Keyboard registrieren
lassen. Ich habe hier eine Aussage von einem Kollegen, welche ich nicht
recht glauben kann. Er meint, dass sich Geräte, bei denen es sich um
eine Vendor-HID-class handelt nicht ginge. Um das zu realisiern müsste
die Klasse in eine HID sub class keyboard geändert werden.
Ich habe recherchiert, dass die Interface Deskriptoren den
Registirierungstyp (Keyboard) dem Betriebssystem mitteilen.
Könnte man hier nicht die Information auf den Chip übertragen, heißt
kann ich nachträglich die Informationen der Deskriptoren für das USB
Gerät ändern?
Vielen Dank im Voraus für Ihre Mühe.
bvb09man
Fabian Hoffmann schrieb:> Könnte man hier nicht die Information auf den Chip übertragen, heißt> kann ich nachträglich die Informationen der Deskriptoren für das USB> Gerät ändern?
Das geht natürlich erstmal nur, wenn die Deskriptoren nicht 'hart' im
USB Chip kodiert sind, sondern z.B. in einem Flash erreichbar sind. Und
dann muss sich die Peripherie auch wie ein solches Gerät verhalten, d.h.
ein Keyboard kann nicht plötzlich relative Mauskoordinaten liefern,
sondern muss sich an die Konventionen der jeweilige Geräteklasse halten.
Hier ist mal ein USB Deskriptor (in V-USB syntax) eines Keyboards:
1
PROGMEMcharusbHidReportDescriptor[USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH]={/* USB report descriptor */
2
0x05,0x01,// USAGE_PAGE (Generic Desktop)
3
0x09,0x06,// USAGE (Keyboard)
4
0xa1,0x01,// COLLECTION (Application)
5
0x05,0x07,// USAGE_PAGE (Keyboard)
6
0x19,0xe0,// USAGE_MINIMUM (Keyboard LeftControl)
7
0x29,0xe7,// USAGE_MAXIMUM (Keyboard Right GUI)
8
0x15,0x00,// LOGICAL_MINIMUM (0)
9
0x25,0x01,// LOGICAL_MAXIMUM (1)
10
0x75,0x01,// REPORT_SIZE (1)
11
0x95,0x08,// REPORT_COUNT (8)
12
0x81,0x02,// INPUT (Data,Var,Abs)
13
0x95,0x01,// REPORT_COUNT (1)
14
0x75,0x08,// REPORT_SIZE (8)
15
0x25,0x65,// LOGICAL_MAXIMUM (101)
16
0x19,0x00,// USAGE_MINIMUM (Reserved (no event indicated))
17
0x29,0x65,// USAGE_MAXIMUM (Keyboard Application)
18
0x81,0x00,// INPUT (Data,Ary,Abs)
19
0xc0// END_COLLECTION
20
};
Im Vergleich dazu hier mal eine Maus (mit absoluten Koordinaten, da es
eigentlich ein Tablet ist):
Hallo Matthias,
super vielen Dank für Deine Erklärung. Ich muss zuerst mal checken, ob
die Deskriptoren nicht hart kodiert sind.
Vielleicht komm ich noch mal auf Dich zurück, wenn ich darf?
MFG bvb09man
Hallo, ich habe noch ein Verständnisproblem bezüglich des Anmeldens
eines virtuellen Keyboards und hoffe, dass Ihr mir erneut helfen könnt.
Ich habe hier ein Board, welches sich jetzt über HID als virtuelles
Keyboard anmeldet. Welcher Treiber auf der Gegenseite (windows)
registriert denn dieses Board? Kann ich beliebige Tatsten der Tastatur
(z.B. Pfeiltasten) für die Schalter auf dem Board festlegen? Welche
Tasten machen denn am meisten Sinn?
Vielen Dank im Voraus für Eure Mühe.
bvb09man
Für einr HID-Tastatus ist wohl der Tastaturtreiber zuständig.
Ganz allgemein, denn mehr wissen wir hier nicht, kannst Du alle
Tastencodes sende, die definiert sind.