@ -1579,6 +1579,8 @@ int UnicodeAwareSym(const SDL::KeyboardEvent& ke)
//MEMO: return false if event is consumed
int Core : : DFH_SDL_Event ( SDL : : Event * ev )
{
static bool alt = 0 ;
// do NOT process events before we are ready.
if ( ! started ) return true ;
if ( ! ev )
@ -1587,6 +1589,11 @@ int Core::DFH_SDL_Event(SDL::Event* ev)
{
auto ke = ( SDL : : KeyboardEvent * ) ev ;
if ( ke - > ksym . sym = = SDL : : K_LALT | | ke - > ksym . sym = = SDL : : K_RALT )
{
alt = ( ev - > type = = SDL : : ET_KEYDOWN ) ;
}
else
if ( ke - > state = = SDL : : BTN_PRESSED & & ! hotkey_states [ ke - > ksym . sym ] )
{
hotkey_states [ ke - > ksym . sym ] = true ;
@ -1594,7 +1601,7 @@ int Core::DFH_SDL_Event(SDL::Event* ev)
int mod = 0 ;
if ( ke - > ksym . mod & SDL : : KMOD_SHIFT ) mod | = 1 ;
if ( ke - > ksym . mod & SDL : : KMOD_CTRL ) mod | = 2 ;
if ( ke- > ksym . mod & SDL : : KMOD_ALT ) mod | = 4 ;
if ( alt ) mod | = 4 ;
// Use unicode so Windows gives the correct value for the
// user's Input Language