+static void
+key_event_put(int keysym, int state)
+{
+ // Find the window which has the current keyboard focus.
+ Window winFocus = 0;
+ int revert = RevertToParent;
+
+ XGetInputFocus(ecore_x_display_get(), &winFocus, &revert);
+
+ XKeyEvent event;
+ if (state & IBUS_RELEASE_MASK)
+ {
+ event = createXKeyEvent(winFocus, EINA_FALSE, keysym, state);
+ XSendEvent(event.display, event.window, True, KeyReleaseMask, (XEvent *)&event);
+ }
+ else
+ {
+ event = createXKeyEvent(winFocus, EINA_TRUE, keysym, state);
+ XSendEvent(event.display, event.window, True, KeyPressMask, (XEvent *)&event);
+ }
+}
+
+static KeyEvent *
+key_event_copy(int keysym, int state)
+{
+ KeyEvent *kev = calloc(1, sizeof(KeyEvent));
+ kev->keysym = keysym;
+ kev->state = state;
+
+ return kev;
+}
+