我当前的项目涉及使用 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/