From 6ab5ce3f9f25dcbbb114ceaa9c0ac4ff8b28a9c6 Mon Sep 17 00:00:00 2001 From: dyamy-lee Date: Thu, 26 Aug 2021 19:05:37 +0900 Subject: [PATCH] wayland-input : add/free mmi_provider_event_key event and separate this as function Change-Id: I7f56a12afba8246e21df023e313dda434def7bb0 --- src/modules/modality_keyboard/wayland-input.c | 57 ++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/src/modules/modality_keyboard/wayland-input.c b/src/modules/modality_keyboard/wayland-input.c index bb77c49..86b899e 100644 --- a/src/modules/modality_keyboard/wayland-input.c +++ b/src/modules/modality_keyboard/wayland-input.c @@ -23,6 +23,7 @@ #include "wayland-input.h" #include "../../mmi-manager-dbg.h" +#include "../../mmi-common.h" #include #include @@ -45,6 +46,8 @@ struct xkb_keymap *keymap; Ecore_Fd_Handler *fd_hdl; +int MMI_PROVIDER_EVENT_KEY = -1; + typedef struct tizen_keyrouter_notify tizen_keyrouter_notify_t; struct tizen_keyrouter_notify { @@ -254,6 +257,42 @@ _covert_kernel_keycode_to_user_keycode(unsigned int kernel_keycode) } static void +_input_event_key_cb_free(void *data EINA_UNUSED, void *event) +{ + mmi_provider_event_key *ev = event; + if(ev->keyname) + free(ev->keyname); + free(ev); +} + +static void +_input_add_key_event(unsigned int keycode, unsigned int state, unsigned int timestamp) +{ + const char * name = NULL; + + if((name = xkb_keymap_key_get_name(keymap, keycode))) + { + LOGD("key name = %s, keycode = %d\n", name, keycode); + + mmi_provider_event_key *ev = calloc(1, sizeof(mmi_provider_event_key)); + + if(state) + ev->type = MMI_EVENT_KEY_TYPE_DOWN; + else + ev->type = MMI_EVENT_KEY_TYPE_UP; + ev->timestamp = timestamp; + ev->keycode = keycode; + ev->key_down = state; + ev->keyname = strdup(name); + + LOGI("type = %s, keyname = %s, key = %d, time = %d", (ev->type)?"MMI_EVENT_KEY_TYPE_DOWN":"MMI_EVENT_KEY_TYPE_UP", ev->keyname, ev->keycode, ev->timestamp); + ecore_event_add(MMI_PROVIDER_EVENT_KEY, ev, _input_event_key_cb_free, NULL); + } + else + LOGD("No matched keyname from keycode = %d\n", keycode); +} + +static void keyboard_key(void *data, struct wl_keyboard *keyboard, unsigned int serial, unsigned int timestamp, unsigned int keycode, unsigned int state) { unsigned int user_keycode = _covert_kernel_keycode_to_user_keycode(keycode); @@ -270,11 +309,7 @@ keyboard_key(void *data, struct wl_keyboard *keyboard, unsigned int serial, unsi LOGD("has_keymap | keycode : %d, state : %d, timestamp : %d\n", user_keycode, state, timestamp); if(keymap) { - const char * name = NULL; - if((name = xkb_keymap_key_get_name(keymap, user_keycode))) - LOGD("key name = %s, keycode = %d\n", name, user_keycode); - else - LOGD("No matched keyname from keycode = %d\n", user_keycode); + _input_add_key_event(user_keycode, state, timestamp); } } } @@ -571,14 +606,26 @@ void _keymap_shutdown(void) if(keymap) xkb_map_unref(keymap); } +void _input_event_init(void) +{ + MMI_PROVIDER_EVENT_KEY = ecore_event_type_new(); +} + +void _input_event_shutdown(void) +{ + MMI_PROVIDER_EVENT_KEY = -1; +} + void wayland_input_init(void) { + _input_event_init(); _wl_init(); _keygrab_init(); } void wayland_input_shutdown(void) { + _input_event_shutdown(); _wl_shutdown(); _keymap_shutdown(); _xkb_context_shutdown(); -- 2.7.4