如何在os x 10.9中编写usb触摸屏驱动程序kext?

时间:2013-12-31 01:43:32

标签: usb driver osx-mavericks touchscreen kernel-extension

我想为usb触摸屏编写一个usb触摸屏kext。 我已经阅读了内核扩展编程主题和I / O Kit基础知识等, 我的问题是, 1。如何从触摸屏获取输入报告消息? 2。如何将坐标信息发布到系统?

我不知道,有人帮忙吗?

1 个答案:

答案 0 :(得分:3)

这取决于硬件;此外,这个问题相当广泛 - 你需要在你的问题中更加具体,以获得更具体的答案。我将尝试提供一个广泛的概述:

触摸屏有两部分:

  1. 输出:显示来自计算机显示屏的图像
  2. 输入:要反馈到计算机的触摸事件
  3. 由于您根本没有询问过(1),我认为您的设备只是插入Mac上的显示端口并且已经正确显示。如果没有,您需要查看IOFramebuffer API。

    对于(2) - 几乎所有USB输入设备都是某种形式的HID设备。如果您不熟悉HID,那么您可能希望阅读并理解USB HID specification and related documentation,因为您将始终使用这些信息。

    OSX已经全面支持标准HID设备类,如键盘,鼠标,触摸板,图形输入板等。如果您的设备声称是任何类型的HID设备,OSX应该已经检测到它并附加其通用HID驱动程序。您应该在I / O注册表中看到IOUSBHIDDriver实例(例如,在命令行中使用Apple的IORegistryExplorer工具或ioreg)。

    我还希望您的设备符合HID的绝对指针设备配置文件,因此至少单个触摸应该已经正常工作。如果它是多点触控设备,或者您需要其他额外功能,您可能希望实现生成或转换必要多点触控事件的IOUSBHIDDriver子类。

    如果您的设备由于某种原因还不是HID USB设备,则需要为其编写自定义USB驱动程序,并将来自它的事件转换为HID事件,因为HID事件直接传递到用户空间并在那里处理。您实际上可以编写USB驱动程序并从用户空间生成HID事件,因此如果您愿意,您可以完全避免编写任何内核代码。

    Apple提供了一些关于HID的文档:

    如果您要编写自己的内核HID设备驱动程序,最好的选择可能是the IOHIDFamily source code。您也可以在网络上找到一些开源示例。

    Apple的USB mailing lists可能也值得检查,无论是档案还是有疑问。 darwin-kernel和darwin-drivers列表也是相关的。