2010-01-09 44 views
8

Necesito probar un software que trate algunos movimientos del mouse como "gestos". Para tal tarea, necesito emular el movimiento del mouse desde el punto A al punto B, no en línea recta, sino como un verdadero mouse: con curvas, un poco de irregularidad, etc. ¿Hay alguna solución disponible (algoritmo/código en sí mismo, no una biblioteca/exe) que puedo usar?Algoritmo para emular el movimiento del mouse como lo hace un humano?

Por supuesto que puedo escribir algunas matemáticas sinusoidales sencillas por mi cuenta, pero esta sería una emulación muy cruda de una mano humana que lleva un ratón. Tal vez esa tarea ya se ha resuelto en numerosas ocasiones, y puedo tomar prestado un código existente. :)

Respuesta

7

Eche un vistazo al archivo Mouse.simba que es parte del SRL Framework, un macroprograma diseñado para trabajar con juegos en línea como Runescape. Runescape tiene amplias capacidades de detección de macro, por lo que todas las partes de SRL Framework se han desarrollado para que parezcan lo más humanas posible: las funciones del mouse en particular.

El código está en Pascal pero debería ser bastante fácil de leer. Mira el procedimiento MMouse() de BenLand100 se mueve de manera muy realista haciendo movimientos avanzados como bucles y sobrepasando su objetivo, así como aceleraciones y direcciones continuamente variables (ahora también tiene movimientos de tipo touchpad de laptop). Si desea probarlo, deberá descargar SIMBA y enable the SRL-include.

+0

¿La caja de Pascal es sensible o no? :) – grigoryvp

+2

No, no distingue entre mayúsculas y minúsculas. El estándar es para capitalizar todas las palabras en procedimientos/nombres de funciones (como ThisIsAProcedure y AndSoIsThis) y para usar este tipo de capitalización para las variables. Muchas de las funciones que utiliza se relacionan con el resto del framework o están integradas en SCAR como GetMousePos. –

4

¿Qué tal grabar algunos gestos reales y hacer una forma de reproducirlos? Eso será tan real como cualquier cosa que pueda sintetizar, y sería repetible (lo cual es bueno para las pruebas).

+0

Es una buena manera, pero asegurará que solo ese programa en cuestión funcione en algunos movimientos predefinidos. Y quiero alimentarlo con un millón de movimientos diferentes para probar :). – grigoryvp

+0

Entonces quizás debería comenzar con algunas rutas registradas y aplicar pruebas de fuzz para generar millones de variantes. –

1

Crea una aplicación de prueba simple que muestra un punto posicionado al azar cada dos segundos. Siga el punto usted mismo y registre sus movimientos naturales del mouse.

1

Una forma de capturar este comportamiento podría ser definir una "cuadrícula" invisible en la pantalla, donde realiza un seguimiento de los cuadrados en los que se mueve el mouse en su recorrido.

Si esta pieza funciona y registra correctamente, no hay necesidad de bombardearla con pruebas, ya que usted sabe que cada cuadrícula hace su trabajo. Interpretar el gesto también se hace más fácil con esto.

Cuestiones relacionadas