You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.1 KiB
60 lines
2.1 KiB
https://bugs.gentoo.org/689538
|
|
|
|
diff -ruN hatari-2.1.0.old/src/gui-sdl/sdlgui.c hatari-2.1.0/src/gui-sdl/sdlgui.c
|
|
--- hatari-2.1.0.old/src/gui-sdl/sdlgui.c 2018-02-07 18:33:56.000000000 +0000
|
|
+++ hatari-2.1.0/src/gui-sdl/sdlgui.c 2019-07-08 23:55:50.481270799 +0100
|
|
@@ -1329,12 +1329,28 @@
|
|
}
|
|
break;
|
|
|
|
+ case SDL_JOYHATMOTION:
|
|
+ if (sdlEvent.jhat.value & SDL_HAT_LEFT)
|
|
+ retbutton = SDLGui_HandleShortcut(dlg, SG_SHORTCUT_LEFT);
|
|
+ else if (sdlEvent.jhat.value & SDL_HAT_RIGHT)
|
|
+ retbutton = SDLGui_HandleShortcut(dlg, SG_SHORTCUT_RIGHT);
|
|
+ if (sdlEvent.jhat.value & SDL_HAT_UP)
|
|
+ {
|
|
+ SDLGui_RemoveFocus(dlg, focused);
|
|
+ focused = SDLGui_FocusNext(dlg, focused, -1);
|
|
+ }
|
|
+ else if (sdlEvent.jhat.value & SDL_HAT_DOWN)
|
|
+ {
|
|
+ SDLGui_RemoveFocus(dlg, focused);
|
|
+ focused = SDLGui_FocusNext(dlg, focused, +1);
|
|
+ }
|
|
+ break;
|
|
+
|
|
case SDL_JOYBUTTONDOWN:
|
|
retbutton = SDLGui_HandleSelection(dlg, focused, focused);
|
|
break;
|
|
|
|
case SDL_JOYBALLMOTION:
|
|
- case SDL_JOYHATMOTION:
|
|
case SDL_MOUSEMOTION:
|
|
break;
|
|
|
|
diff -ruN hatari-2.1.0.old/src/joy.c hatari-2.1.0/src/joy.c
|
|
--- hatari-2.1.0.old/src/joy.c 2018-02-07 18:33:56.000000000 +0000
|
|
+++ hatari-2.1.0/src/joy.c 2019-07-09 14:46:36.502410790 +0100
|
|
@@ -199,9 +199,20 @@
|
|
*/
|
|
static bool Joy_ReadJoystick(int nSdlJoyID, JOYREADING *pJoyReading)
|
|
{
|
|
+ unsigned hat = SDL_JoystickGetHat(sdlJoystick[nSdlJoyID], 0);
|
|
+
|
|
/* Joystick is OK, read position from the configured joystick axis */
|
|
pJoyReading->XPos = SDL_JoystickGetAxis(sdlJoystick[nSdlJoyID], pJoyReading->XAxisID);
|
|
pJoyReading->YPos = SDL_JoystickGetAxis(sdlJoystick[nSdlJoyID], pJoyReading->YAxisID);
|
|
+ /* Similarly to other emulators that support hats, override axis readings with hats */
|
|
+ if (hat & SDL_HAT_LEFT)
|
|
+ pJoyReading->XPos = -32768;
|
|
+ if (hat & SDL_HAT_RIGHT)
|
|
+ pJoyReading->XPos = 32767;
|
|
+ if (hat & SDL_HAT_UP)
|
|
+ pJoyReading->YPos = -32768;
|
|
+ if (hat & SDL_HAT_DOWN)
|
|
+ pJoyReading->YPos = 32767;
|
|
/* Sets bit #0 if button #1 is pressed: */
|
|
pJoyReading->Buttons = SDL_JoystickGetButton(sdlJoystick[nSdlJoyID], 0);
|
|
/* Sets bit #1 if button #2 is pressed: */
|