在OS X中如何使用相对鼠标移动?
我正在开发一个用Python写的应用程序,用来控制鼠标移动。
我已经成功实现了绝对鼠标位置的控制,使用的是Quartz.CoreGraphics库,这个库提供了一些用于鼠标控制的命令,比如“CGEventCreateMouseEvent”和“CGEventPost”。
不过,我在文档里找不到关于相对鼠标移动的内容。我真的很想模拟实际的鼠标移动(也就是说,像“向右移动x,向上移动y”而不是“x,y”),因为我的应用程序有些用户使用多个显示器,我想这样通知操作系统鼠标移动会简单很多,而不是自己去设置位置。
而且,我的界面设计也很适合使用相对鼠标移动。
在Windows系统中,win32 API里有一个函数可以执行“原始”的鼠标命令,正好可以满足我的需求。那么在OS X系统中,有没有办法实现这个功能呢?
1 个回答
1
我觉得现在的事件管理方式是可以做到的。你需要记录下鼠标之前的位置(X,Y),然后自己计算移动的距离。这就意味着,当鼠标到达屏幕边缘时,你会遇到一些问题。
好消息是,你可以移动鼠标。所以如果鼠标碰到边缘,你可以把它重新放到屏幕中央。你还可以让鼠标指针变得不可见。最后,你可以用一个覆盖整个屏幕的追踪矩形来捕捉鼠标的移动。因此,好的方面是你可以准确模拟你想要的效果,但坏的一面是这需要一些工作。
一些有用的API包括:
CGEventTap
(查看 Quartz事件服务参考)CGPostEvent
CGDisplayMoveCursorToPoint
(查看 Quartz显示服务参考)
其他相关的StackOverflow链接包括: