Why doesn't in detect my pressed Key? Nothing happens. The program doesn't tell me when i press w and it doesn't stop when i press escape.
main class:
package awd;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.HashMap;
import java.util.Map;
public class main {
public static void main(String[] args) {
do {
if (Keyboard.isKeyPressed(KeyEvent.VK_W)) System.out.println("W is pressed!");
} while (!Keyboard.isKeyPressed(KeyEvent.VK_ESCAPE));
}
}
Keyboard class:
package awd;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.HashMap;
import java.util.Map;
public class Keyboard {
private static final Map<Integer, Boolean> pressedKeys = new HashMap<>();
static {
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(event -> {
synchronized (Keyboard.class) {
if (event.getID() == KeyEvent.KEY_PRESSED) pressedKeys.put(event.getKeyCode(), true);
else if (event.getID() == KeyEvent.KEY_RELEASED) pressedKeys.put(event.getKeyCode(), false);
return false;
}
});
}
public static boolean isKeyPressed(int keyCode) { // Any key code from the KeyEvent class
return pressedKeys.getOrDefault(keyCode, false);
}
}
It should tell me, when w is pressed and it should stop when i press escape.