Pregunta

Es posible que hayas oído hablar de PawSense , una utilidad solo para Windows que evita que se ingresen pulsaciones de teclas cuando cree que hay un gato u otro animal en el teclado escribiendo una entrada sin sentido como " zlxkkkkkkkk; " ;. Parece un proyecto divertido para hacer en mi tiempo libre, pero me preguntaba sobre algunos detalles de su implementación.

Creo que podría hacer parte del reconocimiento de patrones, ya sea con heurísticas codificadas o utilizando algún tipo de algoritmo de reconocimiento de patrones (al que he estado expuesto antes y con el que me sienta cómodo). Mi pregunta es sobre el lado de la programación de sistemas y la lógica de cómo bloquear las entradas.

Necesitaría que su aplicación observe las entradas y presente un desafío si detecta que el gato está escribiendo. ¿Mantendría un búfer con las últimas pulsaciones de teclas y solo las dejaría pasar si no se escribía con un gato? O si ocurriera la escritura de un gato, ¿solo permitiría que pasara un pequeño número antes de bloquear la entrada? ¿Cuál sería la lógica real que querrías usar?

En cuanto a la mecánica real del bloqueo de entrada en, digamos, C #, hay otras preguntas sobre este sitio. Mi pregunta, para reiterar, es qué lógica utilizarías para detectar y bloquear la escritura de gatos.

¿Fue útil?

Solución

Esperaría hasta que crea que hay un gato en el teclado, luego bloquear la entrada, ya que un búfer puede ser problemático.

Por ejemplo, si estoy escribiendo y cambiando las ventanas rápidamente, al escribir, ¿cómo determinaría dónde deberían estar las pulsaciones?

Manténgalo tan simple como sea necesario.

Otros consejos

Debe considerar la introducción de un gancho de todo el sistema WIN32 . Este artículo de MSDN cubre los conceptos básicos de esto (atención a que especifica ambas aplicaciones o ganchos de nivel de hilo y ganchos de todo el sistema).

Una vez que entiendas eso, necesitarás captar varios mensajes relacionados con el teclado, WM_KEYUP seguramente, algunos otros mensajes WM_KEYxxxx también, dependiendo de tus necesidades).

Luego, deberá introducir la lógica que decide si las pulsaciones son válidas o incomprensibles, y pase los mensajes (para que eventualmente puedan llegar a la aplicación que tiene el foco) o ignorarlos.

Sin saber nada de esto, comenzaría basándome en el tiempo que se presionan las teclas y no en qué teclas se presionan realmente, pensando que un animal no va a presionar simplemente una tecla y soltarla muy rápidamente, luego otra , etc., pero es más probable que se detenga en un conjunto de claves.

Entonces, si puedes simplemente presionar las teclas, creo que podría funcionar.

Pensando en la carga. Comenzaría con algo como lo siguiente:

  1. No espere a que el usuario realice ninguna actividad similar durante 2 minutos.
  2. Inicia tu aplicación
  3. Escuche los golpes del teclado
  4. Haga coincidir las claves escritas si existen en el diccionario
  5. Bloquee el teclado después de seis o siete.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top