2009-04-29 19 views
17

He estado buscando por un tiempo y todo el mundo parece pensar que esto no es posible usando solo Java, así que le daré una oportunidad;)¿Escucha de eventos en Java sin aplicación con foco? (Detección global de pulsaciones de teclas)

¿Hay alguna forma de tener mi Java ¿la aplicación escucha los eventos (eventos clave en particular) mientras que otra aplicación no relacionada tiene el foco de la ventana? En mi situación, estoy buscando detectar cuando el usuario ha presionado la tecla 'Pausa' en el teclado, aunque mi aplicación Java no tiene foco.

He oído a algunas personas mencionar que la única manera es escribir un código C y usar JNI. Sólo curiosidad si alguien sabía de una manera de evitar eso? O, si no, al menos un buen tutorial sobre las cosas de c/JNI.

Gracias

Respuesta

10

Tengo entendido que esto no se puede hacer. En un nivel fundamental, la JVM solo genera eventos para eventos O/S que recibe, y solo recibe eventos de entrada O/S cuando tiene foco.

Estoy seguro de que podría usar JNI para disparar el O/S para generar eventos para todas las entradas, pero eso sería muy dependiente de O/S.

+1

1. Me sorprendería mucho si hubiera una forma de hacerlo sin JNI o ​​algún otro acceso fuera de la JVM. – Eddie

+0

Puede usar clases del paquete com.melloware.jintellitype. De lo que puedes capturar entradas clave todo el tiempo. Pero necesita agregar algún archivo .dll para funciones nativas. – kajacx

3

No tengo conocimiento de ninguna forma de evitarlo. Encontré this link on Java's forums con un buen ejemplo de cómo configurar las cosas JNI y hacer un controlador de teclado global (demasiado para agregar aquí). Está un poco anticuado (2005), pero el ejemplo parece lo suficientemente completo como para comenzar.

13

Aquí es la mejor respuesta que he encontrado:

" Hay una biblioteca para manejar el teclado nativo y el control del ratón: https://github.com/kwhat/jnativehook) "

+0

Pero no puede encontrarlo para Maven :( –

+0

Está bajo com.1stleg jnativehook on maven. –

Cuestiones relacionadas