if (!krt->HardKeys[ev->keycode].keycode) goto finish;
+ if (!e_keyrouter_intercept_hook_call(E_KEYROUTER_INTERCEPT_HOOK_BEFORE_KEYROUTING, type, ev))
+ {
+ goto finish;
+ }
+
if ((ECORE_EVENT_KEY_UP == type) && (!krt->HardKeys[ev->keycode].press_ptr))
{
KLDBG("The release key(%d) isn't a processed by keyrouter!", ev->keycode);
int pid = 0;
char *pname = NULL, *cmd = NULL;
+ if (!e_keyrouter_intercept_hook_call(E_KEYROUTER_INTERCEPT_HOOK_DELIVER_FOCUS, type, ev))
+ {
+ if (ev->data)
+ {
+ *delivered_surface = ev->data;
+ ev->data = wl_resource_get_client(ev->data);
+ }
+ return res;
+ }
+
ec_top = e_client_top_get();
ec_focus = e_client_focused_get();
return ECORE_CALLBACK_CANCEL;
}
+static void *
+_e_keyrouter_keygrab_list_get(void)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(krt, NULL);
+ return krt->HardKeys;
+}
+
+static int
+_e_keyrouter_max_keycode_get(void)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(krt, 0);
+ return krt->max_tizen_hwkeys;
+}
static E_Keyrouter_Config_Data *
_e_keyrouter_init(E_Module *m)
goto err;
}
+ e_keyrouter.keygrab_list_get = _e_keyrouter_keygrab_list_get;
+ e_keyrouter.max_keycode_get = _e_keyrouter_max_keycode_get;
+
#ifdef ENABLE_CYNARA
ret = cynara_initialize(&krt->p_cynara, NULL);
if (EINA_UNLIKELY(CYNARA_API_SUCCESS != ret))
typedef struct _E_Keyrouter E_Keyrouter;
typedef struct _E_Keyrouter* E_KeyrouterPtr;
-typedef struct _E_Keyrouter_Key_List_Node E_Keyrouter_Key_List_Node;
-typedef struct _E_Keyrouter_Key_List_Node* E_Keyrouter_Key_List_NodePtr;
-typedef struct _E_Keyrouter_Tizen_HWKey E_Keyrouter_Tizen_HWKey;
-typedef struct _E_Keyrouter_Grabbed_Key E_Keyrouter_Grabbed_Key;
typedef struct _E_Keyrouter_Grab_Request E_Keyrouter_Grab_Request;
typedef struct _E_Keyrouter_Ungrab_Request E_Keyrouter_Ungrab_Request;
-typedef struct _E_Keyrouter_Registered_Window_Info E_Keyrouter_Registered_Window_Info;
+
typedef struct _E_Keyrouter_Conf_Edd E_Keyrouter_Conf_Edd;
typedef struct _E_Keyrouter_Config_Data E_Keyrouter_Config_Data;
#define TIZEN_KEYROUTER_MODE_PRESSED TIZEN_KEYROUTER_MODE_REGISTERED+1
#define TIZEN_KEYROUTER_MODE_PICTURE_OFF TIZEN_KEYROUTER_MODE_REGISTERED+2
-typedef enum _E_Keyrouter_Client_Status
-{
- E_KRT_CSTAT_DEAD = 0,
- E_KRT_CSTAT_ALIVE,
- E_KRT_CSTAT_UNGRAB
-} E_Keyrouter_Client_Status;
-
typedef unsigned long Time;
extern E_KeyrouterPtr krt;
E_Keyrouter_Conf_Edd *conf;
};
-struct _E_Keyrouter_Registered_Window_Info
-{
- struct wl_resource *surface;
- Eina_List *keys;
-};
-
-struct _E_Keyrouter_Key_List_Node
-{
- struct wl_resource *surface;
- struct wl_client *wc;
- Eina_Bool focused;
- E_Keyrouter_Client_Status status;
-};
-
-struct _E_Keyrouter_Tizen_HWKey
-{
- char *name;
- int keycode;
- int no_privcheck;
- int repeat;
-};
-
-struct _E_Keyrouter_Grabbed_Key
-{
- int keycode;
- char* keyname;
- Eina_Bool no_privcheck;
- Eina_Bool repeat;
-
- Eina_List *excl_ptr;
- Eina_List *or_excl_ptr;
- Eina_List *top_ptr;
- Eina_List *shared_ptr;
- Eina_List *press_ptr;
- E_Keyrouter_Key_List_Node *registered_ptr;
- Eina_List *pic_off_ptr;
-};
-
struct _E_Keyrouter
{
struct wl_global *global;