diff --git a/src/modules/wl_desktop_shell/e_mod_main.c b/src/modules/wl_desktop_shell/e_mod_main.c index 1bf6658f7..501539848 100644 --- a/src/modules/wl_desktop_shell/e_mod_main.c +++ b/src/modules/wl_desktop_shell/e_mod_main.c @@ -1433,7 +1433,7 @@ _e_wl_shell_shell_surface_cb_key_down(void *data, Evas_Object *obj EINA_UNUSED, struct wl_keyboard_grab *grab; unsigned int serial = 0, key = 0; unsigned int *end, *k; - + xkb_keysym_t sym = XKB_KEY_NoSymbol; ev = event; /* try to cast data to our surface structure */ @@ -1454,7 +1454,11 @@ _e_wl_shell_shell_surface_cb_key_down(void *data, Evas_Object *obj EINA_UNUSED, if (_e_wl_comp->ping_cb) _e_wl_comp->ping_cb(ews, serial); /* get the keycode for this key from X */ - key = ecore_x_keysym_keycode_get(ev->keyname) - 8; + sym = xkb_keysym_from_name(ev->keyname, 0); + if (!sym) + sym = xkb_keysym_from_name(ev->keyname, XKB_KEYSYM_CASE_INSENSITIVE); + + key = sym - 8; /* update the keyboards grab properties */ kbd->grab_key = key;