From c84255e82d4ef15aa88c0259aaa0b64b9104e755 Mon Sep 17 00:00:00 2001 From: Luke Mitchell Date: Wed, 26 Feb 2014 09:17:22 +0000 Subject: [PATCH 1/3] Added keyboard events to the Tizen application's key listeners Removed Tizen automatic termination when the back button is pressed. --- project/src/platform/tizen/TizenApplication.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/project/src/platform/tizen/TizenApplication.cpp b/project/src/platform/tizen/TizenApplication.cpp index 3cbb482ed..cfc4e250a 100644 --- a/project/src/platform/tizen/TizenApplication.cpp +++ b/project/src/platform/tizen/TizenApplication.cpp @@ -246,19 +246,21 @@ namespace lime { void TizenApplication::OnKeyPressed (const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode) { - + Event key( etKeyDown); + key.code = keyCode; + key.value = keyCode; + sgTizenFrame->HandleEvent(key); } void TizenApplication::OnKeyReleased (const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode) { - if (keyCode == Tizen::Ui::KEY_BACK || keyCode == Tizen::Ui::KEY_ESC) { - - Terminate (); - - } - + Event key( etKeyUp); + key.code = keyCode; + key.value = keyCode; + sgTizenFrame->HandleEvent(key); + } From f495f162ba33fdd1b0d15d2372b61e7144776828 Mon Sep 17 00:00:00 2001 From: Luke Mitchell Date: Wed, 26 Feb 2014 10:37:28 +0000 Subject: [PATCH 2/3] Translate Tizen key codes to match Flash --- .../src/platform/tizen/TizenApplication.cpp | 111 ++++++++++++++++-- project/src/platform/tizen/TizenStage.cpp | 75 +----------- 2 files changed, 101 insertions(+), 85 deletions(-) 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); From 45d2a3e9791fbd79895c610159dda24429a5526c Mon Sep 17 00:00:00 2001 From: Luke Mitchell Date: Wed, 26 Feb 2014 10:47:39 +0000 Subject: [PATCH 3/3] Tidyup --- .../src/platform/tizen/TizenApplication.cpp | 115 +++++++++--------- 1 file changed, 57 insertions(+), 58 deletions(-) diff --git a/project/src/platform/tizen/TizenApplication.cpp b/project/src/platform/tizen/TizenApplication.cpp index 3a751874b..e6503c4bc 100644 --- a/project/src/platform/tizen/TizenApplication.cpp +++ b/project/src/platform/tizen/TizenApplication.cpp @@ -243,69 +243,69 @@ 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(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)) + + // 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; + return keyALTERNATE; case TIZEN_KEY(RIGHT_SHIFT): case TIZEN_KEY(LEFT_SHIFT): - return keySHIFT; + return keySHIFT; case TIZEN_KEY(RIGHT_CTRL): case TIZEN_KEY(LEFT_CTRL): - return keyCONTROL; + return keyCONTROL; case TIZEN_KEY(RIGHT_WIN): case TIZEN_KEY(LEFT_WIN): - return keyCOMMAND; + 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(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_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(DOWN) TIZEN_TRANS(LEFT) TIZEN_TRANS(RIGHT) - TIZEN_TRANS(UP) + TIZEN_TRANS(UP) TIZEN_TRANS(MINUS) TIZEN_TRANS(PAGE_UP) TIZEN_TRANS(PAGE_DOWN) @@ -314,45 +314,44 @@ namespace lime { 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) - + 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); - key.code = keyCode; - - bool right; - key.value = TizenKeyToFlash(keyCode, right); - - if (right) - key.flags |= efLocationRight; - - sgTizenFrame->HandleEvent(key); + Event key(etKeyDown); + key.code = 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); - key.code = keyCode; - - bool right; - key.value = TizenKeyToFlash(keyCode, right); - - if (right) - key.flags |= efLocationRight; - - sgTizenFrame->HandleEvent(key); + Event key(etKeyUp); + key.code = keyCode; + + 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) {}