gpt4 book ai didi

Mac 上的 Java 机器人按键 "shift"?

转载 作者:行者123 更新时间:2023-11-30 06:10:31 24 4
gpt4 key购买 nike

我正在使用内置的 Java 机器人类创建一个自动打字机。我也在 Mac 上构建它,但我遇到了一个困扰我的基本缺陷。无论如何,

the "shift" key does not register.

我尝试过 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 键?

最佳答案

您必须仔细考虑如何应用击键,记住,您正在“模拟”物理用户。

这意味着,为了能够输入 A,您需要按 SHIFTA 然后释放 ASHIFT(或者至少在完成后释放SHIFT)

以下是一个非常基本的测试,演示了总体概念。打开文本编辑器,运行程序,您将有 5 秒的时间让编辑器进入键盘焦点

Robot bot = new Robot();
bot.setAutoDelay(10);
Thread.sleep(5000);
Map<Character, Integer> mapStrokes = new HashMap<>();
mapStrokes.put('t', KeyEvent.VK_T);
mapStrokes.put('h', KeyEvent.VK_H);
mapStrokes.put('i', KeyEvent.VK_I);
mapStrokes.put('s', KeyEvent.VK_S);
mapStrokes.put(' ', KeyEvent.VK_SPACE);
mapStrokes.put('e', KeyEvent.VK_E);
mapStrokes.put('a', KeyEvent.VK_A);
String text = "This is A test";
for (char value : text.toCharArray()) {
if (Character.isUpperCase(value)) {
bot.keyPress(KeyEvent.VK_SHIFT);
}
int keyStroke = mapStrokes.get(Character.toLowerCase(value));
System.out.println("Type " + value);
bot.keyPress(keyStroke);
bot.keyRelease(keyStroke);
if (Character.isUpperCase(value)) {
bot.keyRelease(KeyEvent.VK_SHIFT);
}
}

关于Mac 上的 Java 机器人按键 "shift"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50341453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com