Usando o controlador PS3 para entrada no Mac OSX


16

Consegui encontrar um driver USB para conectar-se ao controlador PS3 no OSX e, conforme relatado aqui , pode conectar-se ao controlador via Bluetooth.

Eu verifiquei que a entrada está funcionando corretamente via Snes9x.

Enfim, isso é apenas um pano de fundo para a minha pergunta real . Existe alguma maneira de acessar o PS3 HID, via C ++, no Mac? Sou relativamente novo no desenvolvimento de C ++ no Mac usando o XCode, e a Internet tem decepcionado minha pesquisa por uma possível biblioteca para uso.

Alguém tem alguma idéia de como eu poderia acessar os estados do botão / eixo do controlador no código, para que eu possa transferi-los para meus mapas de entrada?


2
Nenhum fechamento ou exclusão é realmente apropriado, pois é uma pergunta decente; você poderá postar uma resposta e aceitá-la um pouco mais tarde. Estou surpreso que haja um portão de reputação nisso. Caso contrário, planeje voltar a essa pergunta quando você tiver um pouco mais de reputação, suponho.

Respostas:


4

Assim, uma hora ou mais de mexer e tentar diferentes bibliotecas, e parece que o OIS (e SDL ) reconhece o controlador como um joystick e me fornece tudo o que preciso.

Se você instalar o OIS a partir do link acima e criar / executar o projeto 'ConsoleTest', poderá ver a saída do controlador na janela de depuração.


Além disso, aqui estão as enumerações em que uso essa correspondência com os números de eixos / botões produzidos pelo SDL (observe que não o OIS, que agora decidi não usar, as numerações podem muito bem ser as mesmas). Observe que os botões de disparo não são classificados como um eixo, o que tenho certeza de que eles devem ter (0 a 255 da memória):

//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
};
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.