Генерация и публикация событий Multitouch в OS X для управления Mac с помощью внешней камеры - PullRequest
7 голосов
/ 14 июля 2011

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

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 09 ноября 2013

«Цель состоит в том, чтобы использовать один единственный палец для управления мышью и одинаково реагировать на несколько пальцев», если я понимаю, что вы пытаетесь сделать, это пытаться отследить пальцы от Kinect. Но дело в том, что Kinect захватывает только основные суставы тела. Но вы можете сделать это с другими сторонними библиотеками, я думаю. Вот пример проекта, который я видел. Но это для окон. Просто попробуйте получить большую картину там http://channel9.msdn.com/coding4fun/kinect/Finger-Tracking-with-Kinect-SDK-and-the-Kinect-for-XBox-360-Device

...