Java Robot - 检查符号密钥

时间:2012-12-25 21:20:59

标签: java keyboard awt keypress awtrobot

我目前的项目涉及使用Java的Robot类进行自动化,以模拟按键。 我的问题是某些密钥代码无法传递给Robot的keypress(int keycode)方法。

我已经知道的事情:

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

我的问题:

我的问题是,如何确定哪个键与shift结合时会给出什么符号,因为不同的键盘(通常是与OS不同的键盘配置)会改变这些。

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

在调用Robot按键之前,Java是否还要检查符号所依赖的键?

提前致谢。

1 个答案:

答案 0 :(得分: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已开启。

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