2

我想寻求有关如何在 MacOS 上与自定义 USB HID 设备进行理想通信的指导。

用例 通过外部 USB HID 设备修改麦克风音量。

问题 我可以为此使用 DriverKit (HIDDriverKit) 还是需要使用 IOKit?我在这里读过一些关于音频限制的内容,但不确定究竟是什么不受支持。

DriverKit 不支持处理音频或通过蓝牙或 Wi-Fi 进行无线通信的 USB 设备。对于这些类型的设备,使用 IOKit 创建内核扩展。—来源

DriverKit 在我的情况下是否仍然有效,因为我不发送音频流而只控制音量?

非常感谢!干杯,汤姆

4

1 回答 1

2

如果我理解正确,您甚至不需要使用 DriverKit。(根据经验:如果可以的话,避免它!)

您可以直接从用户空间进程与符合 HID 的设备进行通信。用户空间进程通常也可以控制音频设备的音量。

所以到目前为止,最简单的选择是拥有一个使用 IOKit 匹配作为其启动条件的启动代理,这样它就会在您的设备连接时启动。您的代理可以使用IOHIDManagerAPI 与设备通信,以便在您按下按钮时接收事件,然后使用常规 Core Audio API 来控制音量。

顺便说一句,它不一定是启动代理:带有 UI 的常规 Cocoa 应用程序也可以完成所有这些工作。(实际上,您可能希望显示某种形式的 UI 作为对按下按钮的用户的反馈。)

于 2021-05-18T19:55:49.863 回答