From 2f52e01a76483d3032cd73ace71ede71a003dd38 Mon Sep 17 00:00:00 2001 From: SoftCoder Date: Tue, 22 Dec 2015 23:12:33 -0800 Subject: [PATCH] - fixed issue #88 (numpad keys work now) --- source/glest_game/menu/menu_state_keysetup.cpp | 16 ++++++++++++---- .../shared_lib/sources/platform/sdl/window.cpp | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/source/glest_game/menu/menu_state_keysetup.cpp b/source/glest_game/menu/menu_state_keysetup.cpp index d017eb5d6..9cea072e2 100644 --- a/source/glest_game/menu/menu_state_keysetup.cpp +++ b/source/glest_game/menu/menu_state_keysetup.cpp @@ -547,14 +547,19 @@ void MenuStateKeysetup::keyUp(SDL_KeyboardEvent key) { string keyName = ""; //if(hotkeyChar > SDLK_UNKNOWN && hotkeyChar < SDL_NUM_SCANCODES) { - keyName = SDL_GetKeyName(hotkeyChar); + + keyName = SDL_GetKeyName(key.keysym.sym); + if(StartsWith(keyName,"Keypad ") == false) { + keyName = SDL_GetKeyName(hotkeyChar); + key.keysym.sym = hotkeyChar; + } //} - key.keysym.sym = hotkeyChar; + //key.keysym.sym = hotkeyChar; if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] keyName [%s] char [%d][%d]\n",__FILE__,__FUNCTION__,__LINE__,keyName.c_str(),hotkeyChar,key.keysym.sym); //SDLKey keysym = SDLK_UNKNOWN; - if(keyName == "unknown key" || keyName == "") { +// if(keyName == "unknown key" || keyName == "") { // Config &configKeys = Config::getInstance(std::pair(cfgMainKeys,cfgUserKeys)); // keysym = configKeys.translateSpecialStringToSDLKey(hotkeyChar); // @@ -568,7 +573,7 @@ void MenuStateKeysetup::keyUp(SDL_KeyboardEvent key) { // key = keysym; // } // keyName = SDL_GetKeyName(keysym); - } +// } if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] keyName [%s] char [%d][%d]\n",__FILE__,__FUNCTION__,__LINE__,keyName.c_str(),hotkeyChar,key.keysym.sym); @@ -580,9 +585,12 @@ void MenuStateKeysetup::keyUp(SDL_KeyboardEvent key) { // Need to distinguish numeric keys to be translated to real keys // from these ACTUAL sdl keys so surround in quotes. + //printf("KeyUp #1 keyName [%s]\n", keyName.c_str()); + if(keyName.size() == 1 && keyName[0] >= '0' && keyName[0] <= '9') { keyName = "'" + keyName + "'"; } + //printf("KeyUp #2 keyName [%s]\n", keyName.c_str()); bool isNewUserKeyEntry = true; for(int i = 0; i < (int)userProperties.size(); ++i) { diff --git a/source/shared_lib/sources/platform/sdl/window.cpp b/source/shared_lib/sources/platform/sdl/window.cpp index 3eca87368..a3e3face6 100644 --- a/source/shared_lib/sources/platform/sdl/window.cpp +++ b/source/shared_lib/sources/platform/sdl/window.cpp @@ -430,6 +430,7 @@ bool Window::handleEvent() { keystate = event.key.keysym; if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] KEY_UP, Raw SDL key [%d] mod [%d] scancode [%d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,event.key.keysym.sym,event.key.keysym.mod,event.key.keysym.scancode); + //printf("In [%s::%s Line: %d] KEY_UP, Raw SDL key [%d] mod [%d] scancode [%d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,event.key.keysym.sym,event.key.keysym.mod,event.key.keysym.scancode); if(global_window) { global_window->eventKeyUp(event.key);