summaryrefslogtreecommitdiff
path: root/mobile/src/hw_key.c
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/src/hw_key.c')
-rw-r--r--mobile/src/hw_key.c323
1 files changed, 0 insertions, 323 deletions
diff --git a/mobile/src/hw_key.c b/mobile/src/hw_key.c
deleted file mode 100644
index 14361bf..0000000
--- a/mobile/src/hw_key.c
+++ /dev/null
@@ -1,323 +0,0 @@
- /*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
-#include <ail.h>
-#include <bundle.h>
-#include <Elementary.h>
-#include <Ecore_X.h>
-#include <Ecore_Input.h>
-#include <sysman.h>
-#include <syspopup_caller.h>
-#include <utilX.h>
-#include <vconf.h>
-#include <system/media_key.h>
-
-#include "hw_key.h"
-#include "menu_daemon.h"
-#include "util.h"
-
-#define TASKMGR_PKG_NAME "org.tizen.taskmgr"
-#define CAMERA_PKG_NAME "org.tizen.camera-app"
-#define CALLLOG_PKG_NAME "org.tizen.calllog"
-#define MUSIC_PLAYER_PKG_NAME "org.tizen.music-player"
-
-
-
-static struct {
- Ecore_X_Window win;
- Ecore_Event_Handler *key_up;
- Ecore_Event_Handler *key_down;
- Ecore_Timer *long_press;
- Ecore_Timer *single_timer;
- Ecore_Timer *volume_up_long_press;
- Ecore_Timer *volume_down_long_press;
- Eina_Bool cancel;
-} key_info = {
- .win = 0x0,
- .key_up = NULL,
- .key_down = NULL,
- .long_press = NULL,
- .single_timer = NULL,
- .volume_up_long_press = NULL,
- .volume_down_long_press = NULL,
- .cancel = EINA_FALSE,
-};
-
-
-
-static Eina_Bool _launch_taskmgr_cb(void* data)
-{
- int val1 = -1;
- int val2 = -1;
- _D("Launch TASKMGR");
-
- key_info.long_press = NULL;
-
- if (vconf_get_int(VCONFKEY_PM_STATE, &val1) < 0) {
- _E("Cannot get VCONFKEY_PM_STATE");
- return ECORE_CALLBACK_CANCEL;
- }
- if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val2) < 0) {
- _E("Cannot get VCONFKEY_IDLE_LOCK_STATE");
- return ECORE_CALLBACK_CANCEL;
- }
-
- if ((val1 == VCONFKEY_PM_STATE_NORMAL) && (val2 == VCONFKEY_IDLE_UNLOCK)) {
- _D("LCD ON, UNLOCK state => launch taskmgr");
- syspopup_destroy_all();
- if (menu_daemon_open_app(TASKMGR_PKG_NAME) < 0)
- _E("Failed to launch the taskmgr");
- } else {
- _D("Can't launch TASKMGR pm state : %d lock state : %d", val1, val2);
- }
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-
-
-static Eina_Bool _launch_by_home_key(void *data)
-{
- key_info.single_timer = NULL;
- syspopup_destroy_all();
- menu_daemon_open_homescreen(NULL);
- return ECORE_CALLBACK_CANCEL;
-}
-
-
-
-inline static int _release_home_key(void)
-{
- syspopup_destroy_all();
- retv_if(NULL == key_info.long_press, EXIT_SUCCESS);
- ecore_timer_del(key_info.long_press);
- key_info.long_press = NULL;
-
- if (NULL == key_info.single_timer) {
- key_info.single_timer = ecore_timer_add(0.3, _launch_by_home_key, NULL);
- return EXIT_SUCCESS;
- }
- ecore_timer_del(key_info.single_timer);
- key_info.single_timer = NULL;
-
- return EXIT_SUCCESS;
-}
-
-
-
-inline static void _release_multimedia_key(const char *value)
-{
- ret_if(NULL == value);
-
- _D("Multimedia key is released with %s", value);
-
- bundle *b;
- b = bundle_create();
- if (!b) {
- _E("Cannot create bundle");
- return;
- }
- bundle_add(b, "multimedia_key", value);
-
- int ret;
- ret = menu_daemon_launch_app(MUSIC_PLAYER_PKG_NAME, b);
- if (ret < 0)
- _E("Failed to launch the running apps, ret : %d", ret);
-
- bundle_free(b);
-}
-
-
-
-static Eina_Bool _key_release_cb(void *data, int type, void *event)
-{
- Evas_Event_Key_Up *ev = event;
- int val = -1;
-
- _D("Released");
-
- if (!ev) {
- _D("Invalid event object");
- return ECORE_CALLBACK_RENEW;
- }
-
- if (!strcmp(ev->keyname, KEY_END)) {
- } else if (!strcmp(ev->keyname, KEY_CONFIG)) {
- } else if (!strcmp(ev->keyname, KEY_SEND)) {
- } else if (!strcmp(ev->keyname, KEY_HOME)) {
-
- if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val) < 0) {
- _D("Cannot get VCONFKEY_IDLE_LOCK_STATE");
- }
- if (val == VCONFKEY_IDLE_LOCK) {
- _D("lock state, ignore home key..!!");
- return ECORE_CALLBACK_RENEW;
- }
-
- if (EINA_TRUE == key_info.cancel) {
- _D("Cancel key is activated");
- if (key_info.long_press) {
- ecore_timer_del(key_info.long_press);
- key_info.long_press = NULL;
- }
-
- if (key_info.single_timer) {
- ecore_timer_del(key_info.single_timer);
- key_info.single_timer = NULL;
- }
-
- return ECORE_CALLBACK_RENEW;
- }
-
- _release_home_key();
- } else if (!strcmp(ev->keyname, KEY_PAUSE)) {
- } else if (!strcmp(ev->keyname, KEY_CANCEL)) {
- _D("CANCEL Key is released");
- key_info.cancel = EINA_FALSE;
- } else if (!strcmp(ev->keyname, KEY_MEDIA)) {
- _release_multimedia_key("KEY_PLAYCD");
- }
-
- return ECORE_CALLBACK_RENEW;
-}
-
-
-
-static Eina_Bool _key_press_cb(void *data, int type, void *event)
-{
- Evas_Event_Key_Down *ev = event;
- int val = -1;
-
- _D("Pressed");
-
- if (!ev) {
- _D("Invalid event object");
- return ECORE_CALLBACK_RENEW;
- }
-
- if (!strcmp(ev->keyname, KEY_SEND)) {
- _D("Launch calllog");
- if (menu_daemon_open_app(CALLLOG_PKG_NAME) < 0)
- _E("Failed to launch %s", CALLLOG_PKG_NAME);
- } else if(!strcmp(ev->keyname, KEY_CONFIG)) {
- _D("Launch camera");
- if (menu_daemon_open_app(CAMERA_PKG_NAME) < 0)
- _E("Failed to launch %s", CAMERA_PKG_NAME);
- } else if (!strcmp(ev->keyname, KEY_HOME)) {
- if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val) < 0) {
- _D("Cannot get VCONFKEY_IDLE_LOCK_STATE");
- }
- if (val == VCONFKEY_IDLE_LOCK) {
- _D("lock state, ignore home key..!!");
- return ECORE_CALLBACK_RENEW;
- }
- if (key_info.long_press) {
- ecore_timer_del(key_info.long_press);
- key_info.long_press = NULL;
- }
-
- syspopup_destroy_all();
-
- key_info.long_press = ecore_timer_add(0.5, _launch_taskmgr_cb, NULL);
- if (!key_info.long_press)
- _E("Failed to add timer for long press detection");
- } else if (!strcmp(ev->keyname, KEY_CANCEL)) {
- _D("Cancel button is pressed");
- key_info.cancel = EINA_TRUE;
- } else if (!strcmp(ev->keyname, KEY_MEDIA)) {
- _D("Media key is pressed");
- }
-
- return ECORE_CALLBACK_RENEW;
-}
-
-
-
-void _media_key_event_cb(media_key_e key, media_key_event_e status, void *user_data)
-{
- _D("MEDIA KEY EVENT");
- if (MEDIA_KEY_STATUS_PRESSED == status) return;
-
- if (MEDIA_KEY_PAUSE == key) {
- _release_multimedia_key("KEY_PAUSECD");
- } else if (MEDIA_KEY_PLAY == key) {
- _release_multimedia_key("KEY_PLAYCD");
- }
-}
-
-
-
-void create_key_window(void)
-{
- key_info.win = ecore_x_window_input_new(0, -10000, -10000, 1, 1);
- if (!key_info.win) {
- _D("Failed to create hidden window");
- return;
- }
- //ecore_x_event_mask_unset(key_info.win, ECORE_X_EVENT_MASK_NONE);
- ecore_x_icccm_title_set(key_info.win, "menudaemon,key,receiver");
- ecore_x_netwm_name_set(key_info.win, "menudaemon,key,receiver");
- ecore_x_netwm_pid_set(key_info.win, getpid());
- ecore_x_flush();
-
- utilx_grab_key(ecore_x_display_get(), key_info.win, KEY_HOME, SHARED_GRAB);
- utilx_grab_key(ecore_x_display_get(), key_info.win, KEY_VOLUMEDOWN, SHARED_GRAB);
- utilx_grab_key(ecore_x_display_get(), key_info.win, KEY_VOLUMEUP, SHARED_GRAB);
- utilx_grab_key(ecore_x_display_get(), key_info.win, KEY_CONFIG, SHARED_GRAB);
- utilx_grab_key(ecore_x_display_get(), key_info.win, KEY_MEDIA, SHARED_GRAB);
-
- key_info.key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_release_cb, NULL);
- if (!key_info.key_up)
- _D("Failed to register a key up event handler");
-
- key_info.key_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_press_cb, NULL);
- if (!key_info.key_down)
- _D("Failed to register a key down event handler");
-
- media_key_reserve(_media_key_event_cb, NULL);
-}
-
-
-
-void destroy_key_window(void)
-{
- utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_HOME);
- utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_VOLUMEDOWN);
- utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_VOLUMEUP);
- utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_CONFIG);
- utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_MEDIA);
-
- if (key_info.key_up) {
- ecore_event_handler_del(key_info.key_up);
- key_info.key_up = NULL;
- }
-
- if (key_info.key_down) {
- ecore_event_handler_del(key_info.key_down);
- key_info.key_down = NULL;
- }
-
- ecore_x_window_delete_request_send(key_info.win);
- key_info.win = 0x0;
-
- media_key_release();
-}
-
-
-
-// End of a file