在Mac OS X中模拟物理鼠标移动

8
我正在寻找一种在Mac OS X 10.6中模拟鼠标移动事件的方法。它必须以鼠标单位定义(而不是像素-这很重要!)。
我需要这个实验来绘制线条。
欢迎任何想法。
谢谢!
1个回答

7

在Mac OS X和其他操作系统中最简单的移动鼠标的方法之一是使用Java Robot。它还可以模拟其他事件,例如鼠标按下或按键。但是,它将指针移动到给定的屏幕坐标。因此,您需要做的唯一事情就是将物理单位转换为适当的坐标。以下是一个代码示例:

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);
    }
}

要测试此代码,请将其放入JavaRobotExample.java文件中,然后使用以下命令进行编译:

javac JavaRobotExample.java

一旦JavaRobotExample.class文件生成,运行它:

java JavaRobotExample

默认情况下,Mac OS X 自带 Java 运行时环境。但是我不确定是否包含 SDK(编译器)。如果你没有 javac 命令,只需安装 Xcode


问题是,我正在测试Mac鼠标处理(和加速)并且我希望系统认为我移动了鼠标 - 以查看它如何移动光标。我猜这是一些较低级别的东西。我知道在Windows中可以使用“nircmdc”命令“sendmouse move x y”。谢谢您的代码,虽然它对另一个实验很有用! :-) - Dae
1
@Dae 在这种情况下,您需要编写自己的HID驱动程序或钩入现有的驱动程序。有一个开源的Xbox HID驱动程序可供OSX使用,您可以将其用作示例 - http://xhd.cvs.sourceforge.net/viewvc/xhd/xhd/ - user405725
@VladLazarenko 这是一个很好的答案,也是我正在努力解决的问题的解决方案。有没有一种通过C语言实现这个的方法?我可以继续使用Java,但我更喜欢C,并且想知道是否有一种简单的方法在C中实现它(不是C#、Objective C等 - 只是纯C)。 - drjrm3
@Laurbert515:是的,你必须使用Quartz API。请参见https://dev59.com/SEnSa4cB1Zd3GeqPO4k7 - user405725
很遗憾,Java机器人无法与沙盒应用程序一起使用。 - b005t3r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接