【问题标题】:How do I process a mouse click using Quartz events?如何使用 Quartz 事件处理鼠标点击?
【发布时间】:2011-02-15 16:23:27
【问题描述】:

我有一个CGEventTap,我想观察和处理所有系统鼠标点击事件。检测鼠标点击事件很容易,但我不希望系统的其余部分处理某些点击。我不知道怎么做。

系统只发送mouseUpmouseDownmouseDragged等低级事件。当我收到mouseDown 事件时,我不知道它是否是鼠标点击的一部分,可能是拖动事件。我必须等待以下事件——如果是mouseUp,我点击一下。但是,如果我想自己处理点击并阻止它进入事件队列的其余部分,我不能简单地窃取 mouseUp 事件,因为之前的 mouseDown 已经发送。

我以为我可以延迟mouseDown事件,然后在收到相应的mouseUp后才发送,但感觉不对,我不想因为我的应用程序而延迟所有系统mouseDown事件。我错过了什么吗?

【问题讨论】:

  • 为什么你认为你可能会遗漏一些东西?是什么让你认为你应该能够做到这一点?
  • 我认为也许有更简单的方法来监控和更改所有系统鼠标事件。我可以通过这种方式很好地观察和过滤关键事件,这似乎很奇怪,用简单的鼠标点击是不可能的。

标签: cocoa core-graphics quartz-graphics cgeventtap


【解决方案1】:

您认为实际上是正确的。您必须推迟鼠标按下事件的时间间隔等于鼠标double click speed,这应该是大约 100-500 毫秒。例如,用户不会注意到 100 毫秒的延迟。理想情况下,您应该使用 Mac OS X 的值mouse settings 来提供良好的用户体验。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多