From: giwoong.kim Date: Fri, 5 Oct 2012 03:05:56 +0000 (+0900) Subject: keymap: support the Insert ~ PgDn keys & KP_Enter X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~1423 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8eda93dda3c7552cc112f64c67f5864b40705dd5;p=sdk%2Femulator%2Fqemu.git keymap: support the Insert ~ PgDn keys & KP_Enter Insert, Home, PgUp, Delete, End, PgDn, KP_Enter is supported on USB keyboard Signed-off-by: GiWoong Kim --- diff --git a/tizen/src/hw/maru_virtio_touchscreen.c b/tizen/src/hw/maru_virtio_touchscreen.c index 1c59b3d0c9..42b11df7e0 100644 --- a/tizen/src/hw/maru_virtio_touchscreen.c +++ b/tizen/src/hw/maru_virtio_touchscreen.c @@ -74,8 +74,8 @@ static ElementEntry _elem_buf[10]; static QTAILQ_HEAD(, ElementEntry) elem_queue = QTAILQ_HEAD_INITIALIZER(elem_queue); -static unsigned int elem_ringbuf_cnt; -static unsigned int elem_queue_cnt; +static unsigned int elem_ringbuf_cnt; /* _elem_buf */ +static unsigned int elem_queue_cnt; /* elem_queue */ TouchscreenState *ts; diff --git a/tizen/src/skin/maruskin_keymap.c b/tizen/src/skin/maruskin_keymap.c index 88f113dfb0..a01022f6c0 100644 --- a/tizen/src/skin/maruskin_keymap.c +++ b/tizen/src/skin/maruskin_keymap.c @@ -36,19 +36,33 @@ MULTI_DEBUG_CHANNEL(qemu, skin_keymap); +static void trace_binary(int decimal) +{ + if (decimal != 0) { + trace_binary(decimal / 2); + fprintf(stdout, "%d", decimal % 2); + fflush(stdout); + } +} + int javakeycode_to_scancode( int event_type, int java_keycode, int state_mask, int key_location) { - int state = java_keycode & JAVA_KEYCODE_BIT; - int vk = java_keycode & JAVA_KEY_MASK; + bool character = true; + int vk = 0; - int ctrl_mask = java_keycode & JAVA_KEYCODE_BIT_CTRL; - int shift_mask = java_keycode & JAVA_KEYCODE_BIT_SHIFT; - int alt_mask = java_keycode & JAVA_KEYCODE_BIT_ALT; +#if 0 + /* print key information */ + TRACE("keycode = %d(", java_keycode); + trace_binary(java_keycode); + fprintf(stdout, ")\n"); +#endif + character = !(java_keycode & JAVA_KEYCODE_BIT); + vk = java_keycode & JAVA_KEY_MASK; /* CapsLock & NumLock key processing */ - if (state != 0) { + if (character == false) { if (vk == JAVA_KEY_CAPS_LOCK) { if (event_type == KEY_PRESSED) { set_emul_caps_lock_state(get_emul_caps_lock_state() ^ 1); //toggle @@ -61,6 +75,7 @@ int javakeycode_to_scancode( return 69; } } + /* check CapsLock & NumLock key sync */ if (event_type == KEY_PRESSED) { int caps_lock = -1; @@ -89,20 +104,22 @@ int javakeycode_to_scancode( #endif*/ if (vk == 0) { //meta keys - if (java_keycode == JAVA_KEYCODE_BIT_CTRL) { //ctrl key + TRACE("meta key\n"); + + if (java_keycode == JAVA_KEYCODE_BIT_CTRL) { /* ctrl key */ if (key_location == JAVA_KEYLOCATION_RIGHT) { kbd_put_keycode(224); //0xE0 } return 29; - } else if (java_keycode == JAVA_KEYCODE_BIT_SHIFT) { //shift key + } else if (java_keycode == JAVA_KEYCODE_BIT_SHIFT) { /* shift key */ #ifndef _WIN32 //keyLocation information is not supported at swt of windows version if (key_location == JAVA_KEYLOCATION_RIGHT) { - return 54; //Shift_R + return 54; /* Shift_R */ } #endif return 42; - } else if (java_keycode == JAVA_KEYCODE_BIT_ALT) { //alt key + } else if (java_keycode == JAVA_KEYCODE_BIT_ALT) { /* alt key */ if (key_location == JAVA_KEYLOCATION_RIGHT) { kbd_put_keycode(224); } @@ -112,11 +129,15 @@ int javakeycode_to_scancode( } } - if (state != 0) - { //non-character keys - if (vk >= JAVA_KEY_F1 && vk <= JAVA_KEY_F20) { //function keys + if (character == false) + { /* non-character keys */ + if (vk >= JAVA_KEY_F1 && vk <= JAVA_KEY_F20) { /* function keys */ + TRACE("function key\n"); + vk += 255; - } else { //special keys + } else { /* special keys */ + TRACE("special key\n"); + switch(vk) { case JAVA_KEY_ARROW_UP : if (key_location != JAVA_KEYLOCATION_KEYPAD) { @@ -144,14 +165,29 @@ int javakeycode_to_scancode( break; case JAVA_KEY_PAGE_UP : + if (key_location != JAVA_KEYLOCATION_KEYPAD) { + kbd_put_keycode(224); + } return 73; case JAVA_KEY_PAGE_DOWN : + if (key_location != JAVA_KEYLOCATION_KEYPAD) { + kbd_put_keycode(224); + } return 81; case JAVA_KEY_HOME : + if (key_location != JAVA_KEYLOCATION_KEYPAD) { + kbd_put_keycode(224); + } return 71; case JAVA_KEY_END : + if (key_location != JAVA_KEYLOCATION_KEYPAD) { + kbd_put_keycode(224); + } return 79; case JAVA_KEY_INSERT : + if (key_location != JAVA_KEYLOCATION_KEYPAD) { + kbd_put_keycode(224); + } return 82; case JAVA_KEY_KEYPAD_MULTIPLY : @@ -184,7 +220,8 @@ int javakeycode_to_scancode( return 72; case JAVA_KEY_KEYPAD_9 : return 73; - case JAVA_KEY_KEYPAD_CR : + case JAVA_KEY_KEYPAD_CR : /* KP_ENTER */ + kbd_put_keycode(224); return 28; case JAVA_KEY_SCROLL_LOCK : @@ -201,78 +238,17 @@ int javakeycode_to_scancode( break; } } - } - else //state_mask == 0 - { //character keys - if (ctrl_mask == 0 && shift_mask != 0 && alt_mask == 0) { //shift + character keys - switch(vk) { - case '`' : - vk = '~'; - break; - case '1' : - vk = '!'; - break; - case '2' : - vk = '@'; - break; - case '3' : - vk = '#'; - break; - case '4' : - vk = '$'; - break; - case '5' : - vk = '%'; - break; - case '6' : - vk = '^'; - break; - case '7' : - vk = '&'; - break; - case '8' : - vk = '*'; - break; - case '9' : - vk = '('; - break; - case '0' : - vk = ')'; - break; - case '-' : - vk = '_'; - break; - case '=' : - vk = '+'; - break; - case '\\' : - vk = '|'; - break; - case '[' : - vk = '{'; - break; - case ']' : - vk = '}'; - break; - case ';' : - vk = ':'; - break; - case '\'' : - vk = '\"'; - break; - case ',' : - vk = '<'; - break; - case '.' : - vk = '>'; - break; - case '/' : - vk = '?'; - break; - default : - break; - } + else + { /* character keys */ + switch(vk) { + case JAVA_KEY_DELETE : + if (key_location != JAVA_KEYLOCATION_KEYPAD) { + kbd_put_keycode(224); + } + break; + default : + break; } } diff --git a/tizen/src/skin/maruskin_keymap.h b/tizen/src/skin/maruskin_keymap.h index e3f3e2e585..ac54614f44 100644 --- a/tizen/src/skin/maruskin_keymap.h +++ b/tizen/src/skin/maruskin_keymap.h @@ -57,6 +57,7 @@ enum JAVA_KEYCODE { JAVA_KEY_END, JAVA_KEY_INSERT, JAVA_KEY_F1 = 10, + JAVA_KEY_ESC = 27, JAVA_KEY_F20 = 29, JAVA_KEY_KEYPAD_MULTIPLY = 42, JAVA_KEY_KEYPAD_ADD = 43, @@ -79,14 +80,15 @@ enum JAVA_KEYCODE { JAVA_KEY_SCROLL_LOCK, JAVA_KEY_PAUSE, JAVA_KEY_BREAK, - JAVA_KEY_PRINT_SCREEN + JAVA_KEY_PRINT_SCREEN, + JAVA_KEY_DELETE = 127 }; #define KEY_MAX 0777 #define KEY_F0 0410 -#define KEY_F(n) (KEY_F0+(n)) +#define KEY_F(n) (KEY_F0 + (n)) #define KEY_DOWN 0402 #define KEY_UP 0403 @@ -100,7 +102,7 @@ enum JAVA_KEYCODE { static const int vkkey2scancode[KEY_MAX] = { [0 ... (KEY_MAX - 1)] = -1, - [0x01b] = 1, /* Escape */ + [JAVA_KEY_ESC] = 1, /* Escape */ ['1'] = 2, ['2'] = 3, ['3'] = 4, @@ -113,7 +115,7 @@ static const int vkkey2scancode[KEY_MAX] = { ['0'] = 11, ['-'] = 12, ['='] = 13, - [0x07f] = 83, /* Delete */ + [JAVA_KEY_DELETE] = 83, /* Delete */ [0x008] = 14, /* Backspace */ ['\t'] = 15, /* Tab */