e_input: if no keyname was found using xkb, name it Keycode-###. 72/227172/4
authorjeon <jhyuni.kang@samsung.com>
Tue, 10 Mar 2020 06:43:33 +0000 (15:43 +0900)
committerjeon <jhyuni.kang@samsung.com>
Tue, 10 Mar 2020 07:24:16 +0000 (16:24 +0900)
Change-Id: I6808619663042dca08a0697b40312fea5d53ac0f

src/bin/e_input_evdev.c

index ea5d547..e496c83 100644 (file)
@@ -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)))
      {