【问题标题】:Accent with robot keypress带有机器人按键的口音
【发布时间】:2012-03-22 12:25:55
【问题描述】:

我一直在尝试使用来自 awt 的 Robot,在应用程序上输入一些文本。问题是我不能让它输入任何字母,如ê、à或á。 例如,我尝试过这样的打印 ^e,但即使这样也行,它只是不会为 VK_CIRCUMFLEX 打印任何东西

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

任何帮助都会很好。

【问题讨论】:

标签: java awtrobot


【解决方案1】:

您可以将剪贴板与 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);
    }
}

【讨论】:

  • 很好,很有效。但我不确定它是否能解决我的问题。我想我必须为每个字符发送按键来解决我的问题。
  • 我需要更改为 VK_META 而不是 VK_CONTROL 才能在 mac 上工作。您可以将其添加到您的答案中
  • 已更新。我还没有在我的 Mac 上测试过,但现在应该更近了。如果您需要每个字符的按键事件,则可以通过为每个击中的 ⌘-V 使用一个新字符来更新剪贴板内容。
  • 我无法在 Mac 上制作。我真的需要每一次按键,而且换档键出现问题,无法正常工作。我只是在 Windows pc 上工作。我会接受您的回答,因为如果我只需要输入文本而不是每次按键,这将是解决问题的好方法。谢谢
猜你喜欢
  • 1970-01-01
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
相关资源
最近更新 更多