Java - Aplicación para discapacidad motriz

 
Vista:
Imágen de perfil de Victor
Val: 20
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Aplicación para discapacidad motriz

Publicado por Victor (6 intervenciones) el 19/05/2017 20:00:38
Hola a todos, espero haber escogido un buen lugar para esta pregunta, de no ser así agradeceré a los moderadores posicionarla donde corresponda.

Necesito hacer una pequeña aplicación para un amigo que tiene una discapacidad motriz, sólo puede teclear unas cuantas letras por lo que esto imposibilita que se comunique por chat.

La aplicación que deseo construir debe ser capaz de hacer estas cinco tareas:

1) cargar desde un txt, una lista de palabras o frases a modo de diccionario (las frases no necesariamente están en orden alfabético y además están separadas por salto de línea).

2) La aplicación debe visualizarse sobre la pantalla activa donde se está escribiendo (chat), pero sin que ésta pierda el foco.

3) Capturar las teclas que pulsa el usuario.

4) A medida que el usuario teclea, el programa busca entre las palabras o frases cargadas en su diccionario y muestra un autocompletado con las sugerencias (mostrar varias sugerencias).

5) si el usuario presiona una tecla como F10 (por ejemplo), el texto que se sugiere en el autocompletado se escribe en la caja de texto del chat.

Quizás la aplicación es algo básica, pero prestaría una enorme utilidad. Tengo algunos conocimientos básicos de Java por lo que creo que con la ayuda de Internet puedo realizar los puntos 1, 4 y 5, sin embargo no he podido encontrar información que me ayude con los puntos 2 y 3, considerando que la información no proviene de la ventana del programa mismo. Utilizo NetBeans IDE 8.2.

Agradezco de antemano el tiempo dedicado a leer esta pregunta y cualquier información que me ayude a solucionar el problema.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Aplicación para discapacidad motriz

Publicado por Tom (1831 intervenciones) el 19/05/2017 20:11:26
No creo que sea de mucha ayuda, pero bueno.
Los puntos 2 y 3 son lo más complicado (y no es raro que no encuentres mucha info), ya que precisamente el foco consiste en eso, en una ventana (o widget, o control) que recibe las entradas de teclado. Así que lo normal es que el foco estuviera activo para tu aplicación, no para la de chat.
De todos modos, quizás la clase Robot de java te podría servir para capturar las entradas y reenviarlas de nuevo.
¿ En qué SO tienes que hacerlo ? Supongo que la aplicación de chat es alguna "de las normales" y no tienes el código fuente ...

https://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Aplicación para discapacidad motriz

Publicado por Tom (1831 intervenciones) el 19/05/2017 20:31:53
Le he dado un repaso rápido al tema ... y no parece fácil. Yo te recomiendo que investigues la posibilidad de usar un "teclado virtual", al estilo de los de smartphones y tablets.

Si usas Linux hay más de uno. Ignoro si tienen la función de "autocompletado" que necesitarías, pero en todo caso estaría disponible su código fuente y se podría intentar añadirla.

https://www.google.es/search?q=linux+on-screen+virtuall+screen+keyboard
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Victor
Val: 20
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Aplicación para discapacidad motriz

Publicado por Victor (6 intervenciones) el 19/05/2017 20:58:11
Efectivamente es sobre alguna versión de windows. He estado averiguando y he encontrado algunos keyloggers hechos en java, obviamente no especifican su código fuente, pero el funcionamiento es similar, ya que actúan en segundo plano capturando el teclado del usuario. gracias por la info
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Aplicación para discapacidad motriz

Publicado por Tom (1831 intervenciones) el 19/05/2017 21:10:28
Ummm sigue siendo difícil, pero probablemente este keylogger te podría valer:

https://juanpinzon-1992.blogspot.com.es/2014/10/como-crear-un-key-logger-en-java.html

Se me ocurre que podrías "consumir" cada evento para que no se propague a la aplicaación que tiene el foco, analizar el evento, preparar el autocompletado y todo eso ... y si no hay una idea mejor, con la clase Robot generar nuevos eventos de teclado que formen el nuevo texto ... El problema sería como hacer que tu keylogger no reciba o no consuma las pulsaciones que genera él mismo a través del robot ...

¡ Suerte !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Victor
Val: 20
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Aplicación para discapacidad motriz

Publicado por Victor (6 intervenciones) el 19/05/2017 21:27:44
Gracias, muy buen aporte. Voy a tomarme un tiempo para investigar más sobre el API jNativeHook, ver si lo puedo aplicar a mi proyecto o si de plano replanteo el problema y busco otras soluciones. Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Victor
Val: 20
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Aplicación para discapacidad motriz

Publicado por Victor (6 intervenciones) el 19/05/2017 21:57:47
Gracias al aporte de Tom, ya encontré una forma para hacer lo que necesito. Mi estrategia es una combinación del API jNativeHook y la Clase Robot de Java:

1) obtener las pulsaciones de teclado mediante jNativeHook
2) mostrar las sugerencias (si no puedo posicionar la ventana sobre el chat sin obtener el foco, sólo será cosa de ajustar su tamaño para que se vea en segundo plano)
3) detectar cuando el usuario presione F10 y seleccionar el texto sugerido
4) copiar la sugerencia en el portapapeles
5) mediante la clase Robot pegar el contenido en la ventana activa

Si se me ha pasado por alto algún problema, acepto comentarios, de lo contrario doy por solucionado el problema :)

Dejo el link donde pueden ver en la practica el uso del API jNativeHook
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 973
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Aplicación para discapacidad motriz

Publicado por Agustin (170 intervenciones) el 19/05/2017 20:27:01
http://www.phraseexpress.com/autocomplete.htm

BTW, si vas a escribir una aplicacion para Windows, te conviene usar C# antes que java, que es mucho mas moderno y se integra mucho mejor con las capacidades del SO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Victor
Val: 20
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Aplicación para discapacidad motriz

Publicado por Victor (6 intervenciones) el 19/05/2017 20:54:24
Al momento de plantearme este proyecto, estuve en la duda si realizarlo en VB en donde sí tengo la posibilidad de capturar el teclado de manera más fácil, pero por una cuestión de hacerlo complatible con cualquier plataforma, creí que era conveniente hacerlo en Java.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar