Sto esaminando un'incompatibilità di alcuni gamepad Bluetooth con OSX: Ho un gamepad Bluetooth (NES30 Pro). Il problema è che se lo collego via bluetooth, non funziona correttamente sotto OSX. Ho già trovato la causa e ho informato il produttore, e hanno promesso di cercare di risolverlo. Tuttavia intanto vorrei trovare una soluzione alternativa.
La causa del problema è che il gamepad non invia un descrittore di utilizzo HID corretto quando è connesso tramite Bluetooth. Il gamepad dovrebbe inviare un descrittore di utilizzo HID che segnala che si tratta di un gamepad. Tuttavia invia un descrittore di utilizzo HID che segnala che si tratta di un dispositivo composto di tastiera, mouse e gamepad allo stesso tempo.
Per esempio, questa è una schermata del gestore dispositivi di Windows, che mostra che il gamepad agisce come diversi tipi di dispositivi contemporaneamente.
WindowseLinuxcreanosemplicemente3dispositivi,undispositivotastiera,undispositivomouseeundispositivogamepad.TuttaviaOSXcreasoloundispositivochecontienetuttelefunzionalitàcontemporaneamente,chelamaggiorpartedeiprogramminonriconoscecomeungamepad.Finoral'unicaAppingradodimostrarmicheidatidiposizionedegliassiAnalogiciedeipulsantidelgamepadsonoeffettivamentetrasmessièl'appHIDexplorerdiapple(
Ora sto cercando una soluzione alternativa su OSX. Alcuni sistemi Linux hanno anche un problema con il descrittore di utilizzo HID wron. Tuttavia, di solito possono risolverlo impostando una regola udev che specifica in modo specifico al sistema di trattare il dispositivo come gamepad / joystick, ad esempio in questo modo:
# 8Bitdo SFC30 GamePad Bluetooth mode(START)
SUBSYSTEM=="input", ATTRS{name}=="8Bitdo SFC30 GamePad", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
Ovviamente OSX non ha udev. Qualcuno sa come dire / forzare OSX a trattare un dispositivo di input come un joystick / gamepad? O forse come creare un dispositivo gamepad virtuale che prende il suo input dagli assi / pulsanti del dispositivo composito tastiera / mouse / gamepad? O altre idee su come affrontare questo problema?
Nota: sono particolarmente interessato all'utilizzo delle levette analogiche. Quindi non è possibile solo associarli ai pulsanti della tastiera. (Il gamepad ha già una modalità speciale per farlo da solo. Tuttavia, gli stick analogici, ovviamente, non funzionano.)