2011-07-14 11 views
7

Tôi hiện đang làm việc trong một dự án nghiên cứu cho trường đại học của mình. Mục đích là để điều khiển máy Mac bằng camera Kinect của Microsoft. Một học sinh khác đang viết trình điều khiển Kinect (sẽ được gắn ở đâu đó trên trần nhà hoặc tường phía sau máy Mac và xuất ra vị trí của tất cả các ngón tay trên màn hình Mac).Tạo và đăng Multitouch-Sự kiện trong OS X để điều khiển mac bằng máy ảnh bên ngoài

Tôi có trách nhiệm sử dụng vị trí ngón tay đó và phản ứng với chúng. Mục tiêu là sử dụng một ngón tay duy nhất để điều khiển chuột và phản ứng trên nhiều ngón tay theo cùng một cách, giống như trên bàn di chuột.

Tôi nghĩ rằng điều này sẽ dễ dàng và dễ hiểu, nhưng không phải. Nó thực sự là rất dễ dàng để kiểm soát con trỏ chuột bằng cách sử dụng một ngón tay (sử dụng CGEvent), nhưng tiếc là không có API công cộng để tạo và gửi Multitouch-cử chỉ cho hệ thống.

Tôi đã thực hiện rất nhiều nghiên cứu, bao gồm bắt tất cả các CGEvents bằng cách sử dụng một sự kiện ở vị trí thấp nhất có thể và cố gắng tháo rời chúng, nhưng không có tiến bộ thực sự cho đến nay.

Thần I stumbled trên này và nhận ra, mà ngay cả những vị trí thấp nhất cho một vòi kiện là không đủ sâu: Extending Functionality of Magic Mouse: Do I Need a kext?

Khi tôi đã làm đúng, được xây dựng trong Trackpad (và MagicMouse và MagicTrackpad) giao tiếp qua KEXT-Kernel-Extension với khung công tác MultitouchSupport riêng, tạo ra và đăng dữ liệu đến theo một cách nào đó cho hệ điều hành.

Vì vậy, tôi sẽ cần sử dụng các API riêng tư từ MultitouchSupport.framework để thực hiện điều tương tự như Trackpad, phải không? Hoặc tôi có cần viết KEXT-Extension không?

Và nếu tôi cần sử dụng khung công tác MultitouchSupport: Tôi có thể tháo rời nó để nhận các API riêng tư như thế nào? (Tôi biết lớp-dump, nhưng điều đó chỉ hoạt động trên các khung Objective-C, mà khung này không phải là)

Rất cám ơn mọi phản hồi! NexD.

+0

Có ai tìm thấy giải pháp cho việc này không ??? Tôi đang đấu tranh với một vấn đề tương tự một vài ngày đã, nhưng không có gì có vẻ làm việc: ( – Nostradamus

+0

Bạn có thể thử một cái gì đó như gợi ý ở đây http://stackoverflow.com/a/2489593/895803 Bạn đã đưa ra một giải pháp khác? – wheels53

Trả lời

0

"Mục đích là sử dụng một ngón tay duy nhất để điều khiển chuột và phản ứng trên nhiều ngón tay theo cùng một cách" ở đây nếu tôi hiểu những gì bạn đang cố gắng làm là bạn cố gắng theo dõi ngón tay từ Kinect. Nhưng vấn đề là Kinect chỉ chụp các khớp cơ thể lớn. Nhưng bạn có thể làm điều này với các thư viện của bên thứ ba khác mà tôi đoán. Đây là một dự án mẫu tôi đã thấy. Nhưng nó cho cửa sổ. Chỉ cần cố gắng để có được bức tranh lớn ở đó http://channel9.msdn.com/coding4fun/kinect/Finger-Tracking-with-Kinect-SDK-and-the-Kinect-for-XBox-360-Device