【问题标题】:How to store (and use) the current mouse position?如何存储(和使用)当前鼠标位置?
【发布时间】:2011-01-08 18:09:40
【问题描述】:

存储当前鼠标位置(系统范围)然后(稍后)将鼠标放在该存储点的最佳方法是什么?

[NSEvent mouseLocation] 得到我的位置,我可以用CGEventMouseMoved 移动鼠标,但它们各自使用不同的坐标系统(我相信 y=0 是 NSEvent 的顶部和 CGEvent 的底部)。

我担心捕获屏幕高度并使用它在两者之间转换的稳健性 - 还是这是最好的方法?

【问题讨论】:

    标签: cocoa events mouse macos-carbon nsevent


    【解决方案1】:

    您可以使用CGEventTap 来获取鼠标事件而不是NSEvent。然后,您可以在事件到达时选择翻转或未翻转。

    (我相信 y=0 是 NSEvent 的顶部和 CGEvent 的底部)。

    你搞错了。 Quartz使用flipped,即y=0=top。 AppKit 使用 unflipped,即 y=0=bottom。 (编辑:对于事件,即绘图 API Quartz 2D 使用未翻转的坐标,与 AppKit 相同。)

    【讨论】:

    • 但是点击不只是捕获事件吗?也许我理解错了。当我想将鼠标捕捉到新位置并再次返回时,鼠标可能是静止的(实际上很可能是静止的)。是否需要这样做不是由另一个键盘或鼠标事件决定的,而是周期性发生的事情。
    • 哦,所以您不是在监视事件,而只是在特定时间获取并保存鼠标位置?那就别管水龙头了。不过,关于起源的部分仍然存在。
    【解决方案2】:

    是的,使用主屏幕的高度是翻转屏幕坐标的标准方式。

    【讨论】:

    • 你知道我是如何得到用户的屏幕分辨率来翻转y轴的吗?
    • 可以,看NSScreen的各种方法。
    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    相关资源
    最近更新 更多