Создание и публикация событий Multitouch в OS X для управления Mac с помощью внешней камеры

В настоящее время я работаю над исследовательским проектом для своего университета. Цель состоит в том, чтобы управлять Mac с помощью камеры Microsoft Kinect. Другой студент пишет драйвер Kinect (который будет установлен где-нибудь на потолке или стене за Mac и который выводит положение всех пальцев на экране Mac).

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

Я думал, что это будет легко и просто, но это не так. На самом деле это очень легко управлять курсором мыши одним пальцем (с помощью CGEvent), но, к сожалению, нет общедоступного API для создания и отправки Multitouch-Gestures в систему.

Я провел много исследований, в том числе перехватил все CGEvents с помощью нажмите событие в самом низком положении и попробуйте ng, чтобы разобрать их, но пока никакого реального прогресса.

Затем я наткнулся на это и понял, что даже самое нижнее положение для касания события недостаточно глубокое: Расширение функциональности Magic Mouse: нужен ли мне kext?

Когда я все понял, встроеннаяв трекпаде (а также в MagicMouse и MagicTrackpad) взаимодействует через KEXT-Kernel-Extension с частной платформой MultitouchSupport, которая каким-то образом генерирует и отправляет входящие данные в ОС.

Поэтому мне нужно было бы использовать частный API из MultitouchSupport.framework, чтобы делать то же самое, что и трекпад, верно? Или мне нужно написать KEXT-Extension?

И если мне нужно использовать MultitouchSupport-framework: Как я могу разобрать его, чтобы получить частные API? (Я знаю класс-дамп, но он работает только с Objective-C-frameworks, а этот фреймворк - нет)

Большое спасибо за любой ответ! NexD.

7
задан Community 23 May 2017 в 10:34
поделиться