From d0d3af1fec685c35cae005303295bb30c3f3ec55 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Wed, 6 Jul 2011 22:40:31 +0000 Subject: [PATCH] - more keyboard fixes to allow more valid keys --- .../sources/platform/sdl/window.cpp | 39 +++++++++++++++++-- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/source/shared_lib/sources/platform/sdl/window.cpp b/source/shared_lib/sources/platform/sdl/window.cpp index a717b03c0..4babb662d 100644 --- a/source/shared_lib/sources/platform/sdl/window.cpp +++ b/source/shared_lib/sources/platform/sdl/window.cpp @@ -597,8 +597,30 @@ bool isKeyPressed(SDLKey compareKey, SDL_KeyboardEvent input,bool modifiersAllow c = input.keysym.unicode; //c = toupper(c); } - else if(input.keysym.unicode == SDLK_QUESTION && - (input.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT))) { + else if((input.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) && + (input.keysym.unicode == SDLK_QUESTION || + input.keysym.unicode == SDLK_AT || + input.keysym.unicode == SDLK_COLON || + input.keysym.unicode == SDLK_LESS || + input.keysym.unicode == SDLK_GREATER || + input.keysym.unicode == SDLK_CARET || + input.keysym.unicode == SDLK_UNDERSCORE || + input.keysym.unicode == SDLK_BACKQUOTE || + input.keysym.unicode == SDLK_EXCLAIM || + input.keysym.unicode == SDLK_QUOTEDBL || + input.keysym.unicode == SDLK_HASH || + input.keysym.unicode == SDLK_DOLLAR || + input.keysym.unicode == SDLK_AMPERSAND || + input.keysym.unicode == SDLK_QUOTE || + input.keysym.unicode == SDLK_LEFTPAREN || + input.keysym.unicode == SDLK_RIGHTPAREN || + input.keysym.unicode == SDLK_ASTERISK || + input.keysym.unicode == SDLK_KP_MULTIPLY || + input.keysym.unicode == SDLK_PLUS || + input.keysym.unicode == SDLK_COMMA || + input.keysym.unicode == SDLK_MINUS || + input.keysym.unicode == SDLK_PERIOD || + input.keysym.unicode == SDLK_SLASH)) { if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); @@ -645,6 +667,15 @@ bool isKeyPressed(SDLKey compareKey, SDL_KeyboardEvent input,bool modifiersAllow if(compareKey == SDLK_RETURN) { result = (c == SDLK_KP_ENTER); } + else if(compareKey == SDLK_KP_ENTER) { + result = (c == SDLK_RETURN); + } + else if(compareKey == SDLK_ASTERISK) { + result = (c == SDLK_KP_MULTIPLY); + } + else if(compareKey == SDLK_KP_MULTIPLY) { + result = (c == SDLK_ASTERISK); + } else if( compareKey >= SDLK_0 && compareKey <= SDLK_9) { switch(compareKey) { case SDLK_0: @@ -719,8 +750,8 @@ bool isKeyPressed(SDLKey compareKey, SDL_KeyboardEvent input,bool modifiersAllow //printf("input.keysym.mod = %d\n",input.keysym.mod); if( input.keysym.mod & (KMOD_LCTRL | KMOD_RCTRL) || - input.keysym.mod & (KMOD_LALT | KMOD_RALT) || - input.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) { + input.keysym.mod & (KMOD_LALT | KMOD_RALT)) { + //input.keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) { result = false; } }