【发布时间】:2018-05-15 02:23:39
【问题描述】:
我正在使用内置的 Java 机器人类创建一个自动打字机。我也在 Mac 上构建它,我遇到了一个让我难过的根本缺陷。不管怎样,
“shift”键没有注册。
我试过typerBot.keyPress(KeyEvent.VK_SHIFT); 和一些关键代码,包括typerBot.keyPress(60);
我找遍了整个网络,但我找不到任何东西。
这是一个小示例程序,它复制了我在机器上遇到的问题:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class RobotClass {
public static void main(String[] args) throws InterruptedException {
try { //Gives you 5 seconds to click into a suitable environment for the robot to type
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String text = "AAAAAAAAAA";
for(char c : text.toCharArray()) {
RobotClass.typeChar(c);
Thread.sleep(200);
}
}
public static void typeChar(char c) {
try {
Robot typerBot = new Robot();
switch(c) {
case 'A':
typerBot.keyPress(KeyEvent.VK_SHIFT);
typerBot.keyPress(KeyEvent.VK_A);
typerBot.keyRelease(KeyEvent.VK_A);
typerBot.keyRelease(KeyEvent.VK_SHIFT);
break;
}
} catch (AWTException e) { e.printStackTrace(); }
}
}
输入:AAAAAAAAAA
输出:aaaaaaaaaa
我的问题:为什么在 mac 上无法识别 shift 键?
【问题讨论】:
-
代码会很好 - 个人没有遇到问题(最近)
-
我是这个网站的新手,所以我不确定如何有效地发布代码,但这里就是。我把它缩短到 1 个案例,这样你就可以看到发生了什么。公共类 RobotClass { 公共静态机器人 typerBot; public static void typeCharacter(char c) throws AWTException { typerBot = new Robot();字符键值 = c; typerBot.keyRelease(KeyEvent.VK_SHIFT); switch(keyVal) { case 'A': typerBot.keyPress(KeyEvent.VK_SHIFT); typerBot.keyPress(KeyEvent.VK_A);休息; } } }
标签: java macos keypress shift awtrobot