diff -r 5cbf6472a916 src/joystick/bsd/SDL_sysjoystick.c --- a/src/joystick/bsd/SDL_sysjoystick.c Fri Jun 21 22:01:27 2019 -0700 +++ b/src/joystick/bsd/SDL_sysjoystick.c Sat Jun 22 18:35:01 2019 -0700 @@ -623,14 +623,22 @@ hitem.logical_minimum); } #ifdef __OpenBSD__ - else if (usage == HUG_DPAD_UP) + else if (usage == HUG_DPAD_UP) { dpad[0] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem); - else if (usage == HUG_DPAD_DOWN) + SDL_PrivateJoystickHat(joy, 0, dpad_to_sdl(dpad)); + } + else if (usage == HUG_DPAD_DOWN) { dpad[1] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem); - else if (usage == HUG_DPAD_RIGHT) + SDL_PrivateJoystickHat(joy, 0, dpad_to_sdl(dpad)); + } + else if (usage == HUG_DPAD_RIGHT) { dpad[2] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem); - else if (usage == HUG_DPAD_LEFT) + SDL_PrivateJoystickHat(joy, 0, dpad_to_sdl(dpad)); + } + else if (usage == HUG_DPAD_LEFT) { dpad[3] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem); + SDL_PrivateJoystickHat(joy, 0, dpad_to_sdl(dpad)); + } #endif break; } @@ -647,9 +655,6 @@ break; } } -#ifdef __OpenBSD__ - SDL_PrivateJoystickHat(joy, 0, dpad_to_sdl(dpad)); -#endif hid_end_parse(hdata); } }