Как работает мышь?

Это может показаться странным вопросом, но как работает программное обеспечение для мыши? (особенно на OSX)

Если я хочу перемещать мышь в OSX, я использую этот код:

CGAssociateMouseAndMouseCursorPosition(0);
CGWarpMouseCursorPosition(point); // point is of type NSPoint
CGAssociateMouseAndMouseCursorPosition (1);

Но это заставляет курсор прыгать (и даже иногда отставать). Как мышь (или трекпад) делает его таким плавным? Какие API они используют?

Аналогичным образом, если я использую этот код для перемещения курсора по док-станции, например, док-станция не увеличивается (увеличение включено), даже если обычное перемещение курсора с помощью трекпада работает нормально. Почему?


person The Awesome Guy    schedule 11.01.2013    source источник
comment
Вы хотите имитировать движения мыши пользователя (со всеми последствиями для пользовательского интерфейса, которые это может вызвать) или вы хотите знать, как ОС на самом деле отслеживает, обрабатывает и отправляет события мыши?   -  person Thilo    schedule 11.01.2013
comment
@Thilo Я хотел бы смоделировать это, но, как вы сказали, со всеми эффектами и изменениями пользовательского интерфейса, которые он запускает, поскольку код, который я разместил выше, имитирует его, но работает только иногда и не вызывает все изменения пользовательского интерфейса.   -  person The Awesome Guy    schedule 11.01.2013


Ответы (1)


На самом деле ваш вопрос должен звучать так: «Как работает драйвер устройства для мыши?»

Вы должны взглянуть на IOKit, особенно Семейство HID.

Если вы просто хотите имитировать движение мыши, вы также можете попробовать создать событие мыши с помощью CGEventCreateMouseEvent, а затем опубликовать его с помощью CGEventPost.

person Kurt Revis    schedule 11.01.2013