diff options
author | Andrey Nazarov <skuller@skuller.net> | 2007-12-14 23:30:31 +0000 |
---|---|---|
committer | Andrey Nazarov <skuller@skuller.net> | 2007-12-14 23:30:31 +0000 |
commit | a21868632c585f33742f7e295aafad36a436cdd9 (patch) | |
tree | 91d01192835662109845c2f9fd4d840d842e2b47 /source/vid_sdl.c | |
parent | 0ec5f1b7a5689865d6cd10daa17883201766dc6a (diff) |
Distinguish left and right SHIFT, CTRL, ALT modifiers.
Take SHIFT modifier into account when executing key bindings.
Added `text' command which just stuffs its arguments into the
command buffer for further macro expansion.
Made sure $$ escaping works.
Diffstat (limited to 'source/vid_sdl.c')
-rw-r--r-- | source/vid_sdl.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/source/vid_sdl.c b/source/vid_sdl.c index c11041b..dcccc80 100644 --- a/source/vid_sdl.c +++ b/source/vid_sdl.c @@ -196,7 +196,7 @@ static void QSDL_UpdateGamma( const byte *table ) { } static void QSDL_KeyEvent( SDL_keysym *keysym, qboolean down ) { - uint32 key; + uint32 key1, key2 = 0; if( keysym->sym <= 127 ) { // ASCII chars are mapped directly @@ -204,7 +204,8 @@ static void QSDL_KeyEvent( SDL_keysym *keysym, qboolean down ) { return; } -#define K( s, d ) case SDLK_ ## s: key = K_ ## d; break; +#define K( s, d ) case SDLK_ ## s: key1 = K_ ## d; break; +#define KK( s, d1, d2 ) case SDLK_ ## s: key1 = K_ ## d1; key2 = K_ ## d2; break; switch( keysym->sym ) { K( KP0, KP_INS ) @@ -254,21 +255,25 @@ static void QSDL_KeyEvent( SDL_keysym *keysym, qboolean down ) { K( RSUPER, RWINKEY ) K( MENU, MENU ) - K( RSHIFT, SHIFT ) - K( LSHIFT, SHIFT ) - K( RCTRL, CTRL ) - K( LCTRL, CTRL ) - K( RALT, ALT ) - K( LALT, ALT ) + KK( RSHIFT, SHIFT, RSHIFT ) + KK( LSHIFT, SHIFT, LSHIFT ) + KK( RCTRL, CTRL, RCTRL ) + KK( LCTRL, CTRL, LCTRL ) + KK( RALT, ALT, RALT ) + KK( LALT, ALT, LALT ) #undef K +#undef KK default: Com_DPrintf( "%s: unknown keysym %d\n", __func__, keysym->sym ); return; } - Key_Event( key, down, com_eventTime ); + Key_Event( key1, down, com_eventTime ); + if( key2 ) { + Key_Event( key2, down, com_eventTime ); + } } static void QSDL_MouseButtonEvent( int button, qboolean down ) { |