Revert "Create keyboard resource and filter H/W keyboard key" 30/48330/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Fri, 18 Sep 2015 06:25:36 +0000 (23:25 -0700)
committerJihoon Kim <jihoon48.kim@samsung.com>
Fri, 18 Sep 2015 06:25:36 +0000 (23:25 -0700)
This reverts commit 781a507edf35e3cb459feff8540bd7f3d121637e.

Change-Id: Ie8b81b84f6d0cfcea8f13f3054de6237477208ca

src/e_mod_main.c

index 0fde2079df64baaee31eab8f7b0e02479c7f3eee..2256475c15761e58f6dc125e25ac3a7f91ba6158 100644 (file)
@@ -5,18 +5,6 @@
 #include <input-method-server-protocol.h>
 #include "Eeze.h"
 
-# define E_LIST_FILTER_HANDLER_APPEND(list, callback, data) \
-  do \
-    { \
-       Ecore_Event_Filter *_eh; \
-       _eh = ecore_event_filter_add(NULL, (Ecore_Filter_Cb)callback, NULL, data); \
-       if (_eh) \
-          list = eina_list_append(list, _eh); \
-       else \
-          DBG("ecore event filter add failed"); \
-    } \
-  while (0)
-
 typedef struct _E_Text_Input E_Text_Input;
 typedef struct _E_Text_Input_Mgr E_Text_Input_Mgr;
 typedef struct _E_Input_Method E_Input_Method;
@@ -54,16 +42,10 @@ struct _E_Input_Method
 struct _E_Input_Method_Context
 {
    struct wl_resource *resource;
+   struct wl_resource *keyboard;
 
    E_Text_Input *model;
    E_Input_Method *input_method;
-
-   struct
-   {
-      struct wl_resource *resource;
-      Eina_List *handlers;
-      Eina_Bool grabbed;
-   } kbd;
 };
 
 struct _E_Mod_Text_Input_Shutdown_Cb
@@ -78,113 +60,6 @@ static Eina_Bool g_keyboard_connecting = EINA_FALSE;
 static Eeze_Udev_Watch *eeze_udev_watch_hander = NULL;
 static Ecore_Event_Handler *ecore_key_down_handler = NULL;
 
-static void
-_e_text_input_method_context_keyboard_grab_keyboard_state_update(E_Comp_Data *cdata, uint32_t keycode, Eina_Bool pressed)
-{
-   enum xkb_key_direction dir;
-
-   if (!cdata->xkb.state) return;
-
-   if (pressed) dir = XKB_KEY_DOWN;
-   else dir = XKB_KEY_UP;
-
-   cdata->kbd.mod_changed =
-     xkb_state_update_key(cdata->xkb.state, keycode + 8, dir);
-}
-
-static void
-_e_text_input_method_context_keyboard_grab_keyboard_modifiers_update(E_Comp_Data *cdata, struct wl_resource *keyboard)
-{
-   uint32_t serial;
-
-   if (!cdata->xkb.state) return;
-
-   cdata->kbd.mod_depressed =
-     xkb_state_serialize_mods(cdata->xkb.state, XKB_STATE_DEPRESSED);
-   cdata->kbd.mod_latched =
-     xkb_state_serialize_mods(cdata->xkb.state, XKB_STATE_MODS_LATCHED);
-   cdata->kbd.mod_locked =
-     xkb_state_serialize_mods(cdata->xkb.state, XKB_STATE_MODS_LOCKED);
-   cdata->kbd.mod_group =
-     xkb_state_serialize_layout(cdata->xkb.state, XKB_STATE_LAYOUT_EFFECTIVE);
-
-   serial = wl_display_next_serial(cdata->wl.disp);
-   wl_keyboard_send_modifiers(keyboard, serial,
-                              cdata->kbd.mod_depressed,
-                              cdata->kbd.mod_latched,
-                              cdata->kbd.mod_locked,
-                              cdata->kbd.mod_group);
-}
-
-static void
-_e_text_input_method_context_keyboard_grab_key(void *data, void *event, Eina_Bool pressed)
-{
-   E_Input_Method_Context *context = NULL;
-   E_Comp_Data *cdata = NULL;
-   Ecore_Event_Key *ev;
-   uint32_t serial, keycode;
-
-   if (!(context = data)) return;
-   if (!(context->model)) return;
-   if (!(cdata = context->model->cdata)) return;
-   if (!(ev = event)) return;
-
-   keycode = ev->keycode - 8;
-
-   /* update modifier state */
-   _e_text_input_method_context_keyboard_grab_keyboard_state_update(cdata, keycode, pressed);
-
-   serial = wl_display_next_serial(cdata->wl.disp);
-   wl_keyboard_send_key(context->kbd.resource, serial, ev->timestamp, keycode,
-                        pressed == EINA_TRUE ? WL_KEYBOARD_KEY_STATE_PRESSED : WL_KEYBOARD_KEY_STATE_RELEASED);
-   if (cdata->kbd.mod_changed)
-     {
-        _e_text_input_method_context_keyboard_grab_keyboard_modifiers_update(cdata, context->kbd.resource);
-        cdata->kbd.mod_changed = 0;
-     }
-   return;
-}
-
-static Eina_Bool
-_e_text_input_method_context_keyboard_grab_event_filter(void *data __UNUSED__, void *loop_data,int type, void *event __UNUSED__)
-{
-
-   if (type == ECORE_EVENT_KEY_DOWN)
-     {
-        _e_text_input_method_context_keyboard_grab_key(data, event, EINA_TRUE);
-        return EINA_FALSE;
-     }
-   else if (type == ECORE_EVENT_KEY_UP)
-     {
-        _e_text_input_method_context_keyboard_grab_key(data, event, EINA_FALSE);
-        return EINA_FALSE;
-     }
-
-   return EINA_TRUE;
-}
-
-static void
-_e_text_input_method_context_grab_set(E_Input_Method_Context *context, Eina_Bool set)
-{
-   if (set == context->kbd.grabbed)
-     return;
-
-   context->kbd.grabbed = set;
-
-   if (set)
-     {
-        E_LIST_FILTER_HANDLER_APPEND(context->kbd.handlers,
-                                     _e_text_input_method_context_keyboard_grab_event_filter,
-                                     context);
-        e_comp_grab_input(e_comp, 0, 1);
-     }
-   else
-     {
-        E_FREE_LIST(context->kbd.handlers, ecore_event_filter_del);
-        e_comp_ungrab_input(e_comp, 0, 1);
-     }
-}
-
 static void
 _e_mod_text_input_shutdown_cb_add(void (*func)(void *data), void *data)
 {
@@ -351,69 +226,14 @@ _e_text_input_method_context_cb_keysym(struct wl_client *client EINA_UNUSED, str
                                serial, time, sym, state, modifiers);
 }
 
-static void
-_e_text_input_method_context_keyboard_grab_cb_resource_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
-{
-   wl_resource_destroy(resource);
-}
-
-static const struct wl_keyboard_interface _e_keyboard_grab_interface =
-{
-   _e_text_input_method_context_keyboard_grab_cb_resource_destroy
-};
-
-static void
-_e_text_input_method_context_keyboard_grab_cb_keyboard_unbind(struct wl_resource *resource)
-{
-   E_Input_Method_Context *context = wl_resource_get_user_data(resource);
-
-   if (!context)
-     {
-        wl_resource_post_error(resource,
-                               WL_DISPLAY_ERROR_INVALID_OBJECT,
-                               "No Input Method Context For Resource");
-        return;
-     }
-
-   _e_text_input_method_context_grab_set(context, EINA_FALSE);
-
-   context->kbd.resource = NULL;
-}
-
 static void
 _e_text_input_method_context_cb_keyboard_grab(struct wl_client *client, struct wl_resource *resource, uint32_t id)
 {
    DBG("Input Method Context - grab keyboard %d", wl_resource_get_id(resource));
-   E_Input_Method_Context *context  = wl_resource_get_user_data(resource);
-   struct wl_resource *keyboard = NULL;
-   E_Comp_Data *cdata = NULL;
-   if (!context)
-     {
-        wl_resource_post_error(resource,
-                               WL_DISPLAY_ERROR_INVALID_OBJECT,
-                               "No Input Method Context For Resource");
-        return;
-     }
-   keyboard = wl_resource_create(client, &wl_keyboard_interface, 1, id);
-   if (!keyboard)
-     {
-        wl_client_post_no_memory(client);
-        return;
-     }
-
-   wl_resource_set_implementation(keyboard, &_e_keyboard_grab_interface, context, _e_text_input_method_context_keyboard_grab_cb_keyboard_unbind);
 
-   if (context->model && context->model->cdata)
-     {
-        cdata = context->model->cdata;
-        /* send current keymap */
-        wl_keyboard_send_keymap(keyboard, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1,
-                           cdata->xkb.fd, cdata->xkb.size);
-     }
-
-   context->kbd.resource = keyboard;
-
-   _e_text_input_method_context_grab_set(context, EINA_TRUE);
+   (void)client;
+   (void)resource;
+   (void)id;
 }
 
 static void
@@ -509,8 +329,8 @@ _e_text_input_method_context_cb_resource_destroy(struct wl_resource *resource)
         return;
      }
 
-   if (context->kbd.resource)
-     wl_resource_destroy(context->kbd.resource);
+   if (context->keyboard)
+     wl_resource_destroy(context->keyboard);
 
    if ((context->input_method) &&
        (context->input_method->context == context))
@@ -526,8 +346,6 @@ _e_text_input_deactivate(E_Text_Input *text_input, E_Input_Method *input_method)
      {
         if ((input_method->context) && (input_method->resource))
           {
-             _e_text_input_method_context_grab_set(input_method->context,
-                                                   EINA_FALSE);
              // TODO: finish the grab of keyboard.
              wl_input_method_send_deactivate(input_method->resource,
                                              input_method->context->resource);