我想知道是否可以准确地将鼠标光标限制在一条线上 . 一般的想法是,我想创建一个标尺/法国曲线应用程序,我可以拖出一条线,并使其像我想要的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));
}
1 回答
你正在寻找CGEventTap API .