Skip to content

Commit

Permalink
spearmint: Add keys for SDL 2.0.14's new gamepad buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
zturtleman committed Sep 22, 2022
1 parent 1ce702f commit 4f72706
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 1 deletion.
30 changes: 30 additions & 0 deletions code/client/cl_joystick.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,16 @@ qboolean CL_SetKeyForJoyEvent( int localPlayerNum, const joyevent_t *joyevent, i
else if ( keynum >= K_FIRST_4JOY && keynum <= K_LAST_4JOY ) {
keynum = K_FIRST_JOY + keynum - K_FIRST_4JOY;
}
// check second range of keys
else if ( keynum >= K_FIRST_2JOY_PART2 && keynum <= K_LAST_2JOY_PART2 ) {
keynum = K_FIRST_JOY_PART2 + keynum - K_FIRST_2JOY_PART2;
}
else if ( keynum >= K_FIRST_3JOY_PART2 && keynum <= K_LAST_3JOY_PART2 ) {
keynum = K_FIRST_JOY_PART2 + keynum - K_FIRST_3JOY_PART2;
}
else if ( keynum >= K_FIRST_4JOY_PART2 && keynum <= K_LAST_4JOY_PART2 ) {
keynum = K_FIRST_JOY_PART2 + keynum - K_FIRST_4JOY_PART2;
}

for ( i = 0; i < MAX_JOY_REMAPS; i++ ) {
if ( device->remap[i].event.type == JOYEVENT_NONE ) {
Expand Down Expand Up @@ -271,6 +281,16 @@ int CL_GetKeyForJoyEvent( int localPlayerNum, const joyevent_t *joyevent ) {
keynum = K_FIRST_4JOY + keynum - K_FIRST_JOY;
}
}
// check second range of keys
else if ( keynum >= K_FIRST_JOY_PART2 && keynum <= K_LAST_JOY_PART2 ) {
if ( localPlayerNum == 1 ) {
keynum = K_FIRST_2JOY_PART2 + keynum - K_FIRST_JOY_PART2;
} else if ( localPlayerNum == 2 ) {
keynum = K_FIRST_3JOY_PART2 + keynum - K_FIRST_JOY_PART2;
} else if ( localPlayerNum == 3 ) {
keynum = K_FIRST_4JOY_PART2 + keynum - K_FIRST_JOY_PART2;
}
}

return keynum;
}
Expand Down Expand Up @@ -303,6 +323,16 @@ int CL_GetJoyEventForKey( int localPlayerNum, int keynum, int startIndex, joyeve
else if ( keynum >= K_FIRST_4JOY && keynum <= K_LAST_4JOY ) {
keynum = K_FIRST_JOY + keynum - K_FIRST_4JOY;
}
// check second range of keys
else if ( keynum >= K_FIRST_2JOY_PART2 && keynum <= K_LAST_2JOY_PART2 ) {
keynum = K_FIRST_JOY_PART2 + keynum - K_FIRST_2JOY_PART2;
}
else if ( keynum >= K_FIRST_3JOY_PART2 && keynum <= K_LAST_3JOY_PART2 ) {
keynum = K_FIRST_JOY_PART2 + keynum - K_FIRST_3JOY_PART2;
}
else if ( keynum >= K_FIRST_4JOY_PART2 && keynum <= K_LAST_4JOY_PART2 ) {
keynum = K_FIRST_JOY_PART2 + keynum - K_FIRST_4JOY_PART2;
}

for ( i = startIndex; i < MAX_JOY_REMAPS; i++ ) {
if ( device->remap[i].event.type == JOYEVENT_NONE )
Expand Down
28 changes: 28 additions & 0 deletions code/client/cl_keys.c
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,13 @@ keyname_t keynames[] =
{"JOY_RIGHTSTICK_DOWN", K_JOY_RIGHTSTICK_DOWN},
{"JOY_RIGHTSTICK_LEFT", K_JOY_RIGHTSTICK_LEFT},

{"JOY_MISC1", K_JOY_MISC1},
{"JOY_PADDLE1", K_JOY_PADDLE1},
{"JOY_PADDLE2", K_JOY_PADDLE2},
{"JOY_PADDLE3", K_JOY_PADDLE3},
{"JOY_PADDLE4", K_JOY_PADDLE4},
{"JOY_TOUCHPAD", K_JOY_TOUCHPAD},

// player 2
{"2JOY_A", K_2JOY_A},
{"2JOY_B", K_2JOY_B},
Expand Down Expand Up @@ -176,6 +183,13 @@ keyname_t keynames[] =
{"2JOY_RIGHTSTICK_DOWN", K_2JOY_RIGHTSTICK_DOWN},
{"2JOY_RIGHTSTICK_LEFT", K_2JOY_RIGHTSTICK_LEFT},

{"2JOY_MISC1", K_2JOY_MISC1},
{"2JOY_PADDLE1", K_2JOY_PADDLE1},
{"2JOY_PADDLE2", K_2JOY_PADDLE2},
{"2JOY_PADDLE3", K_2JOY_PADDLE3},
{"2JOY_PADDLE4", K_2JOY_PADDLE4},
{"2JOY_TOUCHPAD", K_2JOY_TOUCHPAD},

// player 3
{"3JOY_A", K_3JOY_A},
{"3JOY_B", K_3JOY_B},
Expand Down Expand Up @@ -209,6 +223,13 @@ keyname_t keynames[] =
{"3JOY_RIGHTSTICK_DOWN", K_3JOY_RIGHTSTICK_DOWN},
{"3JOY_RIGHTSTICK_LEFT", K_3JOY_RIGHTSTICK_LEFT},

{"3JOY_MISC1", K_3JOY_MISC1},
{"3JOY_PADDLE1", K_3JOY_PADDLE1},
{"3JOY_PADDLE2", K_3JOY_PADDLE2},
{"3JOY_PADDLE3", K_3JOY_PADDLE3},
{"3JOY_PADDLE4", K_3JOY_PADDLE4},
{"3JOY_TOUCHPAD", K_3JOY_TOUCHPAD},

// player 4
{"4JOY_A", K_4JOY_A},
{"4JOY_B", K_4JOY_B},
Expand Down Expand Up @@ -242,6 +263,13 @@ keyname_t keynames[] =
{"4JOY_RIGHTSTICK_DOWN", K_4JOY_RIGHTSTICK_DOWN},
{"4JOY_RIGHTSTICK_LEFT", K_4JOY_RIGHTSTICK_LEFT},

{"4JOY_MISC1", K_4JOY_MISC1},
{"4JOY_PADDLE1", K_4JOY_PADDLE1},
{"4JOY_PADDLE2", K_4JOY_PADDLE2},
{"4JOY_PADDLE3", K_4JOY_PADDLE3},
{"4JOY_PADDLE4", K_4JOY_PADDLE4},
{"4JOY_TOUCHPAD", K_4JOY_TOUCHPAD},

{"AUX1", K_AUX1},
{"AUX2", K_AUX2},
{"AUX3", K_AUX3},
Expand Down
45 changes: 45 additions & 0 deletions code/client/keycodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,51 @@ typedef enum {
// Pseudo-key that brings the console down
K_CONSOLE,

K_FIRST_JOY_PART2,

K_JOY_MISC1 = K_FIRST_JOY_PART2,
K_JOY_PADDLE1,
K_JOY_PADDLE2,
K_JOY_PADDLE3,
K_JOY_PADDLE4,
K_JOY_TOUCHPAD,

// + 16 to reserve space for more keys to avoid needing another section to prevent mod API break.
K_LAST_JOY_PART2 = K_FIRST_JOY_PART2 + 16,

K_FIRST_2JOY_PART2,

K_2JOY_MISC1 = K_FIRST_2JOY_PART2,
K_2JOY_PADDLE1,
K_2JOY_PADDLE2,
K_2JOY_PADDLE3,
K_2JOY_PADDLE4,
K_2JOY_TOUCHPAD,

K_LAST_2JOY_PART2 = K_FIRST_2JOY_PART2 + 16,

K_FIRST_3JOY_PART2,

K_3JOY_MISC1 = K_FIRST_3JOY_PART2,
K_3JOY_PADDLE1,
K_3JOY_PADDLE2,
K_3JOY_PADDLE3,
K_3JOY_PADDLE4,
K_3JOY_TOUCHPAD,

K_LAST_3JOY_PART2 = K_FIRST_3JOY_PART2 + 16,

K_FIRST_4JOY_PART2,

K_4JOY_MISC1 = K_FIRST_4JOY_PART2,
K_4JOY_PADDLE1,
K_4JOY_PADDLE2,
K_4JOY_PADDLE3,
K_4JOY_PADDLE4,
K_4JOY_TOUCHPAD,

K_LAST_4JOY_PART2 = K_FIRST_4JOY_PART2 + 16,

MAX_KEYS
} keyNum_t;

Expand Down
10 changes: 9 additions & 1 deletion code/sdl/sdl_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,15 @@ static qboolean IN_SetGameControllerDefaults( int localPlayerNum, int joystickNu
{ SDL_CONTROLLER_BUTTON_DPAD_UP, K_JOY_DPAD_UP },
{ SDL_CONTROLLER_BUTTON_DPAD_DOWN, K_JOY_DPAD_DOWN },
{ SDL_CONTROLLER_BUTTON_DPAD_LEFT, K_JOY_DPAD_LEFT },
{ SDL_CONTROLLER_BUTTON_DPAD_RIGHT, K_JOY_DPAD_RIGHT }
{ SDL_CONTROLLER_BUTTON_DPAD_RIGHT, K_JOY_DPAD_RIGHT },
#if SDL_VERSION_ATLEAST( 2, 0, 14 )
{ SDL_CONTROLLER_BUTTON_MISC1, K_JOY_MISC1 },
{ SDL_CONTROLLER_BUTTON_PADDLE1, K_JOY_PADDLE1 },
{ SDL_CONTROLLER_BUTTON_PADDLE2, K_JOY_PADDLE2 },
{ SDL_CONTROLLER_BUTTON_PADDLE3, K_JOY_PADDLE3 },
{ SDL_CONTROLLER_BUTTON_PADDLE4, K_JOY_PADDLE4 },
{ SDL_CONTROLLER_BUTTON_TOUCHPAD, K_JOY_TOUCHPAD }
#endif
};

SDL_GameControllerButtonBind bind;
Expand Down

0 comments on commit 4f72706

Please sign in to comment.