Расширение функциональности Magic Mouse: нужен ли kext?

Я недавно купил Волшебную Мышь. Это фантастика и полна потенциала. К сожалению, этому серьезно мешает поддержка программного обеспечения. Я хочу это исправить. Я провел довольно много исследований, и это мои выводы относительно цепочки событий:

Magic Mouse отправляет полные мультитач-события в систему.Мультитач события обрабатываются в MultitouchSupport.framework (Carbon)События интерпретируются в рамках и отправляются в систему как обычные события.Когда вы прокручиваете одним пальцем, он отправляет фактические события колеса прокрутки.Когда вы проводите двумя пальцами, он отправляет событие удара.События NSTouch не отправляются в систему. Вы не можете использовать API NSTouch для взаимодействия с мышью.

После того, как я обнаружил все вышеперечисленное, я разобрал файл MultitouchSupport.framework и, немного погуглив, выяснил, как вставить свой собственный обратный вызов в цепочку, чтобы получить необработанные данные о событиях касания. Если вы перечислите список устройств, вы можете подключить для каждого устройства (трекпад и мышь). Этот вывод позволил бы нам создать основу для использования мультитач на мыши, но только в одном приложении. Смотрите мой пост здесь:Сырой мультитач трекинг.

Я хочу добавить новую функциональность для мыши по всемусистема, а не только одно приложение.

В попытке сделать это, я понял, как использоватьСобытия Отводы чтобы увидеть, позволит ли отвод события самого низкого уровня получить необработанные данные, интерпретировать их и отправить вместо них мои собственные события. К сожалению, это не так. Отвод события, даже на уровне HID, все еще на шаг выше, где ввод интерпретируется в MultitouchSupport.framework.

Посмотрите мою попытку прослушивания события здесь:Событие Tap - Попытка Raw Multitouch.
Интересное примечание: при получении события мультитач, такого как свайп, происходит обращение к регистру по умолчанию, и выводится номер события 29. Заголовок показывает 28 как макс.

На мой вопрос, теперь, когда у вас есть вся информация и вы увидели то, что я попробовал: каков наилучший подход к расширению функциональности Magic Mouse? Я знаю, что мне нужно вставить что-то на достаточно низком уровне, чтобы получить входные данные до того, как они будут обработаны и отправлены предопределенные события. Итак, сводим это к одному предложению:

Есть ли способ переопределить обратные вызовы по умолчанию, используемые в MultitouchSupport.framework?Нужно ли мне писать кекст и обрабатывать все входящие данные самостоятельно?Можно ли написать кекст, который сидит наВверх kext, который обрабатывает ввод сейчас и фильтрует его после того, как kext проделал всю тяжелую работу?

Моя первая цель - иметь возможность отправлять событие нажатия средней кнопки, если на устройстве два пальца при нажатии. Очевидно, что можно сделать гораздо больше, но сейчас это, кажется, хорошая вещь, за которую нужно стрелять.

Заранее спасибо!

-Sastira

Ответы на вопрос(4)

Ваш ответ на вопрос