Estoy investigando una incompatibilidad de algunos Bluetooth Gamepads con OSX: Tengo un Bluetooth Gamepad (NES30 Pro). El problema es que si lo conecto a través de bluetooth, no funciona correctamente en OSX. Ya encontré la causa y le informé al fabricante, y me prometieron que lo arreglarían. Sin embargo, mientras tanto me gustaría encontrar una solución.
La causa del problema es que el Gamepad no envía un descriptor de uso HID adecuado cuando está conectado a través de Bluetooth. El Gamepad debe enviar un descriptor de uso HID que indique que es un gamepad. Sin embargo, envía un descriptor de uso HID que señala que es un dispositivo compuesto de teclado, mouse y gamepad al mismo tiempo.
Por ejemplo, esta es una captura de pantalla del administrador de dispositivos de Windows, que muestra que el Gamepad actúa como varios tipos de dispositivos a la vez.
WindowsyLinuxsimplementecrean3dispositivos,undispositivodeteclado,undispositivodemouseyundispositivodegamepad.Sinembargo,OSXcreasoloundispositivoquecontienetodaslasfuncionesalavez,quelamayoríadelosprogramasnoreconocencomounGamepad.Hastaahora,laúnicaaplicaciónquepodríamostrarmequelosdatosdeposicióndelosejesanalógicosydelosbotonesdelgamepadsetransmiteneslaaplicaciónHIDexplorerdeapple(
Ahora estoy buscando una solución en OSX. Algunos sistemas Linux también tienen un problema con el descriptor de uso de WID HID. Sin embargo, por lo general, pueden solucionarlo estableciendo una regla udev que específicamente le dice al sistema que trate el dispositivo como un gamepad / joystick, como por ejemplo:
# 8Bitdo SFC30 GamePad Bluetooth mode(START)
SUBSYSTEM=="input", ATTRS{name}=="8Bitdo SFC30 GamePad", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
Por supuesto que OSX no tiene udev. ¿Alguien sabe cómo decirle / obligar a OSX a tratar un dispositivo de entrada como un joystick / gamepad? ¿O tal vez cómo crear un dispositivo de gamepad virtual que tome su entrada de los ejes / botones del dispositivo compuesto teclado / mouse / gamepad? ¿O alguna otra idea de cómo abordar ese problema?
Nota: Estoy especialmente interesado en usar los sticks analógicos. Así que solo asignarlos a los botones del teclado no es una opción. (El gamepad ya tiene un modo especial para hacerlo solo. Sin embargo, los sticks analógicos, por supuesto, no funcionan).