I have a CGEventTap
and I would like to observe and process all system mouse click events. Detecting a mouse click event is easy, but I don’t want some of the clicks to get processed by the rest of the system. And I can’t figure out how.
The system only sends low-level events like mouseUp
, mouseDown
, mouseDragged
and so on. When I receive a mouseDown
event, I don’t know if it’s a part of a mouse click yet, could be a drag event. I have to wait for the following event – if it’s a mouseUp
, I have a click. But if I want to process the click myself and keep it from going down the rest of the event queue, I can’t simply steal the mouseUp
event, as the previous mouseDown
was already sent.
I thought I could delay the mouseDown
event and only send it later after receiving the corresponding mouseUp
, but that feels wrong, I don’t want to delay all system mouseDown
events just because of my application. Am I missing something?