1

我目前的项目涉及使用 Java 的 Robot 类来模拟按键的自动化。我的问题是某些键码无法传递给机器人的keypress(int keycode)方法。

我已经知道的:

在阅读了这个问题的解决方案后:Why are some KeyEvent keycodes throwing IllegalArgumentException: Invalid key ocode,我开始修改我的代码,更改某些符号,如£ (VK_DOLLAR)to VK_SHIFT + VK_3& (VK_AMPERSAND)toVK_SHIT + VK_7等......

我的问题:

然而,我的问题是如何确定哪个键在与 shift 结合时给出什么符号,因为不同的键盘(并且通常来自操作系统的不同键盘配置)会改变这些。

一个典型的例子是@ (at symbol) and " (double quote). VK_SHIFT + VK_2在某些系统上可能是 at 符号,而在其他系统上可能是双引号。

在调用机器人按键之前,Java 中是否有要检查的符号依赖于哪个键?

提前致谢。

4

1 回答 1

1

使用机器人时,我已经经历了 IllegalArgumentException。这是因为您的键盘布局。我的解决方案是使用 Alt 代码:

public static void alt(int event1, int event2, int event3, int event4) throws Exception {

Robot bot = new Robot();
bot.delay(50); //Optional
    bot.keyPress(KeyEvent.VK_ALT);

        bot.keyPress(event1);
        bot.keyRelease(event1);

        bot.keyPress(event2);
        bot.keyRelease(event2);

        bot.keyPress(event3);
        bot.keyRelease(event3);

        bot.keyPress(event4);
        bot.keyRelease(event4);

    bot.keyRelease(KeyEvent.VK_ALT);

}

它使发送 Alt 代码变得容易。

例如,如果你想要一个&符号,只需使用alt(KeyEvent.VK_NUMPAD0, KeyEvent.VK_NUMPAD0, KeyEvent.VK_NUMPAD3, KeyEvent.VK_NUMPAD8);

您只需确保 Num Lock 已打开。

获取所需替代代码的有用网站是http://www.alt-codes.net/

于 2012-12-26T13:04:11.990 回答