2013-02-12 66 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)); 
} 

回答