Menggunakan pengontrol PS3 untuk input pada Mac OSX

16

Saya sudah berhasil menemukan driver USB untuk terhubung ke controller PS3 di OSX, dan seperti yang dilaporkan di sini , dapat terhubung ke controller melalui Bluetooth.

Saya telah memverifikasi bahwa input berfungsi dengan baik melalui Snes9x.

Bagaimanapun, itu hanya latar belakang untuk pertanyaan saya yang sebenarnya . Apakah ada cara untuk mengakses HID PS3, melalui C ++, di Mac? Saya relatif baru untuk pengembangan C ++ di Mac menggunakan XCode, dan internet telah mengecewakan dalam pencarian saya untuk kemungkinan perpustakaan untuk digunakan.

Apakah ada yang punya ide tentang bagaimana saya dapat mengakses tombol pengontrol / status sumbu dalam kode, sehingga saya dapat mentransfernya ke peta input saya?

Jack Smith
sumber
2
Tidak ada penutupan atau penghapusan yang benar-benar tepat karena ini adalah pertanyaan yang layak; Anda harus dapat memposting jawaban dan menerimanya beberapa saat kemudian. Saya terkejut ada gerbang reputasi di sana. Jika tidak, rencanakan saja untuk kembali ke pertanyaan ini ketika Anda memiliki reputasi yang sedikit lebih tinggi.

Jawaban:

4

Jadi, sekitar satu jam mengutak-atik dan mencoba berbagai perpustakaan, dan sepertinya OIS (dan SDL ) hanya mengenali controller sebagai joystick dan memberi saya semua yang saya butuhkan.

Jika Anda menginstal OIS dari tautan di atas, dan membuat / menjalankan proyek 'ConsoleTest', Anda dapat melihat output dari pengontrol di jendela debug.


Selain itu, inilah enum yang telah saya gunakan yang cocok dengan nomor sumbu / tombol yang diproduksi oleh SDL (perhatikan bukan OIS, yang sekarang saya putuskan untuk tidak digunakan, penomorannya bisa saja sama). Perhatikan bahwa tombol pemicu tidak diklasifikasikan sebagai sumbu, yang saya cukup yakin seharusnya (0-255 dari memori):

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