From 1463e7c0f8ba7622f0b1af654388cf2ecde4116a Mon Sep 17 00:00:00 2001 From: Matthew Budd Date: Tue, 9 Jun 2020 22:09:29 -0400 Subject: [PATCH] Added logic to now pass ALT + Return to the SDL event queue as the is fullscreen toggle that is handled by GTK. --- src/drivers/sdl/gui.cpp | 11 +++++++++++ src/drivers/sdl/input.cpp | 9 +++++++++ src/drivers/sdl/input.h | 1 + 3 files changed, 21 insertions(+) diff --git a/src/drivers/sdl/gui.cpp b/src/drivers/sdl/gui.cpp index ea945496..ccf53e0d 100644 --- a/src/drivers/sdl/gui.cpp +++ b/src/drivers/sdl/gui.cpp @@ -2434,6 +2434,17 @@ static gboolean convertKeypress (GtkWidget * grab, GdkEventKey * event, } sdlev.key.repeat = 0; + + if ( (event->state & GDK_MOD1_MASK) || + getKeyState( SDL_SCANCODE_LALT ) || getKeyState( SDL_SCANCODE_RALT ) ) + { + // Don't pass ALT + Enter to game, as this toggles fullscreen in GTK + if ( sdlkey == SDLK_RETURN ) + { + return FALSE; + } + } + if (sdlkey != 0) { SDL_PushEvent (&sdlev); diff --git a/src/drivers/sdl/input.cpp b/src/drivers/sdl/input.cpp index 618a480f..731624cf 100644 --- a/src/drivers/sdl/input.cpp +++ b/src/drivers/sdl/input.cpp @@ -147,6 +147,15 @@ static int DIPS = 0; static uint8 keyonce[MKK_COUNT]; #define KEY(__a) g_keyState[MKK(__a)] +int getKeyState( int k ) +{ + if ( (k >= 0) && (k < SDL_NUM_SCANCODES) ) + { + return g_keyState[k]; + } + return 0; +} + static int _keyonly (int a) { diff --git a/src/drivers/sdl/input.h b/src/drivers/sdl/input.h index 033d5077..331d2795 100644 --- a/src/drivers/sdl/input.h +++ b/src/drivers/sdl/input.h @@ -20,6 +20,7 @@ extern ARGPSTRUCT InputArgs[]; extern int Hotkeys[]; void ParseGIInput(FCEUGI *GI); void setHotKeys(); +int getKeyState( int k ); int ButtonConfigBegin(); void ButtonConfigEnd(); void ConfigButton(char *text, ButtConfig *bc);