From ed1c1215e8adc255ac1f8ad4174e8059719e899b Mon Sep 17 00:00:00 2001 From: jeon Date: Tue, 10 Mar 2020 15:43:33 +0900 Subject: [PATCH] e_input: if no keyname was found using xkb, name it Keycode-###. Change-Id: I6808619663042dca08a0697b40312fea5d53ac0f --- src/bin/e_input_evdev.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/bin/e_input_evdev.c b/src/bin/e_input_evdev.c index ea5d5476f8..e496c83c69 100644 --- a/src/bin/e_input_evdev.c +++ b/src/bin/e_input_evdev.c @@ -365,7 +365,7 @@ _device_handle_key(struct libinput_device *device, struct libinput_event_keyboar enum libinput_key_state state; int key_count; xkb_keysym_t sym = XKB_KEY_NoSymbol; - char key[256], keyname[256], compose_buffer[256]; + char key[256] = {0, }, keyname[256] = {0, }, compose_buffer[256] = {0, }; Ecore_Event_Key *e; char *tmp = NULL, *compose = NULL; E_Keyrouter_Event_Data *key_data; @@ -427,15 +427,24 @@ _device_handle_key(struct libinput_device *device, struct libinput_event_keyboar nsyms = xkb_key_get_syms(edev->xkb.state, code, &syms); if (nsyms == 1) sym = syms[0]; - /* get the keyname for this sym */ - memset(key, 0, sizeof(key)); - xkb_keysym_get_name(sym, key, sizeof(key)); - - memset(keyname, 0, sizeof(keyname)); - memcpy(keyname, key, sizeof(keyname)); + /* If no keysym was found, name it "Keycode-NNN" */ + if (sym == XKB_KEY_NoSymbol) + snprintf(key, sizeof(key), "Keycode-%u", code); + else + { + /* get the keyname for this sym */ + xkb_keysym_get_name(sym, key, sizeof(key)); + } - if (keyname[0] == '\0') - snprintf(keyname, sizeof(keyname), "Keycode-%u", code); + if (key[0] == '\0') + { + /* If no keyname was found, name it "Keycode-NNN" */ + snprintf(keyname, sizeof(keyname), "Keycode-%u", code); + } + else + { + memcpy(keyname, key, sizeof(keyname)); + } /* if shift is active, we need to transform the key to lower */ if (xkb_state_mod_index_is_active(edev->xkb.state, @@ -447,7 +456,6 @@ _device_handle_key(struct libinput_device *device, struct libinput_event_keyboar keyname[0] = tolower(keyname[0]); } - memset(compose_buffer, 0, sizeof(compose_buffer)); if (_device_keysym_translate(sym, edev->xkb.modifiers, compose_buffer, sizeof(compose_buffer))) { -- 2.34.1