Skip to content

Commit

Permalink
engine: platform: sdl: ignore keyboard events if text mode is active
Browse files Browse the repository at this point in the history
  • Loading branch information
a1batross committed May 4, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 27d5123 commit e18e9ae
Showing 1 changed file with 21 additions and 13 deletions.
34 changes: 21 additions & 13 deletions engine/platform/sdl/events.c
Original file line number Diff line number Diff line change
@@ -148,7 +148,6 @@ static void SDLash_KeyEvent( SDL_KeyboardEvent key )
#else
int keynum = key.keysym.sym;
#endif
qboolean numLock = FBitSet( SDL_GetModState(), KMOD_NUM );

#if XASH_ANDROID
if( keynum == SDL_SCANCODE_VOLUMEUP || keynum == SDL_SCANCODE_VOLUMEDOWN )
@@ -157,32 +156,39 @@ static void SDLash_KeyEvent( SDL_KeyboardEvent key )
}
#endif

if( SDL_IsTextInputActive() && down && cls.key_dest != key_game )
if( SDL_IsTextInputActive( ))
{
if( FBitSet( SDL_GetModState(), KMOD_CTRL ))
// this is how engine understands ctrl+c, ctrl+v and other hotkeys
if( down && cls.key_dest != key_game )
{
if( keynum >= SDL_SCANCODE_A && keynum <= SDL_SCANCODE_Z )
if( FBitSet( SDL_GetModState(), KMOD_CTRL ))
{
keynum = keynum - SDL_SCANCODE_A + 1;
CL_CharEvent( keynum );
}
if( keynum >= SDL_SCANCODE_A && keynum <= SDL_SCANCODE_Z )
{
keynum = keynum - SDL_SCANCODE_A + 1;
CL_CharEvent( keynum );
}

return;
return;
}
}

#if !SDL_VERSION_ATLEAST( 2, 0, 0 )
#if SDL_VERSION_ATLEAST( 2, 0, 0 )
// ignore printable keys, they are coming through SDL_TEXTINPUT
if(( keynum >= SDL_SCANCODE_A && keynum <= SDL_SCANCODE_Z )
|| ( keynum >= SDL_SCANCODE_1 && keynum <= SDL_SCANCODE_0 )
|| ( keynum >= SDL_SCANCODE_KP_1 && keynum <= SDL_SCANCODE_KP_0 ))
return;
#else
if( keynum >= SDLK_KP0 && keynum <= SDLK_KP9 )
keynum -= SDLK_KP0 + '0';

if( isprint( keynum ) )
if( isprint( keynum ))
{
if( FBitSet( SDL_GetModState(), KMOD_SHIFT ))
{
keynum = Key_ToUpper( keynum );
}

CL_CharEvent( keynum );
return;
}
#endif
}
@@ -198,6 +204,8 @@ static void SDLash_KeyEvent( SDL_KeyboardEvent key )
else DECLARE_KEY_RANGE( SDL_SCANCODE_F1, SDL_SCANCODE_F12, K_F1 )
else
{
qboolean numLock = FBitSet( SDL_GetModState(), KMOD_NUM );

switch( keynum )
{
case SDL_SCANCODE_GRAVE: keynum = '`'; break;

0 comments on commit e18e9ae

Please sign in to comment.