Я пытаюсь написать небольшое вспомогательное приложение для macOS, которое захватывает ввод игрового контроллера Nimbus Steel Series и преобразует его в события клавиатуры и мыши для другого приложения (игры, которая не поддерживает контроллеры).
В моей первой попытке я использовал GCController
, но как только приложение становится неактивным, больше никаких событий от контроллера не поступает. Кажется, нет способа изменить это.
В моей второй попытке я использовал CBCentralManager
, чтобы обнаружить контроллер, надеясь, что смогу работать с ним, используя стандартные службы Bluetooth. Но контроллер даже не отображается при сканировании, когда контроллер подключен или отключен. Я нахожу устройства по всему дому (iPad, iPhone, Smart TV, компьютеры), но нет периферийных устройств, которые идентифицируют себя как Nimbus. Однако есть пара периферийных устройств nil
, которые, как я полагаю, являются вспомогательными периферийными устройствами от устройств Apple, такими как Magic Mouse или беспроводная клавиатура.
В моей третьей попытке я пытался сделать главное окно NSPanel
в стиле HUD. Панель остается на плаву, но все равно становится неактивной, когда я щелкаю в другом месте. События контроллера не получены. Я подумал, что, может быть, мне удастся как-то показать панель над полноэкранной игрой в углу. Но он все еще должен быть активным, чтобы получать события GCController
, тогда игра не получит события.
Есть ли другие варианты получения входов игрового контроллера, когда приложение неактивно?
Будет ли это работать через IOKit? До сих пор я не решался использовать IOKit, потому что я надеялся решить эту проблему без него, так как это API очень низкого уровня.