【问题标题】:HID Device Interface in MACMAC 中的 HID 设备接口
【发布时间】:2017-01-09 12:09:59
【问题描述】:

我必须为 OSX 创建一个与通过 USB 连接的 HID 设备交互的软件/驱动程序。申请的目的如下,

  1. 检测 HID 设备何时插入或移除。设备的 PID 和 VID 是已知的。
  2. 读取与 VID 和 PID 匹配的已连接设备的 HID 设备序列号、固件版本和其他详细信息
  3. 在 HID 设备连接时获取报告并设置报告。
  4. 与另一个应用程序通信,用户可以通过该应用程序更改 HID 设备设置

我不是驱动程序开发人员,但有 C、C++、Obj C 等方面的经验。我想知道实现上述目标的最佳方法是什么。那是我应该开发内核扩展(驱动程序)还是有更好的选择?

我面临的挑战是,

  • 从驱动程序开发开始
  • Mac 应用程序与驱动程序通信。

无论如何,这对我来说都是一个新领域。您能否建议一些文档或示例代码,从我可以开始。

还请提及可能有助于为 mac 开发设备驱动程序的论坛或社区。​​p>

谢谢大家的帮助。 :)

【问题讨论】:

  • 您在这方面工作成功了吗? HyperX FPS Mechanical 键盘我也面临同样的情况。 windows 和 FN 键不起作用。我不想创建自己的系统扩展/驱动程序套件来解决此问题并与其他用户共享。

标签: c++ macos driver hid iokit


【解决方案1】:

MacOS X 已经有适用于 HID 设备的驱动程序。所以你不需要为它开发一个特殊的驱动程序/内核扩展。

您可以使用跨平台开源库hidapi 与 HID 设备进行通信。

【讨论】:

    【解决方案2】:

    这个问题的另一个答案当然适用于许多不同的用例,我建议尽可能走这条路。但是,在某些情况下,您肯定需要深入研究 kext 方面。特别是,如果 HID 设备需要充当系统键盘或指针设备,但没有按照您的意愿被内置 HID 堆栈拾取,您可能需要(或想要)开发一个内核 -太空司机。 (不过,您也可以选择从用户空间将事件注入到窗口系统中,所以如果有疑问,我会先用它来制作您的用例原型。)

    您没有向我们提供足够的详细信息来说明您正在尝试做什么,或者设备的性质,无法真正确定哪种方法可能是最好的。

    有关示例代码,请查看 Apple 自己的开源代码。 (IOHIDFamily、IOUSBFamily 等)在网上搜索您正在使用的类也会在 Github 等上找到一些第三方 OSS 代码。

    Stack Overflow 和相关的 Apple 开发人员邮件列表(Darwin-drivers、Darwin-kernel 或 Usb,具体取决于问题),以及开发人员论坛(我发现它们很难持续关注/监控)可能是最好的这类事情的社区。​​p>

    【讨论】:

    • 非常感谢您详细解答我的疑问。我需要连接专用的游戏设备,包括鼠标、键盘和游戏机。需要更改设备中的设置(例如 DPI、指针速度、背光颜色和亮度等)。我需要检测设备何时连接或断开。此外,设备中的按键可以具有自定义操作,可以从系统配置,例如,单击按钮时,需要模拟键盘按键。
    • 这在很大程度上取决于具体情况,但您应该能够使用记录在 herehere 的用户空间 HID API 来完成很多这些工作。还有some potentially useful sample code
    • 在实践中,这将取决于您的设备的结构。除了 HID Manager API 之外,您可能还需要通过较低级别的 USB I/O Kit API(同样存在于用户空间中)来做一些事情。我不确定是否要重新编程按钮——因为你可能需要降到内核级别,具体取决于具体情况。如果您是咨询客户,我建议您留出一周左右的时间来探索/原型化我们不能 100% 确定实施细节的功能,然后再决定如何构建整个驱动程序软件。
    • (换句话说,这里的范围很快就超过了可以在 Stack Overflow 问题中切实回答的问题;我希望我至少能够为您指明一个有用的方向。)
    • 我可能还应该链接到我们维护的 OS X USB HID 驱动程序的源代码:github.com/pmj/QemuUSBTablet-OSX(虽然这是一种不寻常的驱动程序,所以我不确定它会有多大帮助是。)
    猜你喜欢
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2023-03-30
    • 2022-10-05
    相关资源
    最近更新 更多