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
This commit is contained in:
Gwanglim Lee 2014-04-14 08:32:51 -04:00 committed by Mike Blumenkrantz
parent 7274ffa742
commit fdd4d50146
1 changed files with 14 additions and 4 deletions

View File

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