【问题标题】:How to write usb touchscreen driver kext in os x 10.9?如何在 os x 10.9 中编写 USB 触摸屏驱动程序 kext?
【发布时间】:2013-12-31 01:43:32
【问题描述】:

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

我不知道,有人帮忙吗?

【问题讨论】:

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


    【解决方案1】:

    这取决于硬件;此外,这个问题非常广泛 - 您需要更具体地提出问题才能获得更具体的答案。我将尝试提供一个广泛的概述:

    触摸屏有两部分:

    1. 输出:在显示器上显示来自计算机的图像
    2. 输入:要反馈到计算机的触摸事件

    由于您根本没有询问 (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 列表也是相关的。

    【讨论】:

    • 您好,我还是无法解决问题。请查看我的question detail,帮帮我。请!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    相关资源
    最近更新 更多