【问题标题】:KeyEvent.VK_MINUS interpreted as German 'ß' by Java RobotJava Robot 将 KeyEvent.VK_MINUS 解释为德语 'ß'
【发布时间】:2015-11-21 13:13:49
【问题描述】:

以下代码将导致在带有 Java 7 的 MAC OSX 10.10 上键入“ß”而不是“-”。欢迎提供有关如何解决此问题的任何想法。

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();
        }
    }

【问题讨论】:

  • 在运行此代码之前,您是否确保将键盘布局更改为 US?
  • 尝试使用VK_EXCLAMATION_MARK。不过我不确定。

标签: java macos awtrobot


【解决方案1】:

没有明确说明,但the Javadoc for the keyPress method 是用“键码”来表达的,这通常意味着它映射到键盘上的特定物理键,然后操作系统会对其进行解释作为一些关键事件(例如“连字符”或“双 S”)。

The standard German layout 在退格键左侧的第二个键上有双 S,这是 QWERTY 键盘上的连字符/减号。

至于如何解决这个问题,您显然需要了解键盘布局。 a library called Window Licker 应该处理机器人的布局问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 2012-11-29
    相关资源
    最近更新 更多