在OSX中处理HID触摸事件

时间:2013-11-11 05:37:34

标签: macos hid touchscreen

我正在编写一个驱动程序,使用Apple的IOKit工具处理来自Planar触摸屏(在OSX中)的触摸事件。驱动程序能够接收x和y坐标,但我无法确定坐标属于哪个手指。

在我的回调函数中,我查询最近值的父级以确定手指ID,但该值始终是最近的手指 - 如果有3个手指向下则为3,如果有2个手指向下则为2,等等,这是回调的样子:

    void touchCallback(void *context, IOReturn result, void *sender, IOHIDValueRef value) {

        IOHIDElementRef element = IOHIDValueGetElement(value);
        IOHIDDeviceRef device = IOHIDElementGetDevice(element);

        IOHIDElementRef parent = IOHIDElementGetParent(element);
        IOHIDElementRef parent2 = IOHIDElementGetParent(parent);
        CFArrayRef parentChildren = IOHIDElementGetChildren(parent2);
        IOHIDValueRef fingerVal;
        IOHIDDeviceGetValue(device, (IOHIDElementRef)CFArrayGetValueAtIndex(parentChildren, 5), &fingerVal);
        long fingerID = IOHIDValueGetIntegerValue(fingerVal);
   }

是否有其他推荐的方法来确定x和y坐标属于哪个手指?

同样,是否有任何建议的做法来确定哪个手指被释放?

我收到的事件表明手指已被抬起,但数字不一致 - 有时它会报告相同的手指ID 2x,有时则不会报告任何内容。是否存在基于“框架”的方法来测试手指是否仍在下降?

感谢++提供任何建议!

0 个答案:

没有答案