Как мне обработать щелчок мыши с помощью событий Quartz? - PullRequest
1 голос
/ 15 февраля 2011

У меня есть CGEventTap, и я хотел бы наблюдать и обрабатывать все события щелчка мышью системы.Обнаружение события щелчка мышью легко, но я не хочу, чтобы некоторые щелчки обрабатывались остальной системой.И я не могу понять, как.

Система только отправляет события низкого уровня, такие как mouseUp, mouseDown, mouseDragged и так далее.Когда я получаю событие mouseDown, я не знаю, является ли это частью щелчка мышью, может ли это быть событием перетаскивания.Я должен ждать следующего события - если это mouseUp, у меня есть щелчок.Но если я хочу обработать щелчок самостоятельно и не дать ему спуститься в оставшуюся очередь событий, я не могу просто украсть событие mouseUp, поскольку предыдущий mouseDown уже был отправлен.

Я думал, что смогу отложить событие mouseDown и отправить его позже только после получения соответствующего mouseUp, но это неправильно, я не хочу откладывать все системные события mouseDown только из-за моего приложения.Я что-то упустил?

1 Ответ

0 голосов
/ 28 февраля 2011

То, что вы думали, на самом деле правильно. Вы должны отложить событие нажатия мыши на временной интервал, равный скорости двойного щелчка мыши , который должен составлять около 100-500 миллисекунд. Например, пользователь не заметит задержку в 100 миллисекунд. В идеале вам нужно значение из Mac OS X настройки мыши , чтобы обеспечить удобство работы.

...