Акцент с помощью робота - PullRequest
2 голосов
/ 22 марта 2012

Я пытался использовать Robot из awt для ввода текста в приложение. Проблема в том, что я не могу заставить его печатать любые буквы, такие как ê, à или á. Я пытался сделать такую ​​печать ^ например, но даже это работает, просто ничего не печатается для VK_CIRCUMFLEX

Не уверен, что это важно, но я тестирую на Mac.

Любая помощь будет хорошо прийти.

1 Ответ

3 голосов
/ 22 марта 2012

Вы можете использовать буфер обмена в сочетании с 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);
    }
}
...