diff --git a/src/Backends/GLFW3/Controller.cpp b/src/Backends/GLFW3/Controller.cpp index 30d48e23..f4706057 100644 --- a/src/Backends/GLFW3/Controller.cpp +++ b/src/Backends/GLFW3/Controller.cpp @@ -137,22 +137,22 @@ BOOL ControllerBackend_GetJoystickStatus(JOYSTICK_STATUS *status) // Then the joystick hats for (int i = 0; i < total_axes; ++i) { - status->bButton[buttons_done] = hats[i] == GLFW_HAT_UP; + status->bButton[buttons_done] = hats[i] & GLFW_HAT_UP; if (++buttons_done >= button_limit) break; - status->bButton[buttons_done] = hats[i] == GLFW_HAT_RIGHT; + status->bButton[buttons_done] = hats[i] & GLFW_HAT_RIGHT; if (++buttons_done >= button_limit) break; - status->bButton[buttons_done] = hats[i] == GLFW_HAT_DOWN; + status->bButton[buttons_done] = hats[i] & GLFW_HAT_DOWN; if (++buttons_done >= button_limit) break; - status->bButton[buttons_done] = hats[i] == GLFW_HAT_LEFT; + status->bButton[buttons_done] = hats[i] & GLFW_HAT_LEFT; if (++buttons_done >= button_limit) break; diff --git a/src/Backends/SDL2/Controller.cpp b/src/Backends/SDL2/Controller.cpp index 21174f36..35ca0bed 100644 --- a/src/Backends/SDL2/Controller.cpp +++ b/src/Backends/SDL2/Controller.cpp @@ -78,42 +78,22 @@ BOOL ControllerBackend_GetJoystickStatus(JOYSTICK_STATUS *status) { Uint8 hat = SDL_JoystickGetHat(joystick, i); - status->bButton[buttons_done] = hat == SDL_HAT_UP; + status->bButton[buttons_done] = hat == SDL_HAT_UP || hat == SDL_HAT_LEFTUP || hat == SDL_HAT_RIGHTUP; if (++buttons_done >= button_limit) break; - status->bButton[buttons_done] = hat == SDL_HAT_RIGHT; + status->bButton[buttons_done] = hat == SDL_HAT_RIGHT || hat == SDL_HAT_RIGHTUP || hat == SDL_HAT_RIGHTDOWN; if (++buttons_done >= button_limit) break; - status->bButton[buttons_done] = hat == SDL_HAT_DOWN; + status->bButton[buttons_done] = hat == SDL_HAT_DOWN || hat == SDL_HAT_LEFTDOWN || hat == SDL_HAT_RIGHTDOWN; if (++buttons_done >= button_limit) break; - status->bButton[buttons_done] = hat == SDL_HAT_LEFT; - - if (++buttons_done >= button_limit) - break; - - status->bButton[buttons_done] = hat == SDL_HAT_RIGHTUP; - - if (++buttons_done >= button_limit) - break; - - status->bButton[buttons_done] = hat == SDL_HAT_RIGHTDOWN; - - if (++buttons_done >= button_limit) - break; - - status->bButton[buttons_done] = hat == SDL_HAT_LEFTUP; - - if (++buttons_done >= button_limit) - break; - - status->bButton[buttons_done] = hat == SDL_HAT_LEFTDOWN; + status->bButton[buttons_done] = hat == SDL_HAT_LEFT || hat == SDL_HAT_LEFTUP || hat == SDL_HAT_LEFTDOWN; if (++buttons_done >= button_limit) break;