Usando el controlador PS3 para la entrada en Mac OSX


16

Me las arreglé para encontrar un controlador USB para conectarme al controlador PS3 en OSX, y como se informa aquí , puedo conectarme al controlador a través de Bluetooth.

Verifiqué que la entrada funciona correctamente a través de Snes9x.

De todos modos, eso es solo un trasfondo para mi pregunta real . ¿Hay alguna forma de acceder a la PS3 HID, a través de C ++, en la Mac? Soy relativamente nuevo en el desarrollo de C ++ en Mac con XCode, e Internet ha sido decepcionante en mi búsqueda de una posible biblioteca para usar.

¿Alguien tiene alguna idea sobre cómo podría acceder a los estados del botón / eje del controlador en el código, para poder transferirlos a mis mapas de entrada?


2
Ni cerrar ni eliminar son realmente apropiados ya que es una pregunta decente; deberías poder publicar una respuesta y aceptarla un poco más tarde. Me sorprende que haya una puerta de reputación en eso. Si no, solo planea volver a esta pregunta cuando tengas un poco más de reputación, supongo.

Respuestas:


4

Entonces, una hora más o menos jugando y probando diferentes bibliotecas, y parece que OIS (y SDL ) simplemente reconoce el controlador como un joystick y me proporciona todo lo que necesito.

Si instala OIS desde el enlace anterior y realiza / ejecuta el proyecto 'ConsoleTest', puede ver la salida del controlador en la ventana de depuración.


Además, aquí hay enumeraciones que he estado usando que coinciden con los números de ejes / botones producidos por SDL (nota no OIS, que ahora he decidido no usar, las numeraciones podrían ser las mismas). Tenga en cuenta que los botones de activación no se clasifican como un eje, que estoy bastante seguro de que deberían ser (0-255 de memoria):

//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
};
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.