woohyun pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=45c6212d2078ce33f2966b3dca698a97ad51b9f9
commit 45c6212d2078ce33f2966b3dca698a97ad51b9f9 Author: Ali <ali198...@gmail.com> Date: Wed Aug 5 11:32:11 2020 +0900 elm_entry/efl.ui.textbox: use common key shortcuts Summary: **key** value comes from keyboard down callbacks are common, regardless of language/layout but **keyname** is dependent on layout(in X11, in Wayland Can not be produced). This common fix for both. For example if keyboard layout in arabic then: Ctrl+A will not work (in X11) This one enhances D11606 Reviewers: woohyun, bu5hm4n, zmike Reviewed By: woohyun Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11695 --- src/lib/edje/edje_entry.c | 31 +++++++++------------- .../elementary/efl_ui_internal_text_interactive.c | 12 ++++----- src/tests/elementary/elm_test_entry.c | 2 +- 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/src/lib/edje/edje_entry.c b/src/lib/edje/edje_entry.c index 81046a3716..1ed9091b09 100644 --- a/src/lib/edje/edje_entry.c +++ b/src/lib/edje/edje_entry.c @@ -1737,13 +1737,6 @@ _compose_seq_reset(Entry *en) en->composing = EINA_FALSE; } -#define KEYCODE_A 65 -#define KEYCODE_C 67 -#define KEYCODE_V 86 -#define KEYCODE_X 88 -#define KEYCODE_Y 89 -#define KEYCODE_Z 90 - static void _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) { @@ -2085,9 +2078,9 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } #if defined(__APPLE__) && defined(__MACH__) - else if ((super) && (!shift) && (!strcmp(ev->keyname, "v"))) + else if ((super) && (!shift) && (!strcmp(ev->key, "v"))) #else - else if ((control) && (!shift) && (!strcmp(ev->keyname, "v"))) + else if ((control) && (!shift) && (!strcmp(ev->key, "v"))) #endif { _compose_seq_reset(en); @@ -2096,9 +2089,9 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } #if defined(__APPLE__) && defined(__MACH__) - else if ((super) && (!strcmp(ev->keyname, "a") || ev->keycode == KEYCODE_A)) + else if ((super) && (!strcmp(ev->key, "a"))) #else - else if ((control) && (!strcmp(ev->keyname, "a") || ev->keycode == KEYCODE_A)) + else if ((control) && (!strcmp(ev->key, "a"))) #endif { _compose_seq_reset(en); @@ -2114,9 +2107,9 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, } } #if defined(__APPLE__) && defined(__MACH__) - else if ((super) && (((!shift) && (!strcmp(ev->keyname, "c") || ev->keycode == KEYCODE_C)) || !strcmp(ev->key, "Insert"))) + else if ((super) && (((!shift) && !strcmp(ev->key, "c")) || !strcmp(ev->key, "Insert"))) #else - else if ((control) && (((!shift) && (!strcmp(ev->keyname, "c") || ev->keycode == KEYCODE_C)) || !strcmp(ev->key, "Insert"))) + else if ((control) && (((!shift) && !strcmp(ev->key, "c")) || !strcmp(ev->key, "Insert"))) #endif { _compose_seq_reset(en); @@ -2124,9 +2117,9 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } #if defined(__APPLE__) && defined(__MACH__) - else if ((super) && (!shift) && (((!strcmp(ev->keyname, "x") || ev->keycode == KEYCODE_X) || (!strcmp(ev->keyname, "m"))))) + else if ((super) && (!shift) && ((!strcmp(ev->key, "x") || (!strcmp(ev->key, "m"))))) #else - else if ((control) && (!shift) && (((!strcmp(ev->keyname, "x") || ev->keycode == KEYCODE_X) || (!strcmp(ev->keyname, "m"))))) + else if ((control) && (!shift) && ((!strcmp(ev->key, "x") || (!strcmp(ev->key, "m"))))) #endif { _compose_seq_reset(en); @@ -2134,9 +2127,9 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } #if defined(__APPLE__) && defined(__MACH__) - else if ((super) && (!strcmp(ev->keyname, "z") || ev->keycode == KEYCODE_Z)) + else if ((super) && (!strcmp(ev->key, "z"))) #else - else if ((control) && (!strcmp(ev->keyname, "z") || ev->keycode == KEYCODE_Z)) + else if ((control) && (!strcmp(ev->key, "z"))) #endif { _compose_seq_reset(en); @@ -2153,9 +2146,9 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } #if defined(__APPLE__) && defined(__MACH__) - else if ((super) && (!shift) && (!strcmp(ev->keyname, "y") || ev->keycode == KEYCODE_Y)) + else if ((super) && (!shift) && (!strcmp(ev->key, "y"))) #else - else if ((control) && (!shift) && (!strcmp(ev->keyname, "y") || ev->keycode == KEYCODE_Y)) + else if ((control) && (!shift) && (!strcmp(ev->key, "y"))) #endif { _compose_seq_reset(en); diff --git a/src/lib/elementary/efl_ui_internal_text_interactive.c b/src/lib/elementary/efl_ui_internal_text_interactive.c index 397bbefcea..d1d374adb3 100644 --- a/src/lib/elementary/efl_ui_internal_text_interactive.c +++ b/src/lib/elementary/efl_ui_internal_text_interactive.c @@ -1375,9 +1375,9 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } #if defined(__APPLE__) && defined(__MACH__) - else if ((super) && (!strcmp(ev->keyname, "a"))) + else if ((super) && (!strcmp(ev->key, "a"))) #else - else if ((control) && (!strcmp(ev->keyname, "a"))) + else if ((control) && (!strcmp(ev->key, "a"))) #endif { _compose_seq_reset(en); @@ -1393,9 +1393,9 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void } } #if defined(__APPLE__) && defined(__MACH__) - else if ((super) && (!strcmp(ev->keyname, "z"))) + else if ((super) && (!strcmp(ev->key, "z"))) #else - else if ((control) && (!strcmp(ev->keyname, "z"))) + else if ((control) && (!strcmp(ev->key, "z"))) #endif { _compose_seq_reset(en); @@ -1412,9 +1412,9 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } #if defined(__APPLE__) && defined(__MACH__) - else if ((super) && (!shift) && (!strcmp(ev->keyname, "y"))) + else if ((super) && (!shift) && (!strcmp(ev->key, "y"))) #else - else if ((control) && (!shift) && (!strcmp(ev->keyname, "y"))) + else if ((control) && (!shift) && (!strcmp(ev->key, "y"))) #endif { _compose_seq_reset(en); diff --git a/src/tests/elementary/elm_test_entry.c b/src/tests/elementary/elm_test_entry.c index 93951d9e45..f3e5c1225c 100644 --- a/src/tests/elementary/elm_test_entry.c +++ b/src/tests/elementary/elm_test_entry.c @@ -622,7 +622,7 @@ EFL_START_TEST(elm_entry_keycode) Evas *e = evas_object_evas_get(entry); elm_object_focus_set(entry, EINA_TRUE); evas_key_modifier_on(e, "Control"); - evas_event_feed_key_down_with_keycode(e, "", "", "", "", time(NULL), NULL, 65); + evas_event_feed_key_down_with_keycode(e, "", "a", "", "", time(NULL), NULL, 38); ecore_main_loop_iterate(); evas_event_feed_key_down(e, "BackSpace", "BackSpace", "\b", "\b", time(NULL), NULL); ck_assert_str_eq(elm_object_text_get(entry), ""); --