mirror of https://github.com/encounter/SDL.git
Fix joystick support
This commit is contained in:
parent
41d6c80b07
commit
73b545ed28
|
@ -95,6 +95,9 @@ static SDL_JoystickDriver *SDL_joystick_drivers[] = {
|
|||
#ifdef SDL_JOYSTICK_VIRTUAL
|
||||
&SDL_VIRTUAL_JoystickDriver,
|
||||
#endif
|
||||
#ifdef SDL_JOYSTICK_VITA
|
||||
&SDL_VITA_JoystickDriver
|
||||
#endif
|
||||
#if defined(SDL_JOYSTICK_DUMMY) || defined(SDL_JOYSTICK_DISABLED)
|
||||
&SDL_DUMMY_JoystickDriver
|
||||
#endif
|
||||
|
|
|
@ -206,6 +206,7 @@ extern SDL_JoystickDriver SDL_WINDOWS_JoystickDriver;
|
|||
extern SDL_JoystickDriver SDL_WINMM_JoystickDriver;
|
||||
extern SDL_JoystickDriver SDL_OS2_JoystickDriver;
|
||||
extern SDL_JoystickDriver SDL_PSP_JoystickDriver;
|
||||
extern SDL_JoystickDriver SDL_VITA_JoystickDriver;
|
||||
|
||||
#endif /* SDL_sysjoystick_h_ */
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ static int calc_bezier_y(float t)
|
|||
* Joystick 0 should be the system default joystick.
|
||||
* It should return number of joysticks, or -1 on an unrecoverable fatal error.
|
||||
*/
|
||||
int SDL_SYS_JoystickInit(void)
|
||||
int VITA_JoystickInit(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -129,61 +129,58 @@ int SDL_SYS_JoystickInit(void)
|
|||
return SDL_numjoysticks;
|
||||
}
|
||||
|
||||
int SDL_SYS_NumJoysticks()
|
||||
int VITA_JoystickGetCount()
|
||||
{
|
||||
return SDL_numjoysticks;
|
||||
}
|
||||
|
||||
void SDL_SYS_JoystickDetect()
|
||||
void VITA_JoystickDetect()
|
||||
{
|
||||
}
|
||||
|
||||
/* Function to get the device-dependent name of a joystick */
|
||||
const char * SDL_SYS_JoystickNameForDeviceIndex(int device_index)
|
||||
{
|
||||
if (device_index == 1)
|
||||
return "PSVita Controller";
|
||||
|
||||
if (device_index == 2)
|
||||
return "PSVita Controller";
|
||||
|
||||
if (device_index == 3)
|
||||
return "PSVita Controller";
|
||||
|
||||
return "PSVita Controller";
|
||||
}
|
||||
|
||||
/* Function to perform the mapping from device index to the instance id for this index */
|
||||
SDL_JoystickID SDL_SYS_GetInstanceIdOfDeviceIndex(int device_index)
|
||||
SDL_JoystickID VITA_JoystickGetDeviceInstanceID(int device_index)
|
||||
{
|
||||
return device_index;
|
||||
}
|
||||
|
||||
/* Function to get the device-dependent name of a joystick */
|
||||
const char *SDL_SYS_JoystickName(int index)
|
||||
const char *VITA_JoystickGetDeviceName(int index)
|
||||
{
|
||||
if (index == 0)
|
||||
return "PSVita Controller";
|
||||
if (index == 0)
|
||||
return "PSVita Controller";
|
||||
|
||||
if (index == 1)
|
||||
return "PSVita Controller";
|
||||
if (index == 1)
|
||||
return "PSVita Controller";
|
||||
|
||||
if (index == 2)
|
||||
return "PSVita Controller";
|
||||
if (index == 2)
|
||||
return "PSVita Controller";
|
||||
|
||||
if (index == 3)
|
||||
return "PSVita Controller";
|
||||
if (index == 3)
|
||||
return "PSVita Controller";
|
||||
|
||||
SDL_SetError("No joystick available with that index");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
static int
|
||||
VITA_JoystickGetDevicePlayerIndex(int device_index)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void
|
||||
VITA_JoystickSetDevicePlayerIndex(int device_index, int player_index)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/* Function to open a joystick for use.
|
||||
The joystick to open is specified by the device index.
|
||||
This should fill the nbuttons and naxes fields of the joystick structure.
|
||||
It returns 0, or -1 if there is an error.
|
||||
*/
|
||||
int SDL_SYS_JoystickOpen(SDL_Joystick *joystick, int device_index)
|
||||
int VITA_JoystickOpen(SDL_Joystick *joystick, int device_index)
|
||||
{
|
||||
joystick->nbuttons = sizeof(button_map)/sizeof(*button_map);
|
||||
joystick->naxes = 4;
|
||||
|
@ -193,18 +190,12 @@ int SDL_SYS_JoystickOpen(SDL_Joystick *joystick, int device_index)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Function to determine if this joystick is attached to the system right now */
|
||||
SDL_bool SDL_SYS_JoystickAttached(SDL_Joystick *joystick)
|
||||
{
|
||||
return SDL_TRUE;
|
||||
}
|
||||
|
||||
/* Function to update the state of a joystick - called as a device poll.
|
||||
* This function shouldn't update the joystick structure directly,
|
||||
* but instead should call SDL_PrivateJoystick*() to deliver events
|
||||
* and update joystick device state.
|
||||
*/
|
||||
void SDL_SYS_JoystickUpdate(SDL_Joystick *joystick)
|
||||
void VITA_JoystickUpdate(SDL_Joystick *joystick)
|
||||
{
|
||||
int i;
|
||||
unsigned int buttons;
|
||||
|
@ -217,11 +208,11 @@ void SDL_SYS_JoystickUpdate(SDL_Joystick *joystick)
|
|||
static unsigned char old_ry[] = { 0, 0, 0, 0 };
|
||||
SceCtrlData *pad = NULL;
|
||||
|
||||
int index = (int) SDL_JoystickInstanceID(joystick);
|
||||
int index = (int) SDL_JoystickInstanceID(joystick);
|
||||
|
||||
if (index == 0) pad = &pad0;
|
||||
else if (index == 1) pad = &pad1;
|
||||
else if (index == 2) pad = &pad2;
|
||||
else if (index == 2) pad = &pad2;
|
||||
else if (index == 3) pad = &pad3;
|
||||
else return;
|
||||
|
||||
|
@ -275,35 +266,51 @@ void SDL_SYS_JoystickUpdate(SDL_Joystick *joystick)
|
|||
}
|
||||
|
||||
/* Function to close a joystick after use */
|
||||
void SDL_SYS_JoystickClose(SDL_Joystick *joystick)
|
||||
void VITA_JoystickClose(SDL_Joystick *joystick)
|
||||
{
|
||||
}
|
||||
|
||||
/* Function to perform any system-specific joystick related cleanup */
|
||||
void SDL_SYS_JoystickQuit(void)
|
||||
void VITA_JoystickQuit(void)
|
||||
{
|
||||
}
|
||||
|
||||
SDL_JoystickGUID SDL_SYS_JoystickGetDeviceGUID( int device_index )
|
||||
SDL_JoystickGUID VITA_JoystickGetDeviceGUID( int device_index )
|
||||
{
|
||||
SDL_JoystickGUID guid;
|
||||
/* the GUID is just the first 16 chars of the name for now */
|
||||
const char *name = SDL_SYS_JoystickNameForDeviceIndex( device_index );
|
||||
const char *name = VITA_JoystickGetDeviceName( device_index );
|
||||
SDL_zero( guid );
|
||||
SDL_memcpy( &guid, name, SDL_min( sizeof(guid), SDL_strlen( name ) ) );
|
||||
return guid;
|
||||
}
|
||||
|
||||
SDL_JoystickGUID SDL_SYS_JoystickGetGUID(SDL_Joystick * joystick)
|
||||
static int
|
||||
VITA_JoystickRumble(SDL_Joystick * joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble)
|
||||
{
|
||||
SDL_JoystickGUID guid;
|
||||
/* the GUID is just the first 16 chars of the name for now */
|
||||
const char *name = joystick->name;
|
||||
SDL_zero( guid );
|
||||
SDL_memcpy( &guid, name, SDL_min( sizeof(guid), SDL_strlen( name ) ) );
|
||||
return guid;
|
||||
return SDL_Unsupported();
|
||||
}
|
||||
|
||||
|
||||
SDL_JoystickDriver SDL_VITA_JoystickDriver =
|
||||
{
|
||||
VITA_JoystickInit,
|
||||
VITA_JoystickGetCount,
|
||||
VITA_JoystickDetect,
|
||||
VITA_JoystickGetDeviceName,
|
||||
VITA_JoystickGetDevicePlayerIndex,
|
||||
VITA_JoystickSetDevicePlayerIndex,
|
||||
VITA_JoystickGetDeviceGUID,
|
||||
VITA_JoystickGetDeviceInstanceID,
|
||||
|
||||
VITA_JoystickOpen,
|
||||
VITA_JoystickRumble,
|
||||
VITA_JoystickUpdate,
|
||||
VITA_JoystickClose,
|
||||
VITA_JoystickQuit,
|
||||
};
|
||||
|
||||
|
||||
#endif /* SDL_JOYSTICK_VITA */
|
||||
|
||||
/* vim: ts=4 sw=4
|
||||
|
|
Loading…
Reference in New Issue