重点与机器人按键

时间:2012-03-22 00:11:12

标签: java awtrobot

我一直在尝试从awt使用Robot,在应用程序上输入一些文本。问题是,我无法输入任何字母,如ê,à或á。 我已经尝试过这样的打印^ e例如但即使这样也行,它只是不打印任何VK_CIRCUMFLEX

不确定这是否重要,但我正在Mac上进行测试。

任何帮助都会很好。

1 个答案:

答案 0 :(得分:3)

您可以使用剪贴板结合CTRL / COMMAND + V为您完成工作。下面的代码至少适用于Windows(Mac键组合可能需要不同的序列才能进行粘贴)。

public static void main(String[] args) throws AWTException {
    String osName = System.getProperty("os.name");        
    boolean isOSX = osName.startsWith("Mac OS X");
    boolean isWin = osName.startsWith("Windows");

    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    StringSelection str = new StringSelection("Héllõ Wörld");
    clipboard.setContents(str, str);
    Robot robot = new Robot();

    if (isMac) {
        // ⌘-V on Mac
        robot.keyPress(KeyEvent.VK_META);
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_META);        
    } else if (isWin) {
        // Ctrl-V on Win
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_CONTROL);
    } else {
        throw new AssertionError("Not tested on "+osName);
    }
}