2012-04-17 36 views
4

CGEventSourceSetLocalEventsSuppressionInterval`當編程移動鼠標光標,必須設置CGSetLocalEventsSuppressionInterval0這樣的事件實時進來作爲一個250毫秒的延遲反對。使用',而不是過時的`CGSetLocalEventsSuppressionInterval`

不幸的是,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

它是用戶正常鼠標移動的事件源嗎?或者爲我的手動翹曲的光標?

回答

4

事件來源似乎沒有解釋任何地方,也沒有人知道如何使用它們。

CGPoint warpPoint = CGPointMake(42, 42); 
CGWarpMouseCursorPosition(warpPoint); 
CGAssociateMouseAndMouseCursorPosition(true); 

呼叫CGAssociateMouseAndMouseCursorPosition(真)經調用,使石英事件系統刪除延遲此特定經後。

3

你有沒有解決過這個問題?

您是否嘗試過使用CGEventCreateSourceFromEvent(...)從CGEventRef創建您的CGEventSourceRef?

+1

我無法找到變形的'CGEventSourceRef'。蘋果文檔聲明瞭「沒有生成或發佈事件」的經編作品,所以我不確定它是否有源代碼。從我剛剛接受的答案,'CGAssociateMouseAndMouseCursorPosition(true);'與扭曲一起工作! – cksubs 2013-07-09 21:51:54

相關問題