Robert: KeyEvent.getKeyLocation()-Ersatz für Java 1.1 gesucht

Halli,

hab da ein kleines Java-Problem.

In einem (signierten) Applet brauche ich nicht nur die Information, welche Taste (z.B. Ziffer 9) gedrückt wurde, sondern auch die Information, welche dieser Tasten (die normale oder die auf dem Ziffernblock) gedrückt wurde.

Aber auch, ob z.B. die linke oder die rechte Ctrl-Taste gedrückt wurde usw.

KeyEvent bietet eine entsprechende Methode (getKeyLocation), die
KEY_LOCATION_LEFT, KEY_LOCATION_RIGHT, KEY_LOCATION_NUMPAD, KEY_LOCATION_STANDARD oder KEY_LOCATION_UNKNOWN zurückliefert.

Wunderbar, genau das brauche ich. Leider aber gibt es diese Methode erst in der Java Version 1.4

Da die User des Applets (mehr oder weniger geschlossener Benutzerkreis) aber die Microsoft VM benutzen (ja, sie tun das, obwohl sie ein Auslauf-Modell ist und von Microsoft nicht mehr vertrieben wird und ab nächstem Jahr auch nicht mal mehr Security-Patches gemacht werden, siehe http://www.microsoft.com/windowsxp/pro/evaluation/news/jre.asp) und auch (noch?) nicht zu einem Update auf die Sun VM bereit sind, brauche ich also einen Weg, diese Information unter der Microsoft VM zu bekommen.

Kennt jemand eine Microsoft-Klasse für den Zweck?
Oder auch eine Lösung mit Java Native Interface (für Windows würde ausreichen).

Hat da jemand was?

Vielen Dank im Voraus

cu,
Robert

  1. Hallo,

    geht das nicht mit getKeyCode() ??
    Das müsste doch - je nach Taste - andere Zahlen liefern. (z.B. VK_NUMPAD_9 und VK_9)
    Jedenfalls interpretiere ich die Doku so - getestet habe ich das nicht...

    Dominik

    PS:
    Ich fände es extrem "ungeschickt" jetzt noch etwas für die MS Java VM zu entwickeln, was nicht auf Sun VM läuft. Jedenfalls aus Sicht der Firma die das bezahlt. Falls du natürlich selbständig bist und dir so einen lukrativen Folgeauftrag sicherst ist es sehr geschickt :-)

    1. Halli,

      geht das nicht mit getKeyCode() ??
      Das müsste doch - je nach Taste - andere Zahlen liefern. (z.B. VK_NUMPAD_9 und VK_9)
      Jedenfalls interpretiere ich die Doku so - getestet habe ich das nicht...

      Ok, die Ziffern waren ein schlechtes Beispiel.

      Aber es gibt z.B. nur VK_ENTER. Und kein VK_NUMPADENTER.
      Oder nur VK_CONTROL, aber nicht VK_CONTROL_LEFT/VK_CONTROL_RIGHT.

      Ich fände es extrem "ungeschickt" jetzt noch etwas für die MS Java VM zu entwickeln, was nicht auf Sun VM läuft.

      Ganz meine Meinung. Aber der Kunde ist König... ;-)

      cu,
      Robert

  2. Halli,

    Kennt jemand eine Microsoft-Klasse für den Zweck?
    Oder auch eine Lösung mit Java Native Interface (für Windows würde ausreichen).
    Hat da jemand was?

    Hab was gefunden: com.ms.Win32.User32 enthält die gewünschten Native-Methoden.

    Danke an alle, die geguckt hatten...

    cu,
    Robert