Go to the documentation of this file.
22 #ifndef SDL_JOYSTICK_DISABLED
25 #define SCREEN_WIDTH 320
26 #define SCREEN_HEIGHT 480
28 #define SCREEN_WIDTH 512
29 #define SCREEN_HEIGHT 320
32 #define MARKER_BUTTON 1
50 #define BINDING_COUNT (SDL_CONTROLLER_BUTTON_MAX + SDL_CONTROLLER_BINDING_AXIS_MAX)
219 for (iIndex = 0; iIndex <
s_nNumAxes; ++iIndex) {
247 return (minA <= minB && maxA >= maxB);
251 return SDL_memcmp(pBindingA, pBindingB,
sizeof(*pBindingA)) == 0;
283 #ifdef DEBUG_CONTROLLERMAP
311 if (bNativeDPad && bCurrentDPad) {
318 if (bNativeAxis == bCurrentAxis &&
326 *pCurrent = *pBinding;
396 SDL_Log(
"Joystick has %d axes, %d hats, %d balls, and %d buttons\n",
401 ====================================================================================\n\
402 Press the buttons on your controller when indicated\n\
403 (Your controller may look different than the picture)\n\
404 If you want to correct a mistake, press backspace or the back button on your device\n\
405 To skip a button, press SPACE or click/touch the screen\n\
406 To exit, press ESC\n\
407 ====================================================================================\n");
413 for (iIndex = 0; iIndex <
s_nNumAxes; ++iIndex) {
460 switch (
event.type) {
462 if (
event.jaxis.which == nJoystickID) {
467 if (
event.jaxis.which == nJoystickID) {
469 int nValue =
event.jaxis.value;
470 int nCurrentDistance, nFarthestDistance;
478 if (nCurrentDistance > nFarthestDistance) {
483 #ifdef DEBUG_CONTROLLERMAP
484 SDL_Log(
"AXIS %d nValue %d nCurrentDistance %d nFarthestDistance %d\n",
event.jaxis.axis, nValue, nCurrentDistance, nFarthestDistance);
486 if (nFarthestDistance >= 16000) {
492 binding.
value.
axis.axis =
event.jaxis.axis;
501 if (
event.jhat.which == nJoystickID) {
505 #ifdef DEBUG_CONTROLLERMAP
510 binding.
value.
hat.hat =
event.jhat.hat;
511 binding.
value.
hat.hat_mask =
event.jhat.value;
520 if (
event.jbutton.which == nJoystickID) {
523 #ifdef DEBUG_CONTROLLERMAP
572 char trimmed_name[128];
582 trimmed_name[
SDL_strlen(trimmed_name) - 1] =
'\0';
607 const char *pszAxisName;
660 pszElement[0] =
'\0';
708 SDL_Joystick *joystick;
725 if (joystick ==
NULL) {
731 guid,
sizeof (guid));
755 if (joystick ==
NULL) {
763 SDL_Log(
"\n\nUsage: ./controllermap number\nFor example: ./controllermap 0\nOr: ./controllermap 0 >> gamecontrollerdb.txt");
773 main(
int argc,
char *argv[])
@ SDL_CONTROLLER_BUTTON_DPAD_LEFT
int main(int argc, char *argv[])
@ SDL_CONTROLLER_BINDING_AXIS_LEFTY_POSITIVE
@ SDL_CONTROLLER_AXIS_RIGHTX
#define SDL_RenderPresent
#define SDL_JoystickGetVendor
@ SDL_CONTROLLER_BINDING_AXIS_RIGHTY_NEGATIVE
static int s_arrBindingOrder[BINDING_COUNT]
A collection of pixels used in software blitting.
#define SDL_WINDOWPOS_CENTERED
#define SDL_GameControllerGetStringForButton
#define SDL_JoystickClose
@ SDL_LOG_CATEGORY_APPLICATION
#define SDL_INIT_JOYSTICK
#define SDL_JoystickGetGUID
static void ConfigureBinding(const SDL_GameControllerExtendedBind *pBinding)
@ SDL_CONTROLLER_BINDTYPE_NONE
SDL_GameControllerBindType bindType
#define SDL_QuitSubSystem
static SDL_bool BBindingContainsBinding(const SDL_GameControllerExtendedBind *pBindingA, const SDL_GameControllerExtendedBind *pBindingB)
static AxisState * s_arrAxisState
SDL_Texture * LoadTexture(SDL_Renderer *renderer, const char *file, SDL_bool transparent)
@ SDL_CONTROLLER_BUTTON_RIGHTSTICK
#define SDL_JoystickGetGUIDString
#define SDL_JoystickInstanceID
#define SDL_JoystickNameForIndex
@ SDL_CONTROLLER_AXIS_LEFTX
@ SDL_CONTROLLER_BINDING_AXIS_LEFTY_NEGATIVE
#define SDL_JoystickGetProduct
#define SDL_JoystickNumButtons
@ SDL_CONTROLLER_BUTTON_B
The type used to identify a window.
@ SDL_CONTROLLER_BUTTON_MAX
@ SDL_CONTROLLER_BINDING_AXIS_RIGHTY_POSITIVE
@ SDL_CONTROLLER_BUTTON_BACK
GLfloat GLfloat GLfloat alpha
@ SDL_CONTROLLER_BINDTYPE_BUTTON
@ SDL_CONTROLLER_BUTTON_LEFTSHOULDER
#define SDL_CreateTextureFromSurface
SDL_GameControllerBindType
#define SDL_JoystickGetAxisInitialState
#define SDL_JoystickNumAxes
#define SDL_JOYSTICK_AXIS_MIN
EGLSurface EGLNativeWindowType * window
@ SDL_CONTROLLER_AXIS_TRIGGERLEFT
GLenum GLenum GLenum GLenum mapping
GLuint const GLchar * name
#define SDL_SetTextureColorMod
#define SDL_GameControllerGetStringForAxis
union SDL_GameControllerExtendedBind::@283 value
Uint32 SDL_GetTicks(void)
Get the number of milliseconds since the SDL library initialization.
static struct @282 s_arrBindingDisplay[BINDING_COUNT]
@ SDL_CONTROLLER_BUTTON_START
#define SDL_RenderSetLogicalSize
static Uint32 s_unPendingAdvanceTime
#define SDL_LoadBMP(file)
#define SDL_JOYSTICK_AXIS_MAX
@ SDL_CONTROLLER_BINDING_AXIS_LEFTX_POSITIVE
@ SDL_CONTROLLER_BINDING_AXIS_TRIGGERRIGHT
static int s_iCurrentBinding
static SDL_bool BMergeAxisBindings(int iIndex)
#define SDL_assert(condition)
@ SDL_CONTROLLER_BINDING_AXIS_RIGHTX_NEGATIVE
#define SDL_arraysize(array)
@ SDL_CONTROLLER_BUTTON_RIGHTSHOULDER
@ SDL_CONTROLLER_BINDING_AXIS_LEFTX_NEGATIVE
@ SDL_CONTROLLER_BINDTYPE_HAT
@ SDL_CONTROLLER_BINDING_AXIS_MAX
@ SDL_CONTROLLER_BUTTON_Y
static SDL_Renderer * renderer
@ SDL_CONTROLLER_BINDTYPE_AXIS
#define SDL_JoystickNumHats
static void WatchJoystick(SDL_Joystick *joystick)
#define SDL_LogSetPriority
GLsizei const GLfloat * value
A rectangle, with the origin at the upper left (integer).
@ SDL_CONTROLLER_AXIS_LEFTY
@ SDL_CONTROLLER_BINDING_AXIS_TRIGGERLEFT
static SDL_GameControllerExtendedBind s_arrBindings[BINDING_COUNT]
@ SDL_CONTROLLER_BUTTON_LEFTSTICK
#define SDL_SetRenderDrawColor
#define SDL_JoystickNumBalls
@ SDL_CONTROLLER_BUTTON_DPAD_DOWN
static int StandardizeAxisValue(int nValue)
@ SDL_CONTROLLER_BUTTON_DPAD_UP
@ SDL_CONTROLLER_AXIS_TRIGGERRIGHT
#define SDL_CreateRenderer
@ SDL_CONTROLLER_AXIS_RIGHTY
#define SDL_DestroyRenderer
@ SDL_CONTROLLER_BUTTON_X
#define SDL_SetTextureAlphaMod
GLenum GLenum GLuint texture
static SDL_AudioDeviceID device
@ SDL_CONTROLLER_BUTTON_A
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
#define SDL_DestroyWindow
@ SDL_CONTROLLER_BUTTON_DPAD_RIGHT
static SDL_bool s_bBindingComplete
@ SDL_CONTROLLER_BUTTON_GUIDE
static void SetCurrentBinding(int iBinding)
@ SDL_CONTROLLER_BINDING_AXIS_RIGHTX_POSITIVE