Verwenden des PS3-Controllers für die Eingabe unter Mac OSX

16

Ich habe es geschafft, einen USB-Treiber für die Verbindung zum PS3-Controller in OSX zu finden. Wie hier berichtet , kann eine Verbindung zum Controller über Bluetooth hergestellt werden.

Ich habe überprüft, ob die Eingabe über Snes9x ordnungsgemäß funktioniert.

Jedenfalls ist das nur der Hintergrund für meine eigentliche Frage. Gibt es eine Möglichkeit, auf dem Mac über C ++ auf das PS3-HID zuzugreifen? Ich bin relativ neu in der C ++ - Entwicklung auf Mac mit XCode, und das Internet hat mich bei der Suche nach einer möglicherweise zu verwendenden Bibliothek enttäuscht.

Hat jemand eine Idee, wie ich im Code auf die Schaltflächen- / Achszustände der Steuerung zugreifen kann, damit ich sie auf meine Eingabekarten übertragen kann?

Jack Smith
quelle
2
Weder das Schließen noch das Löschen sind wirklich angemessen, da es sich um eine anständige Frage handelt. Sie sollten in der Lage sein, eine Antwort darauf zu posten und sie einige Zeit später zu akzeptieren. Ich bin überrascht, dass es da ein Reputationstor gibt. Wenn nicht, kommen Sie einfach auf diese Frage zurück, wenn Sie, wie ich vermute, einen etwas besseren Ruf haben.

Antworten:

4

Nach ungefähr einer Stunde Fummeln und Ausprobieren verschiedener Bibliotheken erkennt OIS (und SDL ) den Controller anscheinend nur als Joystick und stellt mir alles zur Verfügung, was ich brauche.

Wenn Sie OIS über den obigen Link installieren und das 'ConsoleTest'-Projekt erstellen / ausführen, können Sie die Ausgabe des Controllers im Debug-Fenster sehen.


Außerdem sind hier die Aufzählungen aufgeführt, die ich für die von SDL erstellten Achsen- / Tastennummern verwendet habe (beachten Sie, dass nicht OIS, für das ich mich jetzt entschieden habe, die Nummerierungen möglicherweise identisch sind). Beachten Sie, dass die Auslösetasten nicht als Achse klassifiziert sind. Ich bin mir ziemlich sicher, dass dies der Fall sein sollte (0-255 aus dem Speicher):

//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
quelle