【发布时间】:2012-04-29 02:38:03
【问题描述】:
以编程方式移动鼠标光标时,您必须将 CGSetLocalEventsSuppressionInterval 设置为 0,以便事件实时进入,而不是延迟 250 毫秒。
很遗憾,CGSetLocalEventsSuppressionInterval 在 Snow Leopard 中被标记为已弃用。
替代方案是CGEventSourceSetLocalEventsSuppressionInterval(CGEventSourceRef source, CFTimeInterval seconds); https://developer.apple.com/library/mac/#documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html#//apple_ref/c/func/CGEventSourceSetLocalEventsSuppressionInterval
-(void) mouseMovement:(CGEventRef) newUserMouseMovement
{
//Move cursor to new position
CGSetLocalEventsSuppressionInterval(0.0); //Deprecated in OS X 10.6
CGWarpMouseCursorPosition(NSPointToCGPoint(newMousePosition));
CGSetLocalEventsSuppressionInterval(0.25); //Deprecated in OS X 10.6
//--OR--//
CGEventSourceRef source = ???;
CGEventSourceSetLocalEventsSuppressionInterval(source, 0.0);
CGWarpMouseCursorPosition(NSPointToCGPoint(newMousePosition));
CGEventSourceSetLocalEventsSuppressionInterval(source, 0.25);
}
我无法让后一种方法起作用。
所以我想我的问题是如何获得该功能所需的CGEventSourceRef?
它是用户正常鼠标移动的事件源吗?还是为了我手动扭曲光标?
【问题讨论】:
标签: objective-c macos cocoa macos-carbon