- IDE = Eclipse 2019-12 IDE
- JavaFX = version 13
- OS = macOS Catalina 10.15.3
- jnativehook = version 2.1.0
- libuiohook = dependency of jnativehook
See [this issue on the jnativehook github page](https://github.com/kwhat/jnativehook/issues/287) for more information.
The jnativehook library uses the JNI to call compiled c++ code that creates Core Graphics event taps when run on a mac. When the system input events occur, in Java I can specify event handlers to handle them.
Most mouse events register fine and are passed to the Java event handlers. However, most key events are completely ignored. I’ve gone all the way to the source c++ code (__libuiohook__) to monitor where the event tap is created and confirm that no events are being registered. However, when I run the __libuiohook__ through a compiled c++ driver program (not in Java), all events are registered correctly.
At this point I’m pretty sure that the issue of lost events has to do with the isolation of the JVM from the rest of the system. Does anyone know how to pass Core Graphics/Quartz events through to a Java app?