sirve - ¿Escucha de eventos en Java sin que la aplicación tenga foco?(Detección global de pulsación de tecla)
métodos de la clase keyevent (3)
He estado buscando por un tiempo y todo el mundo parece pensar que esto no es posible usando solo Java, así que daré MUCHA oportunidad;)
¿Hay alguna forma de que mi aplicación Java escuche eventos (eventos clave en particular) mientras que otra aplicación no relacionada se enfoca en la ventana? En mi situación, busco detectar cuándo el usuario ha presionado la tecla ''Pausa'' en el teclado aunque mi aplicación Java no esté enfocada.
He escuchado a algunas personas mencionar que la única forma es escribir un código C y usar JNI. ¿Solo por curiosidad si alguien supiera alguna forma de evitar eso? O, si no, ¿al menos un tutorial realmente bueno sobre el tema c / JNI?
Gracias
Aquí está la mejor respuesta que he encontrado:
"Hay una biblioteca para manejar el control nativo del teclado y el mouse: https://github.com/kwhat/jnativehook )"
Tampoco soy consciente de ninguna manera de evitar eso. Encontré este enlace en los foros de Java con un buen ejemplo de cómo configurar las cosas de JNI y hacer un controlador de teclado global (demasiado para agregar aquí). Es un poco anticuado (2005), pero el ejemplo parece lo suficientemente completo como para comenzar.
Tengo entendido que esto no se puede hacer. A un nivel fundamental, la JVM solo genera eventos para los eventos O / S que recibe, y solo recibe eventos de entrada O / S cuando tiene el foco.
Estoy seguro de que podría usar JNI para activar O / S para generar eventos para todas las entradas, pero eso sería muy dependiente de O / S.