discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=fdd4d50146281b415f5cb67e220bbe2f39244cd9
commit fdd4d50146281b415f5cb67e220bbe2f39244cd9 Author: Gwanglim Lee <gl77....@samsung.com> Date: Mon Apr 14 08:32:51 2014 -0400 Fixed a problem with e wl server that sent invalid key value to wl client. (server-side) Summary: This problem occurred due to xkb_keysym_t value of libxkbcommon by e wl server. e wl server should pass keycode from evdev input device on to wl client. In order that e wl server receives valid keycode Ecore_Event_Key should have an extended data member. This patch should be applied with client side patch (efl). Test Plan: run e wl server -> create wl client -> type keys Reviewers: raster, devilhorns, zmike Reviewed By: devilhorns CC: cedric Differential Revision: https://phab.enlightenment.org/D713 --- src/modules/wl_desktop_shell/e_mod_main.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/modules/wl_desktop_shell/e_mod_main.c b/src/modules/wl_desktop_shell/e_mod_main.c index 52d4795..6a2d83e 100644 --- a/src/modules/wl_desktop_shell/e_mod_main.c +++ b/src/modules/wl_desktop_shell/e_mod_main.c @@ -1362,8 +1362,13 @@ _e_wl_shell_shell_surface_cb_key_up(void *data, Evas *e EINA_UNUSED, Evas_Object /* if we have a grab, send this key to it */ if (grab) - grab->interface->key(grab, ev->timestamp, key, - WL_KEYBOARD_KEY_STATE_RELEASED); + { + /* send keycode from evdev */ + grab->interface->key(grab, + ev->timestamp, + ev->keycode ? ev->keycode : key, + WL_KEYBOARD_KEY_STATE_RELEASED); + } /* update xkb key state */ xkb_state_update_key(_e_wl_comp->input->xkb.state, key + 8, XKB_KEY_UP); @@ -1437,8 +1442,13 @@ _e_wl_shell_shell_surface_cb_key_down(void *data, Evas *e EINA_UNUSED, Evas_Obje /* if we have a grab, send this key to it */ if (grab) - grab->interface->key(grab, ev->timestamp, key, - WL_KEYBOARD_KEY_STATE_PRESSED); + { + /* send keycode from evdev */ + grab->interface->key(grab, + ev->timestamp, + ev->keycode ? ev->keycode : key, + WL_KEYBOARD_KEY_STATE_PRESSED); + } /* update xkb key state */ xkb_state_update_key(_e_wl_comp->input->xkb.state, key + 8, XKB_KEY_DOWN); --