Forum: Mikrocontroller und Digitale Elektronik PC Tastatur Zeichenadresse bzw. Zeichencode auslesen


von Jonas G. (fallobst)


Lesenswert?

Hallo,
ich arbeite gerade hier dran:
Beitrag "Java Sendkeys"

und bin dabei auf folgendes gestoßen:
http://kickjava.com/src/java/awt/event/KeyEvent.java.htm

Daraus habe ich geschlossen, dass jedes Zeichen auf einer Tastatur seine 
eigene Adresse oder seinen eigenen Code hat.

Das '!' ist zum Beispiel 0x0205 bzw. 517.

Wie kann ich die Codes für verschiedene andere Zeichen herausfinden oder 
auslesen, z. B '§'?

Danke,
fallobst

von Jonas G. (fallobst)


Lesenswert?

Hallo,
ich hab' mir jetzt das:
http://playground.arduino.cc/Main/PS2KeyboardExt2
angeguckt, da hier auch 'ne Tastatur (PS2) ausgelesen wird. Das passt 
aber irgendwie nicht. Das ist doch beides hexadezimal, oder? Oder habe 
ich etwas anderes übersehen.

fallobst

von Axel S. (a-za-z0-9)


Lesenswert?

Jonas G. schrieb:
> Hallo,
> ich arbeite gerade hier dran:
> Beitrag "Java Sendkeys"
>
> und bin dabei auf folgendes gestoßen:
> http://kickjava.com/src/java/awt/event/KeyEvent.java.htm

Zitat:

>> "Key pressed" and "key released" events are lower-level and depend
>> on the platform and keyboard layout.

> Daraus habe ich geschlossen, dass jedes Zeichen auf einer Tastatur seine
> eigene Adresse oder seinen eigenen Code hat.

Tastaturen senden Scancodes Details dazu findest du unter diesem 
Suchbegriff. z.B. http://retired.beyondlogic.org/keyboard/keybrd.htm

> Das '!' ist zum Beispiel 0x0205 bzw. 517.

Das würde dann aber nicht zu einem Scancode passen. Das "!" liegt auf 
der gleichen Taste wie "1" und wird durch das gleichzeitige Drücken von 
Shift erreicht. Die Sequenz von Scancodes wäre also 0x12 (linke 
Shift-Taste gedrückt), 0x16 ("1!" Taste gedrückt) gefolgt von 0x92 
(Shift losgelassen) und 0x96 ("1!" losgelassen) - letztere in beliebiger 
Reihenfolge. Bzw. alternativ mit der rechten Shift-Taste.

Aber auf normalen Architekturen kriegt man in der Applikation keine 
Scancodes zu sehen. Stattdessen werden Scancodes von einem 
Tastaturtreiber in Abhängigkeit von einem landestypischen Layout in 
Tastencodes umgesetzt. Normale Zeichen werden typisch in ASCII oder 
einer Erweiterung davon (latin1, cp1250, unicode) codiert, Sonderzeichen 
als Escape-Sequenz.

Andere Architekturen definieren ihren eigenen Satz an Zeichencodes. Z.B. 
X11 nennt das keysym und definiert die mit "sprechenden" Namen

http://www.in-ulm.de/~mascheck/X11/keysyms.txt

X11 hat keine unterschiedlichen "make" und "break" Codes, sondern 
unterscheidet KeyPress und KeyRelease Events (mit dem gleichen 
keysym).

K.a. wie das unter Windoze ist, aber irgendwie in die Richtung wird es 
auch gehen. Sicherlich mit vertrackten Details.

Das ist genau das, was "depend on the platform and keyboard layout" in 
der AWT Doku bedeutet. Wenn du es gerne standardisiert hast, beschränke 
dich auf "key typed" Events.


XL

von c-hater (Gast)


Lesenswert?

Axel Schwenke schrieb:

> K.a. wie das unter Windoze ist, aber irgendwie in die Richtung wird es
> auch gehen.

Sogar ziemlich genau so.

von Michael_ (Gast)


Lesenswert?

Von ATMEL gibt es eine Applikation AVR313 für eine PC-Tastatur.

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.