I found the method addAWTKeyListener in the class Toolkit, but I can’t get it to work properly, whether or not the window has focus. My code is as follows:
import java.awt.AWTEvent;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;
public class KeyTest {
public static void main(String[] args){
Thread t = new Thread(){
@Override
public void run() {
System.out.println("STARTING");
Toolkit kit = Toolkit.getDefaultToolkit();
kit.addAWTEventListener(new AWTEventListener(){
@Override
public void eventDispatched(AWTEvent event) {
System.out.println("EVENT");
if(event instanceof KeyEvent){
KeyEvent kEvent = (KeyEvent) event;
System.out.println(kEvent.getKeyCode());
}
}
}, AWTEvent.KEY_EVENT_MASK);
while(true);
}
};
t.start();
}
}
Is there something I’m doing wrong? I get to the point that STARTING prints and there are no errors. The even is simply not called.
I may be wrong as I’m certainly not an expert, but as far as I know what you’re trying to do isn’t possible in Java.
Are you trying to capture a key click using a Java program, but without creating a window? Part of Java’s security, and this is what I may be wrong on, is that it can only listen to events inside Java windows created by that particular Java program.
So if you were trying to make something key-logger-esque that runs in the background and captured a key press, it wouldn’t be able to do that.
I wish I could give you a more concrete answer but I hope this helped.