PC Tastatur Zeichenadresse bzw. Zeichencode auslesen

OP #3385616
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
#3386173
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.