我一直在搜索如何在Mac上运行游戏手柄和操纵杆支持,我找到的所有资源似乎都建议使用预装的驱动程序以及使用Apple的HID API.
这种方法的缺点是每个操纵杆和游戏手柄都需要加载另一个内核扩展,因此HID管理器可以识别它,或者至少一个代码Info.plist表示它符合早期安装的驱动程序.例如,当我在内部拥有一个360 Xbox驱动程序KEXT时,来自Microsoft的Xbox控制器可以工作,但不是Logitech(我试过F710).
正如Apple建议使用游戏手柄或操纵杆的应用程序应该能够在用户空间自行完成,而不会引入任何KEXT内容.有办法吗?
我想到的就是使用IORegistry或IOUSB API来获取设备(USB Prober至少显示它).然后以某种方式获取设备的描述,然后使用该描述将设备注册为HID.然后可以使用整个HID管理器.
我是在正确的轨道上吗?或者还有其他方法吗?
由于IOKit API实际上提供了像kHIDUsage_GD_Joystick这样的关键字,并且有一个ForceFeedback.h库,我想Apple设计了他们的HID API时考虑了操纵杆和力反馈.这是我可能有用的渺茫希望.
一些参考文档和开源项目: