SDL
2.0
|
#include "../SDL_internal.h"
#include "SDL.h"
#include "SDL_events.h"
#include "SDL_sysjoystick.h"
#include "SDL_assert.h"
#include "SDL_hints.h"
#include "../events/SDL_events_c.h"
#include "../video/SDL_sysvideo.h"
Go to the source code of this file.
Variables | |
static SDL_bool | SDL_joystick_allows_background_events = SDL_FALSE |
static SDL_Joystick * | SDL_joysticks = NULL |
static SDL_bool | SDL_updating_joystick = SDL_FALSE |
static SDL_mutex * | SDL_joystick_lock = NULL |
|
static |
void SDL_GetJoystickGUIDInfo | ( | SDL_JoystickGUID | guid, |
Uint16 * | vendor, | ||
Uint16 * | product, | ||
Uint16 * | version | ||
) |
Definition at line 933 of file SDL_joystick.c.
References SDL_JoystickGUID::data.
Referenced by SDL_GetJoystickGUIDType(), SDL_JoystickGetDeviceProduct(), SDL_JoystickGetDeviceProductVersion(), SDL_JoystickGetDeviceVendor(), SDL_JoystickGetProduct(), SDL_JoystickGetProductVersion(), SDL_JoystickGetVendor(), and SDL_ShouldIgnoreGameController().
|
static |
Definition at line 1027 of file SDL_joystick.c.
References SDL_JoystickGUID::data, MAKE_VIDPID, NULL, SDL_GetJoystickGUIDInfo(), SDL_IsJoystickProductFlightStick(), SDL_IsJoystickProductThrottle(), SDL_IsJoystickProductWheel(), SDL_JOYSTICK_TYPE_ARCADE_PAD, SDL_JOYSTICK_TYPE_ARCADE_STICK, SDL_JOYSTICK_TYPE_DANCE_PAD, SDL_JOYSTICK_TYPE_DRUM_KIT, SDL_JOYSTICK_TYPE_FLIGHT_STICK, SDL_JOYSTICK_TYPE_GAMECONTROLLER, SDL_JOYSTICK_TYPE_GUITAR, SDL_JOYSTICK_TYPE_THROTTLE, SDL_JOYSTICK_TYPE_UNKNOWN, and SDL_JOYSTICK_TYPE_WHEEL.
Referenced by SDL_JoystickGetDeviceType(), and SDL_JoystickGetType().
Definition at line 995 of file SDL_joystick.c.
References i, MAKE_VIDPID, SDL_arraysize, SDL_FALSE, and SDL_TRUE.
Referenced by SDL_GetJoystickGUIDType().
Definition at line 1011 of file SDL_joystick.c.
References i, MAKE_VIDPID, SDL_arraysize, SDL_FALSE, and SDL_TRUE.
Referenced by SDL_GetJoystickGUIDType().
Definition at line 968 of file SDL_joystick.c.
References i, MAKE_VIDPID, SDL_arraysize, SDL_FALSE, and SDL_TRUE.
Referenced by SDL_GetJoystickGUIDType().
|
static |
Definition at line 60 of file SDL_joystick.c.
References SDL_FALSE, SDL_joystick_allows_background_events, and SDL_TRUE.
Referenced by SDL_JoystickInit(), and SDL_JoystickQuit().
|
static |
Definition at line 126 of file SDL_joystick.c.
References i, MAKE_VIDPID, SDL_arraysize, SDL_FALSE, SDL_JoystickGetProduct(), SDL_JoystickGetVendor(), and SDL_TRUE.
Referenced by SDL_JoystickOpen().
void SDL_JoystickClose | ( | SDL_Joystick * | joystick | ) |
Close a joystick previously opened with SDL_JoystickOpen().
Definition at line 491 of file SDL_joystick.c.
References NULL, SDL_free, SDL_joysticks, SDL_LockJoysticks(), SDL_SYS_JoystickClose(), SDL_UnlockJoysticks(), and SDL_updating_joystick.
Referenced by SDL_JoystickOpen(), SDL_JoystickQuit(), and SDL_JoystickUpdate().
SDL_JoystickPowerLevel SDL_JoystickCurrentPowerLevel | ( | SDL_Joystick * | joystick | ) |
Return the battery level of this joystick
Definition at line 1268 of file SDL_joystick.c.
References SDL_JOYSTICK_POWER_UNKNOWN, and SDL_PrivateJoystickValid().
int SDL_JoystickEventState | ( | int | state | ) |
Enable/disable joystick event polling.
If joystick events are disabled, you must call SDL_JoystickUpdate() yourself and check the state of the joystick when you want joystick information.
The state can be one of SDL_QUERY, SDL_ENABLE or SDL_IGNORE.
Definition at line 902 of file SDL_joystick.c.
References i, SDL_arraysize, SDL_DISABLE, SDL_ENABLE, SDL_EventState, SDL_JOYAXISMOTION, SDL_JOYBALLMOTION, SDL_JOYBUTTONDOWN, SDL_JOYBUTTONUP, SDL_JOYDEVICEADDED, SDL_JOYDEVICEREMOVED, SDL_JOYHATMOTION, and SDL_QUERY.
SDL_Joystick* SDL_JoystickFromInstanceID | ( | SDL_JoystickID | joyid | ) |
Return the SDL_Joystick associated with an instance id.
Definition at line 459 of file SDL_joystick.c.
References NULL, SDL_joysticks, SDL_LockJoysticks(), and SDL_UnlockJoysticks().
SDL_bool SDL_JoystickGetAttached | ( | SDL_Joystick * | joystick | ) |
Returns SDL_TRUE if the joystick has been opened and currently connected, or SDL_FALSE if it has not.
Definition at line 433 of file SDL_joystick.c.
References SDL_FALSE, SDL_PrivateJoystickValid(), and SDL_SYS_JoystickAttached().
Sint16 SDL_JoystickGetAxis | ( | SDL_Joystick * | joystick, |
int | axis | ||
) |
Get the current state of an axis control on a joystick.
The state is a value ranging from -32768 to 32767.
The axis indices start at index 0.
Definition at line 325 of file SDL_joystick.c.
References axis, SDL_PrivateJoystickValid(), SDL_SetError, and state.
Get the initial state of an axis control on a joystick.
The state is a value ranging from -32768 to 32767.
The axis indices start at index 0.
Definition at line 345 of file SDL_joystick.c.
References axis, SDL_FALSE, SDL_PrivateJoystickValid(), and SDL_SetError.
int SDL_JoystickGetBall | ( | SDL_Joystick * | joystick, |
int | ball, | ||
int * | dx, | ||
int * | dy | ||
) |
Get the ball axis change since the last poll.
The ball indices start at index 0.
Definition at line 384 of file SDL_joystick.c.
References retval, SDL_PrivateJoystickValid(), and SDL_SetError.
Uint8 SDL_JoystickGetButton | ( | SDL_Joystick * | joystick, |
int | button | ||
) |
Get the current state of a button on a joystick.
The button indices start at index 0.
Definition at line 412 of file SDL_joystick.c.
References button, SDL_PrivateJoystickValid(), SDL_SetError, and state.
SDL_JoystickGUID SDL_JoystickGetDeviceGUID | ( | int | device_index | ) |
Return the GUID for the joystick at this index This can be called before any joysticks are opened.
Definition at line 1078 of file SDL_joystick.c.
References SDL_NumJoysticks(), SDL_SetError, SDL_SYS_JoystickGetDeviceGUID(), and SDL_zero.
Referenced by SDL_JoystickGetDeviceProduct(), SDL_JoystickGetDeviceProductVersion(), SDL_JoystickGetDeviceType(), and SDL_JoystickGetDeviceVendor().
SDL_JoystickID SDL_JoystickGetDeviceInstanceID | ( | int | device_index | ) |
Get the instance ID of a joystick. This can be called before any joysticks are opened. If the index is out of range, this function will return -1.
Definition at line 1130 of file SDL_joystick.c.
References SDL_NumJoysticks(), SDL_SetError, and SDL_SYS_GetInstanceIdOfDeviceIndex().
Referenced by SDL_JoystickOpen().
Uint16 SDL_JoystickGetDeviceProduct | ( | int | device_index | ) |
Get the USB product ID of a joystick, if available. This can be called before any joysticks are opened. If the product ID isn't available this function returns 0.
Definition at line 1098 of file SDL_joystick.c.
References NULL, SDL_GetJoystickGUIDInfo(), and SDL_JoystickGetDeviceGUID().
Uint16 SDL_JoystickGetDeviceProductVersion | ( | int | device_index | ) |
Get the product version of a joystick, if available. This can be called before any joysticks are opened. If the product version isn't available this function returns 0.
Definition at line 1107 of file SDL_joystick.c.
References NULL, SDL_GetJoystickGUIDInfo(), and SDL_JoystickGetDeviceGUID().
SDL_JoystickType SDL_JoystickGetDeviceType | ( | int | device_index | ) |
Get the type of a joystick, if available. This can be called before any joysticks are opened.
Definition at line 1116 of file SDL_joystick.c.
References SDL_GetJoystickGUIDType(), SDL_IsGameController, SDL_JOYSTICK_TYPE_GAMECONTROLLER, SDL_JOYSTICK_TYPE_UNKNOWN, and SDL_JoystickGetDeviceGUID().
Uint16 SDL_JoystickGetDeviceVendor | ( | int | device_index | ) |
Get the USB vendor ID of a joystick, if available. This can be called before any joysticks are opened. If the vendor ID isn't available this function returns 0.
Definition at line 1089 of file SDL_joystick.c.
References NULL, SDL_GetJoystickGUIDInfo(), and SDL_JoystickGetDeviceGUID().
SDL_JoystickGUID SDL_JoystickGetGUID | ( | SDL_Joystick * | joystick | ) |
Return the GUID for this opened joystick
Definition at line 1139 of file SDL_joystick.c.
References SDL_PrivateJoystickValid(), SDL_SYS_JoystickGetGUID(), and SDL_zero.
Referenced by SDL_JoystickGetProduct(), SDL_JoystickGetProductVersion(), SDL_JoystickGetType(), and SDL_JoystickGetVendor().
SDL_JoystickGUID SDL_JoystickGetGUIDFromString | ( | const char * | pchGUID | ) |
Convert a string into a joystick guid
Definition at line 1238 of file SDL_joystick.c.
References i, nibble(), SDL_memset, and SDL_strlen.
void SDL_JoystickGetGUIDString | ( | SDL_JoystickGUID | guid, |
char * | pszGUID, | ||
int | cbGUID | ||
) |
Return a string representation for this guid. pszGUID must point to at least 33 bytes (32 for the string plus a NULL terminator).
Definition at line 1191 of file SDL_joystick.c.
References SDL_JoystickGUID::data, i, and NULL.
Uint8 SDL_JoystickGetHat | ( | SDL_Joystick * | joystick, |
int | hat | ||
) |
Get the current state of a POV hat on a joystick.
The hat indices start at index 0.
Definition at line 364 of file SDL_joystick.c.
References SDL_PrivateJoystickValid(), SDL_SetError, and state.
Uint16 SDL_JoystickGetProduct | ( | SDL_Joystick * | joystick | ) |
Get the USB product ID of an opened joystick, if available. If the product ID isn't available this function returns 0.
Definition at line 1158 of file SDL_joystick.c.
References NULL, SDL_GetJoystickGUIDInfo(), and SDL_JoystickGetGUID().
Referenced by SDL_JoystickAxesCenteredAtZero().
Uint16 SDL_JoystickGetProductVersion | ( | SDL_Joystick * | joystick | ) |
Get the product version of an opened joystick, if available. If the product version isn't available this function returns 0.
Definition at line 1167 of file SDL_joystick.c.
References NULL, SDL_GetJoystickGUIDInfo(), and SDL_JoystickGetGUID().
SDL_JoystickType SDL_JoystickGetType | ( | SDL_Joystick * | joystick | ) |
Get the type of an opened joystick.
Definition at line 1176 of file SDL_joystick.c.
References SDL_GetJoystickGUIDType(), SDL_JOYSTICK_TYPE_GAMECONTROLLER, SDL_JOYSTICK_TYPE_UNKNOWN, and SDL_JoystickGetGUID().
Uint16 SDL_JoystickGetVendor | ( | SDL_Joystick * | joystick | ) |
Get the USB vendor ID of an opened joystick, if available. If the vendor ID isn't available this function returns 0.
Definition at line 1149 of file SDL_joystick.c.
References NULL, SDL_GetJoystickGUIDInfo(), and SDL_JoystickGetGUID().
Referenced by SDL_JoystickAxesCenteredAtZero().
int SDL_JoystickInit | ( | void | ) |
Definition at line 70 of file SDL_joystick.c.
References NULL, SDL_AddHintCallback, SDL_CreateMutex, SDL_GameControllerInitMappings(), SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, SDL_INIT_EVENTS, SDL_InitSubSystem, SDL_JoystickAllowBackgroundEventsChanged(), and SDL_SYS_JoystickInit().
Referenced by SDL_InitSubSystem().
SDL_JoystickID SDL_JoystickInstanceID | ( | SDL_Joystick * | joystick | ) |
Get the instance ID of an opened joystick or -1 if the joystick is invalid.
Definition at line 446 of file SDL_joystick.c.
References SDL_PrivateJoystickValid().
const char* SDL_JoystickName | ( | SDL_Joystick * | joystick | ) |
Return the name for this currently opened joystick. If no name can be found, this function returns NULL.
Definition at line 478 of file SDL_joystick.c.
References NULL, and SDL_PrivateJoystickValid().
const char* SDL_JoystickNameForIndex | ( | int | device_index | ) |
Get the implementation dependent name of a joystick. This can be called before any joysticks are opened. If no name can be found, this function returns NULL.
Definition at line 111 of file SDL_joystick.c.
References NULL, SDL_NumJoysticks(), SDL_SetError, and SDL_SYS_JoystickNameForDeviceIndex().
int SDL_JoystickNumAxes | ( | SDL_Joystick * | joystick | ) |
Get the number of general axis controls on a joystick.
Definition at line 277 of file SDL_joystick.c.
References SDL_PrivateJoystickValid().
int SDL_JoystickNumBalls | ( | SDL_Joystick * | joystick | ) |
Get the number of trackballs on a joystick.
Joystick trackballs have only relative motion events associated with them and their state cannot be polled.
Definition at line 301 of file SDL_joystick.c.
References SDL_PrivateJoystickValid().
int SDL_JoystickNumButtons | ( | SDL_Joystick * | joystick | ) |
Get the number of buttons on a joystick.
Definition at line 313 of file SDL_joystick.c.
References SDL_PrivateJoystickValid().
int SDL_JoystickNumHats | ( | SDL_Joystick * | joystick | ) |
Get the number of POV hats on a joystick.
Definition at line 289 of file SDL_joystick.c.
References SDL_PrivateJoystickValid().
SDL_Joystick* SDL_JoystickOpen | ( | int | device_index | ) |
Open a joystick for use. The index passed as an argument refers to the N'th joystick on the system. This index is not the value which will identify this joystick in future joystick events. The joystick's instance id (SDL_JoystickID) will be used there instead.
Definition at line 160 of file SDL_joystick.c.
References i, SDL_GameController::joystick, NULL, SDL_calloc, SDL_free, SDL_IsGameController, SDL_JOYSTICK_POWER_UNKNOWN, SDL_JoystickAxesCenteredAtZero(), SDL_JoystickClose(), SDL_JoystickGetDeviceInstanceID(), SDL_joysticks, SDL_LockJoysticks(), SDL_NumJoysticks(), SDL_OutOfMemory, SDL_SetError, SDL_strdup, SDL_SYS_JoystickNameForDeviceIndex(), SDL_SYS_JoystickOpen(), SDL_SYS_JoystickUpdate(), SDL_TRUE, and SDL_UnlockJoysticks().
Definition at line 545 of file SDL_joystick.c.
References NULL, SDL_assert, SDL_DelHintCallback, SDL_DestroyMutex, SDL_GameControllerQuitMappings(), SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, SDL_INIT_EVENTS, SDL_JoystickAllowBackgroundEventsChanged(), SDL_JoystickClose(), SDL_joysticks, SDL_LockJoysticks(), SDL_QuitSubSystem, SDL_SYS_JoystickQuit(), SDL_UnlockJoysticks(), and SDL_updating_joystick.
Referenced by SDL_QuitSubSystem().
Update the current state of the open joysticks.
This is called automatically by the event loop if any joystick events are enabled.
Definition at line 840 of file SDL_joystick.c.
References i, SDL_FALSE, SDL_HAT_CENTERED, SDL_JoystickClose(), SDL_joysticks, SDL_LockJoysticks(), SDL_PrivateJoystickAxis(), SDL_PrivateJoystickButton(), SDL_PrivateJoystickHat(), SDL_SYS_JoystickDetect(), SDL_SYS_JoystickUpdate(), SDL_TRUE, SDL_UnlockJoysticks(), and SDL_updating_joystick.
Locking for multi-threaded access to the joystick API
If you are using the joystick API or handling events from multiple threads you should use these locking functions to protect access to the joysticks.
In particular, you are guaranteed that the joystick list won't change, so the API functions that take a joystick index will be valid, and joystick and game controller events will not be delivered.
Definition at line 43 of file SDL_joystick.c.
References SDL_LockMutex.
Referenced by SDL_JoystickClose(), SDL_JoystickFromInstanceID(), SDL_JoystickOpen(), SDL_JoystickQuit(), and SDL_JoystickUpdate().
int SDL_NumJoysticks | ( | void | ) |
Count the number of joysticks attached to the system right now
Definition at line 102 of file SDL_joystick.c.
References SDL_SYS_NumJoysticks().
Referenced by SDL_JoystickGetDeviceGUID(), SDL_JoystickGetDeviceInstanceID(), SDL_JoystickNameForIndex(), and SDL_JoystickOpen().
void SDL_PrivateJoystickAdded | ( | int | device_index | ) |
Definition at line 595 of file SDL_joystick.c.
References SDL_ENABLE, SDL_GetEventState, SDL_JOYDEVICEADDED, SDL_PushEvent, and SDL_Event::type.
Referenced by SDL_SYS_AddJoystickDevice(), and SteamControllerConnectedCallback().
Definition at line 655 of file SDL_joystick.c.
References axis, SDL_abs, SDL_ENABLE, SDL_GetEventState, SDL_JOYAXISMOTION, SDL_JOYSTICK_AXIS_MAX, SDL_PrivateJoystickAxis(), SDL_PrivateJoystickShouldIgnoreEvent(), SDL_PushEvent, and SDL_TRUE.
Referenced by SDL_JoystickUpdate(), SDL_PrivateJoystickAxis(), SDL_SYS_AccelerometerUpdate(), and SDL_SYS_MFIJoystickUpdate().
Definition at line 752 of file SDL_joystick.c.
References SDL_ENABLE, SDL_GetEventState, SDL_JOYBALLMOTION, SDL_PrivateJoystickShouldIgnoreEvent(), and SDL_PushEvent.
void SDL_PrivateJoystickBatteryLevel | ( | SDL_Joystick * | joystick, |
SDL_JoystickPowerLevel | ePowerLevel | ||
) |
Definition at line 1261 of file SDL_joystick.c.
Definition at line 788 of file SDL_joystick.c.
References button, SDL_ENABLE, SDL_GetEventState, SDL_JOYBUTTONDOWN, SDL_JOYBUTTONUP, SDL_PRESSED, SDL_PrivateJoystickShouldIgnoreEvent(), SDL_PushEvent, SDL_RELEASED, state, and SDL_Event::type.
Referenced by SDL_JoystickUpdate(), and SDL_SYS_MFIJoystickUpdate().
Definition at line 712 of file SDL_joystick.c.
References SDL_ENABLE, SDL_GetEventState, SDL_HAT_CENTERED, SDL_JOYHATMOTION, SDL_PrivateJoystickShouldIgnoreEvent(), and SDL_PushEvent.
Referenced by SDL_JoystickUpdate(), and SDL_SYS_MFIJoystickUpdate().
void SDL_PrivateJoystickRemoved | ( | SDL_JoystickID | device_instance | ) |
Definition at line 638 of file SDL_joystick.c.
References SDL_ENABLE, SDL_GetEventState, SDL_JOYDEVICEREMOVED, SDL_PushEvent, SDL_Event::type, and UpdateEventsForDeviceRemoval().
Referenced by SDL_SYS_RemoveJoystickDevice().
|
static |
Definition at line 580 of file SDL_joystick.c.
References NULL, SDL_FALSE, SDL_GetKeyboardFocus, SDL_HasWindows(), SDL_joystick_allows_background_events, and SDL_TRUE.
Referenced by SDL_PrivateJoystickAxis(), SDL_PrivateJoystickBall(), SDL_PrivateJoystickButton(), and SDL_PrivateJoystickHat().
int SDL_PrivateJoystickValid | ( | SDL_Joystick * | joystick | ) |
Definition at line 259 of file SDL_joystick.c.
References NULL, and SDL_SetError.
Referenced by SDL_HapticOpenFromJoystick(), SDL_JoystickCurrentPowerLevel(), SDL_JoystickGetAttached(), SDL_JoystickGetAxis(), SDL_JoystickGetAxisInitialState(), SDL_JoystickGetBall(), SDL_JoystickGetButton(), SDL_JoystickGetGUID(), SDL_JoystickGetHat(), SDL_JoystickInstanceID(), SDL_JoystickIsHaptic(), SDL_JoystickName(), SDL_JoystickNumAxes(), SDL_JoystickNumBalls(), SDL_JoystickNumButtons(), and SDL_JoystickNumHats().
Definition at line 51 of file SDL_joystick.c.
References SDL_UnlockMutex, and SDLCALL.
Referenced by SDL_JoystickClose(), SDL_JoystickFromInstanceID(), SDL_JoystickOpen(), SDL_JoystickQuit(), and SDL_JoystickUpdate().
|
static |
Definition at line 614 of file SDL_joystick.c.
References events, i, SDL_Event::jdevice, NULL, SDL_ADDEVENT, SDL_GETEVENT, SDL_JOYDEVICEADDED, SDL_PEEKEVENT, SDL_PeepEvents, SDL_stack_alloc, SDL_stack_free, and SDL_JoyDeviceEvent::which.
Referenced by SDL_PrivateJoystickRemoved().
Definition at line 37 of file SDL_joystick.c.
Referenced by SDL_JoystickAllowBackgroundEventsChanged(), and SDL_PrivateJoystickShouldIgnoreEvent().
Definition at line 40 of file SDL_joystick.c.
|
static |
Definition at line 38 of file SDL_joystick.c.
Referenced by SDL_JoystickClose(), SDL_JoystickFromInstanceID(), SDL_JoystickOpen(), SDL_JoystickQuit(), and SDL_JoystickUpdate().
Definition at line 39 of file SDL_joystick.c.
Referenced by SDL_JoystickClose(), SDL_JoystickQuit(), and SDL_JoystickUpdate().