KeyEvent.VK_MINUS 被 Java 机器人解释为德语“ß”
KeyEvent.VK_MINUS interpreted as German 'ß' by Java Robot
以下代码将导致在 MAC OSX 10.10 和 Java 7 上键入“ß”而不是“-”。有关如何解决此问题的任何想法是欢迎。
public static void main(String[] args) {
try {
String cmd = "open /Applications/TextEdit.app";
Runtime.getRuntime().exec(cmd);
Robot robot = new Robot();
robot.delay(2000);
robot.keyPress(KeyEvent.VK_MINUS);
robot.keyRelease(KeyEvent.VK_MINUS);
} catch (AWTException | IOException e) {
e.printStackTrace();
}
}
没有明确说明,但 the Javadoc for the keyPress
method 是用 "keycodes" 表达的,这通常意味着它映射到 上的特定物理键 键盘,然后操作系统将其解释为某个键事件(例如 "hyphen" 或 "double S")。
The standard German layout 在退格键左边两个键上有双 S,这是 QWERTY 键盘上的 hyphen/minus。
至于如何解决这个问题,你显然需要了解键盘布局。 a library called Window Licker 应该可以处理机器人的布局问题。
以下代码将导致在 MAC OSX 10.10 和 Java 7 上键入“ß”而不是“-”。有关如何解决此问题的任何想法是欢迎。
public static void main(String[] args) {
try {
String cmd = "open /Applications/TextEdit.app";
Runtime.getRuntime().exec(cmd);
Robot robot = new Robot();
robot.delay(2000);
robot.keyPress(KeyEvent.VK_MINUS);
robot.keyRelease(KeyEvent.VK_MINUS);
} catch (AWTException | IOException e) {
e.printStackTrace();
}
}
没有明确说明,但 the Javadoc for the keyPress
method 是用 "keycodes" 表达的,这通常意味着它映射到 上的特定物理键 键盘,然后操作系统将其解释为某个键事件(例如 "hyphen" 或 "double S")。
The standard German layout 在退格键左边两个键上有双 S,这是 QWERTY 键盘上的 hyphen/minus。
至于如何解决这个问题,你显然需要了解键盘布局。 a library called Window Licker 应该可以处理机器人的布局问题。