Hallo,
bin gerade am Programmieren einer USB- Box , die als Tastatur erkannt
wird und Meßwerte an den PC übertragen soll. Das Ganze funktioniert
soweit(Microchip Framework mit Pic18fx550).
Nun bin ich auf der Suche nach einer Codetabelle für die USB- Tastatur.
Alles, was ich finden konnte, differenziert nicht zwischen Groß- und
Kleinschreibung, z.B. steht für a A HEX 04.
Sende ich 0x04 an die Schnittstelle, erscheint brav das 'a'. Was aber
muß ich senden, damit die 2. Belegung(hier also 'A') angezeigt wird?
Für Hilfe dankt
ulf.
ÄÄÄh, es geht ums Senden der Codes, nicht, wie man die Tasten drückt.
Meiner Meinung nach kommt von der Tastatur immer nur 1 Zeichen.
Wenn ich 0xE1(=SHIFT Taste links) und danach 0x04 sende, erscheint immer
noch'a'.
ulf.
Ulf schrieb:> ÄÄÄh, es geht ums Senden der Codes, nicht, wie man die Tasten drückt.
Witzbold... Ich meinte natürlich die entsprechenden Codes senden,
zumindestens bei "normalen" Tastaturen funktioniert das so.
Hallo ?!?
Tatsache- mit DEM Trick kann man sich drumrummogeln.
Caps Lock senden
0x04 senden(klein'a')
Caps Lock senden
ergibt 'A'.
Für meine Zwecke reicht's, die wenigen Großbuchstaben benötige ich nur
in der Überschrift, dann kommen Zahlen...
Danke!
ulf.
später vllt. mit eleganterer Lösung.
Die Shift/Caps Taste beeinflusst nicht die Interpretation der nächsten
Taste
Setze das Modification-Bit für Shift in genau der Nachricht in der du
den Tastendruck für A sendest.
Erklärung (und ich glaub Beispiele auch) steht aber in der USB-HID
Spezifikation.
Dank @ max
habe die Erklärungen für die Modification-Bits gefunden, werden in Byte
0 der Nachricht gesendet. Eine etwas gewöhnungsbedürftige
Herangehensweise, macht relativ viel Mühe beim Senden eines Textstrings.
Ein Problem habe ich noch. Wenn ich in den Modification-Bits was
geändert habe, spinnen hinterher Tastatur und Maus, egal, ob noch
Datanpakete mit Modification-Bits 0(d.h.Byte0 der Nachricht=0)
nachgeschickt wurden. Die "hängenden" Sondertasten sind erst nach
Windows-Neustart wieder normal.
Momentan finde ich keine Lösung und bleibe erstmal beim Trick mit der
CapsLock Taste, auch wenn mich's wurmt...
ulf.
Der weit verbreitete Denkfehler ist, dass USB Scancodes verwenden würde
wie PS/2. Tatsächlich schickt eine HID Tastatur aber eine
Zustandsmeldung, also gibt in einem Report an welche Tasten gerade
gedrückt sind.
Einige Windows-Versionen haben übrigens bunte Effekte bei den Modifiers,
die reagieren teilweise erst beim nächsten Report auf eine Änderung des
Status. Daher sollte man erst den Modifier als betätigt und dann die
dazu gehörende Zeichentaste schicken.
Danke an Guido Körber:
Wir haben einen RFID-Reader entwickelt, der sich als USB-HID am Computer
anmeldet. Mehrere ID-Nummern sollten durch Semikolon getrennt werden.
Klappt auch prima, nur wenn die Daten über eine
Windows-Remote-Verbindung übertragen wurden, kam bei manchen
Windows-Versionen (XP, 2003 Server) statt des Semikolon nur ein Komma
an.
Dank dem Tipp von Guido Körber senden wir nun auch zuerst das Drücken
der Shift-Taste, dann das Zeichen mit Shift, dann den Code für Tasten
losgelassen. So klappt es.
Ein tagelanges Suchen hat ein Ende,
Markus
:)
Musste diese Sachen auf die harte Tour lernen bei der Entwicklung
unserer KeyWarrior Controller. Zum Glück arbeiten wir hier
cross-Platform und meine hauptsächliche Arbeitsplattform ist MacOS.
Dadurch sieht man dann das unterschiedliche Verhalten auf den
verschiedenen Betriebssystemen und stellt weniger die eigene geistige
Gesundheit als die der Windows-Entwickler in Frage >)
Hallo,
ich schicke vom Controller den Modifier und dann an Stelle [2] den Key.
Das tut soweit alles, es kommt sauber Shift-Ctrl usw. an. Jetzt habe ich
das Problem, dass bei dem Buchstaben Y und Z vertauscht ist. Ich habe
schon am Feld bCountry rumgespielt, aber Windows interestiert das nicht.
(ja, meine Haupttastatur ist deutsch). Hat hier auch einer der
Spezialisten einen Rat?
Vielen Dank
Wolfgang
Hallo,
unter Windows wird die Keycode-Translation erst nach der HID-Device
gemacht, d.h. alle Keyboards unterliegen der gleichen Mauschelei. Das
kann bei Hotkeys z.B. für eine CNC-Steuerung böse rausgehen: statt in
Y-Richtung fährt der Tisch in Z-Richtung.
Unter Linux kann man im Xserver die Translation an je jeweilige PID
anhängen und so ein Controltastatur unabhängig vom normal
angeschlossenen Keyboard machen.
cu Wo