static
Eina_Bool __key_press_cb(void *data, int type, void *event)
{
- Evas_Event_Key_Down *ev = event;
- struct appdata *ad = (struct appdata *)data;
- char *val = NULL;
+ Evas_Event_Key_Down *ev = event;
+ struct appdata *ad = (struct appdata *)data;
+ char *val = NULL;
- _D("__key_press_cb");
+ _D("__key_press_cb");
- if (!s_key_registered) {
- _E("Key is not registered");
- return ECORE_CALLBACK_RENEW;
- }
+ if (!s_key_registered) {
+ _E("Key is not registered");
+ return ECORE_CALLBACK_RENEW;
+ }
- if (!ev) {
- _E("Invalid event object");
- return ECORE_CALLBACK_RENEW;
- }
+ if (!ev) {
+ _E("Invalid event object");
+ return ECORE_CALLBACK_RENEW;
+ }
- val = bundle_get_val(ad->kb, "__APP_SVC_CALLER_NOTI__");
- if(val) {
- bundle_add(ad->kb, "__APP_SVC_START_INFO__", "c");
+ val = bundle_get_val(ad->kb, "__APP_SVC_CALLER_NOTI__");
+ if(val) {
+ bundle_add(ad->kb, "__APP_SVC_START_INFO__", "c");
_D("before aul_launch_app");
- aul_launch_app(val, ad->kb);
- }
+ aul_launch_app(val, ad->kb);
+ }
- ecore_event_handler_del(ad->rotate);
- ad->rotate = NULL;
- elm_exit();
+ ecore_event_handler_del(ad->rotate);
+ ad->rotate = NULL;
+ elm_exit();
- return ECORE_CALLBACK_RENEW;
+ return ECORE_CALLBACK_RENEW;
}
static void __register_key_handler(void *data)
{
- struct appdata *ad = (struct appdata *)data;
+ struct appdata *ad = (struct appdata *)data;
- ad->key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP,
- __key_press_cb, ad);
- if (!ad->key_up) {
- _E("Failed to register a key down event handler");
- }
+ ad->key_up = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
+ __key_press_cb, ad);
+ if (!ad->key_up) {
+ _E("Failed to register a key down event handler");
+ }
- _D("Key handler is registered");
- s_key_registered = EINA_TRUE;
+ _D("Key handler is registered");
+ s_key_registered = EINA_TRUE;
}
static void __unregister_key_handler(void *data)
s_key_registered = EINA_FALSE;
}
-static void __grab_home_key(void *data)
+static void __grab_key(void *data)
{
struct appdata *ad = (struct appdata *)data;
- _D("Grab home key.");
+ _D("Grab home / back key.");
utilx_grab_key(ad->dpy, ad->xwin, KEY_HOME, SHARED_GRAB);
+ utilx_grab_key(ad->dpy, ad->xwin, KEY_BACK, TOP_POSITION_GRAB);
+
__register_key_handler(ad);
}
-static void __ungrab_home_key(void *data)
+static void __ungrab_key(void *data)
{
struct appdata *ad = (struct appdata *)data;
__unregister_key_handler(ad);
- _D("Ungrab home key.");
+ _D("Ungrab home / back key.");
utilx_ungrab_key(ad->dpy, ad->xwin, KEY_HOME);
+
+ utilx_ungrab_key(ad->dpy, ad->xwin, KEY_BACK);
}
static int __app_create(void *data)
if (r)
return -1;
- __grab_home_key(ad);
+ __grab_key(ad);
return 0;
}
ad->rotate = NULL;
}
- __ungrab_home_key(ad);
+ __ungrab_key(ad);
return 0;
}