2013-02-12 48 views
0

我想知道是否有可能準確地將我的鼠標光標約束到一行。總的想法是,我想創建一個統治者/法國曲線應用程序,我可以拖出一條線,並使其像bezier點一樣彎曲,然後按住一個熱鍵來限制我的鼠標,這樣我就可以繪製與Wacom平板電腦在Photoshop中類似的行。限制鼠標光標到行

我到目前爲止試過的是以下內容。我現在只是用一條對角線測試它。雖然它似乎正確地將鼠標約束在線上,但當我在Photoshop中繪製一條線時,看起來鼠標事件是在將我的光標「對齊」到我的對角線上的事件之間分派的。例如,如果我將鼠標移動到最右邊,鼠標將向上移動,然後向右移動一個事件循環,然後跳回到對角線。這顯然不適用於繪畫目的。是否有一些低級別的鼠標接口可用於攔截所有鼠標事件,並可能阻止它們在發送到其他應用程序之前被分派。

[NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask handler:^(NSEvent * mouseEvent) { 
    [self mouseMoved:mouseEvent]; 
}]; 
[NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent * mouseEvent) { 
    [self mouseMoved:mouseEvent]; 
}]; 


- (void)mouseMoved:(NSEvent *)evt { 
    NSLog(@"Mouse moved: %@", NSStringFromPoint([evt locationInWindow])); 

    NSPoint mousePos = [evt locationInWindow]; 

    CGSetLocalEventsSuppressionInterval(0.0f); 
    CGWarpMouseCursorPosition(CGPointMake(mousePos.x, mousePos.x)); 
} 

回答