Эмулирования двойного нажатия клавиши 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();
    }
}

}


Ответы (0 шт):