【问题标题】:Simulate a physical mouse move in Mac OS X在 Mac OS X 中模拟物理鼠标移动
【发布时间】:2011-03-25 23:34:15
【问题描述】:

我正在寻找一种在 Mac OS X 10.6 中模拟鼠标移动事件的方法。它必须以鼠标单位定义(而不是像素——这很重要!)

我需要这个来做一个基本上由画线组成的实验。

欢迎提出任何想法。

谢谢!

【问题讨论】:

    标签: macos mouse mouseevent mousemove


    【解决方案1】:

    在 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
    

    Java 运行时默认随 Mac OS X 一起提供。不过,我不确定 SDK(编译器)。如果您没有 javac 命令,只需安装 Xcode

    【讨论】:

    • 问题是,我正在测试 Mac 鼠标处理(和加速),我希望系统认为我移动了我的鼠标——看看它是如何移动光标的。我想这是一些较低级别的东西。我知道在 Windows 中可以通过命令“sendmouse move x y”使用“nircmdc”。不过感谢您提供的代码,它将在其他实验中派上用场! :-)
    • @Dae 在这种情况下,您需要编写您的 HID 驱动程序或挂钩到现有的驱动程序。有一个用于 OSX 的开源 Xbox HID 驱动程序,您可以将其用作示例 - xhd.cvs.sourceforge.net/viewvc/xhd/xhd
    • @VladLazarenko 这是一个很好的答案,也是我试图解决的问题的解决方案。有没有办法通过C来做到这一点?我可以坚持使用 java,但我更喜欢 C,并且很想知道在 C 中是否有一种简单的方法可以做到这一点(不是 C#、Objective C 等 - 只是普通 C)。
    • @Laurbert515:是的。您将不得不使用 Quartz API。见stackoverflow.com/questions/1483567/…
    • 很遗憾,Java Robot 不适用于沙盒应用程序。
    猜你喜欢
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2015-10-15
    • 1970-01-01
    相关资源
    最近更新 更多