2010-08-05 28 views
8

Estoy buscando una forma de simular un evento de movimiento del mouse en Mac OS X 10.6. Tendría que definirse en unidades de mouse (en lugar de píxeles, ¡eso es importante!)Simular un movimiento físico del mouse en Mac OS X

Necesito esto para un experimento que básicamente consiste en dibujar líneas.

Cualquier idea es bienvenida.

¡Gracias!

Respuesta

7

Una de las formas más sencillas de mover el mouse en Mac OS X y en otros sistemas operativos es usar Java Robot. También puede simular otros eventos. Por ejemplo, el mouse hacia abajo o incluso presionar una tecla. Sin embargo, mueve el puntero a unas coordenadas de pantalla determinadas. Entonces, lo único que debe hacer es convertir sus unidades físicas en coordenadas apropiadas. Aquí está un ejemplo de código:

import java.awt.AWTException; 
import java.awt.Robot; 

public final class JavaRobotExample 
{ 
    public static void main(String[] args) throws AWTException 
    { 
    Robot robot = new Robot(); 

    robot.setAutoDelay(5); 
    robot.setAutoWaitForIdle(true); 

    robot.mouseMove(0, 0); 
    robot.delay(1000); 
    robot.mouseMove(200, 10); 
    robot.delay(1000); 
    robot.mouseMove(40, 130); 

    System.exit(0); 
    } 
} 

Para probar este código, lo puso en un archivo JavaRobotExample.java, a continuación, compilar usando el siguiente comando:

javac JavaRobotExample.java 

Una vez que se produce el archivo JavaRobotExample.class, ejecute it:

java JavaRobotExample 

El tiempo de ejecución de Java viene con Mac OS X de forma predeterminada. Aunque no estoy seguro del SDK (compilador). Si no tiene un comando javac, simplemente instale Xcode.

+0

El problema es que estoy probando el manejo (y la aceleración) del mouse de Mac y quiero que el sistema piense que moví el mouse, para ver cómo mueve el cursor. Supongo que esto es algo de nivel inferior. Sé que es posible en Windows usando "nircmdc" con el comando "sendmouse move x y". ¡Gracias por el código, será útil para el otro experimento! :-) – Dae

+1

@Dae En este caso, debe escribir su controlador HID o enganchar uno ya existente. Hay un controlador Xbox HID de fuente abierta para OSX que puede usar como ejemplo - http://xhd.cvs.sourceforge.net/viewvc/xhd/xhd/ –

+0

@VladLazarenko Esta es una gran respuesta y una solución para algo que yo soy tratando de descubrir. ¿Hay alguna manera de hacer esto a través de C? Me puedo quedar con Java pero me gusta C mejor y me encantaría saber si hay una manera simple de hacerlo en C (no C#, objetivo C, etc. - simplemente C). – drjrm3