Merge pull request #91 from lpmitchell/master

Added keyboard events for Tizen
This commit is contained in:
Joshua Granick
2014-02-26 07:26:10 -08:00
2 changed files with 97 additions and 80 deletions

View File

@@ -1,5 +1,5 @@
#include "platform/tizen/TizenApplication.h"
#include <KeyCodes.h>
namespace lime {
@@ -236,22 +236,112 @@ 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);
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;
if (keyCode == Tizen::Ui::KEY_BACK || keyCode == Tizen::Ui::KEY_ESC) {
bool right;
key.value = TizenKeyToFlash(keyCode, right);
Terminate ();
}
if (right)
key.flags |= efLocationRight;
sgTizenFrame->HandleEvent(key);
}

View File

@@ -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);