Java 机器人 - 检查符号键

标签 java keyboard awt keypress awtrobot

我当前的项目涉及使用 Java 的 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 组合时给出什么符号,因为不同的键盘(通常是操作系统的不同键盘配置)会改变这些。

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

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

提前致谢。

最佳答案

我在使用机器人时已经遇到了 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/

关于Java 机器人 - 检查符号键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14034069/

相关文章:

Android应用程序开发问题: How do I lower keyboard after onClick?

java - 小程序中不显示按钮

java - 将 Swing 按钮添加到使用 AWT 绘制的程序中

java - 无法获取 LAZY - JPA

java - 有界类型参数有什么好处?

keyboard - 十六进制键盘扫描代码和 USB HID 键盘文档列表

java - 编译后的java程序没有输出

java - 如何更新 JViewPort

java - 如何使用 GSON 在对象中插入许多 JSON 属性

ios - 如何让 iOS 键盘在整个应用程序生命周期中出现/保持?