Ich schreibe einen Code, um Strings mit der Robot-Klasse zu schreiben. Alles ist größtenteils gut (gut, ich muss eine große switch-Anweisung verwenden, um Zeichenschlüsselcodes zu erhalten), außer einige Schlüssel haben keine Schlüsselcodes, weil sie tatsächlich eine Kombination von Shift + einige andere Schlüssel sind. Für Großbuchstaben ist es einfach zu überprüfen, mit Character.isUpperCase(c)
, aber für alle Symbole wie [email protected]#$%^&*()_+
und verschiedene Interpunktion sind nicht als "Großbuchstaben", obwohl sie Verschiebung gedrückt werden müssen, um ihre Tastenanschlag zu generieren. Ich habe versucht, dafür zu googeln, aber ich habe gerade einen Forum Post ohne zufriedenstellende Antworten gefunden. Gibt es eine Möglichkeit zu bestimmen, ob ein Zeichen eine Verschiebung benötigt, um gedrückt zu werden, und wenn ja, welches Zeichen ist die "nicht verschobene" Version?Wie bestimmen Sie, ob ein Zeichen erfordert, dass die Umschalttaste gedrückt wird, um eingegeben zu werden?
EDIT: Hier ist der Code, den ich bisher habe.
public void GenerateKeyTyped(char c) {
if (Character.isUpperCase(c)) {
r.keyPress(KeyEvent.VK_SHIFT);
}
r.keyPress(GetKeyCode(c));
r.keyRelease(GetKeyCode(c));
if (Character.isUpperCase(c)) {
r.keyRelease(KeyEvent.VK_SHIFT);
}
}
Können Sie etwas Code posten (nachdem Sie die vermutlich ginormous 'switch' Anweisung getrimmt haben)? Es gibt wahrscheinlich einen besseren Weg, um das zu tun, was Sie tun wollen, ohne eine Menge Code zu benötigen. Java weiß, wie man Schlüsselcodes in ASCII-Zeichen umwandelt; Es kann sehr wahrscheinlich schon tun, was Sie wollen. –
Hier ist der Code, den ich bisher habe, offensichtlich tut es gerade jetzt nicht, was ich will. \t public void GenerateKeyTyped (char c) { \t \t if (Character.isUpperCase (c)) { \t \t \t r.keyPress (KeyEvent.VK_SHIFT); \t \t} \t \t r.keyPress (GetKeyCode (c)); \t \t r.keyRelease (GetKeyCode (c)); \t \t if (Character.isUpperCase (c)) { \t \t \t r.keyRelease (KeyEvent.VK_SHIFT); \t} \t} r ist ein Roboter, und GetKeyCode (char c) ist die ginormous Switch-Anweisung. Was ich eigentlich versuche, ist die Implementierung einer API für die Tastatursteuerung, die in Pascal geschrieben wurde. Der GetKeyCode wird direkt durch Kopieren der Werte des GetKeyCodes der API direkt übernommen. –
Ahh, die Formatierung ist schlecht, also habe ich sie zum ursprünglichen Beitrag hinzugefügt. –