Использование контроллера 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
};
Джек Смит
источник