macOS - 按值移动鼠标

时间:2017-01-10 07:29:42

标签: swift macos

我有一个应用程序通过蓝牙从iOS应用程序接收数据,它应该移动鼠标光标。

问题是我在y轴上得到了一些奇怪的功能(x很好)。

输入看起来像dx~dy,其中dx,dy是移动光标的值。这是一个例子:

-3.0〜2.0

我输出的一个例子:

鼠标位置:(596.0,309.0)新鼠标位置:(603.0,311.0)

鼠标位置:(603.0,489.0)新鼠标位置:(610.0,491.0)

鼠标位置:(610.0,309.0)新鼠标位置:(615.0,311.5)

鼠标位置:(615.0,489.0)新鼠标位置:(618.0,491.0)

鼠标位置:(618.0,309.0)新鼠标位置:(618.5,312.5)

正如您所看到的那样,它的 y 坐标比较高的坐标低。所以基本上鼠标上下都会“跳跃”。

这是我处理输入的代码:

let mouseLoc = NSEvent.mouseLocation()
let newLoc = CGPoint(x: mouseLoc.x-CGFloat(x), y: mouseLoc.y+CGFloat(y))
CGDisplayMoveCursorToPoint(0, newLoc)

编辑:在测试用例中,我的值介于0和2之间,因此两种状态之间无法有100的差异

1 个答案:

答案 0 :(得分:2)

Cocoa和Core Graphics(a.k.a。Quartz)使用不同的坐标系。在Cocoa中,原点位于主屏幕的左下方,y随着您的上升而增加。在Core Graphics中,原点位于主屏幕的左上角,y随着您的下降而增加。

由于您正在使用Core Graphics功能移动光标,因此需要从Cocoa的坐标系转换。

var mouseLoc = NSEvent.mouseLocation()
mouseLoc.y = NSHeight(NSScreen.screens()![0].frame) - mouseLoc.y;
// etc.