We have a user provided string that may contain unicode characters, and we want the robot to type that string.
How do you convert a string into keyCodes that the rob
i think this is a bit late but...
Robot robot = new Robot();
   robot.keyPress( KeyEvent.VK_DEAD_ACUTE);
   robot.keyPress( KeyEvent.VK_A );
   robot.keyRelease( KeyEvent.VK_A );
   robot.keyRelease( KeyEvent.VK_DEAD_ACUTE );
that just type an "á"
Based on javamonkey79's code I've created the following snippet which should work for all Unicode values...
public static void pressUnicode(Robot r, int key_code)
{
    r.keyPress(KeyEvent.VK_ALT);
    for(int i = 3; i >= 0; --i)
    {
        // extracts a single decade of the key-code and adds
        // an offset to get the required VK_NUMPAD key-code
        int numpad_kc = key_code / (int) (Math.pow(10, i)) % 10 + KeyEvent.VK_NUMPAD0;
        r.keyPress(numpad_kc);
        r.keyRelease(numpad_kc);
    }
    r.keyRelease(KeyEvent.VK_ALT);
}
This automatically goes through each decade of the unicode key-code, maps it to the corresponding VK_NUMPAD equivalent and presses/releases the keys accordingly.
The KeyEvent Class does not have direct mappings for many unicode classes in JRE 1.5. If you are running this on a Windows box what you may have to do is write a custom handler that does something like this:
Robot robot = new Robot();
char curChar = 'Ã';
// -- isUnicode( char ) should be pretty easy to figure out
if ( isUnicode( curChar ) ) {
   // -- this is an example, exact key combinations will vary
   robot.keyPress( KeyEvent.VK_ALT );
   robot.keyPress( KeyEvent.VK_NUMBER_SIGN );
   robot.keyRelease( KeyEvent.VK_NUMBER_SIGN );
   // -- have to apply some logic to know what sequence
   robot.keyPress( KeyEvent.VK_0 );
   robot.keyRelease( KeyEvent.VK_0 );
   robot.keyPress( KeyEvent.VK_1 );
   robot.keyRelease( KeyEvent.VK_1 );
   robot.keyPress( KeyEvent.VK_9 );
   robot.keyRelease( KeyEvent.VK_9 );
   robot.keyPress( KeyEvent.VK_5 );
   robot.keyRelease( KeyEvent.VK_5 );
   robot.keyRelease( KeyEvent.VK_ALT );
}
e.g. Figure out what they key combinations are, and then map them to some sort of Object (maybe a HashMap?) for later lookup and execution.
Hope this helps :)
The best way that i find when solve simulare problem
import java.awt.AWTException;
import java.awt.Robot;
public class MyRobot {
    public static void typeString(String s)
        {
            try {
            Robot robik = new Robot();
            byte[] bytes = s.getBytes();
            for (byte b : bytes)
            {
                int code = b;
                // keycode only handles [A-Z] (which is ASCII decimal [65-90])
                if (code > 96 && code < 123) code = code - 32;
                robik.delay(40);
                robik.keyPress(code);
                robik.keyRelease(code);
            }
        } catch (AWTException e){
    }
  }
}
http://www.devdaily.com/java/java-robot-class-example-mouse-keystroke\