/* * This source file is part of RmlUi, the HTML/CSS Interface Middleware * * For the latest information, see http://github.com/mikke89/RmlUi * * Copyright (c) 2008-2010 Nuno Silva * Copyright (c) 2019 The RmlUi Team, and contributors * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * */ #include #include "SystemInterfaceSDL2.h" Rml::Input::KeyIdentifier RmlUiSDL2SystemInterface::TranslateKey(SDL_Keycode sdlkey) { using namespace Rml::Input; switch(sdlkey) { case SDLK_UNKNOWN: return KI_UNKNOWN; break; case SDLK_SPACE: return KI_SPACE; break; case SDLK_0: return KI_0; break; case SDLK_1: return KI_1; break; case SDLK_2: return KI_2; break; case SDLK_3: return KI_3; break; case SDLK_4: return KI_4; break; case SDLK_5: return KI_5; break; case SDLK_6: return KI_6; break; case SDLK_7: return KI_7; break; case SDLK_8: return KI_8; break; case SDLK_9: return KI_9; break; case SDLK_a: return KI_A; break; case SDLK_b: return KI_B; break; case SDLK_c: return KI_C; break; case SDLK_d: return KI_D; break; case SDLK_e: return KI_E; break; case SDLK_f: return KI_F; break; case SDLK_g: return KI_G; break; case SDLK_h: return KI_H; break; case SDLK_i: return KI_I; break; case SDLK_j: return KI_J; break; case SDLK_k: return KI_K; break; case SDLK_l: return KI_L; break; case SDLK_m: return KI_M; break; case SDLK_n: return KI_N; break; case SDLK_o: return KI_O; break; case SDLK_p: return KI_P; break; case SDLK_q: return KI_Q; break; case SDLK_r: return KI_R; break; case SDLK_s: return KI_S; break; case SDLK_t: return KI_T; break; case SDLK_u: return KI_U; break; case SDLK_v: return KI_V; break; case SDLK_w: return KI_W; break; case SDLK_x: return KI_X; break; case SDLK_y: return KI_Y; break; case SDLK_z: return KI_Z; break; case SDLK_SEMICOLON: return KI_OEM_1; break; case SDLK_PLUS: return KI_OEM_PLUS; break; case SDLK_COMMA: return KI_OEM_COMMA; break; case SDLK_MINUS: return KI_OEM_MINUS; break; case SDLK_PERIOD: return KI_OEM_PERIOD; break; case SDLK_SLASH: return KI_OEM_2; break; case SDLK_BACKQUOTE: return KI_OEM_3; break; case SDLK_LEFTBRACKET: return KI_OEM_4; break; case SDLK_BACKSLASH: return KI_OEM_5; break; case SDLK_RIGHTBRACKET: return KI_OEM_6; break; case SDLK_QUOTEDBL: return KI_OEM_7; break; case SDLK_KP_0: return KI_NUMPAD0; break; case SDLK_KP_1: return KI_NUMPAD1; break; case SDLK_KP_2: return KI_NUMPAD2; break; case SDLK_KP_3: return KI_NUMPAD3; break; case SDLK_KP_4: return KI_NUMPAD4; break; case SDLK_KP_5: return KI_NUMPAD5; break; case SDLK_KP_6: return KI_NUMPAD6; break; case SDLK_KP_7: return KI_NUMPAD7; break; case SDLK_KP_8: return KI_NUMPAD8; break; case SDLK_KP_9: return KI_NUMPAD9; break; case SDLK_KP_ENTER: return KI_NUMPADENTER; break; case SDLK_KP_MULTIPLY: return KI_MULTIPLY; break; case SDLK_KP_PLUS: return KI_ADD; break; case SDLK_KP_MINUS: return KI_SUBTRACT; break; case SDLK_KP_PERIOD: return KI_DECIMAL; break; case SDLK_KP_DIVIDE: return KI_DIVIDE; break; case SDLK_KP_EQUALS: return KI_OEM_NEC_EQUAL; break; case SDLK_BACKSPACE: return KI_BACK; break; case SDLK_TAB: return KI_TAB; break; case SDLK_CLEAR: return KI_CLEAR; break; case SDLK_RETURN: return KI_RETURN; break; case SDLK_PAUSE: return KI_PAUSE; break; case SDLK_CAPSLOCK: return KI_CAPITAL; break; case SDLK_PAGEUP: return KI_PRIOR; break; case SDLK_PAGEDOWN: return KI_NEXT; break; case SDLK_END: return KI_END; break; case SDLK_HOME: return KI_HOME; break; case SDLK_LEFT: return KI_LEFT; break; case SDLK_UP: return KI_UP; break; case SDLK_RIGHT: return KI_RIGHT; break; case SDLK_DOWN: return KI_DOWN; break; case SDLK_INSERT: return KI_INSERT; break; case SDLK_DELETE: return KI_DELETE; break; case SDLK_HELP: return KI_HELP; break; case SDLK_F1: return KI_F1; break; case SDLK_F2: return KI_F2; break; case SDLK_F3: return KI_F3; break; case SDLK_F4: return KI_F4; break; case SDLK_F5: return KI_F5; break; case SDLK_F6: return KI_F6; break; case SDLK_F7: return KI_F7; break; case SDLK_F8: return KI_F8; break; case SDLK_F9: return KI_F9; break; case SDLK_F10: return KI_F10; break; case SDLK_F11: return KI_F11; break; case SDLK_F12: return KI_F12; break; case SDLK_F13: return KI_F13; break; case SDLK_F14: return KI_F14; break; case SDLK_F15: return KI_F15; break; case SDLK_NUMLOCKCLEAR: return KI_NUMLOCK; break; case SDLK_SCROLLLOCK: return KI_SCROLL; break; case SDLK_LSHIFT: return KI_LSHIFT; break; case SDLK_RSHIFT: return KI_RSHIFT; break; case SDLK_LCTRL: return KI_LCONTROL; break; case SDLK_RCTRL: return KI_RCONTROL; break; case SDLK_LALT: return KI_LMENU; break; case SDLK_RALT: return KI_RMENU; break; case SDLK_LGUI: return KI_LMETA; break; case SDLK_RGUI: return KI_RMETA; break; /*case SDLK_LSUPER: return KI_LWIN; break; case SDLK_RSUPER: return KI_RWIN; break;*/ default: return KI_UNKNOWN; break; } } int RmlUiSDL2SystemInterface::TranslateMouseButton(Uint8 button) { switch(button) { case SDL_BUTTON_LEFT: return 0; case SDL_BUTTON_RIGHT: return 1; case SDL_BUTTON_MIDDLE: return 2; default: return 3; } } int RmlUiSDL2SystemInterface::GetKeyModifiers() { SDL_Keymod sdlMods = SDL_GetModState(); int retval = 0; if(sdlMods & KMOD_CTRL) retval |= Rml::Input::KM_CTRL; if(sdlMods & KMOD_SHIFT) retval |= Rml::Input::KM_SHIFT; if(sdlMods & KMOD_ALT) retval |= Rml::Input::KM_ALT; return retval; } double RmlUiSDL2SystemInterface::GetElapsedTime() { return double(SDL_GetTicks()) / 1000.0; } bool RmlUiSDL2SystemInterface::LogMessage(Rml::Log::Type type, const Rml::String& message) { Rml::String Type; switch(type) { case Rml::Log::LT_ALWAYS: Type = "[Always]"; break; case Rml::Log::LT_ERROR: Type = "[Error]"; break; case Rml::Log::LT_ASSERT: Type = "[Assert]"; break; case Rml::Log::LT_WARNING: Type = "[Warning]"; break; case Rml::Log::LT_INFO: Type = "[Info]"; break; case Rml::Log::LT_DEBUG: Type = "[Debug]"; break; case Rml::Log::LT_MAX: break; }; printf("%s - %s\n", Type.c_str(), message.c_str()); return true; }