diff options
author | Michael Pavone <pavone@retrodev.com> | 2019-03-26 23:26:08 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2019-03-26 23:26:08 -0700 |
commit | 83b01ea3228b7ad3237bbdfb2393d409a1e9bb5a (patch) | |
tree | fff78b9a14a2c6cbfde205ac9b3d934420ce71fa /render_sdl.c | |
parent | 3f867b2206be833ee764acc5cfae4c0ce2780da1 (diff) |
Support controllers that have their dpad mapped to an axis
Diffstat (limited to 'render_sdl.c')
-rwxr-xr-x | render_sdl.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/render_sdl.c b/render_sdl.c index f162260..a77d049 100755 --- a/render_sdl.c +++ b/render_sdl.c @@ -1864,6 +1864,7 @@ int32_t render_translate_input_name(int32_t controller, char *name, uint8_t is_a } SDL_GameControllerButtonBind cbind; + int32_t is_positive = RENDER_AXIS_POS; if (is_axis) { int sdl_axis = render_lookup_axis(name); @@ -1878,6 +1879,10 @@ int32_t render_translate_input_name(int32_t controller, char *name, uint8_t is_a SDL_GameControllerClose(control); return RENDER_INVALID_NAME; } + if (sdl_button == SDL_CONTROLLER_BUTTON_DPAD_UP || sdl_button == SDL_CONTROLLER_BUTTON_DPAD_LEFT) { + //assume these will be negative if they are an axis + is_positive = 0; + } cbind = SDL_GameControllerGetBindForButton(control, sdl_button); } SDL_GameControllerClose(control); @@ -1886,7 +1891,7 @@ int32_t render_translate_input_name(int32_t controller, char *name, uint8_t is_a case SDL_CONTROLLER_BINDTYPE_BUTTON: return cbind.value.button; case SDL_CONTROLLER_BINDTYPE_AXIS: - return RENDER_AXIS_BIT | cbind.value.axis; + return RENDER_AXIS_BIT | cbind.value.axis | is_positive; case SDL_CONTROLLER_BINDTYPE_HAT: return RENDER_DPAD_BIT | (cbind.value.hat.hat << 4) | cbind.value.hat.hat_mask; } |