diff --git a/project/src/platform/tizen/TizenApplication.cpp b/project/src/platform/tizen/TizenApplication.cpp index cfc4e250a..3a751874b 100644 --- a/project/src/platform/tizen/TizenApplication.cpp +++ b/project/src/platform/tizen/TizenApplication.cpp @@ -1,5 +1,5 @@ #include "platform/tizen/TizenApplication.h" - +#include using namespace Tizen::Graphics::Opengl; @@ -243,27 +243,116 @@ namespace lime { void TizenApplication::OnKeyLongPressed (const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode) {} + #define TIZEN_TRANS(x) case Tizen::Ui::KEY_##x: return key##x; + #define TIZEN_TRANS_TO(x,y) case Tizen::Ui::KEY_##x: return key##y; + #define TIZEN_KEY(x) Tizen::Ui::KEY_##x + + int TizenKeyToFlash(int inKey, bool &outRight) { + + outRight = (inKey == TIZEN_KEY(RIGHT_SHIFT) || inKey == TIZEN_KEY(RIGHT_CTRL) || + inKey == TIZEN_KEY(RIGHT_ALT) || inKey == TIZEN_KEY(RIGHT_WIN)); + + + if (inKey >= TIZEN_KEY(A) && inKey <= TIZEN_KEY(Z)) + return inKey - TIZEN_KEY(A) + keyA; + + if (inKey >= TIZEN_KEY(0) && inKey <= TIZEN_KEY(9)) + return inKey - TIZEN_KEY(0) + keyNUMBER_0; + + if (inKey >= TIZEN_KEY(NUMPAD_0) && inKey <= TIZEN_KEY(NUMPAD_9)) + return inKey - TIZEN_KEY(NUMPAD_0) + keyNUMPAD_0; + + if (inKey >= TIZEN_KEY(FN_1) && inKey <= TIZEN_KEY(FN_5)) + return inKey - TIZEN_KEY(FN_1) + keyF1; + + // Fun, There are some random key mappings between F5 and F6 + if (inKey >= TIZEN_KEY(FN_6) && inKey <= TIZEN_KEY(FN_12)) + return inKey - TIZEN_KEY(FN_6) + keyF6; + + + switch (inKey) + { + case TIZEN_KEY(RIGHT_ALT): + case TIZEN_KEY(LEFT_ALT): + return keyALTERNATE; + case TIZEN_KEY(RIGHT_SHIFT): + case TIZEN_KEY(LEFT_SHIFT): + return keySHIFT; + case TIZEN_KEY(RIGHT_CTRL): + case TIZEN_KEY(LEFT_CTRL): + return keyCONTROL; + case TIZEN_KEY(RIGHT_WIN): + case TIZEN_KEY(LEFT_WIN): + return keyCOMMAND; + + TIZEN_TRANS_TO(LEFT_BRACKET, LEFTBRACKET) + TIZEN_TRANS_TO(RIGHT_BRACKET, RIGHTBRACKET) + TIZEN_TRANS_TO(APOSTROPHE, QUOTE) + TIZEN_TRANS_TO(GRAVE, BACKQUOTE) + TIZEN_TRANS_TO(CAPSLOCK, CAPS_LOCK) + TIZEN_TRANS_TO(MOVE_END, END) + TIZEN_TRANS_TO(ESC, ESCAPE) + TIZEN_TRANS_TO(MOVE_HOME, HOME) + TIZEN_TRANS_TO(DOT, PERIOD) + TIZEN_TRANS_TO(NUMPAD_DOT, NUMPAD_DECIMAL) + + TIZEN_TRANS(BACKSLASH) + TIZEN_TRANS(BACKSPACE) + TIZEN_TRANS(COMMA) + TIZEN_TRANS(DELETE) + TIZEN_TRANS(ENTER) + TIZEN_TRANS(INSERT) + TIZEN_TRANS(DOWN) + TIZEN_TRANS(LEFT) + TIZEN_TRANS(RIGHT) + TIZEN_TRANS(UP) + TIZEN_TRANS(MINUS) + TIZEN_TRANS(PAGE_UP) + TIZEN_TRANS(PAGE_DOWN) + TIZEN_TRANS(SEMICOLON) + TIZEN_TRANS(SLASH) + TIZEN_TRANS(SPACE) + TIZEN_TRANS(TAB) + + TIZEN_TRANS(NUMPAD_ADD) + TIZEN_TRANS(NUMPAD_DIVIDE) + TIZEN_TRANS(NUMPAD_ENTER) + TIZEN_TRANS(NUMPAD_MULTIPLY) + TIZEN_TRANS(NUMPAD_SUBTRACT) + + } + return inKey; + + } void TizenApplication::OnKeyPressed (const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode) { - - Event key( etKeyDown); + Event key(etKeyDown); key.code = keyCode; - key.value = keyCode; + + bool right; + key.value = TizenKeyToFlash(keyCode, right); + + if (right) + key.flags |= efLocationRight; + sgTizenFrame->HandleEvent(key); - } void TizenApplication::OnKeyReleased (const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode) { - - Event key( etKeyUp); + Event key(etKeyUp); key.code = keyCode; - key.value = keyCode; - sgTizenFrame->HandleEvent(key); + bool right; + key.value = TizenKeyToFlash(keyCode, right); + + if (right) + key.flags |= efLocationRight; + + sgTizenFrame->HandleEvent(key); } - - + + void TizenApplication::OnLowMemory (void) {} void TizenApplication::OnScreenOn (void) {} void TizenApplication::OnScreenOff (void) {} diff --git a/project/src/platform/tizen/TizenStage.cpp b/project/src/platform/tizen/TizenStage.cpp index f2d48ff5b..3e27b91a5 100644 --- a/project/src/platform/tizen/TizenStage.cpp +++ b/project/src/platform/tizen/TizenStage.cpp @@ -129,80 +129,7 @@ namespace lime { } - - /*#define TIZEN_TRANS(x) case TIZEN_KEY_##x: return key##x; - - - int TizenKeyToFlash(int inKey, bool &outRight) { - - outRight = (inKey == GLFW_KEY_RIGHT_SHIFT || inKey == GLFW_KEY_RIGHT_CONTROL || - inKey == GLFW_KEY_RIGHT_ALT || inKey == GLFW_KEY_RIGHT_SUPER); - if (inKey >= keyA && inKey <= keyZ) - return inKey; - if (inKey >= GLFW_KEY_0 && inKey <= GLFW_KEY_9) - return inKey - GLFW_KEY_0 + keyNUMBER_0; - if (inKey >= GLFW_KEY_KP_0 && inKey <= GLFW_KEY_KP_9) - return inKey - GLFW_KEY_KP_0 + keyNUMPAD_0; - - if (inKey >= GLFW_KEY_F1 && inKey <= GLFW_KEY_F15) - return inKey - GLFW_KEY_F1 + keyF1; - - switch (inKey) - { - case GLFW_KEY_RIGHT_ALT: - case GLFW_KEY_LEFT_ALT: - return keyALTERNATE; - case GLFW_KEY_RIGHT_SHIFT: - case GLFW_KEY_LEFT_SHIFT: - return keySHIFT; - case GLFW_KEY_RIGHT_CONTROL: - case GLFW_KEY_LEFT_CONTROL: - return keyCONTROL; - case GLFW_KEY_RIGHT_SUPER: - case GLFW_KEY_LEFT_SUPER: - return keyCOMMAND; - - case GLFW_KEY_LEFT_BRACKET: return keyLEFTBRACKET; - case GLFW_KEY_RIGHT_BRACKET: return keyRIGHTBRACKET; - case GLFW_KEY_APOSTROPHE: return keyQUOTE; - case GLFW_KEY_GRAVE_ACCENT: return keyBACKQUOTE; - - GLFW_TRANS(BACKSLASH) - GLFW_TRANS(BACKSPACE) - GLFW_TRANS(CAPS_LOCK) - GLFW_TRANS(COMMA) - GLFW_TRANS(DELETE) - GLFW_TRANS(DOWN) - GLFW_TRANS(END) - GLFW_TRANS(ENTER) - GLFW_TRANS(EQUAL) - GLFW_TRANS(ESCAPE) - GLFW_TRANS(HOME) - GLFW_TRANS(INSERT) - GLFW_TRANS(LEFT) - GLFW_TRANS(MINUS) - GLFW_TRANS(PAGE_UP) - GLFW_TRANS(PAGE_DOWN) - GLFW_TRANS(PERIOD) - GLFW_TRANS(RIGHT) - GLFW_TRANS(SEMICOLON) - GLFW_TRANS(SLASH) - GLFW_TRANS(SPACE) - GLFW_TRANS(TAB) - GLFW_TRANS(UP) - - case GLFW_KEY_KP_ADD: return keyNUMPAD_ADD; - case GLFW_KEY_KP_DECIMAL: return keyNUMPAD_DECIMAL; - case GLFW_KEY_KP_DIVIDE: return keyNUMPAD_DIVIDE; - case GLFW_KEY_KP_ENTER: return keyNUMPAD_ENTER; - case GLFW_KEY_KP_MULTIPLY: return keyNUMPAD_MULTIPLY; - case GLFW_KEY_KP_SUBTRACT: return keyNUMPAD_SUBTRACT; - } - return inKey; - - } - - + /* static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { Event event(action == GLFW_RELEASE ? etKeyUp : etKeyDown);