我有一个CGEventTap,我想观察和处理所有系统鼠标单击事件。检测鼠标点击事件很容易,但我不希望一些点击被系统的其余部分处理。我想不出是怎么回事。
系统只发送低级事件,如mouseUp、mouseDown、mouseDragged等。当我收到一个mouseDown事件时,我还不知道它是否是鼠标点击的一部分,可能是一个拖动事件。我必须等待下面的事件-如果它是一个mouseUp,我有一个点击。但是,如果我想自己处理点击,并防止它沿着事件队列的其余部分移动,我不能简单地窃取mouseUp事件,因为之前的mouseDown已经发送了。
我认为我可以延迟mouseDown事件,并在收到相应的mouseUp之后再发送它,但这感觉是错误的,我不想因为我的应用程序而延迟所有的系统mouseDown事件。我是不是遗漏了什么?
发布于 2011-02-28 08:32:43
你所认为的实际上是正确的。您必须将鼠标按下事件推迟相当于鼠标double click speed的时间间隔,即大约100-500毫秒。例如,用户不会注意到100毫秒的延迟。理想情况下,您应该从Mac mouse settings中获取一个值,以获得良好的用户体验。
https://stackoverflow.com/questions/5006321
复制相似问题