# Robot virtual keyboard problem



## Romsl (5. November 2008)

Hi,

Hat jemand eine Idee wie man direkt Java Strings bzw. char direkt auf einem java.awt.Robot als key event auslösen kann?

z.B. wäre es schön wenn folgendes ginge. (es ist mir klar, dass es das nicht tut, sollte aber kurz beschreiben worauf ich hinaus möchte)

char c = 'g';

robot.keyPress(c);

Problem:

char c = 'A'; würde ein 'a' auf dem Keyboard auslösen...

Gruß,
  -- Roman


----------



## takidoso (5. November 2008)

hi Romsl,
habe mal gegoogelt und traf auf folgenden Code

```
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class TestSimulateKeystroke 
{
   /**
   * @param args
   * @throws AWTException
   */
   public static void main(String[] args) throws AWTException 
   {
      Robot robot = new Robot();
      for (int i=0; i<10; i++) 
      {
         robot.delay(1000);                  //warte 1000 ms
         robot.keyPress(  KeyEvent.VK_SHIFT);//drücke Shift (hält gedrückt)
         robot.keyPress(  KeyEvent.VK_H);  //drücke h (mit Shift H)
         robot.keyRelease(KeyEvent.VK_SHIFT);//lasse Shift los
         robot.keyPress(  KeyEvent.VK_H);    //drücke h
      }
   }
}
```

Du findes den auch unter http://www.wer-weiss-was.de/theme35/article4711446.html

viel Spaß damit

Takidoso


----------



## Romsl (5. November 2008)

Danke schon einmal.

Das ist nicht mein Problem. Vielleicht habe ich das auch ein wenig seltsam beschrieben.

Ich bekomme von einer Anwendung über UDP einen String gesendet. Dieser String entspricht der Taste die auf der Tastatur ausgelöst werden soll.

Sprich der gesendete String ist z.B. ein großes 'H'. Jetzt möchte ich das VK_H auslösen. Mir fehlt momentan die Lösung wie ich von dem String (oder Character) 'H' auf den keyType VK_H komme.

Gruß,
  -- Roman


----------



## RedWing (5. November 2008)

Hallo,

die KeyCodes (A-Z) haben laut Doku dieselben Werte wie die Asciicodierung der entsprechenden Buchstaben.


http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/KeyEvent.html#VK_A

So sollte dein Vorhaben dann funktionieren.

Gruß,
RedWing


----------



## Romsl (5. November 2008)

Da hast Du recht. Aber ich habe auch Sonderzeichen wie '?', '#', '§',...


----------



## RedWing (5. November 2008)

Hallo,

da wirst du mit dem eleganten Weg wohl AFAIK schlechte Karten haben. Zumal Zeichen wie § und ß leider gar nicht universell für ein Virtual Keyboard sind. Was du machen könntest ist rauszufinden was die restlichen von dir gebrauchten Tasten für einen KeyCode haben, und dann eine Hashmap anlegen wo zu jedem String der entsprechende KeyCode zugeordnet ist... 
Wenn du jetzt Zeichen wie bspw. das ? und das ß (deutsches Keyboard) hast, würd ichs einfach so machen das du dem ß den normalen KeyCode zuordnest und dem ? den normalen KeyCode + 1000. Somit könntest du dann im Code elegant rausfinden ob du die Shifttaste vorher drücken musst oder nicht.

HTH,
RedWing


----------

