#include "wayland-input.h"
#include "../../mmi-manager-dbg.h"
+#include "../../mmi-common.h"
#include <stdlib.h>
#include <sys/mman.h>
Ecore_Fd_Handler *fd_hdl;
+int MMI_PROVIDER_EVENT_KEY = -1;
+
typedef struct tizen_keyrouter_notify tizen_keyrouter_notify_t;
struct tizen_keyrouter_notify
{
}
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);
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);
}
}
}
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();