diff --git a/OpenArena/oa/config/my.cfg b/OpenArena/oa/config/my.cfg index 4ba59d1..6e3b063 100644 --- a/OpenArena/oa/config/my.cfg +++ b/OpenArena/oa/config/my.cfg @@ -17,8 +17,6 @@ bind weapprev r bind togglelights l bind togglefps p bind toggleconsole ~ -bind toggleconsole ` -bind toggleconsole z bind togglemouselook m bind quickmouselook y set turnspeed 0.02 diff --git a/src/main.cpp b/src/main.cpp index 8d50dd4..35b459c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -337,6 +337,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, { if(level.showConsole) { + //See if we need to hide the console level.defaultPlayer[0].controls.toggleConsole.FirstPosition(); if(wParam == level.defaultPlayer[0].controls.toggleConsole.Retrieve()) { @@ -352,12 +353,12 @@ LRESULT CALLBACK WndProc(HWND hWnd, } } } - + if(wParam == VK_RETURN) { level.UpdateConsole('\n'); } - if(wParam == VK_SHIFT) + else if(wParam == VK_SHIFT) { keys[VK_SHIFT] = true; } @@ -369,6 +370,127 @@ LRESULT CALLBACK WndProc(HWND hWnd, { level.UpdateConsole(VK_BACK); } + else if(wParam == VK_OEM_1) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole(':'); + } + else + { + level.UpdateConsole(';'); + } + } + else if(wParam == VK_OEM_2) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole('?'); + } + else + { + level.UpdateConsole('/'); + } + } + else if(wParam == VK_OEM_3) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole('~'); + } + else + { + level.UpdateConsole('`'); + } + } + else if(wParam == VK_OEM_4) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole('{'); + } + else + { + level.UpdateConsole('['); + } + } + else if(wParam == VK_OEM_5) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole('|'); + } + else + { + level.UpdateConsole('\\'); + } + } + else if(wParam == VK_OEM_6) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole('}'); + } + else + { + level.UpdateConsole(']'); + } + } + else if(wParam == VK_OEM_7) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole('\''); + } + else + { + level.UpdateConsole('"'); + } + } + else if(wParam == VK_OEM_PERIOD) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole('>'); + } + else + { + level.UpdateConsole('.,'); + } + } + else if(wParam == VK_OEM_PLUS) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole('+'); + } + else + { + level.UpdateConsole('='); + } + } + else if(wParam == VK_OEM_COMMA) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole('<'); + } + else + { + level.UpdateConsole(','); + } + } + else if(wParam == VK_OEM_MINUS) + { + if(keys[VK_SHIFT]) + { + level.UpdateConsole('_'); + } + else + { + level.UpdateConsole('-,'); + } + } else if(isalpha(uint8(wParam))) { if(keys[VK_SHIFT]) diff --git a/src/strmanip.cpp b/src/strmanip.cpp index ccc1dac..0ada3b9 100644 --- a/src/strmanip.cpp +++ b/src/strmanip.cpp @@ -110,26 +110,82 @@ string KeyString(uint8 key) { switch (key) { - case VK_UP: - return "up"; - case VK_DOWN: - return "down"; - case VK_LEFT: - return "left"; - case VK_RIGHT: - return "right"; - case VK_PRIOR: - return "pageup"; - case VK_NEXT: - return "pagedown"; - case VK_SPACE: - return "space"; case VK_LBUTTON: return "mouse1"; case VK_RBUTTON: return "mouse2"; case VK_MBUTTON: return "mouse3"; + case VK_TAB: + return "tab"; + case VK_RETURN: + return "enter"; + case VK_SHIFT: + return "shift"; + case VK_CONTROL: + return "control"; + case VK_PAUSE: + return "pause"; + case VK_CAPITAL: + return "capslock"; + case VK_ESCAPE: + return "esc"; + case VK_SPACE: + return "space"; + case VK_PRIOR: + return "pageup"; + case VK_NEXT: + return "pagedown"; + case VK_END: + return "end"; + case VK_HOME: + return "home"; + case VK_LEFT: + return "left"; + case VK_UP: + return "up"; + case VK_RIGHT: + return "right"; + case VK_DOWN: + return "down"; + case VK_INSERT: + return "insert"; + case VK_DELETE: + return "delete"; + case VK_LWIN: + return "lwin"; + case VK_RWIN: + return "rwin"; + case VK_APPS: + return "apps"; + case VK_NUMPAD0: + return "numpad0"; + case VK_NUMPAD1: + return "numpad1"; + case VK_NUMPAD2: + return "numpad2"; + case VK_NUMPAD3: + return "numpad3"; + case VK_NUMPAD4: + return "numpad4"; + case VK_NUMPAD5: + return "numpad5"; + case VK_NUMPAD6: + return "numpad6"; + case VK_NUMPAD7: + return "numpad7"; + case VK_NUMPAD8: + return "numpad8"; + case VK_NUMPAD9: + return "numpad9"; + case VK_MULTIPLY: + return "numpad*"; + case VK_ADD: + return "numpad+"; + case VK_SUBTRACT: + return "numpad-"; + case VK_DIVIDE: + return "numpad/"; case VK_F1: return "f1"; case VK_F2: @@ -154,6 +210,12 @@ string KeyString(uint8 key) return "f11"; case VK_F12: return "f2"; + case VK_NUMLOCK: + return "numlock"; + case VK_SCROLL: + return "scroll"; + case VK_SEPARATOR: + return "separator"; default: return "null"; }; @@ -166,6 +228,8 @@ uint8 KeyName(std::string str) return VK_UP; else if (str.substr(0,4) == "down") return VK_DOWN; + else if (str.substr(0,3) == "esc") + return VK_ESCAPE; else if (str.substr(0,6) == "pageup") return VK_PRIOR; else if (str.substr(0,8) == "pagedown") @@ -182,6 +246,69 @@ uint8 KeyName(std::string str) return VK_RBUTTON; else if (str.substr(0,6) == "mouse3") return VK_MBUTTON; + else if (str.substr(0,4) == "home") + return VK_HOME; + else if (str.substr(0,3) == "end") + return VK_END; + else if (str.substr(0,3) == "tab") + return VK_TAB; + else if (str.substr(0,5) == "enter") + return VK_RETURN; + else if (str.substr(0,6) == "insert") + return VK_INSERT; + else if (str.substr(0,6) == "delete") + return VK_DELETE; + else if (str.substr(0,7) == "control") + return VK_CONTROL; + else if (str.substr(0,5) == "shift") + return VK_SHIFT; + else if (str.substr(0,7) == "numpad0") + return VK_NUMPAD0; + else if (str.substr(0,7) == "numpad1") + return VK_NUMPAD1; + else if (str.substr(0,7) == "numpad2") + return VK_NUMPAD2; + else if (str.substr(0,7) == "numpad3") + return VK_NUMPAD3; + else if (str.substr(0,7) == "numpad4") + return VK_NUMPAD4; + else if (str.substr(0,7) == "numpad5") + return VK_NUMPAD5; + else if (str.substr(0,7) == "numpad6") + return VK_NUMPAD6; + else if (str.substr(0,7) == "numpad7") + return VK_NUMPAD7; + else if (str.substr(0,7) == "numpad8") + return VK_NUMPAD8; + else if (str.substr(0,7) == "numpad9") + return VK_NUMPAD9; + else if (str.substr(0,9) == "separator") + return VK_SEPARATOR; + else if (str.substr(0,4) == "lwin") + return VK_LWIN; + else if (str.substr(0,4) == "rwin") + return VK_RWIN; + else if (str.substr(0,4) == "apps") + return VK_APPS; + else if (str.substr(0,7) == "numpad*") + return VK_MULTIPLY; + else if (str.substr(0,7) == "numpad+") + return VK_ADD; + else if (str.substr(0,7) == "numpad/") + return VK_DIVIDE; + else if (str.substr(0,7) == "numpad-") + return VK_SUBTRACT; + else if (str.substr(0,6) == "scroll") + return VK_SCROLL; + else if (str.substr(0,7) == "numlock") + return VK_NUMLOCK; + else if (str.substr(0,5) == "pause") + return VK_PAUSE; + else if (str.substr(0,8) == "capslock") + return VK_CAPITAL; + + + /*uncomment this to enable f1 as a mappable key else if(str.substr(0,2) == "f1") return VK_F1; @@ -216,7 +343,32 @@ uint8 KeyName(std::string str) return NULL; } else - return toupper(str[0]); + { + if(str[0] == '~' || str[0] == '`') + return VK_OEM_3; + else if (str[0] == '?' || str[0] == '/') + return VK_OEM_2; + else if (str[0] == '.' || str[0] == '>') + return VK_OEM_PERIOD; + else if (str[0] == '+' || str[0] == '=') + return VK_OEM_PLUS; + else if (str[0] == ';' || str[0] == ':') + return VK_OEM_1; + else if (str[0] == ',' || str[0] == '<') + return VK_OEM_COMMA; + else if (str[0] == '-' || str[0] == '_') + return VK_OEM_MINUS; + else if (str[0] == '[' || str[0] == '{') + return VK_OEM_4; + else if (str[0] == ']' || str[0] == '}') + return VK_OEM_6; + else if (str[0] == '\\' || str[0] == '|') + return VK_OEM_5; + else if (str[0] == '\'' || str[0] == '"') + return VK_OEM_7; + else + return toupper(str[0]); + } } string Right(string str, uint32 len)