Utilisation du contrôleur PS3 pour l'entrée sur Mac OSX

16

J'ai réussi à trouver un pilote USB pour se connecter au contrôleur PS3 dans OSX, et comme indiqué ici , je peux me connecter au contrôleur via Bluetooth.

J'ai vérifié que l'entrée fonctionne correctement via Snes9x.

Quoi qu'il en soit, ce n'est qu'un arrière-plan pour ma vraie question. Existe-t-il un moyen d'accéder à la PS3 HID, via C ++, sur le Mac? Je suis relativement nouveau dans le développement C ++ sur Mac en utilisant XCode, et Internet a été décevant dans ma recherche d'une éventuelle bibliothèque à utiliser.

Quelqu'un a-t-il des idées sur la façon dont je pourrais accéder aux états des boutons / axes du contrôleur dans le code, donc je peux les transférer dans mes cartes d'entrée?

Jack Smith
la source
2
Ni la fermeture ni la suppression ne sont vraiment appropriées car c'est une question décente; vous devriez pouvoir y poster une réponse et l'accepter un peu plus tard. Je suis surpris qu'il y ait une porte de réputation là-dessus. Sinon, prévoyez simplement de revenir sur cette question lorsque vous aurez un peu plus de réputation, je suppose.

Réponses:

4

Donc, une heure environ pour jouer et essayer différentes bibliothèques, et il semble que OIS (et SDL ) reconnaisse simplement le contrôleur comme un joystick et me fournit tout ce dont j'ai besoin.

Si vous installez OIS à partir du lien ci-dessus et créez / exécutez le projet «ConsoleTest», vous pouvez voir la sortie du contrôleur dans la fenêtre de débogage.


De plus, voici les énumérations que j'ai utilisées pour faire correspondre les numéros d'axes / boutons produits par SDL (notez pas OIS, que j'ai décidé de ne pas utiliser, les numérotations pourraient bien être les mêmes). Notez que les boutons de déclenchement ne sont pas classés comme un axe, ce que je suis sûr qu'ils devraient être (0-255 de mémoire):

//Values SDL attributes to individual PS3 axes
enum EPS3RawAxesIndex
{
    EPS3RawAxesIndex_LeftX = 0,
    EPS3RawAxesIndex_LeftY = 1,
    EPS3RawAxesIndex_RightX = 2,
    EPS3RawAxesIndex_RightY = 3
};

//Values SDL attributes to individual PS3 controller buttons
enum EPS3RawButtonIndex
{
    EPS3RawButtonIndex_Select           = 0,

    EPS3RawButtonIndex_JoyClickLeft     = 1,
    EPS3RawButtonIndex_JoyClickRight    = 2,

    EPS3RawButtonIndex_Start            = 3,

    EPS3RawButtonIndex_DpadUp           = 4,
    EPS3RawButtonIndex_DpadRight        = 5,
    EPS3RawButtonIndex_DpadDown         = 6,
    EPS3RawButtonIndex_DpadLeft         = 7,

    EPS3RawButtonIndex_TriggerLeft      = 8,
    EPS3RawButtonIndex_TriggerRight     = 9,

    EPS3RawButtonIndex_ShoulderLeft     = 10,
    EPS3RawButtonIndex_ShoulderRight    = 11,

    EPS3RawButtonIndex_Triangle         = 12,
    EPS3RawButtonIndex_Circle           = 13,
    EPS3RawButtonIndex_Cross            = 14,
    EPS3RawButtonIndex_Square           = 15,

    EPS3RawButtonIndex_PSButton         = 16
};
Jack Smith
la source