Використання контролера PS3 для введення даних на Mac OSX


16

Мені вдалося знайти драйвер USB для підключення до контролера PS3 в OSX, і, як повідомляється тут , можна підключитися до контролера через Bluetooth.

Я перевірив, що вхід працює належним чином через Snes9x.

У всякому разі, це лише фон для мого актуального питання. Чи є якийсь спосіб отримати доступ до PS3 HID через C ++ на Mac? Я порівняно новачок у розробці C ++ на Mac, що використовує XCode, і Інтернет розчарував у моєму пошуку можливо використовувати бібліотеку.

Хтось має уявлення про те, як я міг отримати доступ до стану кнопки / осі контролера в коді, щоб я міг перенести їх на свої вхідні карти?


2
Ні закриття, ні видалення насправді не підходять, оскільки це гідне питання; ви повинні мати змогу опублікувати відповідь на нього та прийняти її трохи пізніше. Я здивований, що для цього є ворота репутації. Якщо ні, просто плануйте повернутися до цього питання, коли у вас є трохи більше репутації.

Відповіді:


4

Отож, годину або близько того, щоб обмацувати та пробувати різні бібліотеки, і, здається, OISSDL ) просто розпізнає контролер як джойстик і надає мені все, що мені потрібно.

Якщо встановити OIS за посиланням вище та зробити / запустити проект 'ConsoleTest', ви можете побачити вихід з контролера у вікні налагодження.


Крім того, ось переліки, які я використовував цю відповідність номерам осей / кнопок, вироблених SDL (зауважте, не OIS, який я зараз вирішив не використовувати, нумерація цілком може бути однаковою). Зауважте, що кнопки спуску не класифікуються як вісь, що я впевнений, що вони повинні бути (0-255 з пам'яті):

//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
};
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.