[DEV] add special char interface on android

This commit is contained in:
Edouard DUPIN 2014-01-04 20:25:54 +01:00
parent 8fc8738c0f
commit ae53ab3d79
4 changed files with 84 additions and 21 deletions

View File

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

View File

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

View File

@ -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,

View File

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