在Mac OSX上使用PS3控制器进行输入


16

我设法找到一个USB驱动程序以连接到OSX中的PS3控制器,并且如此处所述,可以通过蓝牙连接到该控制器。

我已验证输入是否可以通过Snes9x正常工作。

无论如何,这只是我实际问题的背景。在Mac上,是否可以通过C ++访问PS3 HID?对于使用XCode在Mac上进行C ++开发的人来说,我还比较陌生,而对于寻找可能要使用的库,互联网一直令人失望。

是否有人对如何访问代码中的控制器按钮/轴状态有任何想法,以便可以将其传输到输入映射?


2
关闭或删除都不合适,因为这是一个体面的问题。您应该能够发布答案,并在稍后再接受它。我很惊讶在那上面有一个声誉门。如果没有,我想当您的声誉更高时,请计划再回到这个问题。

Answers:


4

因此,一个小时左右的时间来摆弄和尝试不同的库,似乎OIS(和SDL)只是将控制器识别为操纵杆,并为我提供了我需要的一切。

如果从上面的链接安装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
};
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.