Supportnet / Forum / Anwendungen(Java,C++...)
JAVA Robot
Frage
Ich wuerde gerne mit dem Robot eine Texteingabe machen.
Da ich es aufgab, einen String in eine URL einzufuegen, da es keine Methode gibt, die einen String als Rueckgabewert hat, bzw Ausgabe;
ging ich zu keyPress() und keyRelease.
Das Problem ist jetzt, dass der Zeichensatz iwie nicht stimmt.
Ein Grosses ´N´ ist eigentlich 078, doch mein integer darf nicht mit 0 anfangen und herauskommt bei 78 n
110 ist ein ,
115 gibt es gar nicht etc ...
Kennt jemand einen Index, den ich in meinem Eclipse 3.12 benutzen kann ?
Die normalen Ascii Tabellen stimmen damit nicht ueberein.
mfg
Antwort 1 von Roro
Hi!
Dein Problem resultiert daraus, dass sich die key-Codes in Javas KeyEvents eigentlich nur auf die Tasten beziehen, nicht auf die wirklichen Buchstaben. Daher ist eine Unterscheidung zwischen Klein- und Großbuchstaben nicht möglich, der VirtualKey A deckt sowohl a als auch A ab. Das sorgt natürlich auch für Unterschiede zwischen ASCII-Tabelle und der Keycode-Tabelle aus der Klasse KeyEvent.
EVENTUELL (ich kann es nicht garantieren, weil ich noch nie mit Robot gearbeitet habe) hilft es, wenn du für einen Großbuchstaben zuerst ein keyPress der Shift-Taste auslöst, dann ein keyPress / -Release des Buchstabens und zum Schluss keyRelease der Shift-Taste.
Aber wie gesagt, ich kann es nicht garantieren, denn ein Großbuchstabe wird normalerweise erkannt, weil im KeyEvent -Objekt ein Modifier gesetzt wurde, den du aber in Robot einfach nicht explizit angeben kannst.
Dein Problem resultiert daraus, dass sich die key-Codes in Javas KeyEvents eigentlich nur auf die Tasten beziehen, nicht auf die wirklichen Buchstaben. Daher ist eine Unterscheidung zwischen Klein- und Großbuchstaben nicht möglich, der VirtualKey A deckt sowohl a als auch A ab. Das sorgt natürlich auch für Unterschiede zwischen ASCII-Tabelle und der Keycode-Tabelle aus der Klasse KeyEvent.
EVENTUELL (ich kann es nicht garantieren, weil ich noch nie mit Robot gearbeitet habe) hilft es, wenn du für einen Großbuchstaben zuerst ein keyPress der Shift-Taste auslöst, dann ein keyPress / -Release des Buchstabens und zum Schluss keyRelease der Shift-Taste.
Aber wie gesagt, ich kann es nicht garantieren, denn ein Großbuchstabe wird normalerweise erkannt, weil im KeyEvent -Objekt ein Modifier gesetzt wurde, den du aber in Robot einfach nicht explizit angeben kannst.
Antwort 2 von mr_x_hacker
Hi,
ich bin ziemlich sicher, dass es mit der Shift-Taste funktioniert...
Wenn Du aber beliebige Strings per Robot schreiben willst, wirst Du in der Tat vor einem kleinen Problem stehen...
Ich würde mir eine Hashmap anlegen, welche char-Werten die entsprechenden Werte aus KeyEvent zuordnet:
Dann kannst Du den entsprechenden String durchlaufen, und Dir pro char die entsprechende Key-Konstante rausholen...
Willst Du wirklich zwischen Groß- und Kleinschreibung unterscheiden, brauchst Du entweder 2 Maps, oder Du hinterlegst pro char nicht eine Konstante, sondern mehrere (Collection oder so), die gedrückt werden sollen - also jeweils noch die SHIFT-Taste eben.
Das hätte dann in Zukunft auch noch einen Nutzen, wenn Du wirklich mal komplette Tastenkombinationen tippen willst... (ich benutze den Robot gerne zum "cheaten" bei Spielen, wo man Tastencombos eingeben muß... :))
Ciao Sascha
ich bin ziemlich sicher, dass es mit der Shift-Taste funktioniert...
Wenn Du aber beliebige Strings per Robot schreiben willst, wirst Du in der Tat vor einem kleinen Problem stehen...
Ich würde mir eine Hashmap anlegen, welche char-Werten die entsprechenden Werte aus KeyEvent zuordnet:
HashMap hm = new HashMap();
hm.put(´a´, KeyEvent.VK_A);
hm.put(´b´, KeyEvent.VK_B);
hm.put(´c´, KeyEvent.VK_C);
...usw...
Dann kannst Du den entsprechenden String durchlaufen, und Dir pro char die entsprechende Key-Konstante rausholen...
Willst Du wirklich zwischen Groß- und Kleinschreibung unterscheiden, brauchst Du entweder 2 Maps, oder Du hinterlegst pro char nicht eine Konstante, sondern mehrere (Collection oder so), die gedrückt werden sollen - also jeweils noch die SHIFT-Taste eben.
Das hätte dann in Zukunft auch noch einen Nutzen, wenn Du wirklich mal komplette Tastenkombinationen tippen willst... (ich benutze den Robot gerne zum "cheaten" bei Spielen, wo man Tastencombos eingeben muß... :))
Ciao Sascha

