Sonderzeichen und Robot

Thunderhit

Grünschnabel
Habe mich in der Suche etwas schlau gemacht, der java.awt.Robot scheint problemlos bei normalen Zeichen zu funktionieren, aber bei Sonderzeichen (Leerzeichen, / \ usw.)hat er so seine Probleme, zumindest bei der Variante die ich nutze, denn ich will Strings vom Robot eingeben lassen und habe dazu
Code:
kv = KeyStroke.getKeyStroke( key.substring( i, i+1 ).toUpperCase()).getKeyCode();
robot.keyPress(kv);
robot.keyRelease(kv);
Nur leider bekomm ich bei Sonderzeichen und Umlauten eine NullPointerException...
Sonderzeichen könnten natürlich über z.B. KeyEvent.VK_SLASH gemacht werden, nur müsste das für jedes Zeichen umgesetzt werden... das Problem mit den Umlauten ist dann immer noch nicht gelöst, weiß einer eventuell eine Lösung? Wäre es nicht möglich das über den ASCII Code zu machen? Dann wäre das kein Problem...
Wann die Eingabe geschieht entscheidet das Programm intern, also im Zweifelsfall nix mit Keylistener.
 
Also ich habe es einmal ausprobiert ohne das ich dem Roboter ein Event gegeben habe, sondern direckt ein char
Code:
                Robot rob = new Robot();
		rob.keyPress( ' ' );
                rob.keyPress( 'p' );

Falls das nicht im Sinne des Erfinders ist, hätte ich noch eine unbestätigte vermutung:

Du führst ja die Methode toUppercase() aus, aber wie soll so ein Großes Leerzeichen aussehehn, deshalb kommt null zurück.
Aber wie gesagt nur eine Vermutung habs noch nicht getestet.

mfG bigboombang
 
Das mit dem Zeichen funktioniert nur, wenn es großgeschrieben ist, aber stimmt, dann könnte ich mir die eine Zeile davor sparen. Nur Umlaute und Sonderzeichen nimmt er immer noch nicht an, das Leerzeichen funktioniert aber. Er gibt dann einen Fehler "Invalid Key code", da wie ich las Sonderzeichen keinen eigenen Key Code haben... toll.
Daher dachte ich als einzige Möglichkeit wäre für an sich jedes relevante Sonderzeichen ein CASE zu machen, wo dann KeyEvent mit dem Sonderzeichen genutzt wird...
Gibt es sonst keine andere Klasse die wie Robot Tastendrücke eingibt?
 
Zurück