Hallöchen
kurz: Wie kann ich ein KeyEvent konsumieren, wenn meine Java-Applikation nicht den Fokus hat?
Hintergrund: Wenn ich Netflix/Prime/Disney+ schaue, würde ich gerne die Tasten von meinen Präsentationspointer als Stop/Play-Fernbedienung benutzen, d. h. ein eingehendes KeyEvent erfassen und stattdessen Leertaste ausführen lassen.
was ich habe: Ich benutze die lib von "NativeKeyListener", um ohne Fokus KeyEvents zu registrieren und lasse dann einen Space-Click ausführen.
Das ist der KeyListener:
Das passiert in der Main:
was noch fehlt: Ich müsste noch das KeyEvent vernichten, das ursprünglich vom Pointer gesendet wird, aber NativeKeyListener hat keine consume()-Methode.
Herzlichen Dank schonmal für eure Hilfe.
Viele Grüße
Michi
kurz: Wie kann ich ein KeyEvent konsumieren, wenn meine Java-Applikation nicht den Fokus hat?
Hintergrund: Wenn ich Netflix/Prime/Disney+ schaue, würde ich gerne die Tasten von meinen Präsentationspointer als Stop/Play-Fernbedienung benutzen, d. h. ein eingehendes KeyEvent erfassen und stattdessen Leertaste ausführen lassen.
was ich habe: Ich benutze die lib von "NativeKeyListener", um ohne Fokus KeyEvents zu registrieren und lasse dann einen Space-Click ausführen.
Das ist der KeyListener:
Java:
import com.github.kwhat.jnativehook.keyboard.NativeKeyEvent;
import com.github.kwhat.jnativehook.keyboard.NativeKeyListener;
public class PointerListener implements NativeKeyListener {
private Main main;
public PointerListener(Main main)
{
this.main = main;
}
public void nativeKeyPressed(NativeKeyEvent e)
{
if (e.getKeyCode() == 3657)
main.setIsLeftPressed(true);
else if (e.getKeyCode() == 3665)
main.setIsRightPressed(true);
else if (e.getKeyCode() == 52)
main.setIsScreenPressed(true);
}
public void nativeKeyReleased(NativeKeyEvent e)
{
if (e.getKeyCode() == 3657)
main.setIsLeftPressed(false);
else if (e.getKeyCode() == 3665)
main.setIsRightPressed(false);
else if (e.getKeyCode() == 52)
main.setIsScreenPressed(false);
}
public void nativeKeyTyped(NativeKeyEvent e)
{
}
}
Das passiert in der Main:
Java:
public void setIsLeftPressed(boolean bool)
{
isLeftPressed = bool;
}
public void setIsRightPressed(boolean bool)
{
isRightPressed = bool;
}
public void setIsScreenPressed(boolean bool)
{
isScreenPressed = bool;
if (bool)
robot.keyPress(KeyEvent.VK_SPACE);
}
was noch fehlt: Ich müsste noch das KeyEvent vernichten, das ursprünglich vom Pointer gesendet wird, aber NativeKeyListener hat keine consume()-Methode.
Herzlichen Dank schonmal für eure Hilfe.
Viele Grüße
Michi