以编程方式控制Objective-C中的Mac光标

时间:2012-10-21 06:23:22

标签: objective-c macos

App Store上有很多应用程序允许您控制Mac的光标 - 您在iPhone上安装应用程序和Mac上的某些客户端软件,然后在手机上移动手指时通过蓝牙控制你的Mac。

我的问题是,这是怎么做到的?不是在iOS方面,而是在Mac方面。如何以编程方式更改Mac上光标的位置?

提前致谢:)

2 个答案:

答案 0 :(得分:9)

如@ H2C03所述,您可以通过CGWarpMouseCursorPosition()执行此操作,但是您只能每250毫秒(0.25秒)扭曲鼠标位置。为了解决这个问题,你必须添加一些额外的代码才能连续扭曲鼠标。

NSPoint mouseWarpLocation = NSMakePoint(100, 100);

CGEventSourceRef evsrc = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventSourceSetLocalEventsSuppressionInterval(evsrc, 0.0);
CGAssociateMouseAndMouseCursorPosition (0);
CGWarpMouseCursorPosition(mouseWarpLocation);
CGAssociateMouseAndMouseCursorPosition (1);
CFRelease(evsrc);

答案 1 :(得分:1)

CoreGraphics可以做到 - 具体来说,您正在寻找CGWarpMouseCursorPosition()功能。 Quartz(CoreGraphics)display services documentation在这里。

示例:将光标移动到屏幕中央:

CGDirectDisplayID displayID = CGMainDisplayID();
size_t screenWidth = CGDisplayPixelsWide(displayID);
size_t screenHeight = CGDisplayPixelsHigh(displayID);
CGPoint centerOfScreen = CGPointMake(screenWidth / 2, screenHeight / 2);
CGWarpMouseCursorPosition(centerOfScreen);