Эмулирования двойного нажатия клавиши W, делаю я это на Java
пытаюсь эмулировать двойное нажатия W для спринта в Minecraft, пытался сделать у меня получается что оно вечно выписывает мне wwwwwwwwww а как я хотел при каждом нажатии оно нажимало не 1 раз на W а 2 WW
public class KeyboardEmulation { private static boolean isKeyPressed = false;
public static void main(String[] args) {
JFrame frame = new JFrame();
JTextField textField = new JTextField();
frame.add(textField);
frame.setSize(300,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
GlobalScreen.registerNativeHook();
} catch (NativeHookException ex) {
System.err.println("Failed to register native hook: " + ex.getMessage());
System.exit(1);
}
GlobalScreen.addNativeKeyListener(new NativeKeyListener() {
@Override
public void nativeKeyPressed(NativeKeyEvent e) {
if (e.getKeyCode() == NativeKeyEvent.VC_W) {
if (!isKeyPressed) {
isKeyPressed = true;
} else {
emulateDoubleKeyPress(KeyEvent.VK_W);
isKeyPressed = false;
}
}
}
@Override
public void nativeKeyReleased(NativeKeyEvent e) {
if (e.getKeyCode() == NativeKeyEvent.VC_W) {
isKeyPressed = false;
}
}
@Override
public void nativeKeyTyped(NativeKeyEvent e) {
}
});
// Disable auto key-repeat (optional)
GlobalScreen.setEventDispatcher(null);
}
private static void emulateDoubleKeyPress(int keyCode) {
try {
Robot robot = new Robot();
robot.keyPress(keyCode);
robot.keyRelease(keyCode);
Thread.sleep(10); // Задержка между двумя нажатиями
robot.keyPress(keyCode);
robot.keyRelease(keyCode);
} catch (AWTException | InterruptedException e) {
e.printStackTrace();
}
}
}