0 votes

Solution pour le mauvais descripteur d'utilisation HID envoyé par la manette de jeu Bluetooth ?

J'enquête sur une incompatibilité de certains Gamepads Bluetooth avec OSX : J'ai un Gamepad Bluetooth (NES30 Pro). Le problème est que si je le connecte en bluetooth, il ne fonctionne pas correctement sous OSX. J'ai déjà trouvé la cause et j'ai informé le fabricant, et ils ont promis de regarder pour corriger cela. Cependant, en attendant, j'aimerais trouver une solution de contournement.

La cause du problème est que le Gamepad n'envoie pas un descripteur d'utilisation HID correct lorsqu'il est connecté via Bluetooth. Le Gamepad devrait envoyer un descripteur d'utilisation HID qui signale qu'il s'agit d'une manette de jeu. Cependant, il envoie un descripteur d'utilisation HID qui signale qu'il s'agit d'un périphérique composé d'un clavier, d'une souris et d'un Gamepad en même temps.

À titre d'illustration, voici une capture d'écran du gestionnaire de périphériques de Windows, qui montre que le Gamepad agit comme plusieurs types de périphériques à la fois. For illustration, this is a screenshot taken on Windows , showing that the device acts as several device types at once

Windows et Linux créent simplement 3 périphériques, un périphérique clavier, un périphérique souris et un périphérique gamepad. Cependant, OSX crée un seul périphérique qui contient toutes les fonctionnalités à la fois, que la plupart des programmes ne reconnaissent pas comme un Gamepad. Jusqu'à présent, la seule application qui a pu me montrer que les données de position des axes analogiques et des boutons du gamepad sont effectivement transmises est l'application HID Explorer d'Apple ( http://developer.apple.com/mac/library/samplecode/HID_Explorer/HID_Explorer.zip )

Je suis maintenant à la recherche d'une solution de contournement sous OSX. Certains systèmes Linux ont également un problème avec le descripteur d'utilisation de wron HID. Cependant, ils peuvent généralement le résoudre en définissant une règle udev qui indique spécifiquement au système de traiter le périphérique comme gamepad/joystick, par exemple comme cela :

# 8Bitdo SFC30 GamePad Bluetooth mode(START)
SUBSYSTEM=="input", ATTRS{name}=="8Bitdo SFC30 GamePad", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"

Bien sûr, OSX ne dispose pas de udev. Quelqu'un sait-il comment dire/forcer OSX à traiter un périphérique d'entrée comme un joystick/gamepad ? Ou peut-être comment créer un périphérique gamepad virtuel qui prend son entrée à partir des axes/boutons du périphérique composé clavier/souris/gamepad ? Ou toute autre idée pour résoudre ce problème ?

Note : Je suis particulièrement intéressé par l'utilisation des sticks analogiques. Il n'est donc pas question de les faire correspondre aux boutons du clavier. (Le gamepad dispose déjà d'un mode spécial pour le faire lui-même. Mais dans ce cas, les sticks analogiques ne fonctionnent évidemment pas).

1voto

Oskar Points 1242

Je chercherais soit à obtenir un logiciel pour reproduire ce que font les pilotes Windows, soit à trouver un matériel avec des pilotes pour OS X.

De plus, sous OS X, les jeux que vous souhaitez utiliser doivent également prendre en charge la recherche de manettes sans fil. Cela pourrait donc être un problème à résoudre pour vous aussi.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X