e_comp_wl_input: add utility APIs using keymap 37/226637/1
authorjeon <jhyuni.kang@samsung.com>
Wed, 4 Mar 2020 08:40:20 +0000 (17:40 +0900)
committerjeon <jhyuni.kang@samsung.com>
Wed, 4 Mar 2020 08:40:24 +0000 (17:40 +0900)
  - e_comp_wl_input_keymap_keyname_to_keycode(),
    e_comp_wl_input_keymap_keycode_to_keyname()

Change-Id: If4ad3bdf498727ec5d838ae143ac5093617010d9

src/bin/e_comp_wl.c
src/bin/e_comp_wl_input.c
src/bin/e_comp_wl_input.h
src/bin/e_devicemgr_input.c
src/bin/e_devicemgr_inputgen.c
src/bin/e_devicemgr_private.h
src/bin/e_keyrouter.c
src/bin/e_keyrouter_events.c
src/bin/e_keyrouter_private.h

index 4c084f80e11710290385b2992bb8952843513532..b9b069afe7146d778fa614e19de58c7bcb731f78 100644 (file)
@@ -5147,61 +5147,6 @@ e_comp_wl_key_send(E_Client *ec, int keycode, Eina_Bool pressed, Ecore_Device *d
    return EINA_TRUE;
 }
 
-typedef struct _keycode_map{
-    xkb_keysym_t keysym;
-    xkb_keycode_t keycode;
-} keycode_map;
-
-static void
-find_keycode(struct xkb_keymap *keymap, xkb_keycode_t key, void *data)
-{
-   keycode_map *found_keycodes = (keycode_map *)data;
-   xkb_keysym_t keysym = found_keycodes->keysym;
-   int nsyms = 0;
-   const xkb_keysym_t *syms_out = NULL;
-
-   nsyms = xkb_keymap_key_get_syms_by_level(keymap, key, 0, 0, &syms_out);
-   if (nsyms && syms_out)
-     {
-        if (*syms_out == keysym)
-          {
-             found_keycodes->keycode = key;
-          }
-     }
-}
-
-static int
-_e_comp_wl_keycode_get_from_keysym(struct xkb_keymap *keymap, xkb_keysym_t keysym)
-{
-   keycode_map found_keycodes = {0,};
-   found_keycodes.keysym = keysym;
-   xkb_keymap_key_for_each(keymap, find_keycode, &found_keycodes);
-
-   return found_keycodes.keycode;
-}
-
-static int
-_e_comp_wl_keycode_get_from_string(char * name)
-{
-   struct xkb_keymap *keymap = NULL;
-   xkb_keysym_t keysym = 0x0;
-   int keycode = 0;
-
-   keymap = e_comp_wl->xkb.keymap;
-   EINA_SAFETY_ON_NULL_GOTO(keymap, finish);
-
-   keysym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS);
-   EINA_SAFETY_ON_FALSE_GOTO(keysym != XKB_KEY_NoSymbol, finish);
-
-   keycode = _e_comp_wl_keycode_get_from_keysym(keymap, keysym);
-
-   return keycode;
-
-finish:
-   return 0;
-}
-
-
 EINTERN Eina_Bool
 e_comp_wl_key_cancel(E_Client *ec, int keycode, Ecore_Device *dev, uint32_t time)
 {
@@ -5217,7 +5162,7 @@ e_comp_wl_key_cancel(E_Client *ec, int keycode, Ecore_Device *dev, uint32_t time
    EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl->xkb.keymap, EINA_FALSE);
 
-   cancel_keycode = _e_comp_wl_keycode_get_from_string("Cancel");
+   cancel_keycode = e_comp_wl_input_keymap_keyname_to_keycode("Cancel");
    if (cancel_keycode == XKB_KEYCODE_INVALID)
      {
         ELOGF("Key", "Failed to send key cancel for %d key, Cancel key is not supported\n", ec, keycode);
index 4121660616a1e6fca5697515eb243d06c0e0a59d..7184436297478e481b6608c497c211ffcc0ba749 100644 (file)
@@ -1071,3 +1071,78 @@ e_comp_wl_input_keyboard_repeat_set(int delay, int rate)
                                        e_comp_wl->kbd.repeat_delay);
      }
 }
+
+typedef struct _keycode_map{
+    xkb_keysym_t keysym;
+    xkb_keycode_t keycode;
+} keycode_map;
+
+static void
+find_keycode(struct xkb_keymap *keymap, xkb_keycode_t key, void *data)
+{
+   keycode_map *found_keycodes = (keycode_map *)data;
+   xkb_keysym_t keysym = found_keycodes->keysym;
+   int nsyms = 0;
+   const xkb_keysym_t *syms_out = NULL;
+
+   nsyms = xkb_keymap_key_get_syms_by_level(keymap, key, 0, 0, &syms_out);
+   if (nsyms && syms_out)
+     {
+        if (*syms_out == keysym)
+          {
+             found_keycodes->keycode = key;
+          }
+     }
+}
+
+int
+_e_comp_wl_input_keymap_keysym_to_keycode(struct xkb_keymap *keymap, xkb_keysym_t keysym)
+{
+   keycode_map found_keycodes = {0,};
+   found_keycodes.keysym = keysym;
+   xkb_keymap_key_for_each(keymap, find_keycode, &found_keycodes);
+
+   return found_keycodes.keycode;
+}
+
+E_API int
+e_comp_wl_input_keymap_keyname_to_keycode(const char * name)
+{
+   struct xkb_keymap *keymap = NULL;
+   xkb_keysym_t keysym = 0x0;
+   int keycode = 0;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(name, 0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl, 0);
+
+   keymap = e_comp_wl->xkb.keymap;
+   EINA_SAFETY_ON_NULL_GOTO(keymap, finish);
+
+   keysym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS);
+   EINA_SAFETY_ON_FALSE_GOTO(keysym != XKB_KEY_NoSymbol, finish);
+
+   keycode = _e_comp_wl_input_keymap_keysym_to_keycode(keymap, keysym);
+
+   return keycode;
+
+finish:
+   return 0;
+}
+
+E_API char *
+e_comp_wl_input_keymap_keycode_to_keyname(int keycode)
+{
+   struct xkb_state *state;
+   xkb_keysym_t sym = XKB_KEY_NoSymbol;
+   char name[256] = {0, };
+
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(8 <= keycode, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl->xkb.state, NULL);
+
+   state = e_comp_wl->xkb.state;
+   sym = xkb_state_key_get_one_sym(state, keycode);
+   xkb_keysym_get_name(sym, name, sizeof(name));
+
+   return strdup(name);
+}
index 9fdc179890295ec0a21d7a67c2840d000f5bee3d..fedcc6a91b0e58a3018c9e58c608c419acb0cace 100644 (file)
@@ -41,5 +41,8 @@ E_API const char *e_comp_wl_input_keymap_default_options_get(void);
 
 E_API void e_comp_wl_input_keyboard_repeat_set(int delay, int rate);
 
+E_API int e_comp_wl_input_keymap_keyname_to_keycode(const char * name);
+E_API char *e_comp_wl_input_keymap_keycode_to_keyname(int keycode);
+
 # endif
 #endif
index aa960e5a14456fc6883130876a0b1b8bfd63ef45..b1015461551aa528122df5744d23d7a85418a745 100644 (file)
@@ -62,60 +62,6 @@ e_devicemgr_input_pointer_warp(struct wl_client *client, struct wl_resource *res
    return ret;
 }
 
-typedef struct _keycode_map{
-    xkb_keysym_t keysym;
-    xkb_keycode_t keycode;
-} keycode_map;
-
-static void
-find_keycode(struct xkb_keymap *keymap, xkb_keycode_t key, void *data)
-{
-   keycode_map *found_keycodes = (keycode_map *)data;
-   xkb_keysym_t keysym = found_keycodes->keysym;
-   int nsyms = 0;
-   const xkb_keysym_t *syms_out = NULL;
-
-   if (found_keycodes->keycode) return;
-
-   nsyms = xkb_keymap_key_get_syms_by_level(keymap, key, 0, 0, &syms_out);
-   if (nsyms && syms_out)
-     {
-        if (*syms_out == keysym)
-          {
-             found_keycodes->keycode = key;
-          }
-     }
-}
-
-static void
-_e_devicemgr_keycode_from_keysym(struct xkb_keymap *keymap, xkb_keysym_t keysym, xkb_keycode_t *keycode)
-{
-    keycode_map found_keycodes = {0,};
-    found_keycodes.keysym = keysym;
-    xkb_keymap_key_for_each(keymap, find_keycode, &found_keycodes);
-
-    *keycode = found_keycodes.keycode;
-}
-
-int
-e_devicemgr_keycode_from_string(const char *keyname)
-{
-   xkb_keysym_t keysym = 0x0;
-   xkb_keycode_t keycode = 0;
-
-   if (!strncmp(keyname, "Keycode-", sizeof("Keycode-")-1))
-     {
-        keycode = atoi(keyname+8);
-     }
-   else
-     {
-        keysym = xkb_keysym_from_name(keyname, XKB_KEYSYM_NO_FLAGS);
-        _e_devicemgr_keycode_from_keysym(e_comp_wl->xkb.keymap, keysym, &keycode);
-     }
-
-   return keycode;
-}
-
 Eina_Bool
 e_devicemgr_detent_is_detent(const char *name)
 {
index 1c8d5d40a703b6d46f811d3011512dcd0f4999be..a844a0cf1bab04f3d23dc5f76334b3bb75cc79d6 100644 (file)
@@ -79,7 +79,7 @@ e_devicemgr_inputgen_key_event_add(const char *key, Eina_Bool pressed, char *ide
    e = E_NEW(Ecore_Event_Key, 1);
    EINA_SAFETY_ON_NULL_RETURN_VAL(e, TIZEN_INPUT_DEVICE_MANAGER_ERROR_NO_SYSTEM_RESOURCES);
 
-   keycode = e_devicemgr_keycode_from_string(key);
+   keycode = e_comp_wl_input_keymap_keyname_to_keycode(key);
    if (keycode <= 0) goto finish;
 
    e->keyname = eina_stringshare_add(key);
index bc0a2294cba33e580404e5ee9db7c998572c3901..b9c8eeb7fbcf4d3c06efa50e459b55a0219de4e8 100644 (file)
@@ -175,7 +175,6 @@ int e_devicemgr_create_virtual_device(Ecore_Device_Class clas, const char *name)
 void e_devicemgr_destroy_virtual_device(int uinp_fd);
 
 Eina_Bool e_devicemgr_strcmp(const char *dst, const char *src);
-int e_devicemgr_keycode_from_string(const char *keyname);
 int e_devicemgr_input_pointer_warp(struct wl_client *client, struct wl_resource *resource, struct wl_resource *surface, wl_fixed_t x, wl_fixed_t y);
 void e_devicemgr_wl_detent_send_event(int detent);
 Eina_Bool e_devicemgr_input_init(void);
index 1e922fb19e67c6c4f2a6d941baa526da126e2f2b..bba5e54bf8df9d12e3dad530fa1aa7d506713c3c 100644 (file)
@@ -134,7 +134,7 @@ _e_keyrouter_info_print(void *data, const char *log_path)
      {
         if (!krt->HardKeys[i].keycode) continue;
 
-        keyname = e_keyrouter_util_keyname_get_from_keycode(i);
+        keyname = e_comp_wl_input_keymap_keycode_to_keyname(i);
 
         fprintf(log_fl, "         Key [%3d], Keyname: %s\n", i, keyname);
 
@@ -211,7 +211,7 @@ _e_keyrouter_keygrab_print(void *data, const char *log_path)
             !krt->HardKeys[i].shared_ptr)
           continue;
 
-        keyname = e_keyrouter_util_keyname_get_from_keycode(i);
+        keyname = e_comp_wl_input_keymap_keycode_to_keyname(i);
 
         fprintf(log_fl, "        [ Keycode: %d, Keyname: %s ]\n", i, keyname);
 
index 132f17bf7e757c38c41c9364b7faabb150a7ac43..4eede2c7645536c47025515e1860a6a859bbfc58 100644 (file)
@@ -100,7 +100,7 @@ _e_keyrouter_key_create(char *keyname)
    key_data = E_NEW(E_Keyrouter_Event_Data, 1);
    EINA_SAFETY_ON_NULL_GOTO(key_data, failed);
 
-   keycode = e_keyrouter_util_keycode_get_from_string(keyname);
+   keycode = e_comp_wl_input_keymap_keyname_to_keycode(keyname);
    EINA_SAFETY_ON_FALSE_GOTO((0 < keycode && keycode <= krt->max_tizen_hwkeys), failed);
 
    ev_key->key = (char *)eina_stringshare_add(keyname);
@@ -156,7 +156,7 @@ _e_keyrouter_key_cancel(int keycode)
    key_cancel = _e_keyrouter_key_create("Cancel");
    EINA_SAFETY_ON_NULL_RETURN(key_cancel);
 
-   keyname = e_keyrouter_util_keyname_get_from_keycode(keycode);
+   keyname = e_comp_wl_input_keymap_keycode_to_keyname(keycode);
    key_release = _e_keyrouter_key_create(keyname);
    EINA_SAFETY_ON_NULL_GOTO(key_release, failed);
 
@@ -906,79 +906,6 @@ e_keyrouter_util_cmd_get_from_pid(int pid)
    return NULL;
 }
 
-typedef struct _keycode_map{
-    xkb_keysym_t keysym;
-    xkb_keycode_t keycode;
-}keycode_map;
-
-static void
-find_keycode(struct xkb_keymap *keymap, xkb_keycode_t key, void *data)
-{
-   keycode_map *found_keycodes = (keycode_map *)data;
-   xkb_keysym_t keysym = found_keycodes->keysym;
-   int nsyms = 0;
-   const xkb_keysym_t *syms_out = NULL;
-
-   nsyms = xkb_keymap_key_get_syms_by_level(keymap, key, 0, 0, &syms_out);
-   if (nsyms && syms_out)
-     {
-        if (*syms_out == keysym)
-          {
-             found_keycodes->keycode = key;
-          }
-     }
-}
-
-int
-_e_keyrouter_keycode_get_from_keysym(struct xkb_keymap *keymap, xkb_keysym_t keysym)
-{
-   keycode_map found_keycodes = {0,};
-   found_keycodes.keysym = keysym;
-   xkb_keymap_key_for_each(keymap, find_keycode, &found_keycodes);
-
-   return found_keycodes.keycode;
-}
-
-int
-e_keyrouter_util_keycode_get_from_string(char * name)
-{
-   struct xkb_keymap *keymap = NULL;
-   xkb_keysym_t keysym = 0x0;
-   int keycode = 0;
-
-   keymap = e_comp_wl->xkb.keymap;
-   EINA_SAFETY_ON_NULL_GOTO(keymap, finish);
-
-   keysym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS);
-   EINA_SAFETY_ON_FALSE_GOTO(keysym != XKB_KEY_NoSymbol, finish);
-
-   keycode = _e_keyrouter_keycode_get_from_keysym(keymap, keysym);
-
-   KLDBG("request name: %s, return value: %d", name, keycode);
-
-   return keycode;
-
-finish:
-   return 0;
-}
-
-char *
-e_keyrouter_util_keyname_get_from_keycode(int keycode)
-{
-   struct xkb_state *state;
-   xkb_keysym_t sym = XKB_KEY_NoSymbol;
-   char name[256] = {0, };
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl, NULL);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl->xkb.state, NULL);
-
-   state = e_comp_wl->xkb.state;
-   sym = xkb_state_key_get_one_sym(state, keycode);
-   xkb_keysym_get_name(sym, name, sizeof(name));
-
-   return strdup(name);
-}
-
 char *
 e_keyrouter_util_process_name_get_from_cmd(char *cmd)
 {
index 0cb0e162f1e3ee4a87dbbdd0da76eff6a0cdf6ac..5bba5937c841123be7668c3d17d1d5c97d0da321 100644 (file)
@@ -108,8 +108,6 @@ Eina_Bool e_keyrouter_process_key_event(void *event, int type);
 struct wl_resource *e_keyrouter_util_get_surface_from_eclient(E_Client *client);
 int e_keyrouter_util_get_pid(struct wl_client *client, struct wl_resource *surface);
 char *e_keyrouter_util_cmd_get_from_pid(int pid);
-int e_keyrouter_util_keycode_get_from_string(char *name);
-char *e_keyrouter_util_keyname_get_from_keycode(int keycode);
 char *e_keyrouter_util_process_name_get_from_cmd(char *cmd);
 const char *e_keyrouter_mode_to_string(uint32_t mode);