Mac App处于非活动状态时如何捕获蓝牙控制器?

时间:2018-11-07 20:49:34

标签: bluetooth controller iokit nimbus

我正在尝试为macOS编写一个小型助手应用程序,以捕获Nimbus Steel Series游戏控制器的输入并将其转换为另一个应用程序(不支持控制器的游戏)的键盘和鼠标事件。

在我的第一次尝试中,我使用了GCController,但是一旦应用程序变为非活动状态,就不会再收到来自控制器的事件。似乎没有办法改变这一点。

第二次尝试中,我使用CBCentralManager发现了控制器,希望可以使用标准的蓝牙服务来使用它。但是,无论控制器处于连接状态还是断开状态,控制器都不会显示在扫描中。我在房子周围发现了各种设备(iPad,iPhone,智能电视,计算机),但没有任何外围设备将其标识为Nimbus。但是,我认为有几个nil外围设备是Apple设备(如魔术鼠标或无线键盘)的辅助外围设备。

在我的第三次尝试中,我试图使主窗口成为HUD风格的NSPanel。该面板保持浮动状态,但是当我单击其他位置时,它仍然不活动。没有收到控制器事件。我以为也许可以以某种方式在全屏游戏上方显示面板。但是它仍然需要激活以获取GCController个事件,然后游戏才能获取事件。

是否还有其他选项可以接收应用程序处于非活动状态的游戏控制器输入? 通过IOKit是否可以工作?到目前为止,我一直在犹豫使用IOKit,因为我希望在没有它的情况下解决此问题,因为它是一个非常低级的API。

1 个答案:

答案 0 :(得分:0)

我使用IOHIDManager函数解决了这个问题。即使应用未激活,回调也会接收事件。