From ae53ab3d79c8f4e847cc59580547fd723ca68f1b Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Sat, 4 Jan 2014 20:25:54 +0100 Subject: [PATCH] [DEV] add special char interface on android --- .../android/src/org/ewol/EwolConstants.java | 38 ++++++++++++ .../src/org/ewol/EwolSurfaceViewGL.java | 58 ++++++++++++------- sources/ewol/context/Android/Context.cpp | 8 +++ sources/ewol/key/keyboard.h | 1 + 4 files changed, 84 insertions(+), 21 deletions(-) diff --git a/sources/android/src/org/ewol/EwolConstants.java b/sources/android/src/org/ewol/EwolConstants.java index 15ccaaf3..0d976dd4 100644 --- a/sources/android/src/org/ewol/EwolConstants.java +++ b/sources/android/src/org/ewol/EwolConstants.java @@ -27,4 +27,42 @@ public interface EwolConstants { public static final int EWOL_APPL_TYPE_ACTIVITY = 0; public static final int EWOL_APPL_TYPE_WALLPAPER = 1; + + // Key binding of the element ewol::key::keyboard : + public static final int EWOL_MOVE_KEY_LEFT = 2; + public static final int EWOL_MOVE_KEY_RIGHT = 3; + public static final int EWOL_MOVE_KEY_UP = 4; + public static final int EWOL_MOVE_KEY_DOWN = 5; + public static final int EWOL_MOVE_KEY_PAGE_UP = 6; + public static final int EWOL_MOVE_KEY_PAGE_DOWN = 7; + public static final int EWOL_MOVE_KEY_START = 8; + public static final int EWOL_MOVE_KEY_END = 9; + public static final int EWOL_MOVE_KEY_PRINT = 10; + public static final int EWOL_MOVE_KEY_STOP_DEFIL = 11; + public static final int EWOL_MOVE_KEY_WAIT = 12; + public static final int EWOL_MOVE_KEY_INSERT = 13; + public static final int EWOL_MOVE_KEY_F1 = 14; + public static final int EWOL_MOVE_KEY_F2 = 15; + public static final int EWOL_MOVE_KEY_F3 = 16; + public static final int EWOL_MOVE_KEY_F4 = 17; + public static final int EWOL_MOVE_KEY_F5 = 18; + public static final int EWOL_MOVE_KEY_F6 = 19; + public static final int EWOL_MOVE_KEY_F7 = 20; + public static final int EWOL_MOVE_KEY_F8 = 21; + public static final int EWOL_MOVE_KEY_F9 = 22; + public static final int EWOL_MOVE_KEY_F10 = 23; + public static final int EWOL_MOVE_KEY_F11 = 24; + public static final int EWOL_MOVE_KEY_F12 = 25; + public static final int EWOL_MOVE_KEY_CAP_LOCK = 26; + public static final int EWOL_MOVE_KEY_SHIFT_LEFT = 27; + public static final int EWOL_MOVE_KEY_SHIFT_RIGHT = 28; + public static final int EWOL_MOVE_KEY_CTRL_LEFT = 29; + public static final int EWOL_MOVE_KEY_CTRL_RIGHT = 30; + public static final int EWOL_MOVE_KEY_META_LEFT = 31; + public static final int EWOL_MOVE_KEY_META_RIGHT = 32; + public static final int EWOL_MOVE_KEY_ALT = 33; + public static final int EWOL_MOVE_KEY_ALT_GR = 34; + public static final int EWOL_MOVE_KEY_CONTEXT_MENU = 35; + public static final int EWOL_MOVE_KEY_NUM_LOCK = 36; + } diff --git a/sources/android/src/org/ewol/EwolSurfaceViewGL.java b/sources/android/src/org/ewol/EwolSurfaceViewGL.java index 2cac1b70..31b39537 100644 --- a/sources/android/src/org/ewol/EwolSurfaceViewGL.java +++ b/sources/android/src/org/ewol/EwolSurfaceViewGL.java @@ -213,8 +213,8 @@ public class EwolSurfaceViewGL extends GLSurfaceView implements EwolConstants { private boolean keyboardEvent(int keyCode, KeyEvent event, boolean isDown) { int actionDone = event.getAction(); - switch(keyCode) - { + Log.i("Surface GL", "get event : " + keyCode + " is down : " + isDown); + switch(keyCode) { case KeyEvent.KEYCODE_VOLUME_DOWN: EWOL.keyboardEventKeySystem(EWOL_SYSTEM_KEY_VOLUME_DOWN, isDown); return false; @@ -240,26 +240,42 @@ public class EwolSurfaceViewGL extends GLSurfaceView implements EwolConstants { case KeyEvent.KEYCODE_DEL: EWOL.keyboardEventKey(EWOL_SYSTEM_KEY_DEL, isDown); return true; - case KeyEvent.KEYCODE_ALT_LEFT: - // TODO : ... - break; - case KeyEvent.KEYCODE_SHIFT_LEFT: - // TODO : ... - break; - case KeyEvent.KEYCODE_ENTER: - // TODO : ... - break; // Joystick event : - case KeyEvent.KEYCODE_DPAD_UP: - break; - case KeyEvent.KEYCODE_DPAD_DOWN: - break; - case KeyEvent.KEYCODE_DPAD_LEFT: - break; - case KeyEvent.KEYCODE_DPAD_RIGHT: - break; - case KeyEvent.KEYCODE_DPAD_CENTER: - break; + case KeyEvent.KEYCODE_DPAD_UP: EWOL.keyboardEventMove(EWOL_MOVE_KEY_UP, isDown); return true; + case KeyEvent.KEYCODE_DPAD_DOWN: EWOL.keyboardEventMove(EWOL_MOVE_KEY_DOWN, isDown); return true; + case KeyEvent.KEYCODE_DPAD_LEFT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_LEFT, isDown); return true; + case KeyEvent.KEYCODE_DPAD_RIGHT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_RIGHT, isDown); return true; + case KeyEvent.KEYCODE_PAGE_UP: EWOL.keyboardEventMove(EWOL_MOVE_KEY_PAGE_UP, isDown); return true; + case KeyEvent.KEYCODE_PAGE_DOWN: EWOL.keyboardEventMove(EWOL_MOVE_KEY_PAGE_DOWN, isDown); return true; + case KeyEvent.KEYCODE_MOVE_HOME: EWOL.keyboardEventMove(EWOL_MOVE_KEY_START, isDown); return true; + case KeyEvent.KEYCODE_MOVE_END: EWOL.keyboardEventMove(EWOL_MOVE_KEY_END, isDown); return true; + case KeyEvent.KEYCODE_SYSRQ: EWOL.keyboardEventMove(EWOL_MOVE_KEY_PRINT, isDown); return true; + //case KeyEvent.: EWOL.keyboardEventMove(EWOL_MOVE_KEY_STOP_DEFIL, isDown); return true; + case KeyEvent.KEYCODE_BREAK: EWOL.keyboardEventMove(EWOL_MOVE_KEY_WAIT, isDown); return true; + case KeyEvent.KEYCODE_INSERT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_INSERT, isDown); return true; + case KeyEvent.KEYCODE_F1: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F1, isDown); return true; + case KeyEvent.KEYCODE_F2: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F2, isDown); return true; + case KeyEvent.KEYCODE_F3: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F3, isDown); return true; + case KeyEvent.KEYCODE_F4: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F4, isDown); return true; + case KeyEvent.KEYCODE_F5: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F5, isDown); return true; + case KeyEvent.KEYCODE_F6: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F6, isDown); return true; + case KeyEvent.KEYCODE_F7: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F7, isDown); return true; + case KeyEvent.KEYCODE_F8: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F8, isDown); return true; + case KeyEvent.KEYCODE_F9: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F9, isDown); return true; + case KeyEvent.KEYCODE_F10: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F10, isDown); return true; + case KeyEvent.KEYCODE_F11: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F11, isDown); return true; + case KeyEvent.KEYCODE_F12: EWOL.keyboardEventMove(EWOL_MOVE_KEY_F12, isDown); return true; + case KeyEvent.KEYCODE_CAPS_LOCK: EWOL.keyboardEventMove(EWOL_MOVE_KEY_CAP_LOCK, isDown); return true; + case KeyEvent.KEYCODE_SHIFT_LEFT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_SHIFT_LEFT, isDown); return true; + case KeyEvent.KEYCODE_SHIFT_RIGHT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_SHIFT_RIGHT, isDown); return true; + case KeyEvent.KEYCODE_CTRL_LEFT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_CTRL_LEFT, isDown); return true; + case KeyEvent.KEYCODE_CTRL_RIGHT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_CTRL_RIGHT, isDown); return true; + case KeyEvent.KEYCODE_META_LEFT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_META_LEFT, isDown); return true; + case KeyEvent.KEYCODE_META_RIGHT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_META_RIGHT, isDown); return true; + case KeyEvent.KEYCODE_ALT_LEFT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_ALT, isDown); return true; + case KeyEvent.KEYCODE_ALT_RIGHT: EWOL.keyboardEventMove(EWOL_MOVE_KEY_ALT_GR, isDown); return true; + //case KeyEvent.KEYCODE_MENU: EWOL.keyboardEventMove(EWOL_MOVE_KEY_CONTEXT_MENU, isDown); return true; + case KeyEvent.KEYCODE_NUM_LOCK: EWOL.keyboardEventMove(EWOL_MOVE_KEY_NUM_LOCK, isDown); return true; default: break; } diff --git a/sources/ewol/context/Android/Context.cpp b/sources/ewol/context/Android/Context.cpp index 4ed92cb3..3d5f8015 100644 --- a/sources/ewol/context/Android/Context.cpp +++ b/sources/ewol/context/Android/Context.cpp @@ -389,6 +389,13 @@ class AndroidContext : public ewol::Context { OS_SetKeyboard(m_guiKeyBoardSpecialKeyMode, _myChar, _isDown, _isARepeateKey); } + void ANDROID_SetKeyboardMove(int _move, bool _isDown, bool _isARepeateKey=false) { + // direct wrapping : + enum ewol::key::keyboard move = (enum ewol::key::keyboard)_move; + m_guiKeyBoardSpecialKeyMode.update(move, _isDown); + OS_SetKeyboardMove(m_guiKeyBoardSpecialKeyMode, move, _isDown, _isARepeateKey); + } + void OS_Resize(const vec2& _size) { m_currentHeight = _size.y(); ewol::Context::OS_Resize(_size); @@ -702,6 +709,7 @@ extern "C" { return; } EWOL_DEBUG("IO keyboard Move event : \"" << _type << "\" is down=" << _isdown); + s_listInstance[_id]->ANDROID_SetKeyboardMove(_type, _isdown); } void Java_org_ewol_Ewol_EWkeyboardEventKey(JNIEnv* _env, diff --git a/sources/ewol/key/keyboard.h b/sources/ewol/key/keyboard.h index 7551a44d..fa0d9ade 100644 --- a/sources/ewol/key/keyboard.h +++ b/sources/ewol/key/keyboard.h @@ -16,6 +16,7 @@ namespace ewol { namespace key { /** * @brief Keybord event or joystick event + * @warning If you modify Id of these element check the java interface file of constant : EwolConstant.java */ enum keyboard { keyboardUnknow = 0, //!< Unknown keyboard key