KeyEvent ohne Fokus konsumieren

Mr19Michi94

Neues Mitglied
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:

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
 

KonradN

Super-Moderator
Mitarbeiter
Wenn die verwendete Library das nicht unterstützt, dann wäre erst einmal die Frage, auf welche Plattform Du das nutzen willst. Ich bin mir jetzt gerade nicht ganz sicher, ob es auf allen Systemen funktionieren würde, aber unter Windows ist es denkbar und da reicht die JNA Library für aus, die Du unter https://github.com/java-native-access/jna finden kannst.

Da nutzt Du dann ein LowLevelKeyboardProc für den Code, den Du ausführen willst. Und da im Callback kannst Du dann überlegen, ob es weiter verarbeitet werden soll (User32.INSTANCE.CallNextHookEx Aufruf) oder ob Du stoppen willst (Dann würdest Du ein return new Pointer(1) oder so machen). Und der Aufruf., mit dem es startet und dem Du dein LowLevelKeyboardProc mitgibst, wäre User32.INSTANCE.SetWindowsHookEx.

Das wäre mein aktuelles Verständnis der Keyboard Hooks bei Windows. Ich selbst habe sowas in Java aber bisher nicht gemacht - ich kenne die Calls nur aus meiner aktiven C# Zeit. Aber die JNA Dokumentation scheint das so zu bestätigen.

Aber wichtig: Das ist eine reine Windows Lösung.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Monokuma KeyEvent in der Canvas Klasse AWT, Swing, JavaFX & SWT 0
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
Bluedaishi JavaFX JFoenix TextField KeyEvent AWT, Swing, JavaFX & SWT 2
L JavaFX ASCII Zeichen /char von KeyEvent erhalten AWT, Swing, JavaFX & SWT 5
Wurstkopp JavaFX JavaFX KeyEvent kein Zahlencode um unbekannte Mediatasten auszuwerten? AWT, Swing, JavaFX & SWT 0
B JavaFX Wo liegt mein Gedankenfehler ??? KeyEvent geht nicht ... AWT, Swing, JavaFX & SWT 8
S Swing JDialog mit KeyEvent als Rückgabe AWT, Swing, JavaFX & SWT 1
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
dat_vin KeyEvent jTextField AWT, Swing, JavaFX & SWT 12
A Swing KeyEvent mit KeyListener und KeyAdapter kürzer schreiben AWT, Swing, JavaFX & SWT 7
B Event Handling KeyEvent für "+"-Tase auf dem Numpad? AWT, Swing, JavaFX & SWT 2
R Integer to KeyEvent AWT, Swing, JavaFX & SWT 2
sylo STRG + TAB KeyEvent abfangen AWT, Swing, JavaFX & SWT 6
earlgrey_tea KeyEvent reagiert nicht auf Eingabe ("Pausentaste") AWT, Swing, JavaFX & SWT 11
Luk10 KeyEvent ... AWT, Swing, JavaFX & SWT 6
M KeyEvent, KEY_TYPED & backspace/left/right. AWT, Swing, JavaFX & SWT 3
H KeyEvent für JFrame AWT, Swing, JavaFX & SWT 3
S Spezielles KeyEvent AWT, Swing, JavaFX & SWT 6
Luma AWTEventListener KeyEvent und KEY_TYPED AWT, Swing, JavaFX & SWT 5
P KeyEvent methode an actionEvent methode weiterleiten AWT, Swing, JavaFX & SWT 5
A KeyEvent bei TAB-Druck AWT, Swing, JavaFX & SWT 10
J KeyEvent bei JTable mehrmals hintereinander ausführen AWT, Swing, JavaFX & SWT 9
J KeyEvent STRG+l, CTRL_DOWN_MASK AWT, Swing, JavaFX & SWT 7
I Pfeiltasten für KeyEvent AWT, Swing, JavaFX & SWT 4
G Windows Taste in KeyEvent? AWT, Swing, JavaFX & SWT 4
M KeyEvent - Programm mit ESC beenden AWT, Swing, JavaFX & SWT 7
H KeyEvent Leerzeichen und Backspace funktioren nicht! HILFE! AWT, Swing, JavaFX & SWT 2
S KeyEvent im JPanel AWT, Swing, JavaFX & SWT 3
G KeyEvent - Probleme AWT, Swing, JavaFX & SWT 6
G Suche einen KeyEvent für die Taste "ä" AWT, Swing, JavaFX & SWT 7
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
Georges456 NetBeans am Mac leider ohne FXML AWT, Swing, JavaFX & SWT 17
A JOptionPane OK ohne Eingabe abfangen AWT, Swing, JavaFX & SWT 10
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
N setOnKeyPressed ohne Scene AWT, Swing, JavaFX & SWT 2
M mvvm umsetzen ohne fxml AWT, Swing, JavaFX & SWT 0
L JavaFX OpenJFX16 App ohne Gradle and Maven? AWT, Swing, JavaFX & SWT 2
izoards Jar startet jedoch ohne Hintergrundfunktion AWT, Swing, JavaFX & SWT 25
L FX-Projekt: fast leere Fensterausgabe ohne Fehlermeldung AWT, Swing, JavaFX & SWT 6
H Timer ohne alles lahmzulegen? AWT, Swing, JavaFX & SWT 2
Z Random Butten erstellen ohne Container AWT, Swing, JavaFX & SWT 15
VPChief Ein JFrame ohne setUndecorated(true); nicht verschiebbar machen. AWT, Swing, JavaFX & SWT 6
Fiedlerdan Vergleich vieler Strings ohne ellenlange Argumentierten AWT, Swing, JavaFX & SWT 7
L Daten bearbeiten ohne GUI zu blockieren - daten haltung/zurück geben AWT, Swing, JavaFX & SWT 15
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
N Aktualisierung des Fensters AWT Java ohne Ruckeln AWT, Swing, JavaFX & SWT 3
T JavaFX Dialog schließt ohne dass es schließen soll AWT, Swing, JavaFX & SWT 1
K JFreeChart nicht ohne BarChartDemo startklar? AWT, Swing, JavaFX & SWT 5
GenerationLost JavaFX FileChooser speichern ohne Zieldatei? AWT, Swing, JavaFX & SWT 12
Y Objekte grafisch darstellen ohne GMF - Composite auf Canvas? AWT, Swing, JavaFX & SWT 2
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
M Menü ohne Menübar umsetzen[SWT] AWT, Swing, JavaFX & SWT 8
kilopack15 Buttons ohne Funktion AWT, Swing, JavaFX & SWT 2
S 2D-Grafik User-BufferedImage rotieren im Zentrum und ohne "anpassung" AWT, Swing, JavaFX & SWT 2
Ghostman1711 Java JFormattedTextfield MaskFormatter ohne Leerzeichen AWT, Swing, JavaFX & SWT 3
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
C Jframe ohne Rahmen AWT, Swing, JavaFX & SWT 3
R JavaFX Wert einer ChoiceBox bekommen ohne Lambdas AWT, Swing, JavaFX & SWT 11
Fishmeaker Shortcuts ohne ALT zuweisen AWT, Swing, JavaFX & SWT 1
O JTable ohne Rahmen printen AWT, Swing, JavaFX & SWT 3
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
W Swing JLabel jede Sekunde aktualisieren, ohne Timer zu benutzen AWT, Swing, JavaFX & SWT 4
M JavaFX Ein Bild ohne Rahmen fällt runter? AWT, Swing, JavaFX & SWT 2
M Zeichnen ohne vorherige Linien zu löschen AWT, Swing, JavaFX & SWT 2
F Swing JPanels übereinander ohne Mananger AWT, Swing, JavaFX & SWT 1
N GUI Design ohne GUIDesigner AWT, Swing, JavaFX & SWT 10
X Swing Ein neues Fenster öffen aber ohne ein extra Prozess zu starten AWT, Swing, JavaFX & SWT 1
C JTextfield ohne Enter feuern AWT, Swing, JavaFX & SWT 8
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
S Paint Methode ohne implements JPanel AWT, Swing, JavaFX & SWT 1
A Textfeld.append/.setText ohne Funktion AWT, Swing, JavaFX & SWT 2
T JAXB funktioniert ohne IDE nicht verlässlich AWT, Swing, JavaFX & SWT 12
H org.eclipse.swt.Slider ohne Buttons AWT, Swing, JavaFX & SWT 1
M Benutzer-Dialog ohne System.in/out AWT, Swing, JavaFX & SWT 2
K JavaFX Tableview mit fxml ohne Aktualiserung trotz Thread AWT, Swing, JavaFX & SWT 13
C JFrame paint ohne hintergrund nutzen AWT, Swing, JavaFX & SWT 6
T Swing HTML Text aus JLabel ohne "HTML-Tags" in String einlesen AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Simple Grafikanzeige ohne Desktopumgebung? AWT, Swing, JavaFX & SWT 2
F Swing Datenmodell in Tree spiegeln ohne Adapterklassen AWT, Swing, JavaFX & SWT 5
I JTable Inhalte löschen ohne den JTable zu verändern! AWT, Swing, JavaFX & SWT 5
T Bild drehen ohne Resize AWT, Swing, JavaFX & SWT 3
J Einträge aus Table löschen ohne Exception AWT, Swing, JavaFX & SWT 6
C Swing Fortschrittsanzeige im Dialog ohne Fortschrittsbalken und Abbruchoption AWT, Swing, JavaFX & SWT 7
M JSlider-Wert ändern, ohne ein ChangeEvent auszulösen AWT, Swing, JavaFX & SWT 4
J SWING - Programm ohne Eclipse etc. starten AWT, Swing, JavaFX & SWT 7
V Swing JButton ohne Border bei Anklicken AWT, Swing, JavaFX & SWT 3
M SWING Listener ohne Wirkung AWT, Swing, JavaFX & SWT 2
J Swing Farbe wählen ohne JColorChooser 2 AWT, Swing, JavaFX & SWT 23
Oliver530 JButton setEnabled(false) ohne Farbverlust AWT, Swing, JavaFX & SWT 3
B Swing JEditorPane ohne Zeilenumbruch nach InputStream AWT, Swing, JavaFX & SWT 2
D Swing JComponent zeichnen ohne sie zur Oberfläche hinzuzufügen AWT, Swing, JavaFX & SWT 2
GUI-Programmer Swing JWindow - Programm wird ohne Grund beendet AWT, Swing, JavaFX & SWT 3
N Swing JSpinner mit Datum aber ohne Uhrzeit AWT, Swing, JavaFX & SWT 2
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
S Java GUI Anwendung ohne Konsole starten AWT, Swing, JavaFX & SWT 6
J Swing JTable: Komplette Zeile aber ohne Spalten markieren AWT, Swing, JavaFX & SWT 11
C JFrame ohne Titelleiste, aber mit Borders AWT, Swing, JavaFX & SWT 2
D 3D-Grafik Java 3D ohne Plugin AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben