我已经搜索了几天如何在Mac上实现游戏手柄和操纵杆支持,所有我找到的资源似乎都建议使用预安装的驱动程序以及使用苹果的HID API,这很有效。但是这种方法的缺点是每个操纵杆和游戏手柄都需要另一个内核扩展来加载,以便被HID管理器识别,或者至少有一个不含代码的Info.plist文件,表明它符合先前安装的驱动程序。例如,当我在家里有一个360 Xbox驱动程序KEXT时,Microsoft的Xbox控制器可以使用,但Logitech的F710则不能。
苹果建议使用游戏手柄或操纵杆的应用程序应该能够在用户空间自己完成,而不引入任何KEXT相关的东西。有没有一种方法可以做到这一点呢?
我想到的是使用IORegistry或IOUSB API,在设备插入时获取设备,然后以某种方式获取设备的描述,然后使用该描述将设备注册为HID设备。然后就可以使用整个HID管理器了。
苹果建议使用游戏手柄或操纵杆的应用程序应该能够在用户空间自己完成,而不引入任何KEXT相关的东西。有没有一种方法可以做到这一点呢?
我想到的是使用IORegistry或IOUSB API,在设备插入时获取设备,然后以某种方式获取设备的描述,然后使用该描述将设备注册为HID设备。然后就可以使用整个HID管理器了。
我是否走在正确的道路上?或者还有其他方法可以做到这一点?
由于IOKit API实际上提供了像kHIDUsage_GD_Joystick这样的关键字,而且还有一个ForceFeedback.h库,我认为苹果设计他们的HID API时考虑了操纵杆和力反馈。这是我抱有的微弱希望,认为这可能有效。
一些参考文献和开源项目: