2010-08-16 14 views
5

Necesito detectar cuándo está presente la actividad del mouse o del teclado. Mi aplicación se ejecuta en segundo plano (bandeja) y necesito detectar esta actividad incluso cuando mi aplicación no está enfocada.Actividad del teclado Java/Mouse (incluso fuera de mi aplicación)

No necesito saber qué teclas se presionaron, sino simplemente CUANDO se presionan.

¿Puedo hacer esto solo con Java? He leído algunas soluciones usando JNI y C++/C, pero parecen ser específicas del sistema operativo. ¿Existe una solución fácil para esto que funcione con Windows, Linux y Mac?

Gracias!

+1

Este tipo de cosas es necesariamente específico de la plataforma, ya que las diferentes plataformas de sistemas operativos ofrecen esta función de diferentes maneras, y algunas configuraciones ni siquiera podrían ofrecer en absoluto. –

+0

OK ACTUALIZACIÓN: Entonces, he encontrado una biblioteca para windows (jintellitype) y para linux (jxgrabkey). ¿Alguien sabe de uno para MAC OSX? –

+0

Probablemente voy a decir que esta no va a ser una pregunta para la que obtendrás una buena respuesta. Básicamente, usted quiere que su programa se comporte como un registrador de claves, y esos generalmente tienen que engancharse en el kernel. Java no tiene el poder para hacer eso, así que no tienes suerte. –

Respuesta

3

Como se requiere JNI, que depende de las API específicas del sistema operativo, la única forma sería tener una implementación para cada sistema operativo compatible y cargarlo dinámicamente después de detectar el sistema operativo en su aplicación.

Para Windows Java Global Keyboard/Mouse Hook – JNI

+0

Con permiso de Jotschi (el autor original del teclado/mouse hook), tomé su biblioteca hace años y creé una nueva versión. Encuentre la última versión y ejemplos [en GitHub] (https://github.com/kristian/system-hook). Además de una descripción de la biblioteca en [la publicación del blog] (http://kra.lc/blog/2016/02/java-global-system-hook/). –

Cuestiones relacionadas