【发布时间】:2019-04-11 08:42:38
【问题描述】:
我正在尝试为 macOS 编写一个小型帮助应用程序,它捕获 Nimbus Steel Series 游戏控制器的输入并将其转换为另一个应用程序(不支持控制器的游戏)的键盘和鼠标事件。
在我的第一次尝试中,我使用了GCController,但一旦应用程序变为非活动状态,就不会再从控制器接收到任何事件。似乎没有办法改变这一点。
在我的第二次尝试中,我使用CBCentralManager 来发现控制器,希望我可以使用标准蓝牙服务来处理它。但是控制器甚至没有出现在扫描中,无论是控制器连接还是断开连接。我在房子周围找到设备(iPad、iPhone、智能电视、电脑),但没有将自己标识为 Nimbus 的外围设备。但是,我认为有几个nil 外围设备是来自 Apple 设备的辅助外围设备,例如魔术鼠标或无线键盘。
在我的第三次尝试中,我尝试将主窗口设为 HUD 样式的 NSPanel。该面板保持浮动,但当我单击其他地方时它仍然处于非活动状态。未收到控制器事件。我想也许我可以以某种方式将全屏游戏上方的面板显示在一个角落里。但是还是需要激活才能获取GCController事件,那么游戏就不会获取事件了。
是否还有其他选项可以接收应用处于非活动状态的游戏控制器输入? 它可以通过 IOKit 工作吗?到目前为止,我一直对使用 IOKit 犹豫不决,因为我希望在没有它的情况下解决这个问题,因为它是一个非常低级的 API。
【问题讨论】:
标签: bluetooth controller iokit nimbus