Генерация и публикация событий Multitouch в OS X для управления Mac с помощью внешней камеры
В настоящее время я работаю над исследовательским проектом для моего университета. Цель состоит в том, чтобы управлять Mac с помощью камеры Microsoft Kinect. Другой студент пишет драйвер Kinect (который будет установлен где-нибудь на потолке или стене позади Mac и который выводит положение всех пальцев на экран Mac).
Я обязан использовать эти положения пальцев и реагировать на них. Цель состоит в том, чтобы использовать один единственный палец для управления мышью и реагировать на несколько пальцев одинаково, как на трекпаде.
Я думал, что это будет легко и просто, но это не так. На самом деле очень просто управлять курсором мыши одним пальцем (используя CGEvent), но, к сожалению, нет общедоступного API для создания и публикации Multitouch-Gestures в системе.
Я провел много исследований, в том числе поймал все CGE-события с использованием крана событий в минимально возможной позиции и попытался разобрать их, но пока никакого реального прогресса нет.
Тогда я наткнулся на это и понял, что даже самая низкая позиция для события не достаточно глубока: Расширение функциональности Magic Mouse: нужен ли мне kext?
Когда я понял все правильно, встроенный трекпад (а также MagicMouse и MagicTrackpad) связываются через расширение KEXT-Kernel с частной платформой MultitouchSupport, которая каким-то образом генерирует и отправляет входящие данные в ОС.
Поэтому мне нужно будет использовать частные API из MultitouchSupport.framework, чтобы сделать то же самое, что и Trackpad, верно? Или мне нужно написать расширение KEXT?
И если мне нужно использовать MultitouchSupport-framework: как мне разобрать его, чтобы получить частные API? (Я знаю класс-дамп, но он работает только на Objective-C-фреймворках, которых нет у этих фреймворков)
Большое спасибо за любой ответ! NexD.
1 ответ
"Цель состоит в том, чтобы использовать один единственный палец для управления мышью и одинаково реагировать на несколько пальцев", если я понимаю, что вы пытаетесь сделать, это пытаться отследить пальцы от Kinect. Но дело в том, что Kinect захватывает только основные суставы тела. Но вы можете сделать это с другими сторонними библиотеками, я думаю. Вот пример проекта, который я видел. Но это для окон. Просто попробуйте получить общую картину там http://channel9.msdn.com/coding4fun/kinect/Finger-Tracking-with-Kinect-SDK-and-the-Kinect-for-XBox-360-Device