public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Takao Fujiwara <tfujiwar@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/ibus] autotool: Delete upstream patches
Date: Sun, 31 May 2026 02:08:06 GMT	[thread overview]
Message-ID: <178019328622.1.15236656248940941244.rpms-ibus-f48dc0ddb5c6@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/ibus
Branch : autotool
Commit : f48dc0ddb5c6a12e7833c8b1d3cb99dc7ae23eb7
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date   : 2023-02-21T12:58:55+09:00
Stats  : +0/-9601 in 1 file(s)
URL    : https://src.fedoraproject.org/rpms/ibus/c/f48dc0ddb5c6a12e7833c8b1d3cb99dc7ae23eb7?branch=autotool

Log:
Delete upstream patches

---
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
deleted file mode 100644
index 53137f6..0000000
--- a/ibus-HEAD.patch
+++ /dev/null
@@ -1,9601 +0,0 @@
-From babad7839ba6d72609c717d647bb2928724b4cc3 Mon Sep 17 00:00:00 2001
-From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
-Date: Tue, 6 Sep 2022 17:08:43 +0900
-Subject: [PATCH] tools: Check libdl for dlclose() properly in configure
-
-BUG=https://github.com/ibus/ibus/pull/2442
----
- configure.ac      | 4 ++++
- tools/Makefile.am | 2 +-
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 0868d6c9..2344523a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -147,6 +147,10 @@ AC_CHECK_HEADERS([sys/prctl.h])
- # Check functions.
- AC_CHECK_FUNCS(daemon)
- 
-+# Check dlclose() in libc.so.
-+AC_CHECK_LIB(c, dlclose, LIBDL="", [AC_CHECK_LIB(dl, dlclose, LIBDL="-ldl")])
-+AC_SUBST(LIBDL)
-+
- # Check packages.
- # Check glib2.
- AM_PATH_GLIB_2_0
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index b82395da..e300f9f3 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -63,7 +63,7 @@ AM_LDADD = \
-     @GTHREAD2_LIBS@ \
-     $(libibus) \
-     $(libibusimmodule) \
--    -ldl               \
-+    $(LIBDL) \
-     $(NULL)
- 
- AM_VALAFLAGS = \
--- 
-2.37.3
-
-From 39b69073ad34ab89a3e5aa012ff740c84f69eb8f Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 16 Sep 2022 14:30:35 +0900
-Subject: [PATCH] client/gtk2: Stop many warnings of surrounding text
-
-Surrounding text is requested by ibus_im_context_filter_keypress()
-and the no supported warning could be output many times.
-Now the warning is output one time by input context but
-brower applicaations do not use GtkWidget for the input context
-so the warning is output by instance but not input context.
-
-BUG=https://github.com/ibus/ibus/issues/2418
----
- client/gtk2/ibusimcontext.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
-index bc14df00..3fc9c0f2 100644
---- a/client/gtk2/ibusimcontext.c
-+++ b/client/gtk2/ibusimcontext.c
-@@ -567,6 +567,7 @@ _process_key_event (IBusInputContext *context,
- static void
- _request_surrounding_text (IBusIMContext *context)
- {
-+    static gboolean warned = FALSE;
-     if (context &&
-         (context->caps & IBUS_CAP_SURROUNDING_TEXT) != 0 &&
-         context->ibuscontext != NULL &&
-@@ -580,8 +581,11 @@ _request_surrounding_text (IBusIMContext *context)
-              * fail with the first typing on firefox but it succeeds with
-              * the second typing.
-              */
--            g_warning ("%s has no capability of surrounding-text feature",
--                       g_get_prgname ());
-+            if (!warned) {
-+                g_warning ("%s has no capability of surrounding-text feature",
-+                           g_get_prgname ());
-+                warned = TRUE;
-+            }
-         }
-     }
- }
--- 
-2.37.3
-
-From 50f8d8b79bc8eac1bae80116fe669d7314a44663 Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 16 Sep 2022 14:34:54 +0900
-Subject: [PATCH] client/gtk2: Update capabilities if "retrieve-surrounding" is
- failed
-
-Some engine developers wish to update the capabilities if emitting
-"retrieve-surrounding" signal is failed so that engines disable the
-surrounding text feature but I had deleted the logic with #2054 since
-the second typing could be succeeded.
-Asking all applications the second typing would not be a good condition
-and the special issue should be fixed in firefox.
-
-Fixes: https://github.com/ibus/ibus/commit/7b3b8c8b0c
-
-BUG=https://github.com/ibus/ibus/issues/2054
-BUG=https://github.com/ibus/ibus/issues/2354
----
- client/gtk2/ibusimcontext.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
-index 3fc9c0f2..eaf7eb90 100644
---- a/client/gtk2/ibusimcontext.c
-+++ b/client/gtk2/ibusimcontext.c
-@@ -577,10 +577,14 @@ _request_surrounding_text (IBusIMContext *context)
-         g_signal_emit (context, _signal_retrieve_surrounding_id, 0,
-                        &return_value);
-         if (!return_value) {
--            /* #2054 firefox::IMContextWrapper::GetCurrentParagraph() could
--             * fail with the first typing on firefox but it succeeds with
--             * the second typing.
-+            /* Engines can disable the surrounding text feature with
-+             * the updated capabilities.
-              */
-+            if (context->caps & IBUS_CAP_SURROUNDING_TEXT) {
-+                context->caps &= ~IBUS_CAP_SURROUNDING_TEXT;
-+                ibus_input_context_set_capabilities (context->ibuscontext,
-+                                                     context->caps);
-+            }
-             if (!warned) {
-                 g_warning ("%s has no capability of surrounding-text feature",
-                            g_get_prgname ());
--- 
-2.37.3
-
-From 7bbcce66e1ca694b7a62553327161290bf4ee283 Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Mon, 19 Sep 2022 11:52:14 +0900
-Subject: [PATCH] client/gtk2: Update surrounding text properties by focus in
-
-ibus_input_context_set_surrounding_text() should be succeeded
-if input contexts are different so that ibus engines can
-update surrounding text properties with focus in event.
-
-When an input context is created newly, RequireSurroundingText D-Bus
-signal could not be received yet and set_surrounding_text() is failed.
-Now "require-surrounding-text" signal is added to IBusInputContext
-and clients can call set_surrounding_text() later.
-
-BUG=https://github.com/ibus/ibus/issues/2423
----
- client/gtk2/ibusimcontext.c | 25 +++++++++++++++++++++++++
- src/ibusinputcontext.c      | 29 ++++++++++++++++++++++++++++-
- 2 files changed, 53 insertions(+), 1 deletion(-)
-
-diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
-index eaf7eb90..6e338157 100644
---- a/client/gtk2/ibusimcontext.c
-+++ b/client/gtk2/ibusimcontext.c
-@@ -70,6 +70,7 @@ struct _IBusIMContext {
- #endif
- 
-     IBusInputContext *ibuscontext;
-+    IBusInputContext *ibuscontext_needs_surrounding;
- 
-     /* preedit status */
-     gchar           *preedit_string;
-@@ -985,6 +986,7 @@ ibus_im_context_init (GObject *obj)
-     ibusimcontext->cursor_area.height = 0;
- 
-     ibusimcontext->ibuscontext = NULL;
-+    ibusimcontext->ibuscontext_needs_surrounding = NULL;
-     ibusimcontext->has_focus = FALSE;
-     ibusimcontext->time = GDK_CURRENT_TIME;
- #ifdef ENABLE_SURROUNDING
-@@ -2183,6 +2185,18 @@ _ibus_context_hide_preedit_text_cb (IBusInputContext *ibuscontext,
-     g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
- }
- 
-+static void
-+_ibus_context_require_surrounding_text_cb (IBusInputContext *ibuscontext,
-+                                           IBusIMContext    *ibusimcontext)
-+{
-+    IDEBUG ("%s", __FUNCTION__);
-+    g_assert (ibusimcontext->ibuscontext == ibuscontext);
-+    if (ibusimcontext->ibuscontext_needs_surrounding == ibuscontext) {
-+        _request_surrounding_text (ibusimcontext);
-+        ibusimcontext->ibuscontext_needs_surrounding = NULL;
-+    }
-+}
-+
- static void
- _ibus_context_destroy_cb (IBusInputContext *ibuscontext,
-                           IBusIMContext    *ibusimcontext)
-@@ -2249,6 +2263,11 @@ _create_input_context_done (IBusBus       *bus,
-                           "hide-preedit-text",
-                           G_CALLBACK (_ibus_context_hide_preedit_text_cb),
-                           ibusimcontext);
-+        g_signal_connect (
-+                ibusimcontext->ibuscontext,
-+                "require-surrounding-text",
-+                G_CALLBACK (_ibus_context_require_surrounding_text_cb),
-+                ibusimcontext);
-         g_signal_connect (ibusimcontext->ibuscontext, "destroy",
-                           G_CALLBACK (_ibus_context_destroy_cb),
-                           ibusimcontext);
-@@ -2265,6 +2284,12 @@ _create_input_context_done (IBusBus       *bus,
- 
-             ibus_input_context_focus_in (ibusimcontext->ibuscontext);
-             _set_cursor_location_internal (ibusimcontext);
-+            if (ibus_input_context_needs_surrounding_text (
-+                        ibusimcontext->ibuscontext)) {
-+                _request_surrounding_text (ibusimcontext);
-+            } else {
-+                ibusimcontext->ibuscontext_needs_surrounding = ibusimcontext->ibuscontext;
-+            }
-         }
- 
-         if (!g_queue_is_empty (ibusimcontext->events_queue)) {
-diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c
-index 7981de38..28ae04ad 100644
---- a/src/ibusinputcontext.c
-+++ b/src/ibusinputcontext.c
-@@ -2,7 +2,7 @@
- /* vim:set et sts=4: */
- /* ibus - The Input Bus
-  * Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2018-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2018-2022 Takao Fujiwara <takao.fujiwara1@gmail.com>
-  * Copyright (C) 2008-2019 Red Hat, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -55,6 +55,7 @@ enum {
-     CURSOR_DOWN_LOOKUP_TABLE,
-     REGISTER_PROPERTIES,
-     UPDATE_PROPERTY,
-+    REQUIRE_SURROUNDING_TEXT,
-     LAST_SIGNAL,
- };
- 
-@@ -488,6 +489,21 @@ ibus_input_context_class_init (IBusInputContextClass *class)
-             1,
-             IBUS_TYPE_PROPERTY);
- 
-+    /**
-+     * IBusInputContext::require-surrounding-text:
-+     * @context: An IBusInputContext.
-+     *
-+     * Emitted to receive the RequireSurroundingText signal from the daemon.
-+     */
-+    context_signals[REQUIRE_SURROUNDING_TEXT] =
-+        g_signal_new (I_("require-surrounding-text"),
-+            G_TYPE_FROM_CLASS (class),
-+            G_SIGNAL_RUN_LAST,
-+            0,
-+            NULL, NULL,
-+            _ibus_marshal_VOID__VOID,
-+            G_TYPE_NONE, 0);
-+
-     text_empty = ibus_text_new_from_static_string ("");
-     g_object_ref_sink (text_empty);
- }
-@@ -735,6 +751,7 @@ ibus_input_context_g_signal (GDBusProxy  *proxy,
- 
-     if (g_strcmp0 (signal_name, "RequireSurroundingText") == 0) {
-         priv->needs_surrounding_text = TRUE;
-+        g_signal_emit (context, context_signals[REQUIRE_SURROUNDING_TEXT], 0);
-         return;
-     }
- 
-@@ -1116,9 +1133,19 @@ ibus_input_context_set_surrounding_text (IBusInputContext   *context,
- 
-     priv = IBUS_INPUT_CONTEXT_GET_PRIVATE (context);
- 
-+    /* This API should send "SetSurroundingText" D-Bus method when
-+     * input contexts are switched between tabs in a text application
-+     * so that engines can receive the updated surrounding texts after
-+     * focus-in events happen.
-+     *
-+     * GNOME shell uses a single input context and the address of the input
-+     * contexts are always same. So check the address of texts if the input
-+     * contexts on applications are switched.
-+     */
-     if (cursor_pos != priv->surrounding_cursor_pos ||
-         anchor_pos != priv->selection_anchor_pos ||
-         priv->surrounding_text == NULL ||
-+        text != priv->surrounding_text ||
-         g_strcmp0 (text->text, priv->surrounding_text->text) != 0) {
-         if (priv->surrounding_text)
-             g_object_unref (priv->surrounding_text);
--- 
-2.37.3
-
-From cd621f8b82c80a174cd880cb27f27d7ccb9cb4d4 Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Thu, 3 Nov 2022 08:36:17 +0900
-Subject: [PATCH] ui/gtk3/switcher: Avoid to unref m_engines with double run
-
-m_engines could be a buffer overflow if switcher.run() is called
-again and m_engines is unrefed durling showing the swicher popup.
-
-BUG=rhbz#2081055
----
- ui/gtk3/switcher.vala | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala
-index a4529c88..9400e9ba 100644
---- a/ui/gtk3/switcher.vala
-+++ b/ui/gtk3/switcher.vala
-@@ -143,6 +143,8 @@ class Switcher : Gtk.Window {
-         assert (m_loop == null);
-         assert (index < engines.length);
- 
-+        if (m_is_running)
-+            return index;
-         m_is_running = true;
-         m_keyval = keyval;
-         m_modifiers = state;
--- 
-2.37.3
-
-From 506ac9993d5166196b7c4e9bfa9fb0f9d3792ffa Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Thu, 10 Nov 2022 18:38:05 +0900
-Subject: [PATCH] client/x11: Implement new process_key_event for ibus-x11
-
-The new process_key_event is ported from GTK4 to X11 because
-hangul maintainers wish to delete forward_key_event as much as possible
-and currently we could apply forward_key_event to the sync mode only
-and the new process_key_event is a new async key event process in X11
-and hangul might disable forward_key_event by default.
-
-Now the definition of IBUS_CAP_SYNC_PROCESS_KEY_V2 capability is changed
-to set only if the sync mode.
-
-Also switch a heavy GMainLoop to the light GSource.
-
-Fixes: https://github.com/ibus/ibus/commit/c957c5f
----
- client/gtk2/ibusimcontext.c |  61 ++++++++++----
- client/x11/main.c           | 157 +++++++++++++++++++++++++++++++-----
- src/ibustypes.h             |   1 +
- 3 files changed, 184 insertions(+), 35 deletions(-)
-
-diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
-index 6e338157..1f3723e6 100644
---- a/client/gtk2/ibusimcontext.c
-+++ b/client/gtk2/ibusimcontext.c
-@@ -382,8 +382,9 @@ typedef struct {
- } ProcessKeyEventData;
- 
- typedef struct {
--    GMainLoop *loop;
--    gboolean    retval;
-+    int       count;
-+    guint     count_cb_id;
-+    gboolean  retval;
- } ProcessKeyEventReplyData;
- 
- static void
-@@ -453,7 +454,23 @@ _process_key_event_reply_done (GObject      *object,
-     }
-     g_return_if_fail (data);
-     data->retval = retval;
--    g_main_loop_quit (data->loop);
-+    data->count = 0;
-+    g_source_remove (data->count_cb_id);
-+}
-+
-+static gboolean
-+_process_key_event_count_cb (gpointer user_data)
-+{
-+    ProcessKeyEventReplyData *data = (ProcessKeyEventReplyData *)user_data;
-+    g_return_val_if_fail (data, G_SOURCE_REMOVE);
-+    if (!data->count)
-+        return G_SOURCE_REMOVE;
-+    /* Wait for about 10 secs. */
-+    if (data->count++ == 10000) {
-+        data->count = 0;
-+        return G_SOURCE_REMOVE;
-+    }
-+    return G_SOURCE_CONTINUE;
- }
- 
- static gboolean
-@@ -496,10 +513,10 @@ _process_key_event (IBusInputContext *context,
-         break;
-     }
-     case 2: {
--        GMainLoop *loop = g_main_loop_new (NULL, TRUE);
-+        GSource *source = g_timeout_source_new (1);
-         ProcessKeyEventReplyData *data = NULL;
- 
--        if (loop)
-+        if (source)
-             data = g_slice_new0 (ProcessKeyEventReplyData);
-         if (!data) {
-             g_warning ("Cannot wait for the reply of the process key event.");
-@@ -507,11 +524,14 @@ _process_key_event (IBusInputContext *context,
-                                                            keyval,
-                                                            keycode - 8,
-                                                            state);
--            if (loop)
--                g_main_loop_quit (loop);
-+            if (source)
-+                g_source_destroy (source);
-             break;
-         }
--        data->loop = loop;
-+        data->count = 1;
-+        g_source_attach (source, NULL);
-+        g_source_unref (source);
-+        data->count_cb_id = g_source_get_id (source);
-         ibus_input_context_process_key_event_async (context,
-             keyval,
-             keycode - 8,
-@@ -520,7 +540,14 @@ _process_key_event (IBusInputContext *context,
-             NULL,
-             _process_key_event_reply_done,
-             data);
--        g_main_loop_run (loop);
-+        g_source_set_callback (source, _process_key_event_count_cb, data, NULL);
-+        while (data->count)
-+            g_main_context_iteration (NULL, TRUE);
-+        if (source->ref_count > 0) {
-+            /* g_source_get_id() could causes a SEGV */
-+            g_info ("Broken GSource.ref_count and maybe a timing issue in %p.",
-+                    source);
-+        }
-         retval = data->retval;
-         g_slice_free (ProcessKeyEventReplyData, data);
-         break;
-@@ -994,8 +1021,8 @@ ibus_im_context_init (GObject *obj)
- #else
-     ibusimcontext->caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS;
- #endif
--    if (_use_sync_mode != 1)
--        ibusimcontext->caps |= IBUS_CAP_SYNC_PROCESS_KEY;
-+    if (_use_sync_mode == 1)
-+        ibusimcontext->caps |= IBUS_CAP_SYNC_PROCESS_KEY_V2;
- 
-     ibusimcontext->events_queue = g_queue_new ();
- 
-@@ -1338,7 +1365,7 @@ ibus_im_context_reset (GtkIMContext *context)
-          * IBus uses button-press-event instead until GTK is fixed.
-          * https://gitlab.gnome.org/GNOME/gtk/issues/1534
-          */
--        if (_use_sync_mode == 1)
-+        if (_use_sync_mode != 0)
-             ibus_im_context_clear_preedit_text (ibusimcontext);
-         ibus_input_context_reset (ibusimcontext->ibuscontext);
-     }
-@@ -1453,7 +1480,7 @@ ibus_im_context_set_client_window (GtkIMContext *context,
- 
-     if (ibusimcontext->client_window) {
- #if !GTK_CHECK_VERSION (3, 98, 4)
--        if (ibusimcontext->use_button_press_event && _use_sync_mode != 1)
-+        if (ibusimcontext->use_button_press_event && _use_sync_mode == 0)
-             _connect_button_press_event (ibusimcontext, FALSE);
- #endif
-         g_object_unref (ibusimcontext->client_window);
-@@ -1463,7 +1490,7 @@ ibus_im_context_set_client_window (GtkIMContext *context,
-     if (client != NULL) {
-         ibusimcontext->client_window = g_object_ref (client);
- #if !GTK_CHECK_VERSION (3, 98, 4)
--        if (!ibusimcontext->use_button_press_event && _use_sync_mode != 1)
-+        if (!ibusimcontext->use_button_press_event && _use_sync_mode == 0)
-             _connect_button_press_event (ibusimcontext, TRUE);
- #endif
-     }
-@@ -2085,7 +2112,7 @@ _ibus_context_update_preedit_text_cb (IBusInputContext  *ibuscontext,
- #if !GTK_CHECK_VERSION (3, 98, 4)
-     if (!ibusimcontext->use_button_press_event &&
-         mode == IBUS_ENGINE_PREEDIT_COMMIT &&
--        _use_sync_mode != 1) {
-+        _use_sync_mode == 0) {
-         if (ibusimcontext->client_window) {
-             _connect_button_press_event (ibusimcontext, TRUE);
-         }
-@@ -2459,8 +2486,8 @@ _create_fake_input_context_done (IBusBus       *bus,
-                       NULL);
- 
-     guint32 caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS | IBUS_CAP_SURROUNDING_TEXT;
--    if (_use_sync_mode != 1)
--        caps |= IBUS_CAP_SYNC_PROCESS_KEY;
-+    if (_use_sync_mode == 1)
-+        caps |= IBUS_CAP_SYNC_PROCESS_KEY_V2;
-     ibus_input_context_set_capabilities (_fake_context, caps);
- 
-     /* focus in/out the fake context */
-diff --git a/client/x11/main.c b/client/x11/main.c
-index 6057cc03..905fd251 100644
---- a/client/x11/main.c
-+++ b/client/x11/main.c
-@@ -124,7 +124,7 @@ static gint     g_debug_level = 0;
- 
- static IBusBus *_bus = NULL;
- 
--static gboolean _use_sync_mode = TRUE;
-+static char _use_sync_mode = 2;
- 
- static void
- _xim_preedit_start (XIMS xims, const X11IC *x11ic)
-@@ -331,6 +331,7 @@ xim_create_ic (XIMS xims, IMChangeICStruct *call_data)
- {
-     static int base_icid = 1;
-     X11IC *x11ic;
-+    guint32 capabilities = IBUS_CAP_FOCUS;
- 
-     call_data->icid = base_icid ++;
- 
-@@ -375,12 +376,11 @@ xim_create_ic (XIMS xims, IMChangeICStruct *call_data)
-                         G_CALLBACK (_context_disabled_cb), x11ic);
- 
- 
--    if (x11ic->input_style & XIMPreeditCallbacks) {
--        ibus_input_context_set_capabilities (x11ic->context, IBUS_CAP_FOCUS | IBUS_CAP_PREEDIT_TEXT);
--    }
--    else {
--        ibus_input_context_set_capabilities (x11ic->context, IBUS_CAP_FOCUS);
--    }
-+    if (x11ic->input_style & XIMPreeditCallbacks)
-+        capabilities |= IBUS_CAP_PREEDIT_TEXT;
-+    if (_use_sync_mode == 1)
-+        capabilities |= IBUS_CAP_SYNC_PROCESS_KEY_V2;
-+    ibus_input_context_set_capabilities (x11ic->context, capabilities);
- 
-     g_hash_table_insert (_x11_ic_table,
-                          GINT_TO_POINTER (x11ic->icid), (gpointer)x11ic);
-@@ -461,6 +461,13 @@ xim_unset_ic_focus (XIMS xims, IMChangeFocusStruct *call_data)
- 
- }
- 
-+typedef struct {
-+    IMForwardEventStruct *pfe;
-+    int                   count;
-+    guint                 count_cb_id;
-+    gboolean              retval;
-+} ProcessKeyEventReplyData;
-+
- static void
- _process_key_event_done (GObject      *object,
-                          GAsyncResult *res,
-@@ -493,6 +500,43 @@ _process_key_event_done (GObject      *object,
-     g_slice_free (IMForwardEventStruct, pfe);
- }
- 
-+static void
-+_process_key_event_reply_done (GObject      *object,
-+                               GAsyncResult *res,
-+                               gpointer      user_data)
-+{
-+    IBusInputContext *context = (IBusInputContext *)object;
-+    ProcessKeyEventReplyData *data = (ProcessKeyEventReplyData *)user_data;
-+    GError *error = NULL;
-+    gboolean retval = ibus_input_context_process_key_event_async_finish (
-+            context,
-+            res,
-+            &error);
-+    if (error != NULL) {
-+        g_warning ("Process Key Event failed: %s.", error->message);
-+        g_error_free (error);
-+    }
-+    g_return_if_fail (data);
-+    data->retval = retval;
-+    data->count = 0;
-+    g_source_remove (data->count_cb_id);
-+}
-+
-+static gboolean
-+_process_key_event_count_cb (gpointer user_data)
-+{
-+    ProcessKeyEventReplyData *data = (ProcessKeyEventReplyData *)user_data;
-+    g_return_val_if_fail (data, G_SOURCE_REMOVE);
-+    if (!data->count)
-+        return G_SOURCE_REMOVE;
-+    /* Wait for about 10 secs. */
-+    if (data->count++ == 10000) {
-+        data->count = 0;
-+        return G_SOURCE_REMOVE;
-+    }
-+    return G_SOURCE_CONTINUE;
-+}
-+
- static int
- xim_forward_event (XIMS xims, IMForwardEventStruct *call_data)
- {
-@@ -520,14 +564,15 @@ xim_forward_event (XIMS xims, IMForwardEventStruct *call_data)
-         event.state |= IBUS_RELEASE_MASK;
-     }
- 
--    if (_use_sync_mode) {
-+    switch (_use_sync_mode) {
-+    case 1: {
-         retval = ibus_input_context_process_key_event (
-                                       x11ic->context,
-                                       event.keyval,
-                                       event.hardware_keycode - 8,
-                                       event.state);
-         if (retval) {
--            if (! x11ic->has_preedit_area) {
-+            if (!x11ic->has_preedit_area) {
-                 _xim_set_cursor_location (x11ic);
-             }
-             return 1;
-@@ -546,8 +591,80 @@ xim_forward_event (XIMS xims, IMForwardEventStruct *call_data)
-         IMForwardEvent (_xims, (XPointer) &fe);
- 
-         retval = 1;
-+        break;
-     }
--    else {
-+    case 2: {
-+        GSource *source = g_timeout_source_new (1);
-+        ProcessKeyEventReplyData *data = NULL;
-+        IMForwardEventStruct fe;
-+
-+        if (source)
-+            data = g_slice_new0 (ProcessKeyEventReplyData);
-+        if (!data) {
-+            g_warning ("Cannot wait for the reply of the process key event.");
-+            retval = ibus_input_context_process_key_event (
-+                    x11ic->context,
-+                    event.keyval,
-+                    event.hardware_keycode - 8,
-+                    event.state);
-+            if (source)
-+                g_source_destroy (source);
-+        } else {
-+            CARD16 connect_id = x11ic->connect_id;
-+            data->count = 1;
-+            g_source_attach (source, NULL);
-+            g_source_unref (source);
-+            data->count_cb_id = g_source_get_id (source);
-+            ibus_input_context_process_key_event_async (
-+                    x11ic->context,
-+                    event.keyval,
-+                    event.hardware_keycode - 8,
-+                    event.state,
-+                    -1,
-+                    NULL,
-+                    _process_key_event_reply_done,
-+                    data);
-+            g_source_set_callback (source, _process_key_event_count_cb,
-+                                   data, NULL);
-+            while (data->count)
-+                g_main_context_iteration (NULL, TRUE);
-+            if (source->ref_count > 0) {
-+                /* g_source_get_id() could causes a SEGV */
-+                g_info ("Broken GSource.ref_count and maybe a timing "
-+                        "issue in %p.", source);
-+            }
-+            retval = data->retval;
-+            g_slice_free (ProcessKeyEventReplyData, data);
-+
-+            if (g_hash_table_lookup (_connections,
-+                                     GINT_TO_POINTER ((gint)connect_id))
-+                == NULL) {
-+                return 1;
-+            }
-+        }
-+
-+        if (retval) {
-+            if (! x11ic->has_preedit_area) {
-+                _xim_set_cursor_location (x11ic);
-+            }
-+            return 1;
-+        }
-+
-+        memset (&fe, 0, sizeof (fe));
-+
-+        fe.major_code = XIM_FORWARD_EVENT;
-+        fe.icid = x11ic->icid;
-+        fe.connect_id = x11ic->connect_id;
-+        fe.sync_bit = 0;
-+        fe.serial_number = 0L;
-+        fe.event = call_data->event;
-+
-+        IMForwardEvent (_xims, (XPointer) &fe);
-+
-+        retval = 1;
-+        break;
-+    }
-+    default: {
-         IMForwardEventStruct *pfe;
- 
-         pfe = g_slice_new0 (IMForwardEventStruct);
-@@ -569,6 +686,7 @@ xim_forward_event (XIMS xims, IMForwardEventStruct *call_data)
-                                       pfe);
-         retval = 1;
-     }
-+    }
-     return retval;
- }
- 
-@@ -1026,23 +1144,26 @@ _context_disabled_cb (IBusInputContext *context,
-     _xim_preedit_end (_xims, x11ic);
- }
- 
--static gboolean
--_get_boolean_env(const gchar *name,
--                 gboolean     defval)
-+static char
-+_get_char_env (const gchar *name,
-+               char         defval)
- {
-     const gchar *value = g_getenv (name);
- 
-     if (value == NULL)
--      return defval;
-+        return defval;
- 
-     if (g_strcmp0 (value, "") == 0 ||
-         g_strcmp0 (value, "0") == 0 ||
-         g_strcmp0 (value, "false") == 0 ||
-         g_strcmp0 (value, "False") == 0 ||
--        g_strcmp0 (value, "FALSE") == 0)
--      return FALSE;
-+        g_strcmp0 (value, "FALSE") == 0) {
-+        return 0;
-+    } else if (!g_strcmp0 (value, "2")) {
-+        return 2;
-+    }
- 
--    return TRUE;
-+    return 1;
- }
- 
- static void
-@@ -1059,7 +1180,7 @@ _init_ibus (void)
-                         G_CALLBACK (_bus_disconnected_cb), NULL);
- 
-     /* https://github.com/ibus/ibus/issues/1713 */
--    _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", TRUE);
-+    _use_sync_mode = _get_char_env ("IBUS_ENABLE_SYNC_MODE", 2);
- }
- 
- static void
-diff --git a/src/ibustypes.h b/src/ibustypes.h
-index a8eee319..ba2a0010 100644
---- a/src/ibustypes.h
-+++ b/src/ibustypes.h
-@@ -124,6 +124,7 @@ typedef enum {
-     IBUS_CAP_SURROUNDING_TEXT   = 1 << 5,
-     IBUS_CAP_OSK                = 1 << 6,
-     IBUS_CAP_SYNC_PROCESS_KEY   = 1 << 7,
-+    IBUS_CAP_SYNC_PROCESS_KEY_V2 = IBUS_CAP_SYNC_PROCESS_KEY,
- } IBusCapabilite;
- 
- /**
--- 
-2.37.3
-
-From 2719e936cc1f1f26f414b339a7f4f0e48331732f Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Tue, 22 Nov 2022 21:47:01 +0900
-Subject: [PATCH] src/tests: Fallback gtk-query-immodules-3.0 for Ubuntu
- 22.04
-
----
- src/tests/runtest | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/tests/runtest b/src/tests/runtest
-index a229140a..036dc771 100755
---- a/src/tests/runtest
-+++ b/src/tests/runtest
-@@ -44,6 +44,10 @@ MACHINE=`uname -m`
- if test x"$MACHINE" = xx86_64 ; then
-     GTK_QUERY_MODULE=gtk-query-immodules-3.0-64
- fi
-+which $GTK_QUERY_MODULE
-+if [ $? -ne 0 ] ; then
-+    GTK_QUERY_MODULE=gtk-query-immodules-3.0
-+fi
- 
- retval=0
- 
--- 
-2.37.3
-
-From 2555fa9781ccb40445d8a344ec180ff654e0c5f1 Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 2 Dec 2022 13:41:39 +0900
-Subject: [PATCH] src/tests: Fix Connection refused in ibus-bus
-
-ibus-bus is failed in Ubuntu 22.04 under GitHub action + Docer
-with the warning of:
-"Unable to connect to ibus: Could not connect: Connection refused"
-during ibus_bus_new_async()'s callback if IBus socket file is
-deleted after ibus_bus_exit_async()'s callback is called.
----
- src/tests/ibus-bus.c | 70 +++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 66 insertions(+), 4 deletions(-)
-
-diff --git a/src/tests/ibus-bus.c b/src/tests/ibus-bus.c
-index a2af0bb2..d6b105cf 100644
---- a/src/tests/ibus-bus.c
-+++ b/src/tests/ibus-bus.c
-@@ -802,6 +802,33 @@ start_set_preload_engines_async (void)
-             NULL); /* user_data */
- }
- 
-+static void
-+_socket_changed_cb (GFileMonitor       *monitor,
-+                    GFile              *file,
-+                    GFile              *other_file,
-+                    GFileMonitorEvent   event_type,
-+                    IBusBus            *bus)
-+{
-+    switch (event_type) {
-+    case G_FILE_MONITOR_EVENT_CHANGED:
-+        g_debug ("IBus socket file is changed");
-+        call_next_async_function ();
-+        g_signal_handlers_disconnect_by_func (monitor,
-+                                              G_CALLBACK (_socket_changed_cb),
-+                                              NULL);
-+        g_object_unref (monitor);
-+        break;
-+    case G_FILE_MONITOR_EVENT_CREATED:
-+        g_debug ("IBus socket file is created");
-+        break;
-+    case G_FILE_MONITOR_EVENT_DELETED:
-+        g_debug ("IBus socket file is deleted");
-+        break;
-+    default:
-+        g_debug ("IBus socket file's status is %d\n", event_type);
-+    }
-+}
-+
- static void
- finish_exit_async (GObject *source_object,
-                    GAsyncResult *res,
-@@ -811,15 +838,25 @@ finish_exit_async (GObject *source_object,
-     gboolean result = ibus_bus_exit_async_finish (bus,
-                                                   res,
-                                                   &error);
-+    gboolean has_socket_path = GPOINTER_TO_INT (user_data);
-+    if (error) {
-+        g_warning ("Failed to ibus_bus_exit(): %s", error->message);
-+        g_error_free (error);
-+    }
-     g_assert (result);
--    g_debug ("ibus_bus_exit_finish: OK");
--    g_usleep (G_USEC_PER_SEC);
--    call_next_async_function ();
-+    if (has_socket_path == FALSE) {
-+        g_debug ("ibus_bus_exit_finish: OK socket file: none");
-+        g_usleep (G_USEC_PER_SEC);
-+        call_next_async_function ();
-+    } else {
-+        g_debug ("ibus_bus_exit_finish: OK socket file: monitored");
-+    }
- }
- 
- static void
- start_exit_async (void)
- {
-+    gboolean has_socket_path = FALSE;
-     /* When `./runtest ibus-bus` runs, ibus-daemon sometimes failed to
-      * restart because closing a file descriptor was failed in
-      * bus/server.c:_restart_server() with a following error:
-@@ -828,12 +865,37 @@ start_exit_async (void)
-      * fail to restart ibus-daemon.
-      */
-     g_usleep (G_USEC_PER_SEC);
-+    /* IBus socket file can be deleted after finish_exit_async() is called
-+     * so the next ibus_bus_new_async() in test_bus_new_async() could be failed
-+     * if the socket file is deleted after ibus_bus_new_async() is called
-+     * in case that the socket file is not monitored.
-+     */
-+    if (!g_getenv ("IBUS_ADDRESS")) {
-+        const gchar *address_path = ibus_get_socket_path ();
-+        GFile *file;
-+        GError *error = NULL;
-+        GFileMonitor *monitor;
-+
-+        g_assert (address_path);
-+        file = g_file_new_for_path (address_path);
-+        g_assert (file);
-+        has_socket_path = TRUE;
-+        monitor = g_file_monitor (file, G_FILE_MONITOR_NONE, NULL, &error);
-+        if (error) {
-+            g_warning ("Failed to monitor socket file: %s", error->message);
-+            g_error_free (error);
-+        }
-+        g_assert (monitor);
-+        g_signal_connect (monitor, "changed",
-+                          G_CALLBACK (_socket_changed_cb), NULL);
-+        g_object_unref (file);
-+    }
-     ibus_bus_exit_async (bus,
-                          TRUE, /* restart */
-                          -1, /* timeout */
-                          NULL, /* cancellable */
-                          finish_exit_async,
--                         NULL); /* user_data */
-+                         GINT_TO_POINTER (has_socket_path)); /* user_data */
- }
- 
- static gboolean
--- 
-2.37.3
-
-From 82673a5af145007a8d78b376574a947569e7d81d Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Thu, 5 Jan 2023 22:01:48 +0900
-Subject: [PATCH] src: Convert gtk_compose_seqs_compact to GResource
-
-en-US Compose table had been a compact array with a special
-algorithm but now it's converted to the general compose table
-similar to other language compose tables and saved to GResource.
----
- configure.ac                        |   37 +-
- src/Makefile.am                     |   68 +-
- src/compose/Makefile.am             |   33 +
- src/compose/sequences-big-endian    |    0
- src/compose/sequences-little-endian |    0
- src/gencomposetable.c               |  118 +
- src/gtkimcontextsimpleseqs.h        | 5338 ---------------------------
- src/ibus.gresources.xml.in          |    6 +
- src/ibuscomposetable.c              |  509 +--
- src/ibuscomposetable.h              |   29 +-
- src/ibusenginesimple.c              |  109 +-
- src/ibusenginesimpleprivate.h       |   29 +-
- src/ibusshare.c                     |    4 +-
- 13 files changed, 559 insertions(+), 5721 deletions(-)
- create mode 100644 src/compose/Makefile.am
- create mode 100644 src/compose/sequences-big-endian
- create mode 100644 src/compose/sequences-little-endian
- create mode 100644 src/gencomposetable.c
- delete mode 100644 src/gtkimcontextsimpleseqs.h
- create mode 100644 src/ibus.gresources.xml.in
-
-diff --git a/configure.ac b/configure.ac
-index 2344523a..a84c7130 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -3,8 +3,8 @@
- # ibus - The Input Bus
- #
- # Copyright (c) 2007-2016 Peng Huang <shawn.p.huang@gmail.com>
--# Copyright (c) 2015-2022 Takao Fujiwara <takao.fujiwara1@gmail.com>
--# Copyright (c) 2007-2022 Red Hat, Inc.
-+# Copyright (c) 2015-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+# Copyright (c) 2007-2023 Red Hat, Inc.
- #
- # This library is free software; you can redistribute it and/or
- # modify it under the terms of the GNU Lesser General Public
-@@ -151,6 +151,37 @@ AC_CHECK_FUNCS(daemon)
- AC_CHECK_LIB(c, dlclose, LIBDL="", [AC_CHECK_LIB(dl, dlclose, LIBDL="-ldl")])
- AC_SUBST(LIBDL)
- 
-+# Check endianness.
-+AC_MSG_CHECKING([build system endianness])
-+ENDIAN=unknown
-+AC_RUN_IFELSE(
-+    [AC_LANG_PROGRAM(
-+        [[
-+            #include <endian.h>
-+            #if __BYTE_ORDER != __LITTLE_ENDIAN
-+            #error
-+            #endif
-+        ]]
-+    )],
-+    [ENDIAN=little]
-+)
-+AC_RUN_IFELSE(
-+    [AC_LANG_PROGRAM(
-+        [[
-+            #include <endian.h>
-+            #if __BYTE_ORDER != __BIG_ENDIAN
-+            #error
-+            #endif
-+        ]]
-+    )],
-+    [ENDIAN=big]
-+)
-+if test x"$ENDIAN" != xlittle  -a x"$ENDIAN" != xbig; then
-+    AC_MSG_ERROR([Cannot deermine endianness without endian.h])
-+fi
-+AC_MSG_RESULT($ENDIAN)
-+AC_SUBST(ENDIAN)
-+
- # Check packages.
- # Check glib2.
- AM_PATH_GLIB_2_0
-@@ -844,6 +875,7 @@ m4/Makefile
- portal/Makefile
- setup/Makefile
- src/Makefile
-+src/compose/Makefile
- src/ibusversion.h
- src/tests/Makefile
- tools/Makefile
-@@ -863,6 +895,7 @@ Build options:
-   Install prefix                $prefix
-   Build shared libs             $enable_shared
-   Build static libs             $enable_static
-+  Build endianness              $ENDIAN
-   CFLAGS                        $CFLAGS
-   PYTHON                        $PYTHON
-   PYTHON2                       $PYTHON2
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 578694b5..426376dd 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -3,7 +3,7 @@
- # ibus - The Input Bus
- #
- # Copyright (c) 2007-2015 Peng Huang <shawn.p.huang@gmail.com>
--# Copyright (c) 2015-2021 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+# Copyright (c) 2015-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
- # Copyright (c) 2007-2017 Red Hat, Inc.
- #
- # This library is free software; you can redistribute it and/or
-@@ -27,7 +27,7 @@ if ENABLE_TESTS
- TESTS_DIR = tests
- endif
- 
--SUBDIRS = . $(TESTS_DIR)
-+SUBDIRS = . compose $(TESTS_DIR)
- 
- # libibus = libibus-@IBUS_API_VERSION@.la
- libibus = libibus-1.0.la
-@@ -41,7 +41,7 @@ INTROSPECTION_COMPILER_ARGS = \
-     $(NULL)
- INTROSPECTION_GIRS =
- CLEANFILES =
--noinst_PROGRAMS =
-+noinst_PROGRAMS = gen-internal-compose-table
- 
- # C preprocessor flags
- AM_CPPFLAGS =                                           \
-@@ -111,6 +111,7 @@ libibus_1_0_la_SOURCES =    \
-     ibuscomposetable.c      \
-     ibusenumtypes.c         \
-     ibusmarshalers.c        \
-+    ibusresources.c         \
-     $(ibus_sources)         \
-     $(NULL)
- ibus_marshalers_sources =   \
-@@ -121,6 +122,10 @@ ibus_enumtypes_sources =    \
-     ibusenumtypes.c         \
-     ibusenumtypes.h         \
-     $(NULL)
-+ibus_resources_sources =    \
-+    ibusresources.c         \
-+    ibusresources.h         \
-+    $(NULL)
- ibus_headers =              \
-     ibus.h                  \
-     ibusaccelgroup.h        \
-@@ -171,11 +176,11 @@ ibusinclude_HEADERS =       \
-     $(ibus_public_headers)  \
-     $(NULL)
- ibus_private_headers =          \
--    gtkimcontextsimpleseqs.h    \
-     ibuscomposetable.h          \
-     ibusemojigen.h              \
-     ibusenginesimpleprivate.h   \
-     ibusinternal.h              \
-+    ibusresources.h             \
-     ibusunicodegen.h            \
-     keyname-table.h             \
-     $(NULL)
-@@ -183,9 +188,24 @@ noinst_HEADERS =            \
-     $(ibus_private_headers) \
-     $(NULL)
- 
-+gen_internal_compose_table_SOURCES = \
-+    gencomposetable.c   \
-+    ibuscomposetable.c  \
-+    ibuserror.c         \
-+    ibuskeynames.c      \
-+    ibuskeyuni.c        \
-+    $(NULL)
-+gen_internal_compose_table_CFLAGS = $(AM_CFLAGS)
-+gen_internal_compose_table_LDADD = \
-+    @GLIB2_LIBS@        \
-+    @GOBJECT2_LIBS@     \
-+    @GIO2_LIBS@         \
-+    $(NULL)
-+
- BUILT_SOURCES =                 \
-     $(ibus_marshalers_sources)  \
-     $(ibus_enumtypes_sources)   \
-+    $(ibus_resources_sources)   \
-     $(NULL)
- 
- if HAVE_INTROSPECTION
-@@ -242,6 +262,28 @@ ibusmarshalers.c: ibusmarshalers.h ibusmarshalers.list
- 	$(GLIB_GENMARSHAL) --prefix=_ibus_marshal $(srcdir)/ibusmarshalers.list --body --internal) > $@.tmp && \
- 	mv $@.tmp $@
- 
-+# gen GResource
-+ibus.gresources.xml: ibus.gresources.xml.in
-+	$(AM_V_GEN) sed -e "s|\@ENDIAN\@|$(ENDIAN)|g" \
-+	$< > $@.tmp && \
-+	mv $@.tmp $@
-+
-+compose/sequences-$(ENDIAN)-endian: gen-internal-compose-table
-+	$(AM_V_GEN) $(MKDIR_P) $(builddir)/compose && \
-+	$(builddir)/gen-internal-compose-table && \
-+	mv $(builddir)/sequences-big-endian $(builddir)/compose && \
-+	mv $(builddir)/sequences-little-endian $(builddir)/compose
-+
-+ibusresources.h: ibus.gresources.xml compose/sequences-$(ENDIAN)-endian
-+	$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --generate-header --internal \
-+	    --target=ibusresources.h --external-data --c-name _ibus \
-+	    --manual-register ibus.gresources.xml
-+
-+ibusresources.c: ibus.gresources.xml compose/sequences-$(ENDIAN)-endian
-+	$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --generate-source --internal \
-+	    --target=ibusresources.c --c-name _ibus --manual-register \
-+	    ibus.gresources.xml
-+
- if ENABLE_EMOJI_DICT
- AM_CPPFLAGS += -DENABLE_EMOJI_DICT
- 
-@@ -330,10 +372,6 @@ emoji_parser_LDADD =            \
-     $(GLIB2_LIBS)               \
-     $(GOBJECT2_LIBS)            \
-     $(NULL)
--
--clean-local:
--	-rm -rf dicts
--	$(NULL)
- endif
- 
- if ENABLE_UNICODE_DICT
-@@ -377,14 +415,11 @@ unicode_parser_LDADD =          \
-     $(GLIB2_LIBS)               \
-     $(libibus)                  \
-     $(NULL)
--
--clean-local:
--	-rm -rf dicts
--	$(NULL)
- endif
- 
- EXTRA_DIST =                    \
-     emoji-parser.c              \
-+    ibus.gresources.xml.in      \
-     ibusversion.h.in            \
-     ibusmarshalers.list         \
-     ibusenumtypes.h.template    \
-@@ -394,6 +429,7 @@ EXTRA_DIST =                    \
- 
- CLEANFILES +=                   \
-     $(BUILT_SOURCES)            \
-+    ibus.gresources.xml         \
-     stamp-ibusmarshalers.h      \
-     stamp-ibusenumtypes.h       \
-     $(NULL)
-@@ -410,4 +446,12 @@ DISTCLEANFILES =                \
-     ibusversion.h               \
-     $(NULL)
- 
-+clean-local:
-+	-rm -rf dicts;                                                      \
-+	if test x"$(srcdir)" != x"$(builddir)" ; then                       \
-+	    rm -f  $(builddir)/compose/sequences-big-endian;                \
-+	    rm -f  $(builddir)/compose/sequences-little-endian;             \
-+	fi;
-+	$(NULL)
-+
- -include $(top_srcdir)/git.mk
-diff --git a/src/compose/Makefile.am b/src/compose/Makefile.am
-new file mode 100644
-index 00000000..3aa9f8c7
---- /dev/null
-+++ b/src/compose/Makefile.am
-@@ -0,0 +1,33 @@
-+# vim:set noet ts=4:
-+#
-+# ibus - The Input Bus
-+#
-+# Copyright (c) 2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+# Copyright (c) 2023 Red Hat, Inc.
-+#
-+# This library is free software; you can redistribute it and/or
-+# modify it under the terms of the GNU Lesser General Public
-+# License as published by the Free Software Foundation; either
-+# version 2.1 of the License, or (at your option) any later version.
-+#
-+# This library is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+# Lesser General Public License for more details.
-+#
-+# You should have received a copy of the GNU Lesser General Public
-+# License along with this library; if not, write to the Free Software
-+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
-+# USA
-+
-+MAINTAINERCLEANFILES = \
-+    sequences-big-endian \
-+    sequences-little-endian \
-+    $(NULL)
-+
-+EXTRA_DIST = \
-+    sequences-big-endian \
-+    sequences-little-endian \
-+    $(NULL)
-+
-+-include $(top_srcdir)/git.mk
-diff --git a/src/compose/sequences-big-endian b/src/compose/sequences-big-endian
-new file mode 100644
-index 00000000..e69de29b
-diff --git a/src/compose/sequences-little-endian b/src/compose/sequences-little-endian
-new file mode 100644
-index 00000000..e69de29b
-diff --git a/src/gencomposetable.c b/src/gencomposetable.c
-new file mode 100644
-index 00000000..3fe6ff86
---- /dev/null
-+++ b/src/gencomposetable.c
-@@ -0,0 +1,118 @@
-+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
-+/* vim:set et sts=4: */
-+/* ibus - The Input Bus
-+ * Copyright (C) 2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2023 Red Hat, Inc.
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with this library; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
-+ * USA
-+ */
-+
-+#include <ibus.h>
-+#include <glib.h>
-+#include <glib/gstdio.h>
-+#include <errno.h>
-+
-+#include "ibuscomposetable.h"
-+#include "ibusenginesimpleprivate.h"
-+
-+#define X11_DATADIR X11_DATA_PREFIX "/share/X11/locale"
-+
-+
-+static void
-+save_compose_table_endianness (IBusComposeTableEx *compose_table,
-+                               gboolean            reverse_endianness)
-+{
-+    GVariant *variant_table = NULL;
-+    const char *contents = NULL;
-+    gsize length = 0;
-+    const char *destname_be = "sequences-big-endian";
-+    const char *destname_le = "sequences-little-endian";
-+    const char *destname;
-+    GError *error = NULL;
-+
-+    variant_table = ibus_compose_table_serialize (compose_table,
-+                                                  reverse_endianness);
-+    g_assert (variant_table);
-+    contents = g_variant_get_data (variant_table);
-+    length = g_variant_get_size (variant_table);
-+    g_assert (contents && (length > 0));
-+#if G_BYTE_ORDER == G_BIG_ENDIAN
-+    if (!reverse_endianness)
-+        destname = destname_be;
-+    else
-+        destname = destname_le;
-+#else
-+    if (!reverse_endianness)
-+        destname = destname_le;
-+    else
-+        destname = destname_be;
-+#endif
-+    if (g_file_test (destname, G_FILE_TEST_EXISTS))
-+        g_unlink (destname);
-+    if (!g_file_set_contents (destname, contents, length, &error)) {
-+        g_warning ("Failed to save compose table %s: %s",
-+                   destname, error->message);
-+        g_error_free (error);
-+    }
-+    g_variant_unref (variant_table);
-+}
-+
-+
-+int
-+main (int argc, char *argv[])
-+{
-+    char * const sys_langs[] = { "en_US.UTF-8", "en_US", "en", NULL };
-+    char * const *sys_lang = NULL;
-+    char *path = NULL;
-+    IBusComposeTableEx *compose_table;
-+    char *basename = NULL;
-+
-+    path = g_strdup ("./Compose");
-+    if (!path || !g_file_test (path, G_FILE_TEST_EXISTS)) {
-+        g_clear_pointer (&path, g_free);
-+        for (sys_lang = sys_langs; *sys_lang; sys_lang++) {
-+            path = g_build_filename (X11_DATADIR, *sys_lang,
-+                                     "Compose", NULL);
-+            if (!path)
-+                continue;
-+            if (g_file_test (path, G_FILE_TEST_EXISTS))
-+                break;
-+        }
-+    }
-+    if (!path) {
-+        g_warning ("en_US compose file is not found in %s.", X11_DATADIR);
-+        return 1;
-+    } else {
-+        g_debug ("Create a cache of %s", path);
-+    }
-+    g_setenv ("IBUS_COMPOSE_CACHE_DIR", ".", TRUE);
-+    compose_table = ibus_compose_table_load_cache (path);
-+    if (!compose_table &&
-+        (compose_table = ibus_compose_table_new_with_file (path, NULL))
-+           == NULL) {
-+        g_warning ("Failed to generate the compose table.");
-+        return 1;
-+    }
-+    g_free (path);
-+    basename = g_strdup_printf ("%08x.cache", compose_table->id);
-+    g_debug ("Saving cache id %s", basename);
-+    g_free (basename);
-+
-+
-+    save_compose_table_endianness (compose_table, FALSE);
-+    save_compose_table_endianness (compose_table, TRUE);
-+    return 0;
-+}
-diff --git a/src/gtkimcontextsimpleseqs.h b/src/gtkimcontextsimpleseqs.h
-deleted file mode 100644
-index ffa5f125..00000000
---- a/src/gtkimcontextsimpleseqs.h
-+++ /dev/null
-@@ -1,5338 +0,0 @@
--/* GTK - The GIMP Tool Kit
-- * Copyright (C) 2007, 2008 GNOME Foundation
-- *
-- * This library is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU Lesser General Public
-- * License as published by the Free Software Foundation; either
-- * version 2 of the License, or (at your option) any later version.
-- *
-- * This library is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-- * Lesser General Public License for more details.
-- *
-- * You should have received a copy of the GNU Lesser General Public
-- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
-- */
--
--/*
-- * File auto-generated from script found at http://bugzilla.gnome.org/show_bug.cgi?id=321896
-- * using the input files
-- *  Input   : http://cgit.freedesktop.org/xorg/lib/libX11/plain/nls/en_US.UTF-8/Compose.pre
-- *  Input   : http://www.cl.cam.ac.uk/~mgk25/ucs/keysyms.txt
-- *  Input   : http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
-- *
-- * This table is optimised for space and requires special handling to access the content.
-- * This table is used solely by http://svn.gnome.org/viewcvs/gtk%2B/trunk/gtk/gtkimcontextsimple.c
-- * 
-- * The resulting file is placed at http://svn.gnome.org/viewcvs/gtk%2B/trunk/gtk/gtkimcontextsimpleseqs.h
-- * This file is described in bug report http://bugzilla.gnome.org/show_bug.cgi?id=321896
-- */
--
--/*
-- * Modified by the GTK+ Team and others 2007, 2008.  See the AUTHORS
-- * file for a list of people on the GTK+ Team.  See the ChangeLog
-- * files for a list of changes.  These files are distributed with
-- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
-- */
--
--#ifndef __GTK_IM_CONTEXT_SIMPLE_SEQS_H__
--#define __GTK_IM_CONTEXT_SIMPLE_SEQS_H__
--
--/* === These are the original comments of the file; we keep for historical purposes ===
-- *
-- * The following table was generated from the X compose tables include with
-- * XFree86 4.0 using a set of Perl scripts. Contact Owen Taylor <otaylor@redhat.com>
-- * to obtain the relevant perl scripts.
-- *
-- * The following compose letter letter sequences confliced
-- *   Dstroke/dstroke and ETH/eth; resolved to Dstroke (Croation, Vietnamese, Lappish), over
-- *                                ETH (Icelandic, Faroese, old English, IPA)  [ D- -D d- -d ]
-- *   Amacron/amacron and ordfeminine; resolved to ordfeminine                 [ _A A_ a_ _a ]
-- *   Amacron/amacron and Atilde/atilde; resolved to atilde                    [ -A A- a- -a ]
-- *   Omacron/Omacron and masculine; resolved to masculine                     [ _O O_ o_ _o ]
-- *   Omacron/omacron and Otilde/atilde; resolved to otilde                    [ -O O- o- -o ]
-- *
-- * [ Amacron and Omacron are in Latin-4 (Baltic). ordfeminine and masculine are used for
-- *   spanish. atilde and otilde are used at least for Portuguese ]
-- *
-- *   at and Aring; resolved to Aring                                          [ AA ]
-- *   guillemotleft and caron; resolved to guillemotleft                       [ << ]
-- *   ogonek and cedilla; resolved to cedilla                                  [ ,, ]
-- *
-- * This probably should be resolved by first checking an additional set of compose tables
-- * that depend on the locale or selected input method.
-- */
--
--static const guint16 gtk_compose_seqs_compact[] = {
--IBUS_KEY_Greek_accentdieresis, 180, 184, 184, 184, 184, 
--IBUS_KEY_dead_grave, 184, 246, 333, 545, 545, 
--IBUS_KEY_dead_acute, 545, 609, 705, 981, 981, 
--IBUS_KEY_dead_circumflex, 981, 1105, 1105, 1305, 1305, 
--IBUS_KEY_dead_tilde, 1305, 1389, 1452, 1592, 1592, 
--IBUS_KEY_dead_macron, 1592, 1638, 1656, 1728, 1728, 
--IBUS_KEY_dead_breve, 1728, 1778, 1778, 1802, 1802, 
--IBUS_KEY_dead_abovedot, 1802, 1832, 1835, 1871, 1871, 
--IBUS_KEY_dead_diaeresis, 1871, 1959, 1971, 1995, 1995, 
--IBUS_KEY_dead_abovering, 1995, 2005, 2005, 2005, 2005, 
--IBUS_KEY_dead_doubleacute, 2005, 2015, 2015, 2015, 2015, 
--IBUS_KEY_dead_caron, 2015, 2057, 2057, 2065, 2065, 
--IBUS_KEY_dead_cedilla, 2065, 2077, 2083, 2083, 2083, 
--IBUS_KEY_dead_ogonek, 2083, 2093, 2093, 2093, 2093, 
--IBUS_KEY_dead_iota, 2093, 2115, 2214, 2646, 3306, 
--IBUS_KEY_dead_voiced_sound, 3306, 3352, 3352, 3352, 3352, 
--IBUS_KEY_dead_semivoiced_sound, 3352, 3362, 3362, 3362, 3362, 
--IBUS_KEY_dead_belowdot, 3362, 3378, 3378, 3394, 3394, 
--IBUS_KEY_dead_hook, 3394, 3472, 3475, 3531, 3531, 
--IBUS_KEY_dead_horn, 3531, 3541, 3541, 3541, 3541, 
--IBUS_KEY_dead_stroke, 3541, 3629, 3641, 3641, 3641, 
--IBUS_KEY_dead_psili, 3641, 3669, 3669, 3669, 3669, 
--IBUS_KEY_dead_dasia, 3669, 3701, 3701, 3701, 3701, 
--IBUS_KEY_dead_belowring, 3701, 3703, 3703, 3703, 3703, 
--IBUS_KEY_dead_belowtilde, 3703, 3705, 3705, 3705, 3705, 
--IBUS_KEY_dead_belowdiaeresis, 3705, 3705, 3708, 3708, 3708, 
--IBUS_KEY_dead_belowcomma, 3708, 3722, 3722, 3722, 3722, 
--IBUS_KEY_dead_currency, 3722, 3820, 3826, 3826, 3826, 
--IBUS_KEY_dead_greek, 3826, 3928, 3952, 3952, 3952, 
--IBUS_KEY_Multi_key, 3952, 3952, 10495, 14203, 16083, 
--IBUS_KEY_Greek_iota,  0x0390, 
--IBUS_KEY_Greek_upsilon,  0x03B0, 
--IBUS_KEY_space,  0x0060, 
--IBUS_KEY_V,  0x01DB, 
--IBUS_KEY_v,  0x01DC, 
--IBUS_KEY_nobreakspace,  0x0300, 
--IBUS_KEY_Abreve,  0x1EB0, 
--IBUS_KEY_abreve,  0x1EB1, 
--IBUS_KEY_Emacron,  0x1E14, 
--IBUS_KEY_emacron,  0x1E15, 
--IBUS_KEY_Omacron,  0x1E50, 
--IBUS_KEY_omacron,  0x1E51, 
--IBUS_KEY_Cyrillic_ie,  0x0450, 
--IBUS_KEY_Cyrillic_i,  0x045D, 
--IBUS_KEY_Cyrillic_IE,  0x0400, 
--IBUS_KEY_Cyrillic_I,  0x040D, 
--IBUS_KEY_Greek_iotadieresis,  0x1FD2, 
--IBUS_KEY_Greek_upsilondieresis,  0x1FE2, 
--IBUS_KEY_Greek_ALPHA,  0x1FBA, 
--IBUS_KEY_Greek_EPSILON,  0x1FC8, 
--IBUS_KEY_Greek_ETA,  0x1FCA, 
--IBUS_KEY_Greek_IOTA,  0x1FDA, 
--IBUS_KEY_Greek_OMICRON,  0x1FF8, 
--IBUS_KEY_Greek_UPSILON,  0x1FEA, 
--IBUS_KEY_Greek_OMEGA,  0x1FFA, 
--IBUS_KEY_Greek_alpha,  0x1F70, 
--IBUS_KEY_Greek_epsilon,  0x1F72, 
--IBUS_KEY_Greek_eta,  0x1F74, 
--IBUS_KEY_Greek_iota,  0x1F76, 
--IBUS_KEY_Greek_omicron,  0x1F78, 
--IBUS_KEY_Greek_upsilon,  0x1F7A, 
--IBUS_KEY_Greek_omega,  0x1F7C, 
--IBUS_KEY_dead_grave,  0x0060, 
--IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota,  0x1FD2, 
--IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon,  0x1FE2, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F0A, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON,  0x1F1A, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F2A, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA,  0x1F3A, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON,  0x1F4A, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1F6A, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F02, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon,  0x1F12, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F22, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota,  0x1F32, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron,  0x1F42, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon,  0x1F52, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1F62, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F0B, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON,  0x1F1B, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F2B, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA,  0x1F3B, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON,  0x1F4B, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON,  0x1F5B, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1F6B, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F03, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon,  0x1F13, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F23, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota,  0x1F33, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron,  0x1F43, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon,  0x1F53, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1F63, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U,  0x01DB, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u,  0x01DC, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota,  0x1FD2, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon,  0x1FE2, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F0B, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON,  0x1F1B, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F2B, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA,  0x1F3B, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON,  0x1F4B, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON,  0x1F5B, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1F6B, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F03, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon,  0x1F13, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F23, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota,  0x1F33, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron,  0x1F43, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon,  0x1F53, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1F63, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F0A, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON,  0x1F1A, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F2A, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA,  0x1F3A, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON,  0x1F4A, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1F6A, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F02, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon,  0x1F12, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F22, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota,  0x1F32, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron,  0x1F42, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon,  0x1F52, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1F62, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O,  0x1EDC, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U,  0x1EEA, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o,  0x1EDD, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u,  0x1EEB, 
--IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A,  0x1EB0, 
--IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a,  0x1EB1, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A,  0x1EA6, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E,  0x1EC0, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O,  0x1ED2, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a,  0x1EA7, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e,  0x1EC1, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o,  0x1ED3, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_E,  0x1E14, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_O,  0x1E50, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_e,  0x1E15, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o,  0x1E51, 
--IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A,  0x1EB0, 
--IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a,  0x1EB1, 
--IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_E,  0x1E14, 
--IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_O,  0x1E50, 
--IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_e,  0x1E15, 
--IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_o,  0x1E51, 
--IBUS_KEY_space,  0x0027, 
--IBUS_KEY_V,  0x01D7, 
--IBUS_KEY_v,  0x01D8, 
--IBUS_KEY_nobreakspace,  0x0301, 
--IBUS_KEY_Abreve,  0x1EAE, 
--IBUS_KEY_abreve,  0x1EAF, 
--IBUS_KEY_Emacron,  0x1E16, 
--IBUS_KEY_emacron,  0x1E17, 
--IBUS_KEY_Utilde,  0x1E78, 
--IBUS_KEY_omacron,  0x1E53, 
--IBUS_KEY_utilde,  0x1E79, 
--IBUS_KEY_Cyrillic_ghe,  0x0453, 
--IBUS_KEY_Cyrillic_ka,  0x045C, 
--IBUS_KEY_Cyrillic_GHE,  0x0403, 
--IBUS_KEY_Cyrillic_KA,  0x040C, 
--IBUS_KEY_Greek_iotadieresis,  0x0390, 
--IBUS_KEY_Greek_upsilondieresis,  0x03B0, 
--IBUS_KEY_Greek_ALPHA,  0x0386, 
--IBUS_KEY_Greek_EPSILON,  0x0388, 
--IBUS_KEY_Greek_ETA,  0x0389, 
--IBUS_KEY_Greek_IOTA,  0x038A, 
--IBUS_KEY_Greek_OMICRON,  0x038C, 
--IBUS_KEY_Greek_UPSILON,  0x038E, 
--IBUS_KEY_Greek_OMEGA,  0x038F, 
--IBUS_KEY_Greek_alpha,  0x03AC, 
--IBUS_KEY_Greek_epsilon,  0x03AD, 
--IBUS_KEY_Greek_eta,  0x03AE, 
--IBUS_KEY_Greek_iota,  0x03AF, 
--IBUS_KEY_Greek_omicron,  0x03CC, 
--IBUS_KEY_Greek_upsilon,  0x03CD, 
--IBUS_KEY_Greek_omega,  0x03CE, 
--IBUS_KEY_dead_acute,  0x00B4, 
--IBUS_KEY_dead_diaeresis, IBUS_KEY_space,  0x0385, 
--IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota,  0x0390, 
--IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon,  0x03B0, 
--IBUS_KEY_dead_stroke, IBUS_KEY_O,  0x01FE, 
--IBUS_KEY_dead_stroke, IBUS_KEY_o,  0x01FF, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F0C, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON,  0x1F1C, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F2C, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA,  0x1F3C, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON,  0x1F4C, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1F6C, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F04, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon,  0x1F14, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F24, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota,  0x1F34, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron,  0x1F44, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon,  0x1F54, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1F64, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F0D, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON,  0x1F1D, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F2D, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA,  0x1F3D, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON,  0x1F4D, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON,  0x1F5D, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1F6D, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F05, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon,  0x1F15, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F25, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota,  0x1F35, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron,  0x1F45, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon,  0x1F55, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1F65, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_I,  0x1E2E, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U,  0x01D7, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_i,  0x1E2F, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u,  0x01D8, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota,  0x0390, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon,  0x03B0, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F0D, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON,  0x1F1D, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F2D, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA,  0x1F3D, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON,  0x1F4D, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON,  0x1F5D, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1F6D, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F05, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon,  0x1F15, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F25, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota,  0x1F35, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron,  0x1F45, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon,  0x1F55, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1F65, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F0C, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON,  0x1F1C, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F2C, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA,  0x1F3C, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON,  0x1F4C, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1F6C, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F04, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon,  0x1F14, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F24, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota,  0x1F34, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron,  0x1F44, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon,  0x1F54, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1F64, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O,  0x1EDA, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U,  0x1EE8, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o,  0x1EDB, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u,  0x1EE9, 
--IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_C,  0x1E08, 
--IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_c,  0x1E09, 
--IBUS_KEY_Multi_key, IBUS_KEY_slash, IBUS_KEY_O,  0x01FE, 
--IBUS_KEY_Multi_key, IBUS_KEY_slash, IBUS_KEY_o,  0x01FF, 
--IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A,  0x1EAE, 
--IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a,  0x1EAF, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A,  0x1EA4, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E,  0x1EBE, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O,  0x1ED0, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a,  0x1EA5, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e,  0x1EBF, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o,  0x1ED1, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_E,  0x1E16, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_O,  0x1E52, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_e,  0x1E17, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o,  0x1E53, 
--IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A,  0x1EAE, 
--IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a,  0x1EAF, 
--IBUS_KEY_Multi_key, IBUS_KEY_o, IBUS_KEY_A,  0x01FA, 
--IBUS_KEY_Multi_key, IBUS_KEY_o, IBUS_KEY_a,  0x01FB, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O,  0x1E4C, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_U,  0x1E78, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o,  0x1E4D, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_u,  0x1E79, 
--IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_E,  0x1E16, 
--IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_O,  0x1E52, 
--IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_e,  0x1E17, 
--IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_o,  0x1E53, 
--IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_C,  0x1E08, 
--IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_c,  0x1E09, 
--IBUS_KEY_Multi_key, IBUS_KEY_KP_Divide, IBUS_KEY_O,  0x01FE, 
--IBUS_KEY_Multi_key, IBUS_KEY_KP_Divide, IBUS_KEY_o,  0x01FF, 
--IBUS_KEY_space,  0x005E, 
--IBUS_KEY_parenleft,  0x207D, 
--IBUS_KEY_parenright,  0x207E, 
--IBUS_KEY_plus,  0x207A, 
--IBUS_KEY_minus,  0x207B, 
--IBUS_KEY_0,  0x2070, 
--IBUS_KEY_1,  0x00B9, 
--IBUS_KEY_2,  0x00B2, 
--IBUS_KEY_3,  0x00B3, 
--IBUS_KEY_4,  0x2074, 
--IBUS_KEY_5,  0x2075, 
--IBUS_KEY_6,  0x2076, 
--IBUS_KEY_7,  0x2077, 
--IBUS_KEY_8,  0x2078, 
--IBUS_KEY_9,  0x2079, 
--IBUS_KEY_equal,  0x207C, 
--IBUS_KEY_nobreakspace,  0x0302, 
--IBUS_KEY_Agrave,  0x1EA6, 
--IBUS_KEY_Aacute,  0x1EA4, 
--IBUS_KEY_Atilde,  0x1EAA, 
--IBUS_KEY_Egrave,  0x1EC0, 
--IBUS_KEY_Eacute,  0x1EBE, 
--IBUS_KEY_Ograve,  0x1ED2, 
--IBUS_KEY_Oacute,  0x1ED0, 
--IBUS_KEY_Otilde,  0x1ED6, 
--IBUS_KEY_agrave,  0x1EA7, 
--IBUS_KEY_aacute,  0x1EA5, 
--IBUS_KEY_atilde,  0x1EAB, 
--IBUS_KEY_egrave,  0x1EC1, 
--IBUS_KEY_eacute,  0x1EBF, 
--IBUS_KEY_ograve,  0x1ED3, 
--IBUS_KEY_oacute,  0x1ED1, 
--IBUS_KEY_otilde,  0x1ED7, 
--0x2212,  0x207B, 
--0x4E00,  0x3192, 
--0x4E01,  0x319C, 
--0x4E09,  0x3194, 
--0x4E0A,  0x3196, 
--0x4E0B,  0x3198, 
--0x4E19,  0x319B, 
--0x4E2D,  0x3197, 
--0x4E59,  0x319A, 
--0x4E8C,  0x3193, 
--0x4EBA,  0x319F, 
--0x56DB,  0x3195, 
--0x5730,  0x319E, 
--0x5929,  0x319D, 
--0x7532,  0x3199, 
--IBUS_KEY_dead_circumflex,  0x005E, 
--IBUS_KEY_KP_Space,  0x00B2, 
--IBUS_KEY_KP_Add,  0x207A, 
--IBUS_KEY_KP_0,  0x2070, 
--IBUS_KEY_KP_1,  0x00B9, 
--IBUS_KEY_KP_2,  0x00B2, 
--IBUS_KEY_KP_3,  0x00B3, 
--IBUS_KEY_KP_4,  0x2074, 
--IBUS_KEY_KP_5,  0x2075, 
--IBUS_KEY_KP_6,  0x2076, 
--IBUS_KEY_KP_7,  0x2077, 
--IBUS_KEY_KP_8,  0x2078, 
--IBUS_KEY_KP_9,  0x2079, 
--IBUS_KEY_KP_Equal,  0x207C, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_A,  0x1EAC, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_E,  0x1EC6, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_O,  0x1ED8, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_a,  0x1EAD, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_e,  0x1EC7, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_o,  0x1ED9, 
--IBUS_KEY_Multi_key, IBUS_KEY_S, IBUS_KEY_M,  0x2120, 
--IBUS_KEY_Multi_key, IBUS_KEY_S, IBUS_KEY_m,  0x2120, 
--IBUS_KEY_Multi_key, IBUS_KEY_T, IBUS_KEY_M,  0x2122, 
--IBUS_KEY_Multi_key, IBUS_KEY_T, IBUS_KEY_m,  0x2122, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_a,  0x00AA, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_h,  0x02B0, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_i,  0x2071, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_j,  0x02B2, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_l,  0x02E1, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_n,  0x207F, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o,  0x00BA, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_r,  0x02B3, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_s,  0x02E2, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_w,  0x02B7, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_x,  0x02E3, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_y,  0x02B8, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0263,  0x02E0, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0266,  0x02B1, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0279,  0x02B4, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x027B,  0x02B5, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0281,  0x02B6, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0295,  0x02E4, 
--IBUS_KEY_Multi_key, IBUS_KEY_s, IBUS_KEY_M,  0x2120, 
--IBUS_KEY_Multi_key, IBUS_KEY_s, IBUS_KEY_m,  0x2120, 
--IBUS_KEY_Multi_key, IBUS_KEY_t, IBUS_KEY_M,  0x2122, 
--IBUS_KEY_Multi_key, IBUS_KEY_t, IBUS_KEY_m,  0x2122, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_a,  0x00AA, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_h,  0x02B0, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_i,  0x2071, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_j,  0x02B2, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_l,  0x02E1, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_n,  0x207F, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_o,  0x00BA, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_r,  0x02B3, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_s,  0x02E2, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_w,  0x02B7, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_x,  0x02E3, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_y,  0x02B8, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0263,  0x02E0, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0266,  0x02B1, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0279,  0x02B4, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x027B,  0x02B5, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0281,  0x02B6, 
--IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0295,  0x02E4, 
--IBUS_KEY_space,  0x007E, 
--IBUS_KEY_less,  0x2272, 
--IBUS_KEY_equal,  0x2243, 
--IBUS_KEY_greater,  0x2273, 
--IBUS_KEY_nobreakspace,  0x0303, 
--IBUS_KEY_Oacute,  0x1E4C, 
--IBUS_KEY_Odiaeresis,  0x1E4E, 
--IBUS_KEY_Uacute,  0x1E78, 
--IBUS_KEY_oacute,  0x1E4D, 
--IBUS_KEY_odiaeresis,  0x1E4F, 
--IBUS_KEY_uacute,  0x1E79, 
--IBUS_KEY_Abreve,  0x1EB4, 
--IBUS_KEY_abreve,  0x1EB5, 
--IBUS_KEY_Omacron,  0x022C, 
--IBUS_KEY_omacron,  0x022D, 
--IBUS_KEY_Greek_iotadieresis,  0x1FD7, 
--IBUS_KEY_Greek_upsilondieresis,  0x1FE7, 
--IBUS_KEY_Greek_alpha,  0x1FB6, 
--IBUS_KEY_Greek_eta,  0x1FC6, 
--IBUS_KEY_Greek_iota,  0x1FD6, 
--IBUS_KEY_Greek_upsilon,  0x1FE6, 
--IBUS_KEY_Greek_omega,  0x1FF6, 
--0x1F00,  0x1F06, 
--0x1F01,  0x1F07, 
--0x1F08,  0x1F0E, 
--0x1F09,  0x1F0F, 
--0x1F20,  0x1F26, 
--0x1F21,  0x1F27, 
--0x1F28,  0x1F2E, 
--0x1F29,  0x1F2F, 
--0x1F30,  0x1F36, 
--0x1F31,  0x1F37, 
--0x1F38,  0x1F3E, 
--0x1F39,  0x1F3F, 
--0x1F50,  0x1F56, 
--0x1F51,  0x1F57, 
--0x1F59,  0x1F5F, 
--0x1F60,  0x1F66, 
--0x1F61,  0x1F67, 
--0x1F68,  0x1F6E, 
--0x1F69,  0x1F6F, 
--IBUS_KEY_dead_tilde,  0x007E, 
--IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota,  0x1FD7, 
--IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon,  0x1FE7, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F0E, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F2E, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA,  0x1F3E, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1F6E, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F06, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F26, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota,  0x1F36, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon,  0x1F56, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1F66, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F0F, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F2F, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA,  0x1F3F, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON,  0x1F5F, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1F6F, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F07, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F27, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota,  0x1F37, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon,  0x1F57, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1F67, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota,  0x1FD7, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon,  0x1FE7, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F0F, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F2F, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA,  0x1F3F, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON,  0x1F5F, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1F6F, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F07, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F27, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota,  0x1F37, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon,  0x1F57, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1F67, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F0E, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F2E, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA,  0x1F3E, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1F6E, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F06, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F26, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota,  0x1F36, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon,  0x1F56, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1F66, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O,  0x1EE0, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U,  0x1EEE, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o,  0x1EE1, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u,  0x1EEF, 
--IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A,  0x1EB4, 
--IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a,  0x1EB5, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A,  0x1EAA, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E,  0x1EC4, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O,  0x1ED6, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a,  0x1EAB, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e,  0x1EC5, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o,  0x1ED7, 
--IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A,  0x1EB4, 
--IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a,  0x1EB5, 
--IBUS_KEY_space,  0x00AF, 
--IBUS_KEY_V,  0x01D5, 
--IBUS_KEY_v,  0x01D6, 
--IBUS_KEY_nobreakspace,  0x0304, 
--IBUS_KEY_Egrave,  0x1E14, 
--IBUS_KEY_Eacute,  0x1E16, 
--IBUS_KEY_Ograve,  0x1E50, 
--IBUS_KEY_Oacute,  0x1E52, 
--IBUS_KEY_egrave,  0x1E15, 
--IBUS_KEY_eacute,  0x1E17, 
--IBUS_KEY_ograve,  0x1E51, 
--IBUS_KEY_oacute,  0x1E53, 
--IBUS_KEY_Cyrillic_i,  0x04E3, 
--IBUS_KEY_Cyrillic_u,  0x04EF, 
--IBUS_KEY_Cyrillic_I,  0x04E2, 
--IBUS_KEY_Cyrillic_U,  0x04EE, 
--IBUS_KEY_Greek_ALPHA,  0x1FB9, 
--IBUS_KEY_Greek_IOTA,  0x1FD9, 
--IBUS_KEY_Greek_UPSILON,  0x1FE9, 
--IBUS_KEY_Greek_alpha,  0x1FB1, 
--IBUS_KEY_Greek_iota,  0x1FD1, 
--IBUS_KEY_Greek_upsilon,  0x1FE1, 
--IBUS_KEY_dead_macron,  0x00AF, 
--IBUS_KEY_dead_greek, IBUS_KEY_A,  0x1FB9, 
--IBUS_KEY_dead_greek, IBUS_KEY_I,  0x1FD9, 
--IBUS_KEY_dead_greek, IBUS_KEY_U,  0x1FE9, 
--IBUS_KEY_dead_greek, IBUS_KEY_a,  0x1FB1, 
--IBUS_KEY_dead_greek, IBUS_KEY_i,  0x1FD1, 
--IBUS_KEY_dead_greek, IBUS_KEY_u,  0x1FE1, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_L,  0x1E38, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_R,  0x1E5C, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_l,  0x1E39, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_r,  0x1E5D, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_A,  0x01DE, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_O,  0x022A, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U,  0x01D5, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_a,  0x01DF, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_o,  0x022B, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u,  0x01D6, 
--IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_A,  0x01E0, 
--IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_O,  0x0230, 
--IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_a,  0x01E1, 
--IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_o,  0x0231, 
--IBUS_KEY_Multi_key, IBUS_KEY_semicolon, IBUS_KEY_O,  0x01EC, 
--IBUS_KEY_Multi_key, IBUS_KEY_semicolon, IBUS_KEY_o,  0x01ED, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O,  0x022C, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o,  0x022D, 
--IBUS_KEY_space,  0x02D8, 
--IBUS_KEY_nobreakspace,  0x0306, 
--IBUS_KEY_Agrave,  0x1EB0, 
--IBUS_KEY_Aacute,  0x1EAE, 
--IBUS_KEY_Atilde,  0x1EB4, 
--IBUS_KEY_agrave,  0x1EB1, 
--IBUS_KEY_aacute,  0x1EAF, 
--IBUS_KEY_atilde,  0x1EB5, 
--IBUS_KEY_Cyrillic_a,  0x04D1, 
--IBUS_KEY_Cyrillic_ie,  0x04D7, 
--IBUS_KEY_Cyrillic_i,  0x0439, 
--IBUS_KEY_Cyrillic_u,  0x045E, 
--IBUS_KEY_Cyrillic_zhe,  0x04C2, 
--IBUS_KEY_Cyrillic_A,  0x04D0, 
--IBUS_KEY_Cyrillic_IE,  0x04D6, 
--IBUS_KEY_Cyrillic_I,  0x0419, 
--IBUS_KEY_Cyrillic_U,  0x040E, 
--IBUS_KEY_Cyrillic_ZHE,  0x04C1, 
--IBUS_KEY_Greek_ALPHA,  0x1FB8, 
--IBUS_KEY_Greek_IOTA,  0x1FD8, 
--IBUS_KEY_Greek_UPSILON,  0x1FE8, 
--IBUS_KEY_Greek_alpha,  0x1FB0, 
--IBUS_KEY_Greek_iota,  0x1FD0, 
--IBUS_KEY_Greek_upsilon,  0x1FE0, 
--IBUS_KEY_dead_breve,  0x02D8, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_A,  0x1EB6, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_a,  0x1EB7, 
--IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_E,  0x1E1C, 
--IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_e,  0x1E1D, 
--IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_E,  0x1E1C, 
--IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_e,  0x1E1D, 
--IBUS_KEY_space,  0x02D9, 
--IBUS_KEY_L,  0x013F, 
--IBUS_KEY_i,  0x0131, 
--IBUS_KEY_j,  0x0237, 
--IBUS_KEY_l,  0x0140, 
--IBUS_KEY_nobreakspace,  0x0307, 
--IBUS_KEY_Sacute,  0x1E64, 
--IBUS_KEY_Scaron,  0x1E66, 
--IBUS_KEY_sacute,  0x1E65, 
--IBUS_KEY_scaron,  0x1E67, 
--IBUS_KEY_Amacron,  0x01E0, 
--IBUS_KEY_Omacron,  0x0230, 
--IBUS_KEY_amacron,  0x01E1, 
--IBUS_KEY_omacron,  0x0231, 
--IBUS_KEY_dead_abovedot,  0x02D9, 
--IBUS_KEY_dead_stroke, IBUS_KEY_j,  0x025F, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_S,  0x1E68, 
--IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_s,  0x1E69, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_S,  0x1E64, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_s,  0x1E65, 
--IBUS_KEY_Multi_key, IBUS_KEY_c, IBUS_KEY_S,  0x1E66, 
--IBUS_KEY_Multi_key, IBUS_KEY_c, IBUS_KEY_s,  0x1E67, 
--IBUS_KEY_Multi_key, IBUS_KEY_f, IBUS_KEY_s,  0x1E9B, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_S,  0x1E64, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_s,  0x1E65, 
--IBUS_KEY_space,  0x0022, 
--IBUS_KEY_apostrophe,  0x0344, 
--IBUS_KEY_nobreakspace,  0x0308, 
--IBUS_KEY_acute,  0x0344, 
--IBUS_KEY_Iacute,  0x1E2E, 
--IBUS_KEY_Ugrave,  0x01DB, 
--IBUS_KEY_Uacute,  0x01D7, 
--IBUS_KEY_iacute,  0x1E2F, 
--IBUS_KEY_ugrave,  0x01DC, 
--IBUS_KEY_uacute,  0x01D8, 
--0x01D3,  0x01D9, 
--0x01D4,  0x01DA, 
--IBUS_KEY_Amacron,  0x01DE, 
--IBUS_KEY_Umacron,  0x1E7A, 
--IBUS_KEY_amacron,  0x01DF, 
--IBUS_KEY_omacron,  0x022B, 
--IBUS_KEY_umacron,  0x1E7B, 
--IBUS_KEY_Ukrainian_i,  0x0457, 
--IBUS_KEY_Ukrainian_I,  0x0407, 
--IBUS_KEY_Cyrillic_a,  0x04D3, 
--IBUS_KEY_Cyrillic_ie,  0x0451, 
--IBUS_KEY_Cyrillic_i,  0x04E5, 
--IBUS_KEY_Cyrillic_o,  0x04E7, 
--IBUS_KEY_Cyrillic_u,  0x04F1, 
--IBUS_KEY_Cyrillic_zhe,  0x04DD, 
--IBUS_KEY_Cyrillic_yeru,  0x04F9, 
--IBUS_KEY_Cyrillic_ze,  0x04DF, 
--IBUS_KEY_Cyrillic_e,  0x04ED, 
--IBUS_KEY_Cyrillic_che,  0x04F5, 
--IBUS_KEY_Cyrillic_A,  0x04D2, 
--IBUS_KEY_Cyrillic_IE,  0x0401, 
--IBUS_KEY_Cyrillic_I,  0x04E4, 
--IBUS_KEY_Cyrillic_O,  0x04E6, 
--IBUS_KEY_Cyrillic_U,  0x04F0, 
--IBUS_KEY_Cyrillic_ZHE,  0x04DC, 
--IBUS_KEY_Cyrillic_YERU,  0x04F8, 
--IBUS_KEY_Cyrillic_ZE,  0x04DE, 
--IBUS_KEY_Cyrillic_E,  0x04EC, 
--IBUS_KEY_Cyrillic_CHE,  0x04F4, 
--IBUS_KEY_Greek_IOTA,  0x03AA, 
--IBUS_KEY_Greek_UPSILON,  0x03AB, 
--IBUS_KEY_Greek_iota,  0x03CA, 
--IBUS_KEY_Greek_upsilon,  0x03CB, 
--IBUS_KEY_dead_diaeresis,  0x00A8, 
--IBUS_KEY_dead_acute, IBUS_KEY_space,  0x0385, 
--IBUS_KEY_dead_acute, IBUS_KEY_Greek_iota,  0x0390, 
--IBUS_KEY_dead_acute, IBUS_KEY_Greek_upsilon,  0x03B0, 
--IBUS_KEY_dead_belowdiaeresis, IBUS_KEY_equal,  0x2A77, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_U,  0x1E7A, 
--IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_u,  0x1E7B, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O,  0x1E4E, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o,  0x1E4F, 
--IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_U,  0x1E7A, 
--IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_u,  0x1E7B, 
--IBUS_KEY_space,  0x00B0, 
--IBUS_KEY_nobreakspace,  0x030A, 
--IBUS_KEY_Aacute,  0x01FA, 
--IBUS_KEY_aacute,  0x01FB, 
--IBUS_KEY_dead_abovering,  0x00B0, 
--IBUS_KEY_space,  0x02DD, 
--IBUS_KEY_nobreakspace,  0x030B, 
--IBUS_KEY_Cyrillic_u,  0x04F3, 
--IBUS_KEY_Cyrillic_U,  0x04F2, 
--IBUS_KEY_dead_doubleacute,  0x02DD, 
--IBUS_KEY_space,  0x02C7, 
--IBUS_KEY_parenleft,  0x208D, 
--IBUS_KEY_parenright,  0x208E, 
--IBUS_KEY_plus,  0x208A, 
--IBUS_KEY_minus,  0x208B, 
--IBUS_KEY_0,  0x2080, 
--IBUS_KEY_1,  0x2081, 
--IBUS_KEY_2,  0x2082, 
--IBUS_KEY_3,  0x2083, 
--IBUS_KEY_4,  0x2084, 
--IBUS_KEY_5,  0x2085, 
--IBUS_KEY_6,  0x2086, 
--IBUS_KEY_7,  0x2087, 
--IBUS_KEY_8,  0x2088, 
--IBUS_KEY_9,  0x2089, 
--IBUS_KEY_equal,  0x208C, 
--IBUS_KEY_V,  0x01D9, 
--IBUS_KEY_v,  0x01DA, 
--IBUS_KEY_nobreakspace,  0x030C, 
--0x01F2,  0x01C5, 
--IBUS_KEY_dead_caron,  0x02C7, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U,  0x01D9, 
--IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u,  0x01DA, 
--IBUS_KEY_space,  0x00B8, 
--IBUS_KEY_nobreakspace,  0x0327, 
--IBUS_KEY_cent,  0x20B5, 
--IBUS_KEY_Cacute,  0x1E08, 
--IBUS_KEY_cacute,  0x1E09, 
--IBUS_KEY_dead_cedilla,  0x00B8, 
--IBUS_KEY_dead_currency, IBUS_KEY_C,  0x20B5, 
--IBUS_KEY_dead_currency, IBUS_KEY_c,  0x20B5, 
--IBUS_KEY_space,  0x02DB, 
--IBUS_KEY_nobreakspace,  0x0328, 
--IBUS_KEY_Omacron,  0x01EC, 
--IBUS_KEY_omacron,  0x01ED, 
--IBUS_KEY_dead_ogonek,  0x02DB, 
--IBUS_KEY_space,  0x037A, 
--IBUS_KEY_Greek_alphaaccent,  0x1FB4, 
--IBUS_KEY_Greek_etaaccent,  0x1FC4, 
--IBUS_KEY_Greek_omegaaccent,  0x1FF4, 
--IBUS_KEY_Greek_ALPHA,  0x1FBC, 
--IBUS_KEY_Greek_ETA,  0x1FCC, 
--IBUS_KEY_Greek_OMEGA,  0x1FFC, 
--IBUS_KEY_Greek_alpha,  0x1FB3, 
--IBUS_KEY_Greek_eta,  0x1FC3, 
--IBUS_KEY_Greek_omega,  0x1FF3, 
--IBUS_KEY_dead_iota,  0x037A, 
--IBUS_KEY_dead_grave, IBUS_KEY_Greek_alpha,  0x1FB2, 
--IBUS_KEY_dead_grave, IBUS_KEY_Greek_eta,  0x1FC2, 
--IBUS_KEY_dead_grave, IBUS_KEY_Greek_omega,  0x1FF2, 
--IBUS_KEY_dead_acute, IBUS_KEY_Greek_alpha,  0x1FB4, 
--IBUS_KEY_dead_acute, IBUS_KEY_Greek_eta,  0x1FC4, 
--IBUS_KEY_dead_acute, IBUS_KEY_Greek_omega,  0x1FF4, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Greek_alpha,  0x1FB7, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Greek_eta,  0x1FC7, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Greek_omega,  0x1FF7, 
--IBUS_KEY_dead_tilde, 0x1F00,  0x1F86, 
--IBUS_KEY_dead_tilde, 0x1F01,  0x1F87, 
--IBUS_KEY_dead_tilde, 0x1F08,  0x1F8E, 
--IBUS_KEY_dead_tilde, 0x1F09,  0x1F8F, 
--IBUS_KEY_dead_tilde, 0x1F20,  0x1F96, 
--IBUS_KEY_dead_tilde, 0x1F21,  0x1F97, 
--IBUS_KEY_dead_tilde, 0x1F28,  0x1F9E, 
--IBUS_KEY_dead_tilde, 0x1F29,  0x1F9F, 
--IBUS_KEY_dead_tilde, 0x1F60,  0x1FA6, 
--IBUS_KEY_dead_tilde, 0x1F61,  0x1FA7, 
--IBUS_KEY_dead_tilde, 0x1F68,  0x1FAE, 
--IBUS_KEY_dead_tilde, 0x1F69,  0x1FAF, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F88, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F98, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FA8, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F80, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F90, 
--IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA0, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F89, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F99, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FA9, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F81, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F91, 
--IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA1, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8A, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9A, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAA, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F82, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F92, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA2, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8B, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9B, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAB, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F83, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F93, 
--IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA3, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8E, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9E, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAE, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F86, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F96, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA6, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8F, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9F, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAF, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F87, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F97, 
--IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA7, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha,  0x1FB4, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta,  0x1FC4, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega,  0x1FF4, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F00,  0x1F84, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F01,  0x1F85, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F08,  0x1F8C, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F09,  0x1F8D, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F20,  0x1F94, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F21,  0x1F95, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F28,  0x1F9C, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F29,  0x1F9D, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F60,  0x1FA4, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F61,  0x1FA5, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F68,  0x1FAC, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F69,  0x1FAD, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F89, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F99, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FA9, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F81, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F91, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA1, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F88, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F98, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FA8, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F80, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F90, 
--IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA0, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_alpha,  0x1FB2, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_eta,  0x1FC2, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_omega,  0x1FF2, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F00,  0x1F82, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F01,  0x1F83, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F08,  0x1F8A, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F09,  0x1F8B, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F20,  0x1F92, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F21,  0x1F93, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F28,  0x1F9A, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F29,  0x1F9B, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F60,  0x1FA2, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F61,  0x1FA3, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F68,  0x1FAA, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F69,  0x1FAB, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha,  0x1FB7, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta,  0x1FC7, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega,  0x1FF7, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F00,  0x1F86, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F01,  0x1F87, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F08,  0x1F8E, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F09,  0x1F8F, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F20,  0x1F96, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F21,  0x1F97, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F28,  0x1F9E, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F29,  0x1F9F, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F60,  0x1FA6, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F61,  0x1FA7, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F68,  0x1FAE, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F69,  0x1FAF, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_alpha,  0x1FB4, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_eta,  0x1FC4, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_omega,  0x1FF4, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F00,  0x1F84, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F01,  0x1F85, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F08,  0x1F8C, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F09,  0x1F8D, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F20,  0x1F94, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F21,  0x1F95, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F28,  0x1F9C, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F29,  0x1F9D, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F60,  0x1FA4, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F61,  0x1FA5, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F68,  0x1FAC, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F69,  0x1FAD, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8B, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9B, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAB, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F83, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F93, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA3, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8A, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9A, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAA, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F82, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F92, 
--IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA2, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8F, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9F, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAF, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F87, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F97, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA7, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8E, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9E, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAE, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F86, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F96, 
--IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA6, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8B, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9B, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAB, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F83, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F93, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA3, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8A, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9A, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAA, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F82, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F92, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA2, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8A, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9A, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAA, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F82, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F92, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA2, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8B, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9B, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAB, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F83, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F93, 
--IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA3, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8F, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9F, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAF, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F87, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F97, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA7, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8E, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9E, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAE, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F86, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F96, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA6, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8E, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9E, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAE, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F86, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F96, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA6, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8F, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9F, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAF, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F87, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F97, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA7, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_kana_WO,  0x30FA, 
--IBUS_KEY_kana_U,  0x30F4, 
--IBUS_KEY_kana_KA,  0x30AC, 
--IBUS_KEY_kana_KI,  0x30AE, 
--IBUS_KEY_kana_KU,  0x30B0, 
--IBUS_KEY_kana_KE,  0x30B2, 
--IBUS_KEY_kana_KO,  0x30B4, 
--IBUS_KEY_kana_SA,  0x30B6, 
--IBUS_KEY_kana_SHI,  0x30B8, 
--IBUS_KEY_kana_SU,  0x30BA, 
--IBUS_KEY_kana_SE,  0x30BC, 
--IBUS_KEY_kana_SO,  0x30BE, 
--IBUS_KEY_kana_TA,  0x30C0, 
--IBUS_KEY_kana_CHI,  0x30C2, 
--IBUS_KEY_kana_TSU,  0x30C5, 
--IBUS_KEY_kana_TE,  0x30C7, 
--IBUS_KEY_kana_TO,  0x30C9, 
--IBUS_KEY_kana_HA,  0x30D0, 
--IBUS_KEY_kana_HI,  0x30D3, 
--IBUS_KEY_kana_FU,  0x30D6, 
--IBUS_KEY_kana_HE,  0x30D9, 
--IBUS_KEY_kana_HO,  0x30DC, 
--IBUS_KEY_kana_WA,  0x30F7, 
--IBUS_KEY_kana_HA,  0x30D1, 
--IBUS_KEY_kana_HI,  0x30D4, 
--IBUS_KEY_kana_FU,  0x30D7, 
--IBUS_KEY_kana_HE,  0x30DA, 
--IBUS_KEY_kana_HO,  0x30DD, 
--IBUS_KEY_space,  0x0323, 
--IBUS_KEY_plus,  0x2A25, 
--IBUS_KEY_minus,  0x2A2A, 
--IBUS_KEY_equal,  0x2A66, 
--IBUS_KEY_nobreakspace,  0x0323, 
--IBUS_KEY_Abreve,  0x1EB6, 
--IBUS_KEY_abreve,  0x1EB7, 
--IBUS_KEY_dead_belowdot,  0x0323, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O,  0x1EE2, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U,  0x1EF0, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o,  0x1EE3, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u,  0x1EF1, 
--IBUS_KEY_space,  0x0309, 
--IBUS_KEY_B,  0x0181, 
--IBUS_KEY_C,  0x0187, 
--IBUS_KEY_D,  0x018A, 
--IBUS_KEY_F,  0x0191, 
--IBUS_KEY_G,  0x0193, 
--IBUS_KEY_K,  0x0198, 
--IBUS_KEY_M,  0x2C6E, 
--IBUS_KEY_N,  0x019D, 
--IBUS_KEY_P,  0x01A4, 
--IBUS_KEY_T,  0x01AC, 
--IBUS_KEY_V,  0x01B2, 
--IBUS_KEY_W,  0x2C72, 
--IBUS_KEY_Z,  0x0224, 
--IBUS_KEY_b,  0x0253, 
--IBUS_KEY_c,  0x0188, 
--IBUS_KEY_d,  0x0257, 
--IBUS_KEY_f,  0x0192, 
--IBUS_KEY_g,  0x0260, 
--IBUS_KEY_h,  0x0266, 
--IBUS_KEY_k,  0x0199, 
--IBUS_KEY_m,  0x0271, 
--IBUS_KEY_n,  0x0272, 
--IBUS_KEY_p,  0x01A5, 
--IBUS_KEY_q,  0x02A0, 
--IBUS_KEY_r,  0x027C, 
--IBUS_KEY_s,  0x0282, 
--IBUS_KEY_t,  0x01AD, 
--IBUS_KEY_v,  0x028B, 
--IBUS_KEY_w,  0x2C73, 
--IBUS_KEY_z,  0x0225, 
--IBUS_KEY_nobreakspace,  0x0309, 
--IBUS_KEY_Abreve,  0x1EB2, 
--IBUS_KEY_abreve,  0x1EB3, 
--0x0256,  0x1D91, 
--0x025C,  0x025D, 
--0x025F,  0x0284, 
--0x0279,  0x027B, 
--IBUS_KEY_dead_hook,  0x0309, 
--IBUS_KEY_dead_greek, IBUS_KEY_U,  0x03D2, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O,  0x1EDE, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U,  0x1EEC, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o,  0x1EDF, 
--IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u,  0x1EED, 
--IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A,  0x1EB2, 
--IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a,  0x1EB3, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A,  0x1EA8, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E,  0x1EC2, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O,  0x1ED4, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a,  0x1EA9, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e,  0x1EC3, 
--IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o,  0x1ED5, 
--IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A,  0x1EB2, 
--IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a,  0x1EB3, 
--IBUS_KEY_space,  0x031B, 
--IBUS_KEY_nobreakspace,  0x031B, 
--IBUS_KEY_Utilde,  0x1EEE, 
--IBUS_KEY_utilde,  0x1EEF, 
--IBUS_KEY_dead_horn,  0x031B, 
--IBUS_KEY_space,  0x002F, 
--IBUS_KEY_2,  0x01BB, 
--IBUS_KEY_A,  0x023A, 
--IBUS_KEY_B,  0x0243, 
--IBUS_KEY_C,  0x023B, 
--IBUS_KEY_D,  0x0110, 
--IBUS_KEY_E,  0x0246, 
--IBUS_KEY_G,  0x01E4, 
--IBUS_KEY_H,  0x0126, 
--IBUS_KEY_I,  0x0197, 
--IBUS_KEY_J,  0x0248, 
--IBUS_KEY_L,  0x0141, 
--IBUS_KEY_O,  0x00D8, 
--IBUS_KEY_P,  0x2C63, 
--IBUS_KEY_R,  0x024C, 
--IBUS_KEY_T,  0x0166, 
--IBUS_KEY_U,  0x0244, 
--IBUS_KEY_Y,  0x024E, 
--IBUS_KEY_Z,  0x01B5, 
--IBUS_KEY_a,  0x2C65, 
--IBUS_KEY_b,  0x0180, 
--IBUS_KEY_c,  0x023C, 
--IBUS_KEY_d,  0x0111, 
--IBUS_KEY_e,  0x0247, 
--IBUS_KEY_g,  0x01E5, 
--IBUS_KEY_h,  0x0127, 
--IBUS_KEY_i,  0x0268, 
--IBUS_KEY_j,  0x0249, 
--IBUS_KEY_l,  0x0142, 
--IBUS_KEY_o,  0x00F8, 
--IBUS_KEY_p,  0x1D7D, 
--IBUS_KEY_r,  0x024D, 
--IBUS_KEY_t,  0x0167, 
--IBUS_KEY_u,  0x0289, 
--IBUS_KEY_y,  0x024F, 
--IBUS_KEY_z,  0x01B6, 
--IBUS_KEY_nobreakspace,  0x0338, 
--IBUS_KEY_Oacute,  0x01FE, 
--IBUS_KEY_oacute,  0x01FF, 
--0x0237,  0x025F, 
--0x0269,  0x1D7C, 
--IBUS_KEY_lessthanequal,  0x2270, 
--IBUS_KEY_greaterthanequal,  0x2271, 
--IBUS_KEY_dead_stroke,  0x002F, 
--IBUS_KEY_dead_acute, IBUS_KEY_O,  0x01FE, 
--IBUS_KEY_dead_acute, IBUS_KEY_o,  0x01FF, 
--IBUS_KEY_dead_abovedot, IBUS_KEY_j,  0x025F, 
--IBUS_KEY_dead_greek, IBUS_KEY_r,  0x03FC, 
--IBUS_KEY_Greek_ALPHA,  0x1F08, 
--IBUS_KEY_Greek_EPSILON,  0x1F18, 
--IBUS_KEY_Greek_ETA,  0x1F28, 
--IBUS_KEY_Greek_IOTA,  0x1F38, 
--IBUS_KEY_Greek_OMICRON,  0x1F48, 
--IBUS_KEY_Greek_OMEGA,  0x1F68, 
--IBUS_KEY_Greek_alpha,  0x1F00, 
--IBUS_KEY_Greek_epsilon,  0x1F10, 
--IBUS_KEY_Greek_eta,  0x1F20, 
--IBUS_KEY_Greek_iota,  0x1F30, 
--IBUS_KEY_Greek_omicron,  0x1F40, 
--IBUS_KEY_Greek_rho,  0x1FE4, 
--IBUS_KEY_Greek_upsilon,  0x1F50, 
--IBUS_KEY_Greek_omega,  0x1F60, 
--IBUS_KEY_Greek_ALPHA,  0x1F09, 
--IBUS_KEY_Greek_EPSILON,  0x1F19, 
--IBUS_KEY_Greek_ETA,  0x1F29, 
--IBUS_KEY_Greek_IOTA,  0x1F39, 
--IBUS_KEY_Greek_OMICRON,  0x1F49, 
--IBUS_KEY_Greek_RHO,  0x1FEC, 
--IBUS_KEY_Greek_UPSILON,  0x1F59, 
--IBUS_KEY_Greek_OMEGA,  0x1F69, 
--IBUS_KEY_Greek_alpha,  0x1F01, 
--IBUS_KEY_Greek_epsilon,  0x1F11, 
--IBUS_KEY_Greek_eta,  0x1F21, 
--IBUS_KEY_Greek_iota,  0x1F31, 
--IBUS_KEY_Greek_omicron,  0x1F41, 
--IBUS_KEY_Greek_rho,  0x1FE5, 
--IBUS_KEY_Greek_upsilon,  0x1F51, 
--IBUS_KEY_Greek_omega,  0x1F61, 
--IBUS_KEY_bar,  0x2AF0, 
--IBUS_KEY_plus,  0x2A26, 
--IBUS_KEY_dead_diaeresis, IBUS_KEY_equal,  0x2A77, 
--IBUS_KEY_space,  0x002C, 
--IBUS_KEY_S,  0x0218, 
--IBUS_KEY_T,  0x021A, 
--IBUS_KEY_s,  0x0219, 
--IBUS_KEY_t,  0x021B, 
--IBUS_KEY_nobreakspace,  0x0326, 
--IBUS_KEY_dead_belowcomma,  0x002C, 
--IBUS_KEY_space,  0x00A4, 
--IBUS_KEY_A,  0x20B3, 
--IBUS_KEY_B,  0x20B1, 
--IBUS_KEY_C,  0x20A1, 
--IBUS_KEY_D,  0x20AF, 
--IBUS_KEY_E,  0x20A0, 
--IBUS_KEY_F,  0x20A3, 
--IBUS_KEY_G,  0x20B2, 
--IBUS_KEY_H,  0x20B4, 
--IBUS_KEY_I,  0x17DB, 
--IBUS_KEY_K,  0x20AD, 
--IBUS_KEY_L,  0x20A4, 
--IBUS_KEY_M,  0x2133, 
--IBUS_KEY_N,  0x20A6, 
--IBUS_KEY_O,  0x0AF1, 
--IBUS_KEY_P,  0x20A7, 
--IBUS_KEY_R,  0x20A8, 
--IBUS_KEY_S,  0x0024, 
--IBUS_KEY_T,  0x20AE, 
--IBUS_KEY_U,  0x5713, 
--IBUS_KEY_W,  0x20A9, 
--IBUS_KEY_Y,  0x5186, 
--IBUS_KEY_a,  0x060B, 
--IBUS_KEY_b,  0x0E3F, 
--IBUS_KEY_c,  0x00A2, 
--IBUS_KEY_d,  0x20AB, 
--IBUS_KEY_e,  0x20AC, 
--IBUS_KEY_f,  0x0192, 
--IBUS_KEY_g,  0x20B2, 
--IBUS_KEY_h,  0x20B4, 
--IBUS_KEY_i,  0xFDFC, 
--IBUS_KEY_k,  0x20AD, 
--IBUS_KEY_l,  0x00A3, 
--IBUS_KEY_m,  0x20A5, 
--IBUS_KEY_n,  0x20A6, 
--IBUS_KEY_o,  0x0BF9, 
--IBUS_KEY_p,  0x20B0, 
--IBUS_KEY_r,  0x20A2, 
--IBUS_KEY_s,  0x20AA, 
--IBUS_KEY_t,  0x09F3, 
--IBUS_KEY_u,  0x5143, 
--IBUS_KEY_w,  0x20A9, 
--IBUS_KEY_y,  0x00A5, 
--IBUS_KEY_nobreakspace,  0x00A4, 
--IBUS_KEY_Ccedilla,  0x20B5, 
--IBUS_KEY_THORN,  0x09F2, 
--IBUS_KEY_ccedilla,  0x20B5, 
--IBUS_KEY_thorn,  0x09F2, 
--IBUS_KEY_dead_currency,  0x00A4, 
--IBUS_KEY_dead_cedilla, IBUS_KEY_C,  0x20B5, 
--IBUS_KEY_dead_cedilla, IBUS_KEY_c,  0x20B5, 
--IBUS_KEY_space,  0x00B5, 
--IBUS_KEY_A,  0x0391, 
--IBUS_KEY_B,  0x0392, 
--IBUS_KEY_D,  0x0394, 
--IBUS_KEY_E,  0x0395, 
--IBUS_KEY_F,  0x03A6, 
--IBUS_KEY_G,  0x0393, 
--IBUS_KEY_H,  0x0397, 
--IBUS_KEY_I,  0x0399, 
--IBUS_KEY_J,  0x0398, 
--IBUS_KEY_K,  0x039A, 
--IBUS_KEY_L,  0x039B, 
--IBUS_KEY_M,  0x039C, 
--IBUS_KEY_N,  0x039D, 
--IBUS_KEY_O,  0x039F, 
--IBUS_KEY_P,  0x03A0, 
--IBUS_KEY_Q,  0x03A7, 
--IBUS_KEY_R,  0x03A1, 
--IBUS_KEY_S,  0x03A3, 
--IBUS_KEY_T,  0x03A4, 
--IBUS_KEY_U,  0x03A5, 
--IBUS_KEY_W,  0x03A9, 
--IBUS_KEY_X,  0x039E, 
--IBUS_KEY_Y,  0x03A8, 
--IBUS_KEY_Z,  0x0396, 
--IBUS_KEY_a,  0x03B1, 
--IBUS_KEY_b,  0x03B2, 
--IBUS_KEY_d,  0x03B4, 
--IBUS_KEY_e,  0x03B5, 
--IBUS_KEY_f,  0x03C6, 
--IBUS_KEY_g,  0x03B3, 
--IBUS_KEY_h,  0x03B7, 
--IBUS_KEY_i,  0x03B9, 
--IBUS_KEY_j,  0x03B8, 
--IBUS_KEY_k,  0x03BA, 
--IBUS_KEY_l,  0x03BB, 
--IBUS_KEY_m,  0x03BC, 
--IBUS_KEY_n,  0x03BD, 
--IBUS_KEY_o,  0x03BF, 
--IBUS_KEY_p,  0x03C0, 
--IBUS_KEY_q,  0x03C7, 
--IBUS_KEY_r,  0x03C1, 
--IBUS_KEY_s,  0x03C3, 
--IBUS_KEY_t,  0x03C4, 
--IBUS_KEY_u,  0x03C5, 
--IBUS_KEY_w,  0x03C9, 
--IBUS_KEY_x,  0x03BE, 
--IBUS_KEY_y,  0x03C8, 
--IBUS_KEY_z,  0x03B6, 
--IBUS_KEY_nobreakspace,  0x00B5, 
--IBUS_KEY_dead_greek,  0x00B5, 
--IBUS_KEY_dead_macron, IBUS_KEY_A,  0x1FB9, 
--IBUS_KEY_dead_macron, IBUS_KEY_I,  0x1FD9, 
--IBUS_KEY_dead_macron, IBUS_KEY_U,  0x1FE9, 
--IBUS_KEY_dead_macron, IBUS_KEY_a,  0x1FB1, 
--IBUS_KEY_dead_macron, IBUS_KEY_i,  0x1FD1, 
--IBUS_KEY_dead_macron, IBUS_KEY_u,  0x1FE1, 
--IBUS_KEY_dead_hook, IBUS_KEY_U,  0x03D2, 
--IBUS_KEY_dead_stroke, IBUS_KEY_r,  0x03FC, 
--IBUS_KEY_space, IBUS_KEY_space,  0x00A0, 
--IBUS_KEY_space, IBUS_KEY_apostrophe,  0x0027, 
--IBUS_KEY_space, IBUS_KEY_parenleft,  0x02D8, 
--IBUS_KEY_space, IBUS_KEY_comma,  0x00B8, 
--IBUS_KEY_space, IBUS_KEY_minus,  0x007E, 
--IBUS_KEY_space, IBUS_KEY_period,  0x2008, 
--IBUS_KEY_space, IBUS_KEY_less,  0x02C7, 
--IBUS_KEY_space, IBUS_KEY_greater,  0x005E, 
--IBUS_KEY_space, IBUS_KEY_asciicircum,  0x005E, 
--IBUS_KEY_space, IBUS_KEY_grave,  0x0060, 
--IBUS_KEY_space, IBUS_KEY_asciitilde,  0x007E, 
--IBUS_KEY_exclam, IBUS_KEY_exclam,  0x00A1, 
--IBUS_KEY_exclam, IBUS_KEY_question,  0x203D, 
--IBUS_KEY_exclam, IBUS_KEY_A,  0x1EA0, 
--IBUS_KEY_exclam, IBUS_KEY_B,  0x1E04, 
--IBUS_KEY_exclam, IBUS_KEY_D,  0x1E0C, 
--IBUS_KEY_exclam, IBUS_KEY_E,  0x1EB8, 
--IBUS_KEY_exclam, IBUS_KEY_H,  0x1E24, 
--IBUS_KEY_exclam, IBUS_KEY_I,  0x1ECA, 
--IBUS_KEY_exclam, IBUS_KEY_K,  0x1E32, 
--IBUS_KEY_exclam, IBUS_KEY_L,  0x1E36, 
--IBUS_KEY_exclam, IBUS_KEY_M,  0x1E42, 
--IBUS_KEY_exclam, IBUS_KEY_N,  0x1E46, 
--IBUS_KEY_exclam, IBUS_KEY_O,  0x1ECC, 
--IBUS_KEY_exclam, IBUS_KEY_P,  0x00B6, 
--IBUS_KEY_exclam, IBUS_KEY_R,  0x1E5A, 
--IBUS_KEY_exclam, IBUS_KEY_S,  0x1E62, 
--IBUS_KEY_exclam, IBUS_KEY_T,  0x1E6C, 
--IBUS_KEY_exclam, IBUS_KEY_U,  0x1EE4, 
--IBUS_KEY_exclam, IBUS_KEY_V,  0x1E7E, 
--IBUS_KEY_exclam, IBUS_KEY_W,  0x1E88, 
--IBUS_KEY_exclam, IBUS_KEY_Y,  0x1EF4, 
--IBUS_KEY_exclam, IBUS_KEY_Z,  0x1E92, 
--IBUS_KEY_exclam, IBUS_KEY_asciicircum,  0x00A6, 
--IBUS_KEY_exclam, IBUS_KEY_a,  0x1EA1, 
--IBUS_KEY_exclam, IBUS_KEY_b,  0x1E05, 
--IBUS_KEY_exclam, IBUS_KEY_d,  0x1E0D, 
--IBUS_KEY_exclam, IBUS_KEY_e,  0x1EB9, 
--IBUS_KEY_exclam, IBUS_KEY_h,  0x1E25, 
--IBUS_KEY_exclam, IBUS_KEY_i,  0x1ECB, 
--IBUS_KEY_exclam, IBUS_KEY_k,  0x1E33, 
--IBUS_KEY_exclam, IBUS_KEY_l,  0x1E37, 
--IBUS_KEY_exclam, IBUS_KEY_m,  0x1E43, 
--IBUS_KEY_exclam, IBUS_KEY_n,  0x1E47, 
--IBUS_KEY_exclam, IBUS_KEY_o,  0x1ECD, 
--IBUS_KEY_exclam, IBUS_KEY_p,  0x00B6, 
--IBUS_KEY_exclam, IBUS_KEY_r,  0x1E5B, 
--IBUS_KEY_exclam, IBUS_KEY_s,  0x1E63, 
--IBUS_KEY_exclam, IBUS_KEY_t,  0x1E6D, 
--IBUS_KEY_exclam, IBUS_KEY_u,  0x1EE5, 
--IBUS_KEY_exclam, IBUS_KEY_v,  0x1E7F, 
--IBUS_KEY_exclam, IBUS_KEY_w,  0x1E89, 
--IBUS_KEY_exclam, IBUS_KEY_y,  0x1EF5, 
--IBUS_KEY_exclam, IBUS_KEY_z,  0x1E93, 
--IBUS_KEY_quotedbl, IBUS_KEY_quotedbl,  0x00A8, 
--IBUS_KEY_quotedbl, IBUS_KEY_apostrophe,  0x0344, 
--IBUS_KEY_quotedbl, IBUS_KEY_comma,  0x201E, 
--IBUS_KEY_quotedbl, IBUS_KEY_less,  0x201C, 
--IBUS_KEY_quotedbl, IBUS_KEY_greater,  0x201D, 
--IBUS_KEY_quotedbl, IBUS_KEY_A,  0x00C4, 
--IBUS_KEY_quotedbl, IBUS_KEY_E,  0x00CB, 
--IBUS_KEY_quotedbl, IBUS_KEY_H,  0x1E26, 
--IBUS_KEY_quotedbl, IBUS_KEY_I,  0x00CF, 
--IBUS_KEY_quotedbl, IBUS_KEY_O,  0x00D6, 
--IBUS_KEY_quotedbl, IBUS_KEY_U,  0x00DC, 
--IBUS_KEY_quotedbl, IBUS_KEY_W,  0x1E84, 
--IBUS_KEY_quotedbl, IBUS_KEY_X,  0x1E8C, 
--IBUS_KEY_quotedbl, IBUS_KEY_Y,  0x0178, 
--IBUS_KEY_quotedbl, IBUS_KEY_a,  0x00E4, 
--IBUS_KEY_quotedbl, IBUS_KEY_e,  0x00EB, 
--IBUS_KEY_quotedbl, IBUS_KEY_h,  0x1E27, 
--IBUS_KEY_quotedbl, IBUS_KEY_i,  0x00EF, 
--IBUS_KEY_quotedbl, IBUS_KEY_o,  0x00F6, 
--IBUS_KEY_quotedbl, IBUS_KEY_t,  0x1E97, 
--IBUS_KEY_quotedbl, IBUS_KEY_u,  0x00FC, 
--IBUS_KEY_quotedbl, IBUS_KEY_w,  0x1E85, 
--IBUS_KEY_quotedbl, IBUS_KEY_x,  0x1E8D, 
--IBUS_KEY_quotedbl, IBUS_KEY_y,  0x00FF, 
--IBUS_KEY_quotedbl, IBUS_KEY_acute,  0x0344, 
--IBUS_KEY_quotedbl, IBUS_KEY_Otilde,  0x1E4E, 
--IBUS_KEY_quotedbl, IBUS_KEY_otilde,  0x1E4F, 
--IBUS_KEY_quotedbl, 0x03D2,  0x03D4, 
--IBUS_KEY_quotedbl, IBUS_KEY_Umacron,  0x1E7A, 
--IBUS_KEY_quotedbl, IBUS_KEY_umacron,  0x1E7B, 
--IBUS_KEY_quotedbl, 0x04D8,  0x04DA, 
--IBUS_KEY_quotedbl, 0x04D9,  0x04DB, 
--IBUS_KEY_quotedbl, 0x04E8,  0x04EA, 
--IBUS_KEY_quotedbl, 0x04E9,  0x04EB, 
--IBUS_KEY_quotedbl, IBUS_KEY_Ukrainian_i,  0x0457, 
--IBUS_KEY_quotedbl, IBUS_KEY_Ukrainian_I,  0x0407, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_a,  0x04D3, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ie,  0x0451, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_i,  0x04E5, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_o,  0x04E7, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_u,  0x04F1, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_zhe,  0x04DD, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_yeru,  0x04F9, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ze,  0x04DF, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_e,  0x04ED, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_che,  0x04F5, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_A,  0x04D2, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_IE,  0x0401, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_I,  0x04E4, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_O,  0x04E6, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_U,  0x04F0, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ZHE,  0x04DC, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_YERU,  0x04F8, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ZE,  0x04DE, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_E,  0x04EC, 
--IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_CHE,  0x04F4, 
--IBUS_KEY_quotedbl, IBUS_KEY_Greek_IOTA,  0x03AA, 
--IBUS_KEY_quotedbl, IBUS_KEY_Greek_UPSILON,  0x03AB, 
--IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota,  0x03CA, 
--IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon,  0x03CB, 
--IBUS_KEY_quotedbl, IBUS_KEY_dead_acute,  0x0344, 
--IBUS_KEY_numbersign, IBUS_KEY_numbersign,  0x266F, 
--IBUS_KEY_numbersign, IBUS_KEY_E,  0x266B, 
--IBUS_KEY_numbersign, IBUS_KEY_S,  0x266C, 
--IBUS_KEY_numbersign, IBUS_KEY_b,  0x266D, 
--IBUS_KEY_numbersign, IBUS_KEY_e,  0x266A, 
--IBUS_KEY_numbersign, IBUS_KEY_f,  0x266E, 
--IBUS_KEY_numbersign, IBUS_KEY_q,  0x2669, 
--IBUS_KEY_percent, IBUS_KEY_o,  0x2030, 
--IBUS_KEY_apostrophe, IBUS_KEY_space,  0x0027, 
--IBUS_KEY_apostrophe, IBUS_KEY_apostrophe,  0x00B4, 
--IBUS_KEY_apostrophe, IBUS_KEY_comma,  0x201A, 
--IBUS_KEY_apostrophe, IBUS_KEY_less,  0x2018, 
--IBUS_KEY_apostrophe, IBUS_KEY_greater,  0x2019, 
--IBUS_KEY_apostrophe, IBUS_KEY_A,  0x00C1, 
--IBUS_KEY_apostrophe, IBUS_KEY_C,  0x0106, 
--IBUS_KEY_apostrophe, IBUS_KEY_E,  0x00C9, 
--IBUS_KEY_apostrophe, IBUS_KEY_G,  0x01F4, 
--IBUS_KEY_apostrophe, IBUS_KEY_I,  0x00CD, 
--IBUS_KEY_apostrophe, IBUS_KEY_K,  0x1E30, 
--IBUS_KEY_apostrophe, IBUS_KEY_L,  0x0139, 
--IBUS_KEY_apostrophe, IBUS_KEY_M,  0x1E3E, 
--IBUS_KEY_apostrophe, IBUS_KEY_N,  0x0143, 
--IBUS_KEY_apostrophe, IBUS_KEY_O,  0x00D3, 
--IBUS_KEY_apostrophe, IBUS_KEY_P,  0x1E54, 
--IBUS_KEY_apostrophe, IBUS_KEY_R,  0x0154, 
--IBUS_KEY_apostrophe, IBUS_KEY_S,  0x015A, 
--IBUS_KEY_apostrophe, IBUS_KEY_U,  0x00DA, 
--IBUS_KEY_apostrophe, IBUS_KEY_W,  0x1E82, 
--IBUS_KEY_apostrophe, IBUS_KEY_Y,  0x00DD, 
--IBUS_KEY_apostrophe, IBUS_KEY_Z,  0x0179, 
--IBUS_KEY_apostrophe, IBUS_KEY_a,  0x00E1, 
--IBUS_KEY_apostrophe, IBUS_KEY_c,  0x0107, 
--IBUS_KEY_apostrophe, IBUS_KEY_e,  0x00E9, 
--IBUS_KEY_apostrophe, IBUS_KEY_g,  0x01F5, 
--IBUS_KEY_apostrophe, IBUS_KEY_i,  0x00ED, 
--IBUS_KEY_apostrophe, IBUS_KEY_k,  0x1E31, 
--IBUS_KEY_apostrophe, IBUS_KEY_l,  0x013A, 
--IBUS_KEY_apostrophe, IBUS_KEY_m,  0x1E3F, 
--IBUS_KEY_apostrophe, IBUS_KEY_n,  0x0144, 
--IBUS_KEY_apostrophe, IBUS_KEY_o,  0x00F3, 
--IBUS_KEY_apostrophe, IBUS_KEY_p,  0x1E55, 
--IBUS_KEY_apostrophe, IBUS_KEY_r,  0x0155, 
--IBUS_KEY_apostrophe, IBUS_KEY_s,  0x015B, 
--IBUS_KEY_apostrophe, IBUS_KEY_u,  0x00FA, 
--IBUS_KEY_apostrophe, IBUS_KEY_w,  0x1E83, 
--IBUS_KEY_apostrophe, IBUS_KEY_y,  0x00FD, 
--IBUS_KEY_apostrophe, IBUS_KEY_z,  0x017A, 
--IBUS_KEY_apostrophe, IBUS_KEY_Acircumflex,  0x1EA4, 
--IBUS_KEY_apostrophe, IBUS_KEY_Aring,  0x01FA, 
--IBUS_KEY_apostrophe, IBUS_KEY_AE,  0x01FC, 
--IBUS_KEY_apostrophe, IBUS_KEY_Ccedilla,  0x1E08, 
--IBUS_KEY_apostrophe, IBUS_KEY_Ecircumflex,  0x1EBE, 
--IBUS_KEY_apostrophe, IBUS_KEY_Idiaeresis,  0x1E2E, 
--IBUS_KEY_apostrophe, IBUS_KEY_Ocircumflex,  0x1ED0, 
--IBUS_KEY_apostrophe, IBUS_KEY_Otilde,  0x1E4C, 
--IBUS_KEY_apostrophe, IBUS_KEY_Ooblique,  0x01FE, 
--IBUS_KEY_apostrophe, IBUS_KEY_Udiaeresis,  0x01D7, 
--IBUS_KEY_apostrophe, IBUS_KEY_acircumflex,  0x1EA5, 
--IBUS_KEY_apostrophe, IBUS_KEY_aring,  0x01FB, 
--IBUS_KEY_apostrophe, IBUS_KEY_ae,  0x01FD, 
--IBUS_KEY_apostrophe, IBUS_KEY_ccedilla,  0x1E09, 
--IBUS_KEY_apostrophe, IBUS_KEY_ecircumflex,  0x1EBF, 
--IBUS_KEY_apostrophe, IBUS_KEY_idiaeresis,  0x1E2F, 
--IBUS_KEY_apostrophe, IBUS_KEY_ocircumflex,  0x1ED1, 
--IBUS_KEY_apostrophe, IBUS_KEY_otilde,  0x1E4D, 
--IBUS_KEY_apostrophe, IBUS_KEY_oslash,  0x01FF, 
--IBUS_KEY_apostrophe, IBUS_KEY_udiaeresis,  0x01D8, 
--IBUS_KEY_apostrophe, IBUS_KEY_Abreve,  0x1EAE, 
--IBUS_KEY_apostrophe, IBUS_KEY_abreve,  0x1EAF, 
--IBUS_KEY_apostrophe, IBUS_KEY_Emacron,  0x1E16, 
--IBUS_KEY_apostrophe, IBUS_KEY_emacron,  0x1E17, 
--IBUS_KEY_apostrophe, IBUS_KEY_Omacron,  0x1E52, 
--IBUS_KEY_apostrophe, IBUS_KEY_Utilde,  0x1E78, 
--IBUS_KEY_apostrophe, IBUS_KEY_omacron,  0x1E53, 
--IBUS_KEY_apostrophe, IBUS_KEY_utilde,  0x1E79, 
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ghe,  0x0453, 
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ka,  0x045C, 
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_GHE,  0x0403, 
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_KA,  0x040C, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_iotadieresis,  0x0390, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilondieresis,  0x03B0, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_ALPHA,  0x0386, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_EPSILON,  0x0388, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_ETA,  0x0389, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_IOTA,  0x038A, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_OMICRON,  0x038C, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_UPSILON,  0x038E, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_OMEGA,  0x038F, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha,  0x03AC, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_epsilon,  0x03AD, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta,  0x03AE, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_iota,  0x03AF, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_omicron,  0x03CC, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilon,  0x03CD, 
--IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega,  0x03CE, 
--IBUS_KEY_apostrophe, 0x1F00,  0x1F04, 
--IBUS_KEY_apostrophe, 0x1F01,  0x1F05, 
--IBUS_KEY_apostrophe, 0x1F08,  0x1F0C, 
--IBUS_KEY_apostrophe, 0x1F09,  0x1F0D, 
--IBUS_KEY_apostrophe, 0x1F10,  0x1F14, 
--IBUS_KEY_apostrophe, 0x1F11,  0x1F15, 
--IBUS_KEY_apostrophe, 0x1F18,  0x1F1C, 
--IBUS_KEY_apostrophe, 0x1F19,  0x1F1D, 
--IBUS_KEY_apostrophe, 0x1F20,  0x1F24, 
--IBUS_KEY_apostrophe, 0x1F21,  0x1F25, 
--IBUS_KEY_apostrophe, 0x1F28,  0x1F2C, 
--IBUS_KEY_apostrophe, 0x1F29,  0x1F2D, 
--IBUS_KEY_apostrophe, 0x1F30,  0x1F34, 
--IBUS_KEY_apostrophe, 0x1F31,  0x1F35, 
--IBUS_KEY_apostrophe, 0x1F38,  0x1F3C, 
--IBUS_KEY_apostrophe, 0x1F39,  0x1F3D, 
--IBUS_KEY_apostrophe, 0x1F40,  0x1F44, 
--IBUS_KEY_apostrophe, 0x1F41,  0x1F45, 
--IBUS_KEY_apostrophe, 0x1F48,  0x1F4C, 
--IBUS_KEY_apostrophe, 0x1F49,  0x1F4D, 
--IBUS_KEY_apostrophe, 0x1F50,  0x1F54, 
--IBUS_KEY_apostrophe, 0x1F51,  0x1F55, 
--IBUS_KEY_apostrophe, 0x1F59,  0x1F5D, 
--IBUS_KEY_apostrophe, 0x1F60,  0x1F64, 
--IBUS_KEY_apostrophe, 0x1F61,  0x1F65, 
--IBUS_KEY_apostrophe, 0x1F68,  0x1F6C, 
--IBUS_KEY_apostrophe, 0x1F69,  0x1F6D, 
--IBUS_KEY_apostrophe, 0x2395,  0x235E, 
--IBUS_KEY_parenleft, IBUS_KEY_space,  0x02D8, 
--IBUS_KEY_parenleft, IBUS_KEY_parenleft,  0x005B, 
--IBUS_KEY_parenleft, IBUS_KEY_minus,  0x007B, 
--IBUS_KEY_parenleft, IBUS_KEY_A,  0x0102, 
--IBUS_KEY_parenleft, IBUS_KEY_G,  0x011E, 
--IBUS_KEY_parenleft, IBUS_KEY_a,  0x0103, 
--IBUS_KEY_parenleft, IBUS_KEY_c,  0x00A9, 
--IBUS_KEY_parenleft, IBUS_KEY_g,  0x011F, 
--IBUS_KEY_parenleft, IBUS_KEY_r,  0x00AE, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F09, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON,  0x1F19, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F29, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA,  0x1F39, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON,  0x1F49, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_RHO,  0x1FEC, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON,  0x1F59, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1F69, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F01, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon,  0x1F11, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F21, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_iota,  0x1F31, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron,  0x1F41, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_rho,  0x1FE5, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon,  0x1F51, 
--IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1F61, 
--IBUS_KEY_parenright, IBUS_KEY_parenright,  0x005D, 
--IBUS_KEY_parenright, IBUS_KEY_minus,  0x007D, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F08, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON,  0x1F18, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F28, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA,  0x1F38, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON,  0x1F48, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1F68, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F00, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon,  0x1F10, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F20, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_iota,  0x1F30, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_omicron,  0x1F40, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_rho,  0x1FE4, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon,  0x1F50, 
--IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1F60, 
--IBUS_KEY_asterisk, IBUS_KEY_0,  0x00B0, 
--IBUS_KEY_asterisk, IBUS_KEY_A,  0x00C5, 
--IBUS_KEY_asterisk, IBUS_KEY_U,  0x016E, 
--IBUS_KEY_asterisk, IBUS_KEY_a,  0x00E5, 
--IBUS_KEY_asterisk, IBUS_KEY_u,  0x016F, 
--IBUS_KEY_asterisk, IBUS_KEY_diaeresis,  0x2363, 
--IBUS_KEY_asterisk, IBUS_KEY_emopencircle,  0x235F, 
--IBUS_KEY_plus, IBUS_KEY_plus,  0x0023, 
--IBUS_KEY_plus, IBUS_KEY_minus,  0x00B1, 
--IBUS_KEY_plus, IBUS_KEY_O,  0x01A0, 
--IBUS_KEY_plus, IBUS_KEY_U,  0x01AF, 
--IBUS_KEY_plus, IBUS_KEY_o,  0x01A1, 
--IBUS_KEY_plus, IBUS_KEY_u,  0x01B0, 
--IBUS_KEY_comma, IBUS_KEY_space,  0x00B8, 
--IBUS_KEY_comma, IBUS_KEY_quotedbl,  0x201E, 
--IBUS_KEY_comma, IBUS_KEY_apostrophe,  0x201A, 
--IBUS_KEY_comma, IBUS_KEY_comma,  0x00B8, 
--IBUS_KEY_comma, IBUS_KEY_minus,  0x00AC, 
--IBUS_KEY_comma, IBUS_KEY_A,  0x0104, 
--IBUS_KEY_comma, IBUS_KEY_C,  0x00C7, 
--IBUS_KEY_comma, IBUS_KEY_D,  0x1E10, 
--IBUS_KEY_comma, IBUS_KEY_E,  0x0118, 
--IBUS_KEY_comma, IBUS_KEY_G,  0x0122, 
--IBUS_KEY_comma, IBUS_KEY_H,  0x1E28, 
--IBUS_KEY_comma, IBUS_KEY_I,  0x012E, 
--IBUS_KEY_comma, IBUS_KEY_K,  0x0136, 
--IBUS_KEY_comma, IBUS_KEY_L,  0x013B, 
--IBUS_KEY_comma, IBUS_KEY_N,  0x0145, 
--IBUS_KEY_comma, IBUS_KEY_O,  0x01EA, 
--IBUS_KEY_comma, IBUS_KEY_R,  0x0156, 
--IBUS_KEY_comma, IBUS_KEY_S,  0x015E, 
--IBUS_KEY_comma, IBUS_KEY_T,  0x0162, 
--IBUS_KEY_comma, IBUS_KEY_U,  0x0172, 
--IBUS_KEY_comma, IBUS_KEY_a,  0x0105, 
--IBUS_KEY_comma, IBUS_KEY_c,  0x00E7, 
--IBUS_KEY_comma, IBUS_KEY_d,  0x1E11, 
--IBUS_KEY_comma, IBUS_KEY_e,  0x0119, 
--IBUS_KEY_comma, IBUS_KEY_g,  0x0123, 
--IBUS_KEY_comma, IBUS_KEY_h,  0x1E29, 
--IBUS_KEY_comma, IBUS_KEY_i,  0x012F, 
--IBUS_KEY_comma, IBUS_KEY_k,  0x0137, 
--IBUS_KEY_comma, IBUS_KEY_l,  0x013C, 
--IBUS_KEY_comma, IBUS_KEY_n,  0x0146, 
--IBUS_KEY_comma, IBUS_KEY_o,  0x01EB, 
--IBUS_KEY_comma, IBUS_KEY_r,  0x0157, 
--IBUS_KEY_comma, IBUS_KEY_s,  0x015F, 
--IBUS_KEY_comma, IBUS_KEY_t,  0x0163, 
--IBUS_KEY_comma, IBUS_KEY_u,  0x0173, 
--IBUS_KEY_minus, IBUS_KEY_space,  0x007E, 
--IBUS_KEY_minus, IBUS_KEY_parenleft,  0x007B, 
--IBUS_KEY_minus, IBUS_KEY_parenright,  0x007D, 
--IBUS_KEY_minus, IBUS_KEY_plus,  0x00B1, 
--IBUS_KEY_minus, IBUS_KEY_comma,  0x00AC, 
--IBUS_KEY_minus, IBUS_KEY_slash,  0x233F, 
--IBUS_KEY_minus, IBUS_KEY_colon,  0x00F7, 
--IBUS_KEY_minus, IBUS_KEY_greater,  0x2192, 
--IBUS_KEY_minus, IBUS_KEY_A,  0x0100, 
--IBUS_KEY_minus, IBUS_KEY_D,  0x0110, 
--IBUS_KEY_minus, IBUS_KEY_E,  0x0112, 
--IBUS_KEY_minus, IBUS_KEY_I,  0x012A, 
--IBUS_KEY_minus, IBUS_KEY_L,  0x00A3, 
--IBUS_KEY_minus, IBUS_KEY_N,  0x00D1, 
--IBUS_KEY_minus, IBUS_KEY_O,  0x014C, 
--IBUS_KEY_minus, IBUS_KEY_U,  0x016A, 
--IBUS_KEY_minus, IBUS_KEY_Y,  0x00A5, 
--IBUS_KEY_minus, IBUS_KEY_backslash,  0x2340, 
--IBUS_KEY_minus, IBUS_KEY_asciicircum,  0x00AF, 
--IBUS_KEY_minus, IBUS_KEY_a,  0x0101, 
--IBUS_KEY_minus, IBUS_KEY_d,  0x0111, 
--IBUS_KEY_minus, IBUS_KEY_e,  0x0113, 
--IBUS_KEY_minus, IBUS_KEY_i,  0x012B, 
--IBUS_KEY_minus, IBUS_KEY_l,  0x00A3, 
--IBUS_KEY_minus, IBUS_KEY_n,  0x00F1, 
--IBUS_KEY_minus, IBUS_KEY_o,  0x014D, 
--IBUS_KEY_minus, IBUS_KEY_u,  0x016B, 
--IBUS_KEY_minus, IBUS_KEY_y,  0x00A5, 
--IBUS_KEY_minus, 0x2191,  0x234F, 
--IBUS_KEY_minus, 0x2193,  0x2356, 
--IBUS_KEY_minus, IBUS_KEY_emopencircle,  0x2296, 
--IBUS_KEY_period, IBUS_KEY_minus,  0x00B7, 
--IBUS_KEY_period, IBUS_KEY_period,  0x2026, 
--IBUS_KEY_period, IBUS_KEY_colon,  0x2235, 
--IBUS_KEY_period, IBUS_KEY_less,  0x2039, 
--IBUS_KEY_period, IBUS_KEY_equal,  0x2022, 
--IBUS_KEY_period, IBUS_KEY_greater,  0x203A, 
--IBUS_KEY_period, IBUS_KEY_A,  0x0226, 
--IBUS_KEY_period, IBUS_KEY_B,  0x1E02, 
--IBUS_KEY_period, IBUS_KEY_C,  0x010A, 
--IBUS_KEY_period, IBUS_KEY_D,  0x1E0A, 
--IBUS_KEY_period, IBUS_KEY_E,  0x0116, 
--IBUS_KEY_period, IBUS_KEY_F,  0x1E1E, 
--IBUS_KEY_period, IBUS_KEY_G,  0x0120, 
--IBUS_KEY_period, IBUS_KEY_H,  0x1E22, 
--IBUS_KEY_period, IBUS_KEY_I,  0x0130, 
--IBUS_KEY_period, IBUS_KEY_M,  0x1E40, 
--IBUS_KEY_period, IBUS_KEY_N,  0x1E44, 
--IBUS_KEY_period, IBUS_KEY_O,  0x022E, 
--IBUS_KEY_period, IBUS_KEY_P,  0x1E56, 
--IBUS_KEY_period, IBUS_KEY_R,  0x1E58, 
--IBUS_KEY_period, IBUS_KEY_S,  0x1E60, 
--IBUS_KEY_period, IBUS_KEY_T,  0x1E6A, 
--IBUS_KEY_period, IBUS_KEY_W,  0x1E86, 
--IBUS_KEY_period, IBUS_KEY_X,  0x1E8A, 
--IBUS_KEY_period, IBUS_KEY_Y,  0x1E8E, 
--IBUS_KEY_period, IBUS_KEY_Z,  0x017B, 
--IBUS_KEY_period, IBUS_KEY_asciicircum,  0x00B7, 
--IBUS_KEY_period, IBUS_KEY_a,  0x0227, 
--IBUS_KEY_period, IBUS_KEY_b,  0x1E03, 
--IBUS_KEY_period, IBUS_KEY_c,  0x010B, 
--IBUS_KEY_period, IBUS_KEY_d,  0x1E0B, 
--IBUS_KEY_period, IBUS_KEY_e,  0x0117, 
--IBUS_KEY_period, IBUS_KEY_f,  0x1E1F, 
--IBUS_KEY_period, IBUS_KEY_g,  0x0121, 
--IBUS_KEY_period, IBUS_KEY_h,  0x1E23, 
--IBUS_KEY_period, IBUS_KEY_i,  0x0131, 
--IBUS_KEY_period, IBUS_KEY_m,  0x1E41, 
--IBUS_KEY_period, IBUS_KEY_n,  0x1E45, 
--IBUS_KEY_period, IBUS_KEY_o,  0x022F, 
--IBUS_KEY_period, IBUS_KEY_p,  0x1E57, 
--IBUS_KEY_period, IBUS_KEY_r,  0x1E59, 
--IBUS_KEY_period, IBUS_KEY_s,  0x1E61, 
--IBUS_KEY_period, IBUS_KEY_t,  0x1E6B, 
--IBUS_KEY_period, IBUS_KEY_w,  0x1E87, 
--IBUS_KEY_period, IBUS_KEY_x,  0x1E8B, 
--IBUS_KEY_period, IBUS_KEY_y,  0x1E8F, 
--IBUS_KEY_period, IBUS_KEY_z,  0x017C, 
--IBUS_KEY_period, 0x017F,  0x1E9B, 
--IBUS_KEY_period, IBUS_KEY_Sacute,  0x1E64, 
--IBUS_KEY_period, IBUS_KEY_Scaron,  0x1E66, 
--IBUS_KEY_period, IBUS_KEY_sacute,  0x1E65, 
--IBUS_KEY_period, IBUS_KEY_scaron,  0x1E67, 
--IBUS_KEY_period, 0x1E62,  0x1E68, 
--IBUS_KEY_period, 0x1E63,  0x1E69, 
--IBUS_KEY_period, IBUS_KEY_emopencircle,  0x2299, 
--IBUS_KEY_slash, IBUS_KEY_minus,  0x233F, 
--IBUS_KEY_slash, IBUS_KEY_slash,  0x005C, 
--IBUS_KEY_slash, IBUS_KEY_less,  0x005C, 
--IBUS_KEY_slash, IBUS_KEY_equal,  0x2260, 
--IBUS_KEY_slash, IBUS_KEY_C,  0x20A1, 
--IBUS_KEY_slash, IBUS_KEY_D,  0x0110, 
--IBUS_KEY_slash, IBUS_KEY_G,  0x01E4, 
--IBUS_KEY_slash, IBUS_KEY_H,  0x0126, 
--IBUS_KEY_slash, IBUS_KEY_I,  0x0197, 
--IBUS_KEY_slash, IBUS_KEY_L,  0x0141, 
--IBUS_KEY_slash, IBUS_KEY_O,  0x00D8, 
--IBUS_KEY_slash, IBUS_KEY_T,  0x0166, 
--IBUS_KEY_slash, IBUS_KEY_U,  0x00B5, 
--IBUS_KEY_slash, IBUS_KEY_Z,  0x01B5, 
--IBUS_KEY_slash, IBUS_KEY_asciicircum,  0x007C, 
--IBUS_KEY_slash, IBUS_KEY_b,  0x0180, 
--IBUS_KEY_slash, IBUS_KEY_c,  0x00A2, 
--IBUS_KEY_slash, IBUS_KEY_d,  0x0111, 
--IBUS_KEY_slash, IBUS_KEY_g,  0x01E5, 
--IBUS_KEY_slash, IBUS_KEY_h,  0x0127, 
--IBUS_KEY_slash, IBUS_KEY_i,  0x0268, 
--IBUS_KEY_slash, IBUS_KEY_l,  0x0142, 
--IBUS_KEY_slash, IBUS_KEY_m,  0x20A5, 
--IBUS_KEY_slash, IBUS_KEY_o,  0x00F8, 
--IBUS_KEY_slash, IBUS_KEY_t,  0x0167, 
--IBUS_KEY_slash, IBUS_KEY_u,  0x00B5, 
--IBUS_KEY_slash, IBUS_KEY_v,  0x221A, 
--IBUS_KEY_slash, IBUS_KEY_z,  0x01B6, 
--IBUS_KEY_slash, 0x0294,  0x02A1, 
--IBUS_KEY_slash, 0x04AE,  0x04B0, 
--IBUS_KEY_slash, 0x04AF,  0x04B1, 
--IBUS_KEY_slash, IBUS_KEY_Cyrillic_ghe,  0x0493, 
--IBUS_KEY_slash, IBUS_KEY_Cyrillic_ka,  0x049F, 
--IBUS_KEY_slash, IBUS_KEY_Cyrillic_GHE,  0x0492, 
--IBUS_KEY_slash, IBUS_KEY_Cyrillic_KA,  0x049E, 
--IBUS_KEY_slash, IBUS_KEY_leftarrow,  0x219A, 
--IBUS_KEY_slash, IBUS_KEY_rightarrow,  0x219B, 
--IBUS_KEY_slash, 0x2194,  0x21AE, 
--IBUS_KEY_slash, 0x2395,  0x2341, 
--IBUS_KEY_0, IBUS_KEY_asterisk,  0x00B0, 
--IBUS_KEY_0, IBUS_KEY_3,  0x2189, 
--IBUS_KEY_0, IBUS_KEY_C,  0x00A9, 
--IBUS_KEY_0, IBUS_KEY_S,  0x00A7, 
--IBUS_KEY_0, IBUS_KEY_X,  0x00A4, 
--IBUS_KEY_0, IBUS_KEY_asciicircum,  0x00B0, 
--IBUS_KEY_0, IBUS_KEY_c,  0x00A9, 
--IBUS_KEY_0, IBUS_KEY_s,  0x00A7, 
--IBUS_KEY_0, IBUS_KEY_x,  0x00A4, 
--IBUS_KEY_0, IBUS_KEY_asciitilde,  0x236C, 
--IBUS_KEY_1, IBUS_KEY_2,  0x00BD, 
--IBUS_KEY_1, IBUS_KEY_3,  0x2153, 
--IBUS_KEY_1, IBUS_KEY_4,  0x00BC, 
--IBUS_KEY_1, IBUS_KEY_5,  0x2155, 
--IBUS_KEY_1, IBUS_KEY_6,  0x2159, 
--IBUS_KEY_1, IBUS_KEY_7,  0x2150, 
--IBUS_KEY_1, IBUS_KEY_8,  0x215B, 
--IBUS_KEY_1, IBUS_KEY_9,  0x2151, 
--IBUS_KEY_1, IBUS_KEY_S,  0x00B9, 
--IBUS_KEY_1, IBUS_KEY_asciicircum,  0x00B9, 
--IBUS_KEY_1, IBUS_KEY_s,  0x00B9, 
--IBUS_KEY_2, IBUS_KEY_3,  0x2154, 
--IBUS_KEY_2, IBUS_KEY_5,  0x2156, 
--IBUS_KEY_2, IBUS_KEY_S,  0x00B2, 
--IBUS_KEY_2, IBUS_KEY_asciicircum,  0x00B2, 
--IBUS_KEY_2, IBUS_KEY_s,  0x00B2, 
--IBUS_KEY_3, IBUS_KEY_4,  0x00BE, 
--IBUS_KEY_3, IBUS_KEY_5,  0x2157, 
--IBUS_KEY_3, IBUS_KEY_8,  0x215C, 
--IBUS_KEY_3, IBUS_KEY_S,  0x00B3, 
--IBUS_KEY_3, IBUS_KEY_asciicircum,  0x00B3, 
--IBUS_KEY_3, IBUS_KEY_s,  0x00B3, 
--IBUS_KEY_4, IBUS_KEY_5,  0x2158, 
--IBUS_KEY_5, IBUS_KEY_6,  0x215A, 
--IBUS_KEY_5, IBUS_KEY_8,  0x215D, 
--IBUS_KEY_7, IBUS_KEY_8,  0x215E, 
--IBUS_KEY_8, IBUS_KEY_8,  0x221E, 
--IBUS_KEY_colon, IBUS_KEY_parenleft,  0x2639, 
--IBUS_KEY_colon, IBUS_KEY_parenright,  0x263A, 
--IBUS_KEY_colon, IBUS_KEY_minus,  0x00F7, 
--IBUS_KEY_colon, IBUS_KEY_period,  0x2234, 
--IBUS_KEY_colon, 0x2395,  0x2360, 
--IBUS_KEY_semicolon, IBUS_KEY_A,  0x0104, 
--IBUS_KEY_semicolon, IBUS_KEY_E,  0x0118, 
--IBUS_KEY_semicolon, IBUS_KEY_I,  0x012E, 
--IBUS_KEY_semicolon, IBUS_KEY_O,  0x01EA, 
--IBUS_KEY_semicolon, IBUS_KEY_S,  0x0218, 
--IBUS_KEY_semicolon, IBUS_KEY_T,  0x021A, 
--IBUS_KEY_semicolon, IBUS_KEY_U,  0x0172, 
--IBUS_KEY_semicolon, IBUS_KEY_underscore,  0x236E, 
--IBUS_KEY_semicolon, IBUS_KEY_a,  0x0105, 
--IBUS_KEY_semicolon, IBUS_KEY_e,  0x0119, 
--IBUS_KEY_semicolon, IBUS_KEY_i,  0x012F, 
--IBUS_KEY_semicolon, IBUS_KEY_o,  0x01EB, 
--IBUS_KEY_semicolon, IBUS_KEY_s,  0x0219, 
--IBUS_KEY_semicolon, IBUS_KEY_t,  0x021B, 
--IBUS_KEY_semicolon, IBUS_KEY_u,  0x0173, 
--IBUS_KEY_less, IBUS_KEY_space,  0x02C7, 
--IBUS_KEY_less, IBUS_KEY_quotedbl,  0x201C, 
--IBUS_KEY_less, IBUS_KEY_apostrophe,  0x2018, 
--IBUS_KEY_less, IBUS_KEY_minus,  0x2190, 
--IBUS_KEY_less, IBUS_KEY_slash,  0x005C, 
--IBUS_KEY_less, IBUS_KEY_3,  0x2665, 
--IBUS_KEY_less, IBUS_KEY_less,  0x00AB, 
--IBUS_KEY_less, IBUS_KEY_equal,  0x2264, 
--IBUS_KEY_less, IBUS_KEY_greater,  0x22C4, 
--IBUS_KEY_less, IBUS_KEY_C,  0x010C, 
--IBUS_KEY_less, IBUS_KEY_D,  0x010E, 
--IBUS_KEY_less, IBUS_KEY_E,  0x011A, 
--IBUS_KEY_less, IBUS_KEY_L,  0x013D, 
--IBUS_KEY_less, IBUS_KEY_N,  0x0147, 
--IBUS_KEY_less, IBUS_KEY_R,  0x0158, 
--IBUS_KEY_less, IBUS_KEY_S,  0x0160, 
--IBUS_KEY_less, IBUS_KEY_T,  0x0164, 
--IBUS_KEY_less, IBUS_KEY_Z,  0x017D, 
--IBUS_KEY_less, IBUS_KEY_underscore,  0x2264, 
--IBUS_KEY_less, IBUS_KEY_c,  0x010D, 
--IBUS_KEY_less, IBUS_KEY_d,  0x010F, 
--IBUS_KEY_less, IBUS_KEY_e,  0x011B, 
--IBUS_KEY_less, IBUS_KEY_l,  0x013E, 
--IBUS_KEY_less, IBUS_KEY_n,  0x0148, 
--IBUS_KEY_less, IBUS_KEY_r,  0x0159, 
--IBUS_KEY_less, IBUS_KEY_s,  0x0161, 
--IBUS_KEY_less, IBUS_KEY_t,  0x0165, 
--IBUS_KEY_less, IBUS_KEY_z,  0x017E, 
--IBUS_KEY_less, 0x0338,  0x226E, 
--IBUS_KEY_less, 0x2395,  0x2343, 
--IBUS_KEY_equal, IBUS_KEY_slash,  0x2260, 
--IBUS_KEY_equal, IBUS_KEY_greater,  0x21D2, 
--IBUS_KEY_equal, IBUS_KEY_C,  0x20AC, 
--IBUS_KEY_equal, IBUS_KEY_E,  0x20AC, 
--IBUS_KEY_equal, IBUS_KEY_L,  0x20A4, 
--IBUS_KEY_equal, IBUS_KEY_N,  0x20A6, 
--IBUS_KEY_equal, IBUS_KEY_O,  0x0150, 
--IBUS_KEY_equal, IBUS_KEY_R,  0x20B9, 
--IBUS_KEY_equal, IBUS_KEY_U,  0x0170, 
--IBUS_KEY_equal, IBUS_KEY_W,  0x20A9, 
--IBUS_KEY_equal, IBUS_KEY_Y,  0x00A5, 
--IBUS_KEY_equal, IBUS_KEY_underscore,  0x2261, 
--IBUS_KEY_equal, IBUS_KEY_c,  0x20AC, 
--IBUS_KEY_equal, IBUS_KEY_d,  0x20AB, 
--IBUS_KEY_equal, IBUS_KEY_e,  0x20AC, 
--IBUS_KEY_equal, IBUS_KEY_l,  0x00A3, 
--IBUS_KEY_equal, IBUS_KEY_o,  0x0151, 
--IBUS_KEY_equal, IBUS_KEY_r,  0x20B9, 
--IBUS_KEY_equal, IBUS_KEY_u,  0x0171, 
--IBUS_KEY_equal, IBUS_KEY_y,  0x00A5, 
--IBUS_KEY_equal, 0x0338,  0x2260, 
--IBUS_KEY_equal, IBUS_KEY_Cyrillic_u,  0x04F3, 
--IBUS_KEY_equal, IBUS_KEY_Cyrillic_IE,  0x20AC, 
--IBUS_KEY_equal, IBUS_KEY_Cyrillic_ES,  0x20AC, 
--IBUS_KEY_equal, IBUS_KEY_Cyrillic_U,  0x04F2, 
--IBUS_KEY_equal, 0x2395,  0x2338, 
--IBUS_KEY_greater, IBUS_KEY_space,  0x005E, 
--IBUS_KEY_greater, IBUS_KEY_quotedbl,  0x201D, 
--IBUS_KEY_greater, IBUS_KEY_apostrophe,  0x2019, 
--IBUS_KEY_greater, IBUS_KEY_less,  0x22C4, 
--IBUS_KEY_greater, IBUS_KEY_equal,  0x2265, 
--IBUS_KEY_greater, IBUS_KEY_greater,  0x00BB, 
--IBUS_KEY_greater, IBUS_KEY_A,  0x00C2, 
--IBUS_KEY_greater, IBUS_KEY_E,  0x00CA, 
--IBUS_KEY_greater, IBUS_KEY_I,  0x00CE, 
--IBUS_KEY_greater, IBUS_KEY_O,  0x00D4, 
--IBUS_KEY_greater, IBUS_KEY_U,  0x00DB, 
--IBUS_KEY_greater, IBUS_KEY_underscore,  0x2265, 
--IBUS_KEY_greater, IBUS_KEY_a,  0x00E2, 
--IBUS_KEY_greater, IBUS_KEY_e,  0x00EA, 
--IBUS_KEY_greater, IBUS_KEY_i,  0x00EE, 
--IBUS_KEY_greater, IBUS_KEY_o,  0x00F4, 
--IBUS_KEY_greater, IBUS_KEY_u,  0x00FB, 
--IBUS_KEY_greater, IBUS_KEY_diaeresis,  0x2369, 
--IBUS_KEY_greater, 0x0338,  0x226F, 
--IBUS_KEY_greater, 0x2395,  0x2344, 
--IBUS_KEY_question, IBUS_KEY_exclam,  0x2E18, 
--IBUS_KEY_question, IBUS_KEY_question,  0x00BF, 
--IBUS_KEY_question, IBUS_KEY_A,  0x1EA2, 
--IBUS_KEY_question, IBUS_KEY_E,  0x1EBA, 
--IBUS_KEY_question, IBUS_KEY_I,  0x1EC8, 
--IBUS_KEY_question, IBUS_KEY_O,  0x1ECE, 
--IBUS_KEY_question, IBUS_KEY_U,  0x1EE6, 
--IBUS_KEY_question, IBUS_KEY_Y,  0x1EF6, 
--IBUS_KEY_question, IBUS_KEY_a,  0x1EA3, 
--IBUS_KEY_question, IBUS_KEY_e,  0x1EBB, 
--IBUS_KEY_question, IBUS_KEY_i,  0x1EC9, 
--IBUS_KEY_question, IBUS_KEY_o,  0x1ECF, 
--IBUS_KEY_question, IBUS_KEY_u,  0x1EE7, 
--IBUS_KEY_question, IBUS_KEY_y,  0x1EF7, 
--IBUS_KEY_question, IBUS_KEY_Acircumflex,  0x1EA8, 
--IBUS_KEY_question, IBUS_KEY_Ecircumflex,  0x1EC2, 
--IBUS_KEY_question, IBUS_KEY_Ocircumflex,  0x1ED4, 
--IBUS_KEY_question, IBUS_KEY_acircumflex,  0x1EA9, 
--IBUS_KEY_question, IBUS_KEY_ecircumflex,  0x1EC3, 
--IBUS_KEY_question, IBUS_KEY_ocircumflex,  0x1ED5, 
--IBUS_KEY_question, IBUS_KEY_Abreve,  0x1EB2, 
--IBUS_KEY_question, IBUS_KEY_abreve,  0x1EB3, 
--IBUS_KEY_question, 0x2395,  0x2370, 
--IBUS_KEY_A, IBUS_KEY_quotedbl,  0x00C4, 
--IBUS_KEY_A, IBUS_KEY_apostrophe,  0x00C1, 
--IBUS_KEY_A, IBUS_KEY_parenleft,  0x0102, 
--IBUS_KEY_A, IBUS_KEY_asterisk,  0x00C5, 
--IBUS_KEY_A, IBUS_KEY_comma,  0x0104, 
--IBUS_KEY_A, IBUS_KEY_minus,  0x0100, 
--IBUS_KEY_A, IBUS_KEY_semicolon,  0x0104, 
--IBUS_KEY_A, IBUS_KEY_greater,  0x00C2, 
--IBUS_KEY_A, IBUS_KEY_A,  0x00C5, 
--IBUS_KEY_A, IBUS_KEY_E,  0x00C6, 
--IBUS_KEY_A, IBUS_KEY_T,  0x0040, 
--IBUS_KEY_A, IBUS_KEY_asciicircum,  0x00C2, 
--IBUS_KEY_A, IBUS_KEY_underscore,  0x0100, 
--IBUS_KEY_A, IBUS_KEY_grave,  0x00C0, 
--IBUS_KEY_A, IBUS_KEY_asciitilde,  0x00C3, 
--IBUS_KEY_A, IBUS_KEY_diaeresis,  0x00C4, 
--IBUS_KEY_A, IBUS_KEY_acute,  0x00C1, 
--IBUS_KEY_B, IBUS_KEY_period,  0x1E02, 
--IBUS_KEY_C, IBUS_KEY_apostrophe,  0x0106, 
--IBUS_KEY_C, IBUS_KEY_comma,  0x00C7, 
--IBUS_KEY_C, IBUS_KEY_period,  0x010A, 
--IBUS_KEY_C, IBUS_KEY_slash,  0x20A1, 
--IBUS_KEY_C, IBUS_KEY_0,  0x00A9, 
--IBUS_KEY_C, IBUS_KEY_less,  0x010C, 
--IBUS_KEY_C, IBUS_KEY_equal,  0x20AC, 
--IBUS_KEY_C, IBUS_KEY_E,  0x20A0, 
--IBUS_KEY_C, IBUS_KEY_O,  0x00A9, 
--IBUS_KEY_C, IBUS_KEY_o,  0x00A9, 
--IBUS_KEY_C, IBUS_KEY_r,  0x20A2, 
--IBUS_KEY_C, IBUS_KEY_bar,  0x00A2, 
--IBUS_KEY_D, IBUS_KEY_comma,  0x1E10, 
--IBUS_KEY_D, IBUS_KEY_minus,  0x0110, 
--IBUS_KEY_D, IBUS_KEY_period,  0x1E0A, 
--IBUS_KEY_D, IBUS_KEY_less,  0x010E, 
--IBUS_KEY_D, IBUS_KEY_H,  0x00D0, 
--IBUS_KEY_E, IBUS_KEY_quotedbl,  0x00CB, 
--IBUS_KEY_E, IBUS_KEY_apostrophe,  0x00C9, 
--IBUS_KEY_E, IBUS_KEY_comma,  0x0118, 
--IBUS_KEY_E, IBUS_KEY_minus,  0x0112, 
--IBUS_KEY_E, IBUS_KEY_period,  0x0116, 
--IBUS_KEY_E, IBUS_KEY_semicolon,  0x0118, 
--IBUS_KEY_E, IBUS_KEY_less,  0x011A, 
--IBUS_KEY_E, IBUS_KEY_equal,  0x20AC, 
--IBUS_KEY_E, IBUS_KEY_greater,  0x00CA, 
--IBUS_KEY_E, IBUS_KEY_asciicircum,  0x00CA, 
--IBUS_KEY_E, IBUS_KEY_underscore,  0x0112, 
--IBUS_KEY_E, IBUS_KEY_grave,  0x00C8, 
--IBUS_KEY_E, IBUS_KEY_diaeresis,  0x00CB, 
--IBUS_KEY_E, IBUS_KEY_acute,  0x00C9, 
--IBUS_KEY_F, IBUS_KEY_period,  0x1E1E, 
--IBUS_KEY_F, IBUS_KEY_i,  0xFB03, 
--IBUS_KEY_F, IBUS_KEY_l,  0xFB04, 
--IBUS_KEY_F, IBUS_KEY_r,  0x20A3, 
--IBUS_KEY_G, IBUS_KEY_parenleft,  0x011E, 
--IBUS_KEY_G, IBUS_KEY_comma,  0x0122, 
--IBUS_KEY_G, IBUS_KEY_period,  0x0120, 
--IBUS_KEY_G, IBUS_KEY_U,  0x011E, 
--IBUS_KEY_G, IBUS_KEY_breve,  0x011E, 
--IBUS_KEY_H, IBUS_KEY_comma,  0x1E28, 
--IBUS_KEY_I, IBUS_KEY_quotedbl,  0x00CF, 
--IBUS_KEY_I, IBUS_KEY_apostrophe,  0x00CD, 
--IBUS_KEY_I, IBUS_KEY_comma,  0x012E, 
--IBUS_KEY_I, IBUS_KEY_minus,  0x012A, 
--IBUS_KEY_I, IBUS_KEY_period,  0x0130, 
--IBUS_KEY_I, IBUS_KEY_semicolon,  0x012E, 
--IBUS_KEY_I, IBUS_KEY_greater,  0x00CE, 
--IBUS_KEY_I, IBUS_KEY_J,  0x0132, 
--IBUS_KEY_I, IBUS_KEY_asciicircum,  0x00CE, 
--IBUS_KEY_I, IBUS_KEY_underscore,  0x012A, 
--IBUS_KEY_I, IBUS_KEY_grave,  0x00CC, 
--IBUS_KEY_I, IBUS_KEY_j,  0x0132, 
--IBUS_KEY_I, IBUS_KEY_asciitilde,  0x0128, 
--IBUS_KEY_I, IBUS_KEY_diaeresis,  0x00CF, 
--IBUS_KEY_I, IBUS_KEY_acute,  0x00CD, 
--IBUS_KEY_K, IBUS_KEY_comma,  0x0136, 
--IBUS_KEY_L, IBUS_KEY_apostrophe,  0x0139, 
--IBUS_KEY_L, IBUS_KEY_comma,  0x013B, 
--IBUS_KEY_L, IBUS_KEY_minus,  0x00A3, 
--IBUS_KEY_L, IBUS_KEY_slash,  0x0141, 
--IBUS_KEY_L, IBUS_KEY_less,  0x013D, 
--IBUS_KEY_L, IBUS_KEY_equal,  0x20A4, 
--IBUS_KEY_L, IBUS_KEY_V,  0x007C, 
--IBUS_KEY_M, IBUS_KEY_period,  0x1E40, 
--IBUS_KEY_N, IBUS_KEY_apostrophe,  0x0143, 
--IBUS_KEY_N, IBUS_KEY_comma,  0x0145, 
--IBUS_KEY_N, IBUS_KEY_minus,  0x00D1, 
--IBUS_KEY_N, IBUS_KEY_less,  0x0147, 
--IBUS_KEY_N, IBUS_KEY_equal,  0x20A6, 
--IBUS_KEY_N, IBUS_KEY_G,  0x014A, 
--IBUS_KEY_N, IBUS_KEY_O,  0x2116, 
--IBUS_KEY_N, IBUS_KEY_o,  0x2116, 
--IBUS_KEY_N, IBUS_KEY_asciitilde,  0x00D1, 
--IBUS_KEY_O, IBUS_KEY_quotedbl,  0x00D6, 
--IBUS_KEY_O, IBUS_KEY_apostrophe,  0x00D3, 
--IBUS_KEY_O, IBUS_KEY_comma,  0x01EA, 
--IBUS_KEY_O, IBUS_KEY_minus,  0x014C, 
--IBUS_KEY_O, IBUS_KEY_slash,  0x00D8, 
--IBUS_KEY_O, IBUS_KEY_semicolon,  0x01EA, 
--IBUS_KEY_O, IBUS_KEY_greater,  0x00D4, 
--IBUS_KEY_O, IBUS_KEY_A,  0x24B6, 
--IBUS_KEY_O, IBUS_KEY_C,  0x00A9, 
--IBUS_KEY_O, IBUS_KEY_E,  0x0152, 
--IBUS_KEY_O, IBUS_KEY_R,  0x00AE, 
--IBUS_KEY_O, IBUS_KEY_S,  0x00A7, 
--IBUS_KEY_O, IBUS_KEY_X,  0x00A4, 
--IBUS_KEY_O, IBUS_KEY_asciicircum,  0x00D4, 
--IBUS_KEY_O, IBUS_KEY_underscore,  0x014C, 
--IBUS_KEY_O, IBUS_KEY_grave,  0x00D2, 
--IBUS_KEY_O, IBUS_KEY_c,  0x00A9, 
--IBUS_KEY_O, IBUS_KEY_r,  0x00AE, 
--IBUS_KEY_O, IBUS_KEY_x,  0x00A4, 
--IBUS_KEY_O, IBUS_KEY_asciitilde,  0x00D5, 
--IBUS_KEY_O, IBUS_KEY_diaeresis,  0x00D6, 
--IBUS_KEY_O, IBUS_KEY_acute,  0x00D3, 
--IBUS_KEY_P, IBUS_KEY_exclam,  0x00B6, 
--IBUS_KEY_P, IBUS_KEY_period,  0x1E56, 
--IBUS_KEY_P, IBUS_KEY_P,  0x00B6, 
--IBUS_KEY_P, IBUS_KEY_t,  0x20A7, 
--IBUS_KEY_R, IBUS_KEY_apostrophe,  0x0154, 
--IBUS_KEY_R, IBUS_KEY_comma,  0x0156, 
--IBUS_KEY_R, IBUS_KEY_less,  0x0158, 
--IBUS_KEY_R, IBUS_KEY_equal,  0x20B9, 
--IBUS_KEY_R, IBUS_KEY_O,  0x00AE, 
--IBUS_KEY_R, IBUS_KEY_o,  0x00AE, 
--IBUS_KEY_R, IBUS_KEY_s,  0x20A8, 
--IBUS_KEY_S, IBUS_KEY_exclam,  0x00A7, 
--IBUS_KEY_S, IBUS_KEY_apostrophe,  0x015A, 
--IBUS_KEY_S, IBUS_KEY_comma,  0x015E, 
--IBUS_KEY_S, IBUS_KEY_period,  0x1E60, 
--IBUS_KEY_S, IBUS_KEY_0,  0x00A7, 
--IBUS_KEY_S, IBUS_KEY_1,  0x00B9, 
--IBUS_KEY_S, IBUS_KEY_2,  0x00B2, 
--IBUS_KEY_S, IBUS_KEY_3,  0x00B3, 
--IBUS_KEY_S, IBUS_KEY_semicolon,  0x0218, 
--IBUS_KEY_S, IBUS_KEY_less,  0x0160, 
--IBUS_KEY_S, IBUS_KEY_M,  0x2120, 
--IBUS_KEY_S, IBUS_KEY_O,  0x00A7, 
--IBUS_KEY_S, IBUS_KEY_S,  0x1E9E, 
--IBUS_KEY_S, IBUS_KEY_m,  0x2120, 
--IBUS_KEY_S, IBUS_KEY_cedilla,  0x015E, 
--IBUS_KEY_T, IBUS_KEY_comma,  0x0162, 
--IBUS_KEY_T, IBUS_KEY_minus,  0x0166, 
--IBUS_KEY_T, IBUS_KEY_period,  0x1E6A, 
--IBUS_KEY_T, IBUS_KEY_slash,  0x0166, 
--IBUS_KEY_T, IBUS_KEY_semicolon,  0x021A, 
--IBUS_KEY_T, IBUS_KEY_less,  0x0164, 
--IBUS_KEY_T, IBUS_KEY_H,  0x00DE, 
--IBUS_KEY_T, IBUS_KEY_M,  0x2122, 
--IBUS_KEY_T, IBUS_KEY_m,  0x2122, 
--IBUS_KEY_U, IBUS_KEY_quotedbl,  0x00DC, 
--IBUS_KEY_U, IBUS_KEY_apostrophe,  0x00DA, 
--IBUS_KEY_U, IBUS_KEY_asterisk,  0x016E, 
--IBUS_KEY_U, IBUS_KEY_comma,  0x0172, 
--IBUS_KEY_U, IBUS_KEY_minus,  0x016A, 
--IBUS_KEY_U, IBUS_KEY_slash,  0x00B5, 
--IBUS_KEY_U, IBUS_KEY_semicolon,  0x0172, 
--IBUS_KEY_U, IBUS_KEY_greater,  0x00DB, 
--IBUS_KEY_U, IBUS_KEY_A,  0x0102, 
--IBUS_KEY_U, IBUS_KEY_E,  0x0114, 
--IBUS_KEY_U, IBUS_KEY_G,  0x011E, 
--IBUS_KEY_U, IBUS_KEY_I,  0x012C, 
--IBUS_KEY_U, IBUS_KEY_O,  0x014E, 
--IBUS_KEY_U, IBUS_KEY_U,  0x016C, 
--IBUS_KEY_U, IBUS_KEY_asciicircum,  0x00DB, 
--IBUS_KEY_U, IBUS_KEY_underscore,  0x016A, 
--IBUS_KEY_U, IBUS_KEY_grave,  0x00D9, 
--IBUS_KEY_U, IBUS_KEY_a,  0x0103, 
--IBUS_KEY_U, IBUS_KEY_e,  0x0115, 
--IBUS_KEY_U, IBUS_KEY_g,  0x011F, 
--IBUS_KEY_U, IBUS_KEY_i,  0x012D, 
--IBUS_KEY_U, IBUS_KEY_o,  0x014F, 
--IBUS_KEY_U, IBUS_KEY_u,  0x016D, 
--IBUS_KEY_U, IBUS_KEY_asciitilde,  0x0168, 
--IBUS_KEY_U, IBUS_KEY_diaeresis,  0x00DC, 
--IBUS_KEY_U, IBUS_KEY_acute,  0x00DA, 
--IBUS_KEY_U, 0x0228,  0x1E1C, 
--IBUS_KEY_U, 0x0229,  0x1E1D, 
--IBUS_KEY_U, IBUS_KEY_Cyrillic_a,  0x04D1, 
--IBUS_KEY_U, IBUS_KEY_Cyrillic_ie,  0x04D7, 
--IBUS_KEY_U, IBUS_KEY_Cyrillic_i,  0x0439, 
--IBUS_KEY_U, IBUS_KEY_Cyrillic_u,  0x045E, 
--IBUS_KEY_U, IBUS_KEY_Cyrillic_zhe,  0x04C2, 
--IBUS_KEY_U, IBUS_KEY_Cyrillic_A,  0x04D0, 
--IBUS_KEY_U, IBUS_KEY_Cyrillic_IE,  0x04D6, 
--IBUS_KEY_U, IBUS_KEY_Cyrillic_I,  0x0419, 
--IBUS_KEY_U, IBUS_KEY_Cyrillic_U,  0x040E, 
--IBUS_KEY_U, IBUS_KEY_Cyrillic_ZHE,  0x04C1, 
--IBUS_KEY_U, IBUS_KEY_Greek_ALPHA,  0x1FB8, 
--IBUS_KEY_U, IBUS_KEY_Greek_IOTA,  0x1FD8, 
--IBUS_KEY_U, IBUS_KEY_Greek_UPSILON,  0x1FE8, 
--IBUS_KEY_U, IBUS_KEY_Greek_alpha,  0x1FB0, 
--IBUS_KEY_U, IBUS_KEY_Greek_iota,  0x1FD0, 
--IBUS_KEY_U, IBUS_KEY_Greek_upsilon,  0x1FE0, 
--IBUS_KEY_U, 0x1EA0,  0x1EB6, 
--IBUS_KEY_U, 0x1EA1,  0x1EB7, 
--IBUS_KEY_V, IBUS_KEY_L,  0x007C, 
--IBUS_KEY_W, IBUS_KEY_equal,  0x20A9, 
--IBUS_KEY_W, IBUS_KEY_asciicircum,  0x0174, 
--IBUS_KEY_X, IBUS_KEY_0,  0x00A4, 
--IBUS_KEY_X, IBUS_KEY_O,  0x00A4, 
--IBUS_KEY_X, IBUS_KEY_o,  0x00A4, 
--IBUS_KEY_Y, IBUS_KEY_quotedbl,  0x0178, 
--IBUS_KEY_Y, IBUS_KEY_apostrophe,  0x00DD, 
--IBUS_KEY_Y, IBUS_KEY_minus,  0x00A5, 
--IBUS_KEY_Y, IBUS_KEY_equal,  0x00A5, 
--IBUS_KEY_Y, IBUS_KEY_asciicircum,  0x0176, 
--IBUS_KEY_Y, IBUS_KEY_diaeresis,  0x0178, 
--IBUS_KEY_Y, IBUS_KEY_acute,  0x00DD, 
--IBUS_KEY_Z, IBUS_KEY_apostrophe,  0x0179, 
--IBUS_KEY_Z, IBUS_KEY_period,  0x017B, 
--IBUS_KEY_Z, IBUS_KEY_less,  0x017D, 
--IBUS_KEY_bracketleft, IBUS_KEY_bracketright,  0x2337, 
--IBUS_KEY_backslash, IBUS_KEY_minus,  0x2340, 
--IBUS_KEY_backslash, 0x2395,  0x2342, 
--IBUS_KEY_backslash, IBUS_KEY_emopencircle,  0x2349, 
--IBUS_KEY_bracketright, IBUS_KEY_bracketleft,  0x2337, 
--IBUS_KEY_asciicircum, IBUS_KEY_space,  0x005E, 
--IBUS_KEY_asciicircum, IBUS_KEY_parenleft,  0x207D, 
--IBUS_KEY_asciicircum, IBUS_KEY_parenright,  0x207E, 
--IBUS_KEY_asciicircum, IBUS_KEY_plus,  0x207A, 
--IBUS_KEY_asciicircum, IBUS_KEY_minus,  0x00AF, 
--IBUS_KEY_asciicircum, IBUS_KEY_period,  0x00B7, 
--IBUS_KEY_asciicircum, IBUS_KEY_slash,  0x007C, 
--IBUS_KEY_asciicircum, IBUS_KEY_0,  0x2070, 
--IBUS_KEY_asciicircum, IBUS_KEY_1,  0x00B9, 
--IBUS_KEY_asciicircum, IBUS_KEY_2,  0x00B2, 
--IBUS_KEY_asciicircum, IBUS_KEY_3,  0x00B3, 
--IBUS_KEY_asciicircum, IBUS_KEY_4,  0x2074, 
--IBUS_KEY_asciicircum, IBUS_KEY_5,  0x2075, 
--IBUS_KEY_asciicircum, IBUS_KEY_6,  0x2076, 
--IBUS_KEY_asciicircum, IBUS_KEY_7,  0x2077, 
--IBUS_KEY_asciicircum, IBUS_KEY_8,  0x2078, 
--IBUS_KEY_asciicircum, IBUS_KEY_9,  0x2079, 
--IBUS_KEY_asciicircum, IBUS_KEY_equal,  0x207C, 
--IBUS_KEY_asciicircum, IBUS_KEY_A,  0x00C2, 
--IBUS_KEY_asciicircum, IBUS_KEY_C,  0x0108, 
--IBUS_KEY_asciicircum, IBUS_KEY_E,  0x00CA, 
--IBUS_KEY_asciicircum, IBUS_KEY_G,  0x011C, 
--IBUS_KEY_asciicircum, IBUS_KEY_H,  0x0124, 
--IBUS_KEY_asciicircum, IBUS_KEY_I,  0x00CE, 
--IBUS_KEY_asciicircum, IBUS_KEY_J,  0x0134, 
--IBUS_KEY_asciicircum, IBUS_KEY_O,  0x00D4, 
--IBUS_KEY_asciicircum, IBUS_KEY_S,  0x015C, 
--IBUS_KEY_asciicircum, IBUS_KEY_U,  0x00DB, 
--IBUS_KEY_asciicircum, IBUS_KEY_W,  0x0174, 
--IBUS_KEY_asciicircum, IBUS_KEY_Y,  0x0176, 
--IBUS_KEY_asciicircum, IBUS_KEY_Z,  0x1E90, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore,  0x00AF, 
--IBUS_KEY_asciicircum, IBUS_KEY_a,  0x00E2, 
--IBUS_KEY_asciicircum, IBUS_KEY_c,  0x0109, 
--IBUS_KEY_asciicircum, IBUS_KEY_e,  0x00EA, 
--IBUS_KEY_asciicircum, IBUS_KEY_g,  0x011D, 
--IBUS_KEY_asciicircum, IBUS_KEY_h,  0x0125, 
--IBUS_KEY_asciicircum, IBUS_KEY_i,  0x00EE, 
--IBUS_KEY_asciicircum, IBUS_KEY_j,  0x0135, 
--IBUS_KEY_asciicircum, IBUS_KEY_o,  0x00F4, 
--IBUS_KEY_asciicircum, IBUS_KEY_s,  0x015D, 
--IBUS_KEY_asciicircum, IBUS_KEY_u,  0x00FB, 
--IBUS_KEY_asciicircum, IBUS_KEY_w,  0x0175, 
--IBUS_KEY_asciicircum, IBUS_KEY_y,  0x0177, 
--IBUS_KEY_asciicircum, IBUS_KEY_z,  0x1E91, 
--IBUS_KEY_asciicircum, 0x1EA0,  0x1EAC, 
--IBUS_KEY_asciicircum, 0x1EA1,  0x1EAD, 
--IBUS_KEY_asciicircum, 0x1EB8,  0x1EC6, 
--IBUS_KEY_asciicircum, 0x1EB9,  0x1EC7, 
--IBUS_KEY_asciicircum, 0x1ECC,  0x1ED8, 
--IBUS_KEY_asciicircum, 0x1ECD,  0x1ED9, 
--IBUS_KEY_asciicircum, 0x2212,  0x207B, 
--IBUS_KEY_asciicircum, 0x4E00,  0x3192, 
--IBUS_KEY_asciicircum, 0x4E01,  0x319C, 
--IBUS_KEY_asciicircum, 0x4E09,  0x3194, 
--IBUS_KEY_asciicircum, 0x4E0A,  0x3196, 
--IBUS_KEY_asciicircum, 0x4E0B,  0x3198, 
--IBUS_KEY_asciicircum, 0x4E19,  0x319B, 
--IBUS_KEY_asciicircum, 0x4E2D,  0x3197, 
--IBUS_KEY_asciicircum, 0x4E59,  0x319A, 
--IBUS_KEY_asciicircum, 0x4E8C,  0x3193, 
--IBUS_KEY_asciicircum, 0x4EBA,  0x319F, 
--IBUS_KEY_asciicircum, 0x56DB,  0x3195, 
--IBUS_KEY_asciicircum, 0x5730,  0x319E, 
--IBUS_KEY_asciicircum, 0x5929,  0x319D, 
--IBUS_KEY_asciicircum, 0x7532,  0x3199, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_Space,  0x00B2, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_Add,  0x207A, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_0,  0x2070, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_1,  0x00B9, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_2,  0x00B2, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_3,  0x00B3, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_4,  0x2074, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_5,  0x2075, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_6,  0x2076, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_7,  0x2077, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_8,  0x2078, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_9,  0x2079, 
--IBUS_KEY_asciicircum, IBUS_KEY_KP_Equal,  0x207C, 
--IBUS_KEY_underscore, IBUS_KEY_apostrophe,  0x2358, 
--IBUS_KEY_underscore, IBUS_KEY_parenleft,  0x208D, 
--IBUS_KEY_underscore, IBUS_KEY_parenright,  0x208E, 
--IBUS_KEY_underscore, IBUS_KEY_plus,  0x208A, 
--IBUS_KEY_underscore, IBUS_KEY_0,  0x2080, 
--IBUS_KEY_underscore, IBUS_KEY_1,  0x2081, 
--IBUS_KEY_underscore, IBUS_KEY_2,  0x2082, 
--IBUS_KEY_underscore, IBUS_KEY_3,  0x2083, 
--IBUS_KEY_underscore, IBUS_KEY_4,  0x2084, 
--IBUS_KEY_underscore, IBUS_KEY_5,  0x2085, 
--IBUS_KEY_underscore, IBUS_KEY_6,  0x2086, 
--IBUS_KEY_underscore, IBUS_KEY_7,  0x2087, 
--IBUS_KEY_underscore, IBUS_KEY_8,  0x2088, 
--IBUS_KEY_underscore, IBUS_KEY_9,  0x2089, 
--IBUS_KEY_underscore, IBUS_KEY_less,  0x2264, 
--IBUS_KEY_underscore, IBUS_KEY_equal,  0x208C, 
--IBUS_KEY_underscore, IBUS_KEY_greater,  0x2265, 
--IBUS_KEY_underscore, IBUS_KEY_A,  0x0100, 
--IBUS_KEY_underscore, IBUS_KEY_E,  0x0112, 
--IBUS_KEY_underscore, IBUS_KEY_G,  0x1E20, 
--IBUS_KEY_underscore, IBUS_KEY_I,  0x012A, 
--IBUS_KEY_underscore, IBUS_KEY_O,  0x014C, 
--IBUS_KEY_underscore, IBUS_KEY_U,  0x016A, 
--IBUS_KEY_underscore, IBUS_KEY_Y,  0x0232, 
--IBUS_KEY_underscore, IBUS_KEY_asciicircum,  0x00AF, 
--IBUS_KEY_underscore, IBUS_KEY_underscore,  0x00AF, 
--IBUS_KEY_underscore, IBUS_KEY_a,  0x0101, 
--IBUS_KEY_underscore, IBUS_KEY_e,  0x0113, 
--IBUS_KEY_underscore, IBUS_KEY_g,  0x1E21, 
--IBUS_KEY_underscore, IBUS_KEY_i,  0x012B, 
--IBUS_KEY_underscore, IBUS_KEY_o,  0x014D, 
--IBUS_KEY_underscore, IBUS_KEY_u,  0x016B, 
--IBUS_KEY_underscore, IBUS_KEY_y,  0x0233, 
--IBUS_KEY_underscore, IBUS_KEY_Adiaeresis,  0x01DE, 
--IBUS_KEY_underscore, IBUS_KEY_AE,  0x01E2, 
--IBUS_KEY_underscore, IBUS_KEY_Otilde,  0x022C, 
--IBUS_KEY_underscore, IBUS_KEY_Odiaeresis,  0x022A, 
--IBUS_KEY_underscore, IBUS_KEY_Udiaeresis,  0x01D5, 
--IBUS_KEY_underscore, IBUS_KEY_adiaeresis,  0x01DF, 
--IBUS_KEY_underscore, IBUS_KEY_ae,  0x01E3, 
--IBUS_KEY_underscore, IBUS_KEY_otilde,  0x022D, 
--IBUS_KEY_underscore, IBUS_KEY_odiaeresis,  0x022B, 
--IBUS_KEY_underscore, IBUS_KEY_udiaeresis,  0x01D6, 
--IBUS_KEY_underscore, 0x01EA,  0x01EC, 
--IBUS_KEY_underscore, 0x01EB,  0x01ED, 
--IBUS_KEY_underscore, 0x0226,  0x01E0, 
--IBUS_KEY_underscore, 0x0227,  0x01E1, 
--IBUS_KEY_underscore, 0x022E,  0x0230, 
--IBUS_KEY_underscore, 0x022F,  0x0231, 
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_i,  0x04E3, 
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_u,  0x04EF, 
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_I,  0x04E2, 
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_U,  0x04EE, 
--IBUS_KEY_underscore, IBUS_KEY_Greek_ALPHA,  0x1FB9, 
--IBUS_KEY_underscore, IBUS_KEY_Greek_IOTA,  0x1FD9, 
--IBUS_KEY_underscore, IBUS_KEY_Greek_UPSILON,  0x1FE9, 
--IBUS_KEY_underscore, IBUS_KEY_Greek_alpha,  0x1FB1, 
--IBUS_KEY_underscore, IBUS_KEY_Greek_iota,  0x1FD1, 
--IBUS_KEY_underscore, IBUS_KEY_Greek_upsilon,  0x1FE1, 
--IBUS_KEY_underscore, 0x1E36,  0x1E38, 
--IBUS_KEY_underscore, 0x1E37,  0x1E39, 
--IBUS_KEY_underscore, 0x1E5A,  0x1E5C, 
--IBUS_KEY_underscore, 0x1E5B,  0x1E5D, 
--IBUS_KEY_underscore, 0x2206,  0x2359, 
--IBUS_KEY_underscore, 0x220A,  0x2377, 
--IBUS_KEY_underscore, 0x2212,  0x208B, 
--IBUS_KEY_underscore, 0x2218,  0x235B, 
--IBUS_KEY_underscore, 0x2260,  0x2262, 
--IBUS_KEY_underscore, 0x2282,  0x2286, 
--IBUS_KEY_underscore, 0x2283,  0x2287, 
--IBUS_KEY_underscore, IBUS_KEY_downtack,  0x234A, 
--IBUS_KEY_underscore, 0x22C4,  0x235A, 
--IBUS_KEY_underscore, 0x2373,  0x2378, 
--IBUS_KEY_underscore, 0x2375,  0x2379, 
--IBUS_KEY_underscore, 0x237A,  0x2376, 
--IBUS_KEY_underscore, IBUS_KEY_emopencircle,  0x235C, 
--IBUS_KEY_underscore, IBUS_KEY_KP_Space,  0x2082, 
--IBUS_KEY_underscore, IBUS_KEY_KP_Add,  0x208A, 
--IBUS_KEY_underscore, IBUS_KEY_KP_0,  0x2080, 
--IBUS_KEY_underscore, IBUS_KEY_KP_1,  0x2081, 
--IBUS_KEY_underscore, IBUS_KEY_KP_2,  0x2082, 
--IBUS_KEY_underscore, IBUS_KEY_KP_3,  0x2083, 
--IBUS_KEY_underscore, IBUS_KEY_KP_4,  0x2084, 
--IBUS_KEY_underscore, IBUS_KEY_KP_5,  0x2085, 
--IBUS_KEY_underscore, IBUS_KEY_KP_6,  0x2086, 
--IBUS_KEY_underscore, IBUS_KEY_KP_7,  0x2087, 
--IBUS_KEY_underscore, IBUS_KEY_KP_8,  0x2088, 
--IBUS_KEY_underscore, IBUS_KEY_KP_9,  0x2089, 
--IBUS_KEY_underscore, IBUS_KEY_KP_Equal,  0x208C, 
--IBUS_KEY_grave, IBUS_KEY_space,  0x0060, 
--IBUS_KEY_grave, IBUS_KEY_A,  0x00C0, 
--IBUS_KEY_grave, IBUS_KEY_E,  0x00C8, 
--IBUS_KEY_grave, IBUS_KEY_I,  0x00CC, 
--IBUS_KEY_grave, IBUS_KEY_N,  0x01F8, 
--IBUS_KEY_grave, IBUS_KEY_O,  0x00D2, 
--IBUS_KEY_grave, IBUS_KEY_U,  0x00D9, 
--IBUS_KEY_grave, IBUS_KEY_W,  0x1E80, 
--IBUS_KEY_grave, IBUS_KEY_Y,  0x1EF2, 
--IBUS_KEY_grave, IBUS_KEY_a,  0x00E0, 
--IBUS_KEY_grave, IBUS_KEY_e,  0x00E8, 
--IBUS_KEY_grave, IBUS_KEY_i,  0x00EC, 
--IBUS_KEY_grave, IBUS_KEY_n,  0x01F9, 
--IBUS_KEY_grave, IBUS_KEY_o,  0x00F2, 
--IBUS_KEY_grave, IBUS_KEY_u,  0x00F9, 
--IBUS_KEY_grave, IBUS_KEY_w,  0x1E81, 
--IBUS_KEY_grave, IBUS_KEY_y,  0x1EF3, 
--IBUS_KEY_grave, IBUS_KEY_Acircumflex,  0x1EA6, 
--IBUS_KEY_grave, IBUS_KEY_Ecircumflex,  0x1EC0, 
--IBUS_KEY_grave, IBUS_KEY_Ocircumflex,  0x1ED2, 
--IBUS_KEY_grave, IBUS_KEY_Udiaeresis,  0x01DB, 
--IBUS_KEY_grave, IBUS_KEY_acircumflex,  0x1EA7, 
--IBUS_KEY_grave, IBUS_KEY_ecircumflex,  0x1EC1, 
--IBUS_KEY_grave, IBUS_KEY_ocircumflex,  0x1ED3, 
--IBUS_KEY_grave, IBUS_KEY_udiaeresis,  0x01DC, 
--IBUS_KEY_grave, IBUS_KEY_Abreve,  0x1EB0, 
--IBUS_KEY_grave, IBUS_KEY_abreve,  0x1EB1, 
--IBUS_KEY_grave, IBUS_KEY_Emacron,  0x1E14, 
--IBUS_KEY_grave, IBUS_KEY_emacron,  0x1E15, 
--IBUS_KEY_grave, IBUS_KEY_Omacron,  0x1E50, 
--IBUS_KEY_grave, IBUS_KEY_omacron,  0x1E51, 
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_ie,  0x0450, 
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_i,  0x045D, 
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_IE,  0x0400, 
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_I,  0x040D, 
--IBUS_KEY_grave, IBUS_KEY_Greek_iotadieresis,  0x1FD2, 
--IBUS_KEY_grave, IBUS_KEY_Greek_upsilondieresis,  0x1FE2, 
--IBUS_KEY_grave, IBUS_KEY_Greek_ALPHA,  0x1FBA, 
--IBUS_KEY_grave, IBUS_KEY_Greek_EPSILON,  0x1FC8, 
--IBUS_KEY_grave, IBUS_KEY_Greek_ETA,  0x1FCA, 
--IBUS_KEY_grave, IBUS_KEY_Greek_IOTA,  0x1FDA, 
--IBUS_KEY_grave, IBUS_KEY_Greek_OMICRON,  0x1FF8, 
--IBUS_KEY_grave, IBUS_KEY_Greek_UPSILON,  0x1FEA, 
--IBUS_KEY_grave, IBUS_KEY_Greek_OMEGA,  0x1FFA, 
--IBUS_KEY_grave, IBUS_KEY_Greek_alpha,  0x1F70, 
--IBUS_KEY_grave, IBUS_KEY_Greek_epsilon,  0x1F72, 
--IBUS_KEY_grave, IBUS_KEY_Greek_eta,  0x1F74, 
--IBUS_KEY_grave, IBUS_KEY_Greek_iota,  0x1F76, 
--IBUS_KEY_grave, IBUS_KEY_Greek_omicron,  0x1F78, 
--IBUS_KEY_grave, IBUS_KEY_Greek_upsilon,  0x1F7A, 
--IBUS_KEY_grave, IBUS_KEY_Greek_omega,  0x1F7C, 
--IBUS_KEY_grave, 0x1F00,  0x1F02, 
--IBUS_KEY_grave, 0x1F01,  0x1F03, 
--IBUS_KEY_grave, 0x1F08,  0x1F0A, 
--IBUS_KEY_grave, 0x1F09,  0x1F0B, 
--IBUS_KEY_grave, 0x1F10,  0x1F12, 
--IBUS_KEY_grave, 0x1F11,  0x1F13, 
--IBUS_KEY_grave, 0x1F18,  0x1F1A, 
--IBUS_KEY_grave, 0x1F19,  0x1F1B, 
--IBUS_KEY_grave, 0x1F20,  0x1F22, 
--IBUS_KEY_grave, 0x1F21,  0x1F23, 
--IBUS_KEY_grave, 0x1F28,  0x1F2A, 
--IBUS_KEY_grave, 0x1F29,  0x1F2B, 
--IBUS_KEY_grave, 0x1F30,  0x1F32, 
--IBUS_KEY_grave, 0x1F31,  0x1F33, 
--IBUS_KEY_grave, 0x1F38,  0x1F3A, 
--IBUS_KEY_grave, 0x1F39,  0x1F3B, 
--IBUS_KEY_grave, 0x1F40,  0x1F42, 
--IBUS_KEY_grave, 0x1F41,  0x1F43, 
--IBUS_KEY_grave, 0x1F48,  0x1F4A, 
--IBUS_KEY_grave, 0x1F49,  0x1F4B, 
--IBUS_KEY_grave, 0x1F50,  0x1F52, 
--IBUS_KEY_grave, 0x1F51,  0x1F53, 
--IBUS_KEY_grave, 0x1F59,  0x1F5B, 
--IBUS_KEY_grave, 0x1F60,  0x1F62, 
--IBUS_KEY_grave, 0x1F61,  0x1F63, 
--IBUS_KEY_grave, 0x1F68,  0x1F6A, 
--IBUS_KEY_grave, 0x1F69,  0x1F6B, 
--IBUS_KEY_a, IBUS_KEY_quotedbl,  0x00E4, 
--IBUS_KEY_a, IBUS_KEY_apostrophe,  0x00E1, 
--IBUS_KEY_a, IBUS_KEY_parenleft,  0x0103, 
--IBUS_KEY_a, IBUS_KEY_asterisk,  0x00E5, 
--IBUS_KEY_a, IBUS_KEY_comma,  0x0105, 
--IBUS_KEY_a, IBUS_KEY_minus,  0x0101, 
--IBUS_KEY_a, IBUS_KEY_semicolon,  0x0105, 
--IBUS_KEY_a, IBUS_KEY_greater,  0x00E2, 
--IBUS_KEY_a, IBUS_KEY_asciicircum,  0x00E2, 
--IBUS_KEY_a, IBUS_KEY_underscore,  0x0101, 
--IBUS_KEY_a, IBUS_KEY_grave,  0x00E0, 
--IBUS_KEY_a, IBUS_KEY_a,  0x00E5, 
--IBUS_KEY_a, IBUS_KEY_e,  0x00E6, 
--IBUS_KEY_a, IBUS_KEY_asciitilde,  0x00E3, 
--IBUS_KEY_a, IBUS_KEY_diaeresis,  0x00E4, 
--IBUS_KEY_a, IBUS_KEY_acute,  0x00E1, 
--IBUS_KEY_b, IBUS_KEY_period,  0x1E03, 
--IBUS_KEY_b, IBUS_KEY_A,  0x0102, 
--IBUS_KEY_b, IBUS_KEY_E,  0x0114, 
--IBUS_KEY_b, IBUS_KEY_G,  0x011E, 
--IBUS_KEY_b, IBUS_KEY_I,  0x012C, 
--IBUS_KEY_b, IBUS_KEY_O,  0x014E, 
--IBUS_KEY_b, IBUS_KEY_U,  0x016C, 
--IBUS_KEY_b, IBUS_KEY_a,  0x0103, 
--IBUS_KEY_b, IBUS_KEY_e,  0x0115, 
--IBUS_KEY_b, IBUS_KEY_g,  0x011F, 
--IBUS_KEY_b, IBUS_KEY_i,  0x012D, 
--IBUS_KEY_b, IBUS_KEY_o,  0x014F, 
--IBUS_KEY_b, IBUS_KEY_u,  0x016D, 
--IBUS_KEY_b, 0x0228,  0x1E1C, 
--IBUS_KEY_b, 0x0229,  0x1E1D, 
--IBUS_KEY_b, IBUS_KEY_Cyrillic_a,  0x04D1, 
--IBUS_KEY_b, IBUS_KEY_Cyrillic_ie,  0x04D7, 
--IBUS_KEY_b, IBUS_KEY_Cyrillic_i,  0x0439, 
--IBUS_KEY_b, IBUS_KEY_Cyrillic_u,  0x045E, 
--IBUS_KEY_b, IBUS_KEY_Cyrillic_zhe,  0x04C2, 
--IBUS_KEY_b, IBUS_KEY_Cyrillic_A,  0x04D0, 
--IBUS_KEY_b, IBUS_KEY_Cyrillic_IE,  0x04D6, 
--IBUS_KEY_b, IBUS_KEY_Cyrillic_I,  0x0419, 
--IBUS_KEY_b, IBUS_KEY_Cyrillic_U,  0x040E, 
--IBUS_KEY_b, IBUS_KEY_Cyrillic_ZHE,  0x04C1, 
--IBUS_KEY_b, IBUS_KEY_Greek_ALPHA,  0x1FB8, 
--IBUS_KEY_b, IBUS_KEY_Greek_IOTA,  0x1FD8, 
--IBUS_KEY_b, IBUS_KEY_Greek_UPSILON,  0x1FE8, 
--IBUS_KEY_b, IBUS_KEY_Greek_alpha,  0x1FB0, 
--IBUS_KEY_b, IBUS_KEY_Greek_iota,  0x1FD0, 
--IBUS_KEY_b, IBUS_KEY_Greek_upsilon,  0x1FE0, 
--IBUS_KEY_b, 0x1EA0,  0x1EB6, 
--IBUS_KEY_b, 0x1EA1,  0x1EB7, 
--IBUS_KEY_c, IBUS_KEY_apostrophe,  0x0107, 
--IBUS_KEY_c, IBUS_KEY_comma,  0x00E7, 
--IBUS_KEY_c, IBUS_KEY_period,  0x010B, 
--IBUS_KEY_c, IBUS_KEY_slash,  0x00A2, 
--IBUS_KEY_c, IBUS_KEY_0,  0x00A9, 
--IBUS_KEY_c, IBUS_KEY_less,  0x010D, 
--IBUS_KEY_c, IBUS_KEY_equal,  0x20AC, 
--IBUS_KEY_c, IBUS_KEY_A,  0x01CD, 
--IBUS_KEY_c, IBUS_KEY_C,  0x010C, 
--IBUS_KEY_c, IBUS_KEY_D,  0x010E, 
--IBUS_KEY_c, IBUS_KEY_E,  0x011A, 
--IBUS_KEY_c, IBUS_KEY_G,  0x01E6, 
--IBUS_KEY_c, IBUS_KEY_H,  0x021E, 
--IBUS_KEY_c, IBUS_KEY_I,  0x01CF, 
--IBUS_KEY_c, IBUS_KEY_K,  0x01E8, 
--IBUS_KEY_c, IBUS_KEY_L,  0x013D, 
--IBUS_KEY_c, IBUS_KEY_N,  0x0147, 
--IBUS_KEY_c, IBUS_KEY_O,  0x01D1, 
--IBUS_KEY_c, IBUS_KEY_R,  0x0158, 
--IBUS_KEY_c, IBUS_KEY_S,  0x0160, 
--IBUS_KEY_c, IBUS_KEY_T,  0x0164, 
--IBUS_KEY_c, IBUS_KEY_U,  0x01D3, 
--IBUS_KEY_c, IBUS_KEY_Z,  0x017D, 
--IBUS_KEY_c, IBUS_KEY_a,  0x01CE, 
--IBUS_KEY_c, IBUS_KEY_c,  0x010D, 
--IBUS_KEY_c, IBUS_KEY_d,  0x010F, 
--IBUS_KEY_c, IBUS_KEY_e,  0x011B, 
--IBUS_KEY_c, IBUS_KEY_g,  0x01E7, 
--IBUS_KEY_c, IBUS_KEY_h,  0x021F, 
--IBUS_KEY_c, IBUS_KEY_i,  0x01D0, 
--IBUS_KEY_c, IBUS_KEY_j,  0x01F0, 
--IBUS_KEY_c, IBUS_KEY_k,  0x01E9, 
--IBUS_KEY_c, IBUS_KEY_l,  0x013E, 
--IBUS_KEY_c, IBUS_KEY_n,  0x0148, 
--IBUS_KEY_c, IBUS_KEY_o,  0x01D2, 
--IBUS_KEY_c, IBUS_KEY_r,  0x0159, 
--IBUS_KEY_c, IBUS_KEY_s,  0x0161, 
--IBUS_KEY_c, IBUS_KEY_t,  0x0165, 
--IBUS_KEY_c, IBUS_KEY_u,  0x01D4, 
--IBUS_KEY_c, IBUS_KEY_z,  0x017E, 
--IBUS_KEY_c, IBUS_KEY_bar,  0x00A2, 
--IBUS_KEY_c, IBUS_KEY_Udiaeresis,  0x01D9, 
--IBUS_KEY_c, IBUS_KEY_udiaeresis,  0x01DA, 
--IBUS_KEY_d, IBUS_KEY_comma,  0x1E11, 
--IBUS_KEY_d, IBUS_KEY_minus,  0x0111, 
--IBUS_KEY_d, IBUS_KEY_period,  0x1E0B, 
--IBUS_KEY_d, IBUS_KEY_less,  0x010F, 
--IBUS_KEY_d, IBUS_KEY_equal,  0x20AB, 
--IBUS_KEY_d, IBUS_KEY_h,  0x00F0, 
--IBUS_KEY_d, IBUS_KEY_i,  0x2300, 
--IBUS_KEY_e, IBUS_KEY_quotedbl,  0x00EB, 
--IBUS_KEY_e, IBUS_KEY_apostrophe,  0x00E9, 
--IBUS_KEY_e, IBUS_KEY_comma,  0x0119, 
--IBUS_KEY_e, IBUS_KEY_minus,  0x0113, 
--IBUS_KEY_e, IBUS_KEY_period,  0x0117, 
--IBUS_KEY_e, IBUS_KEY_semicolon,  0x0119, 
--IBUS_KEY_e, IBUS_KEY_less,  0x011B, 
--IBUS_KEY_e, IBUS_KEY_equal,  0x20AC, 
--IBUS_KEY_e, IBUS_KEY_greater,  0x00EA, 
--IBUS_KEY_e, IBUS_KEY_asciicircum,  0x00EA, 
--IBUS_KEY_e, IBUS_KEY_underscore,  0x0113, 
--IBUS_KEY_e, IBUS_KEY_grave,  0x00E8, 
--IBUS_KEY_e, IBUS_KEY_e,  0x0259, 
--IBUS_KEY_e, IBUS_KEY_diaeresis,  0x00EB, 
--IBUS_KEY_e, IBUS_KEY_acute,  0x00E9, 
--IBUS_KEY_f, IBUS_KEY_period,  0x1E1F, 
--IBUS_KEY_f, IBUS_KEY_S,  0x017F, 
--IBUS_KEY_f, IBUS_KEY_f,  0xFB00, 
--IBUS_KEY_f, IBUS_KEY_i,  0xFB01, 
--IBUS_KEY_f, IBUS_KEY_l,  0xFB02, 
--IBUS_KEY_f, IBUS_KEY_s,  0x017F, 
--IBUS_KEY_g, IBUS_KEY_parenleft,  0x011F, 
--IBUS_KEY_g, IBUS_KEY_comma,  0x0123, 
--IBUS_KEY_g, IBUS_KEY_period,  0x0121, 
--IBUS_KEY_g, IBUS_KEY_U,  0x011F, 
--IBUS_KEY_g, IBUS_KEY_breve,  0x011F, 
--IBUS_KEY_h, IBUS_KEY_comma,  0x1E29, 
--IBUS_KEY_i, IBUS_KEY_quotedbl,  0x00EF, 
--IBUS_KEY_i, IBUS_KEY_apostrophe,  0x00ED, 
--IBUS_KEY_i, IBUS_KEY_comma,  0x012F, 
--IBUS_KEY_i, IBUS_KEY_minus,  0x012B, 
--IBUS_KEY_i, IBUS_KEY_period,  0x0131, 
--IBUS_KEY_i, IBUS_KEY_semicolon,  0x012F, 
--IBUS_KEY_i, IBUS_KEY_greater,  0x00EE, 
--IBUS_KEY_i, IBUS_KEY_asciicircum,  0x00EE, 
--IBUS_KEY_i, IBUS_KEY_underscore,  0x012B, 
--IBUS_KEY_i, IBUS_KEY_grave,  0x00EC, 
--IBUS_KEY_i, IBUS_KEY_j,  0x0133, 
--IBUS_KEY_i, IBUS_KEY_asciitilde,  0x0129, 
--IBUS_KEY_i, IBUS_KEY_diaeresis,  0x00EF, 
--IBUS_KEY_i, IBUS_KEY_acute,  0x00ED, 
--IBUS_KEY_k, IBUS_KEY_comma,  0x0137, 
--IBUS_KEY_k, IBUS_KEY_k,  0x0138, 
--IBUS_KEY_l, IBUS_KEY_apostrophe,  0x013A, 
--IBUS_KEY_l, IBUS_KEY_comma,  0x013C, 
--IBUS_KEY_l, IBUS_KEY_minus,  0x00A3, 
--IBUS_KEY_l, IBUS_KEY_slash,  0x0142, 
--IBUS_KEY_l, IBUS_KEY_less,  0x013E, 
--IBUS_KEY_l, IBUS_KEY_equal,  0x00A3, 
--IBUS_KEY_l, IBUS_KEY_v,  0x007C, 
--IBUS_KEY_m, IBUS_KEY_period,  0x1E41, 
--IBUS_KEY_m, IBUS_KEY_slash,  0x20A5, 
--IBUS_KEY_m, IBUS_KEY_u,  0x00B5, 
--IBUS_KEY_n, IBUS_KEY_apostrophe,  0x0144, 
--IBUS_KEY_n, IBUS_KEY_comma,  0x0146, 
--IBUS_KEY_n, IBUS_KEY_minus,  0x00F1, 
--IBUS_KEY_n, IBUS_KEY_less,  0x0148, 
--IBUS_KEY_n, IBUS_KEY_g,  0x014B, 
--IBUS_KEY_n, IBUS_KEY_asciitilde,  0x00F1, 
--IBUS_KEY_o, IBUS_KEY_quotedbl,  0x00F6, 
--IBUS_KEY_o, IBUS_KEY_apostrophe,  0x00F3, 
--IBUS_KEY_o, IBUS_KEY_comma,  0x01EB, 
--IBUS_KEY_o, IBUS_KEY_minus,  0x014D, 
--IBUS_KEY_o, IBUS_KEY_slash,  0x00F8, 
--IBUS_KEY_o, IBUS_KEY_semicolon,  0x01EB, 
--IBUS_KEY_o, IBUS_KEY_greater,  0x00F4, 
--IBUS_KEY_o, IBUS_KEY_A,  0x00C5, 
--IBUS_KEY_o, IBUS_KEY_C,  0x00A9, 
--IBUS_KEY_o, IBUS_KEY_R,  0x00AE, 
--IBUS_KEY_o, IBUS_KEY_U,  0x016E, 
--IBUS_KEY_o, IBUS_KEY_X,  0x00A4, 
--IBUS_KEY_o, IBUS_KEY_asciicircum,  0x00F4, 
--IBUS_KEY_o, IBUS_KEY_underscore,  0x014D, 
--IBUS_KEY_o, IBUS_KEY_grave,  0x00F2, 
--IBUS_KEY_o, IBUS_KEY_a,  0x00E5, 
--IBUS_KEY_o, IBUS_KEY_c,  0x00A9, 
--IBUS_KEY_o, IBUS_KEY_e,  0x0153, 
--IBUS_KEY_o, IBUS_KEY_o,  0x00B0, 
--IBUS_KEY_o, IBUS_KEY_r,  0x00AE, 
--IBUS_KEY_o, IBUS_KEY_s,  0x00A7, 
--IBUS_KEY_o, IBUS_KEY_u,  0x016F, 
--IBUS_KEY_o, IBUS_KEY_w,  0x1E98, 
--IBUS_KEY_o, IBUS_KEY_x,  0x00A4, 
--IBUS_KEY_o, IBUS_KEY_y,  0x1E99, 
--IBUS_KEY_o, IBUS_KEY_asciitilde,  0x00F5, 
--IBUS_KEY_o, IBUS_KEY_diaeresis,  0x00F6, 
--IBUS_KEY_o, IBUS_KEY_acute,  0x00F3, 
--IBUS_KEY_p, IBUS_KEY_exclam,  0x00B6, 
--IBUS_KEY_p, IBUS_KEY_period,  0x1E57, 
--IBUS_KEY_r, IBUS_KEY_apostrophe,  0x0155, 
--IBUS_KEY_r, IBUS_KEY_comma,  0x0157, 
--IBUS_KEY_r, IBUS_KEY_less,  0x0159, 
--IBUS_KEY_r, IBUS_KEY_equal,  0x20B9, 
--IBUS_KEY_s, IBUS_KEY_exclam,  0x00A7, 
--IBUS_KEY_s, IBUS_KEY_apostrophe,  0x015B, 
--IBUS_KEY_s, IBUS_KEY_comma,  0x015F, 
--IBUS_KEY_s, IBUS_KEY_period,  0x1E61, 
--IBUS_KEY_s, IBUS_KEY_0,  0x00A7, 
--IBUS_KEY_s, IBUS_KEY_1,  0x00B9, 
--IBUS_KEY_s, IBUS_KEY_2,  0x00B2, 
--IBUS_KEY_s, IBUS_KEY_3,  0x00B3, 
--IBUS_KEY_s, IBUS_KEY_semicolon,  0x0219, 
--IBUS_KEY_s, IBUS_KEY_less,  0x0161, 
--IBUS_KEY_s, IBUS_KEY_M,  0x2120, 
--IBUS_KEY_s, IBUS_KEY_m,  0x2120, 
--IBUS_KEY_s, IBUS_KEY_o,  0x00A7, 
--IBUS_KEY_s, IBUS_KEY_s,  0x00DF, 
--IBUS_KEY_s, IBUS_KEY_cedilla,  0x015F, 
--IBUS_KEY_t, IBUS_KEY_comma,  0x0163, 
--IBUS_KEY_t, IBUS_KEY_minus,  0x0167, 
--IBUS_KEY_t, IBUS_KEY_period,  0x1E6B, 
--IBUS_KEY_t, IBUS_KEY_slash,  0x0167, 
--IBUS_KEY_t, IBUS_KEY_semicolon,  0x021B, 
--IBUS_KEY_t, IBUS_KEY_less,  0x0165, 
--IBUS_KEY_t, IBUS_KEY_M,  0x2122, 
--IBUS_KEY_t, IBUS_KEY_h,  0x00FE, 
--IBUS_KEY_t, IBUS_KEY_m,  0x2122, 
--IBUS_KEY_u, IBUS_KEY_quotedbl,  0x00FC, 
--IBUS_KEY_u, IBUS_KEY_apostrophe,  0x00FA, 
--IBUS_KEY_u, IBUS_KEY_asterisk,  0x016F, 
--IBUS_KEY_u, IBUS_KEY_comma,  0x0173, 
--IBUS_KEY_u, IBUS_KEY_minus,  0x016B, 
--IBUS_KEY_u, IBUS_KEY_slash,  0x00B5, 
--IBUS_KEY_u, IBUS_KEY_semicolon,  0x0173, 
--IBUS_KEY_u, IBUS_KEY_greater,  0x00FB, 
--IBUS_KEY_u, IBUS_KEY_A,  0x0102, 
--IBUS_KEY_u, IBUS_KEY_U,  0x016C, 
--IBUS_KEY_u, IBUS_KEY_asciicircum,  0x00FB, 
--IBUS_KEY_u, IBUS_KEY_underscore,  0x016B, 
--IBUS_KEY_u, IBUS_KEY_grave,  0x00F9, 
--IBUS_KEY_u, IBUS_KEY_a,  0x0103, 
--IBUS_KEY_u, IBUS_KEY_u,  0x016D, 
--IBUS_KEY_u, IBUS_KEY_asciitilde,  0x0169, 
--IBUS_KEY_u, IBUS_KEY_diaeresis,  0x00FC, 
--IBUS_KEY_u, IBUS_KEY_acute,  0x00FA, 
--IBUS_KEY_v, IBUS_KEY_slash,  0x221A, 
--IBUS_KEY_v, IBUS_KEY_Z,  0x017D, 
--IBUS_KEY_v, IBUS_KEY_l,  0x007C, 
--IBUS_KEY_v, IBUS_KEY_z,  0x017E, 
--IBUS_KEY_w, IBUS_KEY_asciicircum,  0x0175, 
--IBUS_KEY_x, IBUS_KEY_0,  0x00A4, 
--IBUS_KEY_x, IBUS_KEY_O,  0x00A4, 
--IBUS_KEY_x, IBUS_KEY_o,  0x00A4, 
--IBUS_KEY_x, IBUS_KEY_x,  0x00D7, 
--IBUS_KEY_y, IBUS_KEY_quotedbl,  0x00FF, 
--IBUS_KEY_y, IBUS_KEY_apostrophe,  0x00FD, 
--IBUS_KEY_y, IBUS_KEY_minus,  0x00A5, 
--IBUS_KEY_y, IBUS_KEY_equal,  0x00A5, 
--IBUS_KEY_y, IBUS_KEY_asciicircum,  0x0177, 
--IBUS_KEY_y, IBUS_KEY_diaeresis,  0x00FF, 
--IBUS_KEY_y, IBUS_KEY_acute,  0x00FD, 
--IBUS_KEY_z, IBUS_KEY_apostrophe,  0x017A, 
--IBUS_KEY_z, IBUS_KEY_period,  0x017C, 
--IBUS_KEY_z, IBUS_KEY_less,  0x017E, 
--IBUS_KEY_braceleft, IBUS_KEY_braceright,  0x2205, 
--IBUS_KEY_bar, IBUS_KEY_C,  0x00A2, 
--IBUS_KEY_bar, IBUS_KEY_c,  0x00A2, 
--IBUS_KEY_bar, IBUS_KEY_asciitilde,  0x236D, 
--IBUS_KEY_bar, 0x2190,  0x2345, 
--IBUS_KEY_bar, 0x2192,  0x2346, 
--IBUS_KEY_bar, 0x2206,  0x234B, 
--IBUS_KEY_bar, 0x2207,  0x2352, 
--IBUS_KEY_bar, IBUS_KEY_union,  0x2366, 
--IBUS_KEY_bar, 0x2282,  0x2367, 
--IBUS_KEY_bar, IBUS_KEY_emopencircle,  0x233D, 
--IBUS_KEY_asciitilde, IBUS_KEY_space,  0x007E, 
--IBUS_KEY_asciitilde, IBUS_KEY_0,  0x236C, 
--IBUS_KEY_asciitilde, IBUS_KEY_A,  0x00C3, 
--IBUS_KEY_asciitilde, IBUS_KEY_E,  0x1EBC, 
--IBUS_KEY_asciitilde, IBUS_KEY_I,  0x0128, 
--IBUS_KEY_asciitilde, IBUS_KEY_N,  0x00D1, 
--IBUS_KEY_asciitilde, IBUS_KEY_O,  0x00D5, 
--IBUS_KEY_asciitilde, IBUS_KEY_U,  0x0168, 
--IBUS_KEY_asciitilde, IBUS_KEY_V,  0x1E7C, 
--IBUS_KEY_asciitilde, IBUS_KEY_Y,  0x1EF8, 
--IBUS_KEY_asciitilde, IBUS_KEY_a,  0x00E3, 
--IBUS_KEY_asciitilde, IBUS_KEY_e,  0x1EBD, 
--IBUS_KEY_asciitilde, IBUS_KEY_i,  0x0129, 
--IBUS_KEY_asciitilde, IBUS_KEY_n,  0x00F1, 
--IBUS_KEY_asciitilde, IBUS_KEY_o,  0x00F5, 
--IBUS_KEY_asciitilde, IBUS_KEY_u,  0x0169, 
--IBUS_KEY_asciitilde, IBUS_KEY_v,  0x1E7D, 
--IBUS_KEY_asciitilde, IBUS_KEY_y,  0x1EF9, 
--IBUS_KEY_asciitilde, IBUS_KEY_bar,  0x236D, 
--IBUS_KEY_asciitilde, IBUS_KEY_diaeresis,  0x2368, 
--IBUS_KEY_asciitilde, IBUS_KEY_Acircumflex,  0x1EAA, 
--IBUS_KEY_asciitilde, IBUS_KEY_Ecircumflex,  0x1EC4, 
--IBUS_KEY_asciitilde, IBUS_KEY_Ocircumflex,  0x1ED6, 
--IBUS_KEY_asciitilde, IBUS_KEY_acircumflex,  0x1EAB, 
--IBUS_KEY_asciitilde, IBUS_KEY_ecircumflex,  0x1EC5, 
--IBUS_KEY_asciitilde, IBUS_KEY_ocircumflex,  0x1ED7, 
--IBUS_KEY_asciitilde, IBUS_KEY_Abreve,  0x1EB4, 
--IBUS_KEY_asciitilde, IBUS_KEY_abreve,  0x1EB5, 
--IBUS_KEY_asciitilde, IBUS_KEY_Greek_iotadieresis,  0x1FD7, 
--IBUS_KEY_asciitilde, IBUS_KEY_Greek_upsilondieresis,  0x1FE7, 
--IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha,  0x1FB6, 
--IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta,  0x1FC6, 
--IBUS_KEY_asciitilde, IBUS_KEY_Greek_iota,  0x1FD6, 
--IBUS_KEY_asciitilde, IBUS_KEY_Greek_upsilon,  0x1FE6, 
--IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega,  0x1FF6, 
--IBUS_KEY_asciitilde, 0x1F00,  0x1F06, 
--IBUS_KEY_asciitilde, 0x1F01,  0x1F07, 
--IBUS_KEY_asciitilde, 0x1F08,  0x1F0E, 
--IBUS_KEY_asciitilde, 0x1F09,  0x1F0F, 
--IBUS_KEY_asciitilde, 0x1F20,  0x1F26, 
--IBUS_KEY_asciitilde, 0x1F21,  0x1F27, 
--IBUS_KEY_asciitilde, 0x1F28,  0x1F2E, 
--IBUS_KEY_asciitilde, 0x1F29,  0x1F2F, 
--IBUS_KEY_asciitilde, 0x1F30,  0x1F36, 
--IBUS_KEY_asciitilde, 0x1F31,  0x1F37, 
--IBUS_KEY_asciitilde, 0x1F38,  0x1F3E, 
--IBUS_KEY_asciitilde, 0x1F39,  0x1F3F, 
--IBUS_KEY_asciitilde, 0x1F50,  0x1F56, 
--IBUS_KEY_asciitilde, 0x1F51,  0x1F57, 
--IBUS_KEY_asciitilde, 0x1F59,  0x1F5F, 
--IBUS_KEY_asciitilde, 0x1F60,  0x1F66, 
--IBUS_KEY_asciitilde, 0x1F61,  0x1F67, 
--IBUS_KEY_asciitilde, 0x1F68,  0x1F6E, 
--IBUS_KEY_asciitilde, 0x1F69,  0x1F6F, 
--IBUS_KEY_asciitilde, 0x2207,  0x236B, 
--IBUS_KEY_asciitilde, 0x2227,  0x2372, 
--IBUS_KEY_asciitilde, 0x2228,  0x2371, 
--IBUS_KEY_diaeresis, IBUS_KEY_apostrophe,  0x0385, 
--IBUS_KEY_diaeresis, IBUS_KEY_asterisk,  0x2363, 
--IBUS_KEY_diaeresis, IBUS_KEY_greater,  0x2369, 
--IBUS_KEY_diaeresis, IBUS_KEY_A,  0x00C4, 
--IBUS_KEY_diaeresis, IBUS_KEY_E,  0x00CB, 
--IBUS_KEY_diaeresis, IBUS_KEY_I,  0x00CF, 
--IBUS_KEY_diaeresis, IBUS_KEY_O,  0x00D6, 
--IBUS_KEY_diaeresis, IBUS_KEY_U,  0x00DC, 
--IBUS_KEY_diaeresis, IBUS_KEY_Y,  0x0178, 
--IBUS_KEY_diaeresis, IBUS_KEY_grave,  0x1FED, 
--IBUS_KEY_diaeresis, IBUS_KEY_a,  0x00E4, 
--IBUS_KEY_diaeresis, IBUS_KEY_e,  0x00EB, 
--IBUS_KEY_diaeresis, IBUS_KEY_i,  0x00EF, 
--IBUS_KEY_diaeresis, IBUS_KEY_o,  0x00F6, 
--IBUS_KEY_diaeresis, IBUS_KEY_u,  0x00FC, 
--IBUS_KEY_diaeresis, IBUS_KEY_y,  0x00FF, 
--IBUS_KEY_diaeresis, IBUS_KEY_asciitilde,  0x1FC1, 
--IBUS_KEY_diaeresis, IBUS_KEY_acute,  0x0385, 
--IBUS_KEY_diaeresis, 0x2207,  0x2362, 
--IBUS_KEY_diaeresis, 0x2218,  0x2364, 
--IBUS_KEY_diaeresis, IBUS_KEY_uptack,  0x2361, 
--IBUS_KEY_diaeresis, IBUS_KEY_emopencircle,  0x2365, 
--IBUS_KEY_diaeresis, IBUS_KEY_dead_grave,  0x1FED, 
--IBUS_KEY_diaeresis, IBUS_KEY_dead_acute,  0x0385, 
--IBUS_KEY_diaeresis, IBUS_KEY_dead_tilde,  0x1FC1, 
--IBUS_KEY_macron, IBUS_KEY_A,  0x0100, 
--IBUS_KEY_macron, IBUS_KEY_E,  0x0112, 
--IBUS_KEY_macron, IBUS_KEY_G,  0x1E20, 
--IBUS_KEY_macron, IBUS_KEY_I,  0x012A, 
--IBUS_KEY_macron, IBUS_KEY_O,  0x014C, 
--IBUS_KEY_macron, IBUS_KEY_U,  0x016A, 
--IBUS_KEY_macron, IBUS_KEY_Y,  0x0232, 
--IBUS_KEY_macron, IBUS_KEY_a,  0x0101, 
--IBUS_KEY_macron, IBUS_KEY_e,  0x0113, 
--IBUS_KEY_macron, IBUS_KEY_g,  0x1E21, 
--IBUS_KEY_macron, IBUS_KEY_i,  0x012B, 
--IBUS_KEY_macron, IBUS_KEY_o,  0x014D, 
--IBUS_KEY_macron, IBUS_KEY_u,  0x016B, 
--IBUS_KEY_macron, IBUS_KEY_y,  0x0233, 
--IBUS_KEY_macron, IBUS_KEY_Adiaeresis,  0x01DE, 
--IBUS_KEY_macron, IBUS_KEY_AE,  0x01E2, 
--IBUS_KEY_macron, IBUS_KEY_Otilde,  0x022C, 
--IBUS_KEY_macron, IBUS_KEY_Odiaeresis,  0x022A, 
--IBUS_KEY_macron, IBUS_KEY_Udiaeresis,  0x01D5, 
--IBUS_KEY_macron, IBUS_KEY_adiaeresis,  0x01DF, 
--IBUS_KEY_macron, IBUS_KEY_ae,  0x01E3, 
--IBUS_KEY_macron, IBUS_KEY_otilde,  0x022D, 
--IBUS_KEY_macron, IBUS_KEY_odiaeresis,  0x022B, 
--IBUS_KEY_macron, IBUS_KEY_udiaeresis,  0x01D6, 
--IBUS_KEY_macron, 0x01EA,  0x01EC, 
--IBUS_KEY_macron, 0x01EB,  0x01ED, 
--IBUS_KEY_macron, 0x0226,  0x01E0, 
--IBUS_KEY_macron, 0x0227,  0x01E1, 
--IBUS_KEY_macron, 0x022E,  0x0230, 
--IBUS_KEY_macron, 0x022F,  0x0231, 
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_i,  0x04E3, 
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_u,  0x04EF, 
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_I,  0x04E2, 
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_U,  0x04EE, 
--IBUS_KEY_macron, IBUS_KEY_Greek_ALPHA,  0x1FB9, 
--IBUS_KEY_macron, IBUS_KEY_Greek_IOTA,  0x1FD9, 
--IBUS_KEY_macron, IBUS_KEY_Greek_UPSILON,  0x1FE9, 
--IBUS_KEY_macron, IBUS_KEY_Greek_alpha,  0x1FB1, 
--IBUS_KEY_macron, IBUS_KEY_Greek_iota,  0x1FD1, 
--IBUS_KEY_macron, IBUS_KEY_Greek_upsilon,  0x1FE1, 
--IBUS_KEY_macron, 0x1E36,  0x1E38, 
--IBUS_KEY_macron, 0x1E37,  0x1E39, 
--IBUS_KEY_macron, 0x1E5A,  0x1E5C, 
--IBUS_KEY_macron, 0x1E5B,  0x1E5D, 
--IBUS_KEY_macron, IBUS_KEY_uptack,  0x2351, 
--IBUS_KEY_acute, IBUS_KEY_A,  0x00C1, 
--IBUS_KEY_acute, IBUS_KEY_C,  0x0106, 
--IBUS_KEY_acute, IBUS_KEY_E,  0x00C9, 
--IBUS_KEY_acute, IBUS_KEY_G,  0x01F4, 
--IBUS_KEY_acute, IBUS_KEY_I,  0x00CD, 
--IBUS_KEY_acute, IBUS_KEY_K,  0x1E30, 
--IBUS_KEY_acute, IBUS_KEY_L,  0x0139, 
--IBUS_KEY_acute, IBUS_KEY_M,  0x1E3E, 
--IBUS_KEY_acute, IBUS_KEY_N,  0x0143, 
--IBUS_KEY_acute, IBUS_KEY_O,  0x00D3, 
--IBUS_KEY_acute, IBUS_KEY_P,  0x1E54, 
--IBUS_KEY_acute, IBUS_KEY_R,  0x0154, 
--IBUS_KEY_acute, IBUS_KEY_S,  0x015A, 
--IBUS_KEY_acute, IBUS_KEY_U,  0x00DA, 
--IBUS_KEY_acute, IBUS_KEY_W,  0x1E82, 
--IBUS_KEY_acute, IBUS_KEY_Y,  0x00DD, 
--IBUS_KEY_acute, IBUS_KEY_Z,  0x0179, 
--IBUS_KEY_acute, IBUS_KEY_a,  0x00E1, 
--IBUS_KEY_acute, IBUS_KEY_c,  0x0107, 
--IBUS_KEY_acute, IBUS_KEY_e,  0x00E9, 
--IBUS_KEY_acute, IBUS_KEY_g,  0x01F5, 
--IBUS_KEY_acute, IBUS_KEY_i,  0x00ED, 
--IBUS_KEY_acute, IBUS_KEY_k,  0x1E31, 
--IBUS_KEY_acute, IBUS_KEY_l,  0x013A, 
--IBUS_KEY_acute, IBUS_KEY_m,  0x1E3F, 
--IBUS_KEY_acute, IBUS_KEY_n,  0x0144, 
--IBUS_KEY_acute, IBUS_KEY_o,  0x00F3, 
--IBUS_KEY_acute, IBUS_KEY_p,  0x1E55, 
--IBUS_KEY_acute, IBUS_KEY_r,  0x0155, 
--IBUS_KEY_acute, IBUS_KEY_s,  0x015B, 
--IBUS_KEY_acute, IBUS_KEY_u,  0x00FA, 
--IBUS_KEY_acute, IBUS_KEY_w,  0x1E83, 
--IBUS_KEY_acute, IBUS_KEY_y,  0x00FD, 
--IBUS_KEY_acute, IBUS_KEY_z,  0x017A, 
--IBUS_KEY_acute, IBUS_KEY_Acircumflex,  0x1EA4, 
--IBUS_KEY_acute, IBUS_KEY_Aring,  0x01FA, 
--IBUS_KEY_acute, IBUS_KEY_AE,  0x01FC, 
--IBUS_KEY_acute, IBUS_KEY_Ccedilla,  0x1E08, 
--IBUS_KEY_acute, IBUS_KEY_Ecircumflex,  0x1EBE, 
--IBUS_KEY_acute, IBUS_KEY_Idiaeresis,  0x1E2E, 
--IBUS_KEY_acute, IBUS_KEY_Ocircumflex,  0x1ED0, 
--IBUS_KEY_acute, IBUS_KEY_Otilde,  0x1E4C, 
--IBUS_KEY_acute, IBUS_KEY_Ooblique,  0x01FE, 
--IBUS_KEY_acute, IBUS_KEY_Udiaeresis,  0x01D7, 
--IBUS_KEY_acute, IBUS_KEY_acircumflex,  0x1EA5, 
--IBUS_KEY_acute, IBUS_KEY_aring,  0x01FB, 
--IBUS_KEY_acute, IBUS_KEY_ae,  0x01FD, 
--IBUS_KEY_acute, IBUS_KEY_ccedilla,  0x1E09, 
--IBUS_KEY_acute, IBUS_KEY_ecircumflex,  0x1EBF, 
--IBUS_KEY_acute, IBUS_KEY_idiaeresis,  0x1E2F, 
--IBUS_KEY_acute, IBUS_KEY_ocircumflex,  0x1ED1, 
--IBUS_KEY_acute, IBUS_KEY_otilde,  0x1E4D, 
--IBUS_KEY_acute, IBUS_KEY_oslash,  0x01FF, 
--IBUS_KEY_acute, IBUS_KEY_udiaeresis,  0x01D8, 
--IBUS_KEY_acute, IBUS_KEY_Abreve,  0x1EAE, 
--IBUS_KEY_acute, IBUS_KEY_abreve,  0x1EAF, 
--IBUS_KEY_acute, IBUS_KEY_Emacron,  0x1E16, 
--IBUS_KEY_acute, IBUS_KEY_emacron,  0x1E17, 
--IBUS_KEY_acute, IBUS_KEY_Omacron,  0x1E52, 
--IBUS_KEY_acute, IBUS_KEY_Utilde,  0x1E78, 
--IBUS_KEY_acute, IBUS_KEY_omacron,  0x1E53, 
--IBUS_KEY_acute, IBUS_KEY_utilde,  0x1E79, 
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_ghe,  0x0453, 
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_ka,  0x045C, 
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_GHE,  0x0403, 
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_KA,  0x040C, 
--IBUS_KEY_acute, IBUS_KEY_Greek_iotadieresis,  0x0390, 
--IBUS_KEY_acute, IBUS_KEY_Greek_upsilondieresis,  0x03B0, 
--IBUS_KEY_acute, IBUS_KEY_Greek_ALPHA,  0x0386, 
--IBUS_KEY_acute, IBUS_KEY_Greek_EPSILON,  0x0388, 
--IBUS_KEY_acute, IBUS_KEY_Greek_ETA,  0x0389, 
--IBUS_KEY_acute, IBUS_KEY_Greek_IOTA,  0x038A, 
--IBUS_KEY_acute, IBUS_KEY_Greek_OMICRON,  0x038C, 
--IBUS_KEY_acute, IBUS_KEY_Greek_UPSILON,  0x038E, 
--IBUS_KEY_acute, IBUS_KEY_Greek_OMEGA,  0x038F, 
--IBUS_KEY_acute, IBUS_KEY_Greek_alpha,  0x03AC, 
--IBUS_KEY_acute, IBUS_KEY_Greek_epsilon,  0x03AD, 
--IBUS_KEY_acute, IBUS_KEY_Greek_eta,  0x03AE, 
--IBUS_KEY_acute, IBUS_KEY_Greek_iota,  0x03AF, 
--IBUS_KEY_acute, IBUS_KEY_Greek_omicron,  0x03CC, 
--IBUS_KEY_acute, IBUS_KEY_Greek_upsilon,  0x03CD, 
--IBUS_KEY_acute, IBUS_KEY_Greek_omega,  0x03CE, 
--IBUS_KEY_acute, 0x1F00,  0x1F04, 
--IBUS_KEY_acute, 0x1F01,  0x1F05, 
--IBUS_KEY_acute, 0x1F08,  0x1F0C, 
--IBUS_KEY_acute, 0x1F09,  0x1F0D, 
--IBUS_KEY_acute, 0x1F10,  0x1F14, 
--IBUS_KEY_acute, 0x1F11,  0x1F15, 
--IBUS_KEY_acute, 0x1F18,  0x1F1C, 
--IBUS_KEY_acute, 0x1F19,  0x1F1D, 
--IBUS_KEY_acute, 0x1F20,  0x1F24, 
--IBUS_KEY_acute, 0x1F21,  0x1F25, 
--IBUS_KEY_acute, 0x1F28,  0x1F2C, 
--IBUS_KEY_acute, 0x1F29,  0x1F2D, 
--IBUS_KEY_acute, 0x1F30,  0x1F34, 
--IBUS_KEY_acute, 0x1F31,  0x1F35, 
--IBUS_KEY_acute, 0x1F38,  0x1F3C, 
--IBUS_KEY_acute, 0x1F39,  0x1F3D, 
--IBUS_KEY_acute, 0x1F40,  0x1F44, 
--IBUS_KEY_acute, 0x1F41,  0x1F45, 
--IBUS_KEY_acute, 0x1F48,  0x1F4C, 
--IBUS_KEY_acute, 0x1F49,  0x1F4D, 
--IBUS_KEY_acute, 0x1F50,  0x1F54, 
--IBUS_KEY_acute, 0x1F51,  0x1F55, 
--IBUS_KEY_acute, 0x1F59,  0x1F5D, 
--IBUS_KEY_acute, 0x1F60,  0x1F64, 
--IBUS_KEY_acute, 0x1F61,  0x1F65, 
--IBUS_KEY_acute, 0x1F68,  0x1F6C, 
--IBUS_KEY_acute, 0x1F69,  0x1F6D, 
--IBUS_KEY_cedilla, IBUS_KEY_C,  0x00C7, 
--IBUS_KEY_cedilla, IBUS_KEY_D,  0x1E10, 
--IBUS_KEY_cedilla, IBUS_KEY_E,  0x0228, 
--IBUS_KEY_cedilla, IBUS_KEY_G,  0x0122, 
--IBUS_KEY_cedilla, IBUS_KEY_H,  0x1E28, 
--IBUS_KEY_cedilla, IBUS_KEY_K,  0x0136, 
--IBUS_KEY_cedilla, IBUS_KEY_L,  0x013B, 
--IBUS_KEY_cedilla, IBUS_KEY_N,  0x0145, 
--IBUS_KEY_cedilla, IBUS_KEY_R,  0x0156, 
--IBUS_KEY_cedilla, IBUS_KEY_S,  0x015E, 
--IBUS_KEY_cedilla, IBUS_KEY_T,  0x0162, 
--IBUS_KEY_cedilla, IBUS_KEY_c,  0x00E7, 
--IBUS_KEY_cedilla, IBUS_KEY_d,  0x1E11, 
--IBUS_KEY_cedilla, IBUS_KEY_e,  0x0229, 
--IBUS_KEY_cedilla, IBUS_KEY_g,  0x0123, 
--IBUS_KEY_cedilla, IBUS_KEY_h,  0x1E29, 
--IBUS_KEY_cedilla, IBUS_KEY_k,  0x0137, 
--IBUS_KEY_cedilla, IBUS_KEY_l,  0x013C, 
--IBUS_KEY_cedilla, IBUS_KEY_n,  0x0146, 
--IBUS_KEY_cedilla, IBUS_KEY_r,  0x0157, 
--IBUS_KEY_cedilla, IBUS_KEY_s,  0x015F, 
--IBUS_KEY_cedilla, IBUS_KEY_t,  0x0163, 
--IBUS_KEY_division, 0x2395,  0x2339, 
--IBUS_KEY_breve, IBUS_KEY_G,  0x011E, 
--IBUS_KEY_breve, IBUS_KEY_g,  0x011F, 
--0x05B4, IBUS_KEY_hebrew_yod,  0xFB1D, 
--0x05B7, 0x05F2,  0xFB1F, 
--0x05B7, IBUS_KEY_hebrew_aleph,  0xFB2E, 
--0x05B8, IBUS_KEY_hebrew_aleph,  0xFB2F, 
--0x05B9, IBUS_KEY_hebrew_waw,  0xFB4B, 
--0x05BC, IBUS_KEY_hebrew_aleph,  0xFB30, 
--0x05BC, IBUS_KEY_hebrew_bet,  0xFB31, 
--0x05BC, IBUS_KEY_hebrew_gimel,  0xFB32, 
--0x05BC, IBUS_KEY_hebrew_dalet,  0xFB33, 
--0x05BC, IBUS_KEY_hebrew_he,  0xFB34, 
--0x05BC, IBUS_KEY_hebrew_waw,  0xFB35, 
--0x05BC, IBUS_KEY_hebrew_zain,  0xFB36, 
--0x05BC, IBUS_KEY_hebrew_tet,  0xFB38, 
--0x05BC, IBUS_KEY_hebrew_yod,  0xFB39, 
--0x05BC, IBUS_KEY_hebrew_finalkaph,  0xFB3A, 
--0x05BC, IBUS_KEY_hebrew_kaph,  0xFB3B, 
--0x05BC, IBUS_KEY_hebrew_lamed,  0xFB3C, 
--0x05BC, IBUS_KEY_hebrew_mem,  0xFB3E, 
--0x05BC, IBUS_KEY_hebrew_nun,  0xFB40, 
--0x05BC, IBUS_KEY_hebrew_samech,  0xFB41, 
--0x05BC, IBUS_KEY_hebrew_finalpe,  0xFB43, 
--0x05BC, IBUS_KEY_hebrew_pe,  0xFB44, 
--0x05BC, IBUS_KEY_hebrew_zade,  0xFB46, 
--0x05BC, IBUS_KEY_hebrew_kuf,  0xFB47, 
--0x05BC, IBUS_KEY_hebrew_resh,  0xFB48, 
--0x05BC, IBUS_KEY_hebrew_shin,  0xFB49, 
--0x05BC, IBUS_KEY_hebrew_taf,  0xFB4A, 
--0x05BF, IBUS_KEY_hebrew_bet,  0xFB4C, 
--0x05BF, IBUS_KEY_hebrew_kaph,  0xFB4D, 
--0x05BF, IBUS_KEY_hebrew_pe,  0xFB4E, 
--0x05C1, IBUS_KEY_hebrew_shin,  0xFB2A, 
--0x05C1, 0xFB49,  0xFB2C, 
--0x05C2, IBUS_KEY_hebrew_shin,  0xFB2B, 
--0x05C2, 0xFB49,  0xFB2D, 
--0x0653, IBUS_KEY_Arabic_alef,  0x0622, 
--0x0654, IBUS_KEY_Arabic_alef,  0x0623, 
--0x0654, IBUS_KEY_Arabic_waw,  0x0624, 
--0x0654, IBUS_KEY_Arabic_yeh,  0x0626, 
--0x0654, 0x06C1,  0x06C2, 
--0x0654, 0x06D2,  0x06D3, 
--0x0654, 0x06D5,  0x06C0, 
--0x0655, IBUS_KEY_Arabic_alef,  0x0625, 
--IBUS_KEY_Cyrillic_pe, IBUS_KEY_Cyrillic_a,  0x00A7, 
--IBUS_KEY_Cyrillic_IE, IBUS_KEY_equal,  0x20AC, 
--IBUS_KEY_Cyrillic_EN, IBUS_KEY_Cyrillic_o,  0x2116, 
--IBUS_KEY_Cyrillic_EN, IBUS_KEY_Cyrillic_O,  0x2116, 
--IBUS_KEY_Cyrillic_ES, IBUS_KEY_equal,  0x20AC, 
--IBUS_KEY_Greek_ALPHA, IBUS_KEY_apostrophe,  0x0386, 
--IBUS_KEY_Greek_EPSILON, IBUS_KEY_apostrophe,  0x0388, 
--IBUS_KEY_Greek_ETA, IBUS_KEY_apostrophe,  0x0389, 
--IBUS_KEY_Greek_IOTA, IBUS_KEY_quotedbl,  0x03AA, 
--IBUS_KEY_Greek_IOTA, IBUS_KEY_apostrophe,  0x038A, 
--IBUS_KEY_Greek_OMICRON, IBUS_KEY_apostrophe,  0x038C, 
--IBUS_KEY_Greek_UPSILON, IBUS_KEY_quotedbl,  0x03AB, 
--IBUS_KEY_Greek_UPSILON, IBUS_KEY_apostrophe,  0x038E, 
--IBUS_KEY_Greek_OMEGA, IBUS_KEY_apostrophe,  0x038F, 
--IBUS_KEY_Greek_alpha, IBUS_KEY_apostrophe,  0x03AC, 
--IBUS_KEY_Greek_epsilon, IBUS_KEY_apostrophe,  0x03AD, 
--IBUS_KEY_Greek_eta, IBUS_KEY_apostrophe,  0x03AE, 
--IBUS_KEY_Greek_iota, IBUS_KEY_quotedbl,  0x03CA, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe,  0x03AF, 
--IBUS_KEY_Greek_iota, IBUS_KEY_Greek_alphaaccent,  0x1FB4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_Greek_etaaccent,  0x1FC4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_Greek_omegaaccent,  0x1FF4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_Greek_ALPHA,  0x1FBC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_Greek_ETA,  0x1FCC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_Greek_OMEGA,  0x1FFC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_Greek_alpha,  0x1FB3, 
--IBUS_KEY_Greek_iota, IBUS_KEY_Greek_eta,  0x1FC3, 
--IBUS_KEY_Greek_iota, IBUS_KEY_Greek_omega,  0x1FF3, 
--IBUS_KEY_Greek_iota, 0x1F00,  0x1F80, 
--IBUS_KEY_Greek_iota, 0x1F01,  0x1F81, 
--IBUS_KEY_Greek_iota, 0x1F02,  0x1F82, 
--IBUS_KEY_Greek_iota, 0x1F03,  0x1F83, 
--IBUS_KEY_Greek_iota, 0x1F04,  0x1F84, 
--IBUS_KEY_Greek_iota, 0x1F05,  0x1F85, 
--IBUS_KEY_Greek_iota, 0x1F06,  0x1F86, 
--IBUS_KEY_Greek_iota, 0x1F07,  0x1F87, 
--IBUS_KEY_Greek_iota, 0x1F08,  0x1F88, 
--IBUS_KEY_Greek_iota, 0x1F09,  0x1F89, 
--IBUS_KEY_Greek_iota, 0x1F0A,  0x1F8A, 
--IBUS_KEY_Greek_iota, 0x1F0B,  0x1F8B, 
--IBUS_KEY_Greek_iota, 0x1F0C,  0x1F8C, 
--IBUS_KEY_Greek_iota, 0x1F0D,  0x1F8D, 
--IBUS_KEY_Greek_iota, 0x1F0E,  0x1F8E, 
--IBUS_KEY_Greek_iota, 0x1F0F,  0x1F8F, 
--IBUS_KEY_Greek_iota, 0x1F20,  0x1F90, 
--IBUS_KEY_Greek_iota, 0x1F21,  0x1F91, 
--IBUS_KEY_Greek_iota, 0x1F22,  0x1F92, 
--IBUS_KEY_Greek_iota, 0x1F23,  0x1F93, 
--IBUS_KEY_Greek_iota, 0x1F24,  0x1F94, 
--IBUS_KEY_Greek_iota, 0x1F25,  0x1F95, 
--IBUS_KEY_Greek_iota, 0x1F26,  0x1F96, 
--IBUS_KEY_Greek_iota, 0x1F27,  0x1F97, 
--IBUS_KEY_Greek_iota, 0x1F28,  0x1F98, 
--IBUS_KEY_Greek_iota, 0x1F29,  0x1F99, 
--IBUS_KEY_Greek_iota, 0x1F2A,  0x1F9A, 
--IBUS_KEY_Greek_iota, 0x1F2B,  0x1F9B, 
--IBUS_KEY_Greek_iota, 0x1F2C,  0x1F9C, 
--IBUS_KEY_Greek_iota, 0x1F2D,  0x1F9D, 
--IBUS_KEY_Greek_iota, 0x1F2E,  0x1F9E, 
--IBUS_KEY_Greek_iota, 0x1F2F,  0x1F9F, 
--IBUS_KEY_Greek_iota, 0x1F60,  0x1FA0, 
--IBUS_KEY_Greek_iota, 0x1F61,  0x1FA1, 
--IBUS_KEY_Greek_iota, 0x1F62,  0x1FA2, 
--IBUS_KEY_Greek_iota, 0x1F63,  0x1FA3, 
--IBUS_KEY_Greek_iota, 0x1F64,  0x1FA4, 
--IBUS_KEY_Greek_iota, 0x1F65,  0x1FA5, 
--IBUS_KEY_Greek_iota, 0x1F66,  0x1FA6, 
--IBUS_KEY_Greek_iota, 0x1F67,  0x1FA7, 
--IBUS_KEY_Greek_iota, 0x1F68,  0x1FA8, 
--IBUS_KEY_Greek_iota, 0x1F69,  0x1FA9, 
--IBUS_KEY_Greek_iota, 0x1F6A,  0x1FAA, 
--IBUS_KEY_Greek_iota, 0x1F6B,  0x1FAB, 
--IBUS_KEY_Greek_iota, 0x1F6C,  0x1FAC, 
--IBUS_KEY_Greek_iota, 0x1F6D,  0x1FAD, 
--IBUS_KEY_Greek_iota, 0x1F6E,  0x1FAE, 
--IBUS_KEY_Greek_iota, 0x1F6F,  0x1FAF, 
--IBUS_KEY_Greek_iota, 0x1F70,  0x1FB2, 
--IBUS_KEY_Greek_iota, 0x1F74,  0x1FC2, 
--IBUS_KEY_Greek_iota, 0x1F7C,  0x1FF2, 
--IBUS_KEY_Greek_iota, 0x1FB6,  0x1FB7, 
--IBUS_KEY_Greek_iota, 0x1FC6,  0x1FC7, 
--IBUS_KEY_Greek_iota, 0x1FF6,  0x1FF7, 
--IBUS_KEY_Greek_omicron, IBUS_KEY_apostrophe,  0x03CC, 
--IBUS_KEY_Greek_upsilon, IBUS_KEY_quotedbl,  0x03CB, 
--IBUS_KEY_Greek_upsilon, IBUS_KEY_apostrophe,  0x03CD, 
--IBUS_KEY_Greek_omega, IBUS_KEY_apostrophe,  0x03CE, 
--IBUS_KEY_lessthanequal, 0x0338,  0x2270, 
--IBUS_KEY_greaterthanequal, 0x0338,  0x2271, 
--IBUS_KEY_approximate, 0x0338,  0x2247, 
--IBUS_KEY_identical, 0x0338,  0x2262, 
--IBUS_KEY_includedin, 0x0338,  0x2284, 
--IBUS_KEY_includes, 0x0338,  0x2285, 
--0x093C, 0x0915,  0x0958, 
--0x093C, 0x0916,  0x0959, 
--0x093C, 0x0917,  0x095A, 
--0x093C, 0x091C,  0x095B, 
--0x093C, 0x0921,  0x095C, 
--0x093C, 0x0922,  0x095D, 
--0x093C, 0x0928,  0x0929, 
--0x093C, 0x092B,  0x095E, 
--0x093C, 0x092F,  0x095F, 
--0x093C, 0x0930,  0x0931, 
--0x093C, 0x0933,  0x0934, 
--0x09BC, 0x09A1,  0x09DC, 
--0x09BC, 0x09A2,  0x09DD, 
--0x09BC, 0x09AF,  0x09DF, 
--0x09C7, 0x09BE,  0x09CB, 
--0x09C7, 0x09D7,  0x09CC, 
--0x0A3C, 0x0A16,  0x0A59, 
--0x0A3C, 0x0A17,  0x0A5A, 
--0x0A3C, 0x0A1C,  0x0A5B, 
--0x0A3C, 0x0A2B,  0x0A5E, 
--0x0A3C, 0x0A32,  0x0A33, 
--0x0A3C, 0x0A38,  0x0A36, 
--0x0B3C, 0x0B21,  0x0B5C, 
--0x0B3C, 0x0B22,  0x0B5D, 
--0x0B47, 0x0B3E,  0x0B4B, 
--0x0B47, 0x0B56,  0x0B48, 
--0x0B47, 0x0B57,  0x0B4C, 
--IBUS_KEY_leftcaret, 0x0338,  0x226E, 
--IBUS_KEY_rightcaret, 0x0338,  0x226F, 
--IBUS_KEY_underbar, IBUS_KEY_parenleft,  0x208D, 
--IBUS_KEY_underbar, IBUS_KEY_parenright,  0x208E, 
--IBUS_KEY_underbar, IBUS_KEY_plus,  0x208A, 
--IBUS_KEY_underbar, IBUS_KEY_0,  0x2080, 
--IBUS_KEY_underbar, IBUS_KEY_1,  0x2081, 
--IBUS_KEY_underbar, IBUS_KEY_2,  0x2082, 
--IBUS_KEY_underbar, IBUS_KEY_3,  0x2083, 
--IBUS_KEY_underbar, IBUS_KEY_4,  0x2084, 
--IBUS_KEY_underbar, IBUS_KEY_5,  0x2085, 
--IBUS_KEY_underbar, IBUS_KEY_6,  0x2086, 
--IBUS_KEY_underbar, IBUS_KEY_7,  0x2087, 
--IBUS_KEY_underbar, IBUS_KEY_8,  0x2088, 
--IBUS_KEY_underbar, IBUS_KEY_9,  0x2089, 
--IBUS_KEY_underbar, IBUS_KEY_equal,  0x208C, 
--0x0BC6, 0x0BBE,  0x0BCA, 
--0x0BC6, 0x0BD7,  0x0BCC, 
--IBUS_KEY_underbar, 0x2212,  0x208B, 
--IBUS_KEY_underbar, IBUS_KEY_KP_Space,  0x2082, 
--IBUS_KEY_underbar, IBUS_KEY_KP_Add,  0x208A, 
--IBUS_KEY_underbar, IBUS_KEY_KP_0,  0x2080, 
--IBUS_KEY_underbar, IBUS_KEY_KP_1,  0x2081, 
--IBUS_KEY_underbar, IBUS_KEY_KP_2,  0x2082, 
--IBUS_KEY_underbar, IBUS_KEY_KP_3,  0x2083, 
--IBUS_KEY_underbar, IBUS_KEY_KP_4,  0x2084, 
--IBUS_KEY_underbar, IBUS_KEY_KP_5,  0x2085, 
--IBUS_KEY_underbar, IBUS_KEY_KP_6,  0x2086, 
--IBUS_KEY_underbar, IBUS_KEY_KP_7,  0x2087, 
--IBUS_KEY_underbar, IBUS_KEY_KP_8,  0x2088, 
--IBUS_KEY_underbar, IBUS_KEY_KP_9,  0x2089, 
--IBUS_KEY_underbar, IBUS_KEY_KP_Equal,  0x208C, 
--0x0BC7, 0x0BBE,  0x0BCB, 
--0x0BD7, 0x0B92,  0x0B94, 
--IBUS_KEY_rightshoe, 0x0338,  0x2285, 
--IBUS_KEY_leftshoe, 0x0338,  0x2284, 
--IBUS_KEY_righttack, 0x0338,  0x22AC, 
--0x0C46, 0x0C56,  0x0C48, 
--0x0CBF, 0x0CD5,  0x0CC0, 
--0x0CC6, 0x0CC2,  0x0CCA, 
--0x0CC6, 0x0CD5,  0x0CC7, 
--0x0CC6, 0x0CD6,  0x0CC8, 
--0x0CCA, 0x0CD5,  0x0CCB, 
--0x0D46, 0x0D3E,  0x0D4A, 
--0x0D46, 0x0D57,  0x0D4C, 
--0x0D47, 0x0D3E,  0x0D4B, 
--0x0DD9, 0x0DCA,  0x0DDA, 
--0x0DD9, 0x0DCF,  0x0DDC, 
--0x0DD9, 0x0DDF,  0x0DDE, 
--0x0DDC, 0x0DCA,  0x0DDD, 
--0x0F71, 0x0F72,  0x0F73, 
--0x0F71, 0x0F74,  0x0F75, 
--0x0F71, 0x0F80,  0x0F81, 
--0x0F90, 0x0FB5,  0x0FB9, 
--0x0F92, 0x0FB7,  0x0F93, 
--0x0F9C, 0x0FB7,  0x0F9D, 
--0x0FA1, 0x0FB7,  0x0FA2, 
--0x0FA6, 0x0FB7,  0x0FA7, 
--0x0FAB, 0x0FB7,  0x0FAC, 
--0x0FB2, 0x0F80,  0x0F76, 
--0x0FB3, 0x0F80,  0x0F78, 
--0x0FB5, 0x0F40,  0x0F69, 
--0x0FB7, 0x0F42,  0x0F43, 
--0x0FB7, 0x0F4C,  0x0F4D, 
--0x0FB7, 0x0F51,  0x0F52, 
--0x0FB7, 0x0F56,  0x0F57, 
--0x0FB7, 0x0F5B,  0x0F5C, 
--0x102E, 0x1025,  0x1026, 
--0x1100, 0x1100,  0x1101, 
--0x1102, 0x1100,  0x1113, 
--0x1102, 0x1102,  0x1114, 
--0x1102, 0x1103,  0x1115, 
--0x1102, 0x1107,  0x1116, 
--0x1103, 0x1100,  0x1117, 
--0x1103, 0x1103,  0x1104, 
--0x1105, 0x1102,  0x1118, 
--0x1105, 0x1105,  0x1119, 
--0x1105, 0x110B,  0x111B, 
--0x1105, 0x1112,  0x111A, 
--0x1106, 0x1107,  0x111C, 
--0x1106, 0x110B,  0x111D, 
--0x1107, 0x1100,  0x111E, 
--0x1107, 0x1102,  0x111F, 
--0x1107, 0x1103,  0x1120, 
--0x1107, 0x1107,  0x1108, 
--0x1107, 0x1109,  0x1121, 
--0x1107, 0x110A,  0x1125, 
--0x1107, 0x110B,  0x112B, 
--0x1107, 0x110C,  0x1127, 
--0x1107, 0x110E,  0x1128, 
--0x1107, 0x1110,  0x1129, 
--0x1107, 0x1111,  0x112A, 
--0x1107, 0x112B,  0x112C, 
--0x1107, 0x112D,  0x1122, 
--0x1107, 0x112F,  0x1123, 
--0x1107, 0x1132,  0x1124, 
--0x1107, 0x1136,  0x1126, 
--0x1108, 0x110B,  0x112C, 
--0x1109, 0x1100,  0x112D, 
--0x1109, 0x1102,  0x112E, 
--0x1109, 0x1103,  0x112F, 
--0x1109, 0x1105,  0x1130, 
--0x1109, 0x1106,  0x1131, 
--0x1109, 0x1107,  0x1132, 
--0x1109, 0x1109,  0x110A, 
--0x1109, 0x110A,  0x1134, 
--0x1109, 0x110B,  0x1135, 
--0x1109, 0x110C,  0x1136, 
--0x1109, 0x110E,  0x1137, 
--0x1109, 0x110F,  0x1138, 
--0x1109, 0x1110,  0x1139, 
--0x1109, 0x1111,  0x113A, 
--0x1109, 0x1112,  0x113B, 
--0x1109, 0x111E,  0x1133, 
--0x110A, 0x1109,  0x1134, 
--0x110B, 0x1100,  0x1141, 
--0x110B, 0x1103,  0x1142, 
--0x110B, 0x1106,  0x1143, 
--0x110B, 0x1107,  0x1144, 
--0x110B, 0x1109,  0x1145, 
--0x110B, 0x110B,  0x1147, 
--0x110B, 0x110C,  0x1148, 
--0x110B, 0x110E,  0x1149, 
--0x110B, 0x1110,  0x114A, 
--0x110B, 0x1111,  0x114B, 
--0x110B, 0x1140,  0x1146, 
--0x110C, 0x110B,  0x114D, 
--0x110C, 0x110C,  0x110D, 
--0x110E, 0x110F,  0x1152, 
--0x110E, 0x1112,  0x1153, 
--0x1111, 0x1107,  0x1156, 
--0x1111, 0x110B,  0x1157, 
--0x1112, 0x1112,  0x1158, 
--0x1121, 0x1100,  0x1122, 
--0x1121, 0x1103,  0x1123, 
--0x1121, 0x1107,  0x1124, 
--0x1121, 0x1109,  0x1125, 
--0x1121, 0x110C,  0x1126, 
--0x1132, 0x1100,  0x1133, 
--0x113C, 0x113C,  0x113D, 
--0x113E, 0x113E,  0x113F, 
--0x114E, 0x114E,  0x114F, 
--0x1150, 0x1150,  0x1151, 
--0x1161, 0x1169,  0x1176, 
--0x1161, 0x116E,  0x1177, 
--0x1161, 0x1175,  0x1162, 
--0x1163, 0x1169,  0x1178, 
--0x1163, 0x116D,  0x1179, 
--0x1163, 0x1175,  0x1164, 
--0x1165, 0x1169,  0x117A, 
--0x1165, 0x116E,  0x117B, 
--0x1165, 0x1173,  0x117C, 
--0x1165, 0x1175,  0x1166, 
--0x1167, 0x1169,  0x117D, 
--0x1167, 0x116E,  0x117E, 
--0x1167, 0x1175,  0x1168, 
--0x1169, 0x1161,  0x116A, 
--0x1169, 0x1162,  0x116B, 
--0x1169, 0x1165,  0x117F, 
--0x1169, 0x1166,  0x1180, 
--0x1169, 0x1168,  0x1181, 
--0x1169, 0x1169,  0x1182, 
--0x1169, 0x116E,  0x1183, 
--0x1169, 0x1175,  0x116C, 
--0x116A, 0x1175,  0x116B, 
--0x116D, 0x1163,  0x1184, 
--0x116D, 0x1164,  0x1185, 
--0x116D, 0x1167,  0x1186, 
--0x116D, 0x1169,  0x1187, 
--0x116D, 0x1175,  0x1188, 
--0x116E, 0x1161,  0x1189, 
--0x116E, 0x1162,  0x118A, 
--0x116E, 0x1165,  0x116F, 
--0x116E, 0x1166,  0x1170, 
--0x116E, 0x1168,  0x118C, 
--0x116E, 0x116E,  0x118D, 
--0x116E, 0x1175,  0x1171, 
--0x116E, 0x117C,  0x118B, 
--0x116F, 0x1173,  0x118B, 
--0x116F, 0x1175,  0x1170, 
--0x1172, 0x1161,  0x118E, 
--0x1172, 0x1165,  0x118F, 
--0x1172, 0x1166,  0x1190, 
--0x1172, 0x1167,  0x1191, 
--0x1172, 0x1168,  0x1192, 
--0x1172, 0x116E,  0x1193, 
--0x1172, 0x1175,  0x1194, 
--0x1173, 0x116E,  0x1195, 
--0x1173, 0x1173,  0x1196, 
--0x1173, 0x1175,  0x1174, 
--0x1174, 0x116E,  0x1197, 
--0x1175, 0x1161,  0x1198, 
--0x1175, 0x1163,  0x1199, 
--0x1175, 0x1169,  0x119A, 
--0x1175, 0x116E,  0x119B, 
--0x1175, 0x1173,  0x119C, 
--0x1175, 0x119E,  0x119D, 
--0x119E, 0x1165,  0x119F, 
--0x119E, 0x116E,  0x11A0, 
--0x119E, 0x1175,  0x11A1, 
--0x119E, 0x119E,  0x11A2, 
--0x11A8, 0x11A8,  0x11A9, 
--0x11A8, 0x11AF,  0x11C3, 
--0x11A8, 0x11BA,  0x11AA, 
--0x11A8, 0x11E7,  0x11C4, 
--0x11AA, 0x11A8,  0x11C4, 
--0x11AB, 0x11A8,  0x11C5, 
--0x11AB, 0x11AE,  0x11C6, 
--0x11AB, 0x11BA,  0x11C7, 
--0x11AB, 0x11BD,  0x11AC, 
--0x11AB, 0x11C0,  0x11C9, 
--0x11AB, 0x11C2,  0x11AD, 
--0x11AB, 0x11EB,  0x11C8, 
--0x11AE, 0x11A8,  0x11CA, 
--0x11AE, 0x11AF,  0x11CB, 
--0x11AF, 0x11A8,  0x11B0, 
--0x11AF, 0x11AA,  0x11CC, 
--0x11AF, 0x11AB,  0x11CD, 
--0x11AF, 0x11AE,  0x11CE, 
--0x11AF, 0x11AF,  0x11D0, 
--0x11AF, 0x11B7,  0x11B1, 
--0x11AF, 0x11B8,  0x11B2, 
--0x11AF, 0x11B9,  0x11D3, 
--0x11AF, 0x11BA,  0x11B3, 
--0x11AF, 0x11BB,  0x11D6, 
--0x11AF, 0x11BF,  0x11D8, 
--0x11AF, 0x11C0,  0x11B4, 
--0x11AF, 0x11C1,  0x11B5, 
--0x11AF, 0x11C2,  0x11B6, 
--0x11AF, 0x11DA,  0x11D1, 
--0x11AF, 0x11DD,  0x11D2, 
--0x11AF, 0x11E5,  0x11D4, 
--0x11AF, 0x11E6,  0x11D5, 
--0x11AF, 0x11EB,  0x11D7, 
--0x11AF, 0x11F9,  0x11D9, 
--0x11B0, 0x11BA,  0x11CC, 
--0x11B1, 0x11A8,  0x11D1, 
--0x11B1, 0x11BA,  0x11D2, 
--0x11B2, 0x11BA,  0x11D3, 
--0x11B2, 0x11BC,  0x11D5, 
--0x11B2, 0x11C2,  0x11D4, 
--0x11B3, 0x11BA,  0x11D6, 
--0x11B7, 0x11A8,  0x11DA, 
--0x11B7, 0x11AF,  0x11DB, 
--0x11B7, 0x11B8,  0x11DC, 
--0x11B7, 0x11BA,  0x11DD, 
--0x11B7, 0x11BB,  0x11DE, 
--0x11B7, 0x11BC,  0x11E2, 
--0x11B7, 0x11BE,  0x11E0, 
--0x11B7, 0x11C2,  0x11E1, 
--0x11B7, 0x11EB,  0x11DF, 
--0x11B8, 0x11AF,  0x11E3, 
--0x11B8, 0x11BA,  0x11B9, 
--0x11B8, 0x11BC,  0x11E6, 
--0x11B8, 0x11C1,  0x11E4, 
--0x11B8, 0x11C2,  0x11E5, 
--0x11BA, 0x11A8,  0x11E7, 
--0x11BA, 0x11AE,  0x11E8, 
--0x11BA, 0x11AF,  0x11E9, 
--0x11BA, 0x11B8,  0x11EA, 
--0x11BA, 0x11BA,  0x11BB, 
--0x11BC, 0x11A8,  0x11EC, 
--0x11BC, 0x11A9,  0x11ED, 
--0x11BC, 0x11BC,  0x11EE, 
--0x11BC, 0x11BF,  0x11EF, 
--0x11C1, 0x11B8,  0x11F3, 
--0x11C1, 0x11BC,  0x11F4, 
--0x11C2, 0x11AB,  0x11F5, 
--0x11C2, 0x11AF,  0x11F6, 
--0x11C2, 0x11B7,  0x11F7, 
--0x11C2, 0x11B8,  0x11F8, 
--0x11CE, 0x11C2,  0x11CF, 
--0x11DD, 0x11BA,  0x11DE, 
--0x11EC, 0x11A8,  0x11ED, 
--0x11F0, 0x11BA,  0x11F1, 
--0x11F0, 0x11EB,  0x11F2, 
--0x1FBF, IBUS_KEY_apostrophe,  0x1FCE, 
--0x1FBF, IBUS_KEY_grave,  0x1FCD, 
--0x1FBF, IBUS_KEY_asciitilde,  0x1FCF, 
--0x1FBF, IBUS_KEY_acute,  0x1FCE, 
--0x1FBF, IBUS_KEY_dead_grave,  0x1FCD, 
--0x1FBF, IBUS_KEY_dead_acute,  0x1FCE, 
--0x1FBF, IBUS_KEY_dead_tilde,  0x1FCF, 
--0x1FFE, IBUS_KEY_apostrophe,  0x1FDE, 
--0x1FFE, IBUS_KEY_grave,  0x1FDD, 
--0x1FFE, IBUS_KEY_asciitilde,  0x1FDF, 
--0x1FFE, IBUS_KEY_acute,  0x1FDE, 
--0x1FFE, IBUS_KEY_dead_grave,  0x1FDD, 
--0x1FFE, IBUS_KEY_dead_acute,  0x1FDE, 
--0x1FFE, IBUS_KEY_dead_tilde,  0x1FDF, 
--0x2190, IBUS_KEY_bar,  0x2345, 
--0x2190, 0x2395,  0x2347, 
--0x2191, IBUS_KEY_minus,  0x234F, 
--0x2191, 0x2395,  0x2350, 
--0x2192, IBUS_KEY_bar,  0x2346, 
--0x2192, 0x2395,  0x2348, 
--0x2193, IBUS_KEY_minus,  0x2356, 
--0x2193, 0x2395,  0x2357, 
--0x2203, 0x0338,  0x2204, 
--0x2206, IBUS_KEY_underscore,  0x2359, 
--0x2206, IBUS_KEY_bar,  0x234B, 
--0x2206, 0x2395,  0x234D, 
--0x2207, IBUS_KEY_bar,  0x2352, 
--0x2207, IBUS_KEY_asciitilde,  0x236B, 
--0x2207, IBUS_KEY_diaeresis,  0x2362, 
--0x2207, 0x2395,  0x2354, 
--0x2208, 0x0338,  0x2209, 
--0x220A, IBUS_KEY_underscore,  0x2377, 
--0x220B, 0x0338,  0x220C, 
--0x2218, IBUS_KEY_underscore,  0x235B, 
--0x2218, IBUS_KEY_diaeresis,  0x2364, 
--0x2218, 0x2229,  0x235D, 
--0x2218, IBUS_KEY_uptack,  0x2355, 
--0x2218, IBUS_KEY_downtack,  0x234E, 
--0x2218, 0x2395,  0x233B, 
--0x2218, IBUS_KEY_emopencircle,  0x233E, 
--0x2223, 0x0338,  0x2224, 
--0x2225, 0x0338,  0x2226, 
--0x2227, IBUS_KEY_asciitilde,  0x2372, 
--0x2227, 0x2228,  0x22C4, 
--0x2227, 0x2395,  0x2353, 
--0x2228, IBUS_KEY_asciitilde,  0x2371, 
--0x2228, 0x2227,  0x22C4, 
--0x2228, 0x2395,  0x234C, 
--0x2229, 0x2218,  0x235D, 
--IBUS_KEY_union, IBUS_KEY_bar,  0x2366, 
--0x223C, 0x0338,  0x2241, 
--0x2243, 0x0338,  0x2244, 
--0x2248, 0x0338,  0x2249, 
--0x224D, 0x0338,  0x226D, 
--0x2260, IBUS_KEY_underscore,  0x2262, 
--0x2260, 0x2395,  0x236F, 
--0x2272, 0x0338,  0x2274, 
--0x2273, 0x0338,  0x2275, 
--0x2276, 0x0338,  0x2278, 
--0x2277, 0x0338,  0x2279, 
--0x227A, 0x0338,  0x2280, 
--0x227B, 0x0338,  0x2281, 
--0x227C, 0x0338,  0x22E0, 
--0x227D, 0x0338,  0x22E1, 
--0x2282, IBUS_KEY_underscore,  0x2286, 
--0x2282, IBUS_KEY_bar,  0x2367, 
--0x2283, IBUS_KEY_underscore,  0x2287, 
--0x2286, 0x0338,  0x2288, 
--0x2287, 0x0338,  0x2289, 
--0x2291, 0x0338,  0x22E2, 
--0x2292, 0x0338,  0x22E3, 
--IBUS_KEY_uptack, IBUS_KEY_diaeresis,  0x2361, 
--IBUS_KEY_uptack, IBUS_KEY_macron,  0x2351, 
--IBUS_KEY_uptack, 0x2218,  0x2355, 
--IBUS_KEY_uptack, IBUS_KEY_downtack,  0x2336, 
--IBUS_KEY_downtack, IBUS_KEY_underscore,  0x234A, 
--IBUS_KEY_downtack, 0x2218,  0x234E, 
--IBUS_KEY_downtack, IBUS_KEY_uptack,  0x2336, 
--0x22A8, 0x0338,  0x22AD, 
--0x22A9, 0x0338,  0x22AE, 
--0x22AB, 0x0338,  0x22AF, 
--0x22B2, 0x0338,  0x22EA, 
--0x22B3, 0x0338,  0x22EB, 
--0x22B4, 0x0338,  0x22EC, 
--0x22B5, 0x0338,  0x22ED, 
--0x22C4, IBUS_KEY_underscore,  0x235A, 
--0x22C4, 0x2395,  0x233A, 
--0x2373, IBUS_KEY_underscore,  0x2378, 
--0x2375, IBUS_KEY_underscore,  0x2379, 
--0x237A, IBUS_KEY_underscore,  0x2376, 
--0x2395, IBUS_KEY_apostrophe,  0x235E, 
--0x2395, IBUS_KEY_slash,  0x2341, 
--0x2395, IBUS_KEY_colon,  0x2360, 
--0x2395, IBUS_KEY_less,  0x2343, 
--0x2395, IBUS_KEY_equal,  0x2338, 
--0x2395, IBUS_KEY_greater,  0x2344, 
--0x2395, IBUS_KEY_question,  0x2370, 
--0x2395, IBUS_KEY_backslash,  0x2342, 
--0x2395, IBUS_KEY_division,  0x2339, 
--0x2395, 0x2190,  0x2347, 
--0x2395, 0x2191,  0x2350, 
--0x2395, 0x2192,  0x2348, 
--0x2395, 0x2193,  0x2357, 
--0x2395, 0x2206,  0x234D, 
--0x2395, 0x2207,  0x2354, 
--0x2395, 0x2218,  0x233B, 
--0x2395, 0x2227,  0x2353, 
--0x2395, 0x2228,  0x234C, 
--0x2395, 0x2260,  0x236F, 
--0x2395, 0x22C4,  0x233A, 
--0x2395, IBUS_KEY_emopencircle,  0x233C, 
--IBUS_KEY_emopencircle, IBUS_KEY_asterisk,  0x235F, 
--IBUS_KEY_emopencircle, IBUS_KEY_minus,  0x2296, 
--IBUS_KEY_emopencircle, IBUS_KEY_period,  0x2299, 
--IBUS_KEY_emopencircle, IBUS_KEY_backslash,  0x2349, 
--IBUS_KEY_emopencircle, IBUS_KEY_underscore,  0x235C, 
--IBUS_KEY_emopencircle, IBUS_KEY_bar,  0x233D, 
--IBUS_KEY_emopencircle, IBUS_KEY_diaeresis,  0x2365, 
--IBUS_KEY_emopencircle, 0x2218,  0x233E, 
--IBUS_KEY_emopencircle, 0x2395,  0x233C, 
--0x2ADD, 0x0338,  0x2ADC, 
--IBUS_KEY_KP_Divide, IBUS_KEY_D,  0x0110, 
--IBUS_KEY_KP_Divide, IBUS_KEY_G,  0x01E4, 
--IBUS_KEY_KP_Divide, IBUS_KEY_H,  0x0126, 
--IBUS_KEY_KP_Divide, IBUS_KEY_I,  0x0197, 
--IBUS_KEY_KP_Divide, IBUS_KEY_L,  0x0141, 
--IBUS_KEY_KP_Divide, IBUS_KEY_O,  0x00D8, 
--IBUS_KEY_KP_Divide, IBUS_KEY_T,  0x0166, 
--IBUS_KEY_KP_Divide, IBUS_KEY_Z,  0x01B5, 
--IBUS_KEY_KP_Divide, IBUS_KEY_b,  0x0180, 
--IBUS_KEY_KP_Divide, IBUS_KEY_d,  0x0111, 
--IBUS_KEY_KP_Divide, IBUS_KEY_g,  0x01E5, 
--IBUS_KEY_KP_Divide, IBUS_KEY_h,  0x0127, 
--IBUS_KEY_KP_Divide, IBUS_KEY_i,  0x0268, 
--IBUS_KEY_KP_Divide, IBUS_KEY_l,  0x0142, 
--IBUS_KEY_KP_Divide, IBUS_KEY_o,  0x00F8, 
--IBUS_KEY_KP_Divide, IBUS_KEY_t,  0x0167, 
--IBUS_KEY_KP_Divide, IBUS_KEY_z,  0x01B6, 
--IBUS_KEY_KP_Divide, 0x0294,  0x02A1, 
--IBUS_KEY_KP_Divide, 0x04AE,  0x04B0, 
--IBUS_KEY_KP_Divide, 0x04AF,  0x04B1, 
--IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_ghe,  0x0493, 
--IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_ka,  0x049F, 
--IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_GHE,  0x0492, 
--IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_KA,  0x049E, 
--IBUS_KEY_KP_Divide, IBUS_KEY_leftarrow,  0x219A, 
--IBUS_KEY_KP_Divide, IBUS_KEY_rightarrow,  0x219B, 
--IBUS_KEY_KP_Divide, 0x2194,  0x21AE, 
--IBUS_KEY_KP_Equal, 0x0338,  0x2260, 
--IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_O,  0x1EE2, 
--IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_U,  0x1EF0, 
--IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_o,  0x1EE3, 
--IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_u,  0x1EF1, 
--IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_O,  0x1EE2, 
--IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_U,  0x1EF0, 
--IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_o,  0x1EE3, 
--IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_u,  0x1EF1, 
--IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_space,  0x0385, 
--IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_Greek_iota,  0x0390, 
--IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilon,  0x03B0, 
--IBUS_KEY_quotedbl, IBUS_KEY_underscore, IBUS_KEY_U,  0x1E7A, 
--IBUS_KEY_quotedbl, IBUS_KEY_underscore, IBUS_KEY_u,  0x1E7B, 
--IBUS_KEY_quotedbl, IBUS_KEY_asciitilde, IBUS_KEY_O,  0x1E4E, 
--IBUS_KEY_quotedbl, IBUS_KEY_asciitilde, IBUS_KEY_o,  0x1E4F, 
--IBUS_KEY_quotedbl, IBUS_KEY_macron, IBUS_KEY_U,  0x1E7A, 
--IBUS_KEY_quotedbl, IBUS_KEY_macron, IBUS_KEY_u,  0x1E7B, 
--IBUS_KEY_quotedbl, IBUS_KEY_dead_tilde, IBUS_KEY_O,  0x1E4E, 
--IBUS_KEY_quotedbl, IBUS_KEY_dead_tilde, IBUS_KEY_o,  0x1E4F, 
--IBUS_KEY_quotedbl, IBUS_KEY_dead_macron, IBUS_KEY_U,  0x1E7A, 
--IBUS_KEY_quotedbl, IBUS_KEY_dead_macron, IBUS_KEY_u,  0x1E7B, 
--IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_space,  0x0385, 
--IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_I,  0x1E2E, 
--IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_U,  0x01D7, 
--IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_i,  0x1E2F, 
--IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_u,  0x01D8, 
--IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota,  0x0390, 
--IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon,  0x03B0, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F0D, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON,  0x1F1D, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F2D, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA,  0x1F3D, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON,  0x1F4D, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON,  0x1F5D, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1F6D, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F05, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon,  0x1F15, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F25, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota,  0x1F35, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron,  0x1F45, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon,  0x1F55, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1F65, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F0C, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON,  0x1F1C, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F2C, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA,  0x1F3C, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON,  0x1F4C, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1F6C, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F04, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon,  0x1F14, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F24, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_iota,  0x1F34, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron,  0x1F44, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon,  0x1F54, 
--IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1F64, 
--IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_O,  0x1EDA, 
--IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_U,  0x1EE8, 
--IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_o,  0x1EDB, 
--IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_u,  0x1EE9, 
--IBUS_KEY_apostrophe, IBUS_KEY_slash, IBUS_KEY_O,  0x01FE, 
--IBUS_KEY_apostrophe, IBUS_KEY_slash, IBUS_KEY_o,  0x01FF, 
--IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_A,  0x1EA4, 
--IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_E,  0x1EBE, 
--IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_O,  0x1ED0, 
--IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_a,  0x1EA5, 
--IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_e,  0x1EBF, 
--IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_o,  0x1ED1, 
--IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_E,  0x1E16, 
--IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_O,  0x1E52, 
--IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_e,  0x1E17, 
--IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_o,  0x1E53, 
--IBUS_KEY_apostrophe, IBUS_KEY_b, IBUS_KEY_A,  0x1EAE, 
--IBUS_KEY_apostrophe, IBUS_KEY_b, IBUS_KEY_a,  0x1EAF, 
--IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_O,  0x1E4C, 
--IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_U,  0x1E78, 
--IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_o,  0x1E4D, 
--IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_u,  0x1E79, 
--IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_E,  0x1E16, 
--IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_O,  0x1E52, 
--IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_e,  0x1E17, 
--IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_o,  0x1E53, 
--IBUS_KEY_apostrophe, IBUS_KEY_cedilla, IBUS_KEY_C,  0x1E08, 
--IBUS_KEY_apostrophe, IBUS_KEY_cedilla, IBUS_KEY_c,  0x1E09, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_A,  0x1EA4, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_E,  0x1EBE, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_O,  0x1ED0, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_a,  0x1EA5, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_e,  0x1EBF, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_o,  0x1ED1, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_O,  0x1E4C, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_U,  0x1E78, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_o,  0x1E4D, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_u,  0x1E79, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_E,  0x1E16, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_O,  0x1E52, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_e,  0x1E17, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_o,  0x1E53, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_breve, IBUS_KEY_A,  0x1EAE, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_breve, IBUS_KEY_a,  0x1EAF, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_I,  0x1E2E, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_U,  0x01D7, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_i,  0x1E2F, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_u,  0x01D8, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota,  0x0390, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon,  0x03B0, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_abovering, IBUS_KEY_A,  0x01FA, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_abovering, IBUS_KEY_a,  0x01FB, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_cedilla, IBUS_KEY_C,  0x1E08, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_cedilla, IBUS_KEY_c,  0x1E09, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_O,  0x1EDA, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_U,  0x1EE8, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_o,  0x1EDB, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_u,  0x1EE9, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F0C, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON,  0x1F1C, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F2C, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA,  0x1F3C, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON,  0x1F4C, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1F6C, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F04, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon,  0x1F14, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F24, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota,  0x1F34, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron,  0x1F44, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon,  0x1F54, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1F64, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F0D, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON,  0x1F1D, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F2D, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA,  0x1F3D, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON,  0x1F4D, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON,  0x1F5D, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1F6D, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F05, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon,  0x1F15, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F25, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota,  0x1F35, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron,  0x1F45, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon,  0x1F55, 
--IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1F65, 
--IBUS_KEY_apostrophe, IBUS_KEY_KP_Divide, IBUS_KEY_O,  0x01FE, 
--IBUS_KEY_apostrophe, IBUS_KEY_KP_Divide, IBUS_KEY_o,  0x01FF, 
--IBUS_KEY_parenleft, IBUS_KEY_0, IBUS_KEY_parenright,  0x24EA, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_parenright,  0x2460, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_parenright,  0x2461, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_parenright,  0x2462, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_parenright,  0x2463, 
--IBUS_KEY_parenleft, IBUS_KEY_5, IBUS_KEY_parenright,  0x2464, 
--IBUS_KEY_parenleft, IBUS_KEY_6, IBUS_KEY_parenright,  0x2465, 
--IBUS_KEY_parenleft, IBUS_KEY_7, IBUS_KEY_parenright,  0x2466, 
--IBUS_KEY_parenleft, IBUS_KEY_8, IBUS_KEY_parenright,  0x2467, 
--IBUS_KEY_parenleft, IBUS_KEY_9, IBUS_KEY_parenright,  0x2468, 
--IBUS_KEY_parenleft, IBUS_KEY_A, IBUS_KEY_parenright,  0x24B6, 
--IBUS_KEY_parenleft, IBUS_KEY_B, IBUS_KEY_parenright,  0x24B7, 
--IBUS_KEY_parenleft, IBUS_KEY_C, IBUS_KEY_parenright,  0x24B8, 
--IBUS_KEY_parenleft, IBUS_KEY_D, IBUS_KEY_parenright,  0x24B9, 
--IBUS_KEY_parenleft, IBUS_KEY_E, IBUS_KEY_parenright,  0x24BA, 
--IBUS_KEY_parenleft, IBUS_KEY_F, IBUS_KEY_parenright,  0x24BB, 
--IBUS_KEY_parenleft, IBUS_KEY_G, IBUS_KEY_parenright,  0x24BC, 
--IBUS_KEY_parenleft, IBUS_KEY_H, IBUS_KEY_parenright,  0x24BD, 
--IBUS_KEY_parenleft, IBUS_KEY_I, IBUS_KEY_parenright,  0x24BE, 
--IBUS_KEY_parenleft, IBUS_KEY_J, IBUS_KEY_parenright,  0x24BF, 
--IBUS_KEY_parenleft, IBUS_KEY_K, IBUS_KEY_parenright,  0x24C0, 
--IBUS_KEY_parenleft, IBUS_KEY_L, IBUS_KEY_parenright,  0x24C1, 
--IBUS_KEY_parenleft, IBUS_KEY_M, IBUS_KEY_parenright,  0x24C2, 
--IBUS_KEY_parenleft, IBUS_KEY_N, IBUS_KEY_parenright,  0x24C3, 
--IBUS_KEY_parenleft, IBUS_KEY_O, IBUS_KEY_parenright,  0x24C4, 
--IBUS_KEY_parenleft, IBUS_KEY_P, IBUS_KEY_parenright,  0x24C5, 
--IBUS_KEY_parenleft, IBUS_KEY_Q, IBUS_KEY_parenright,  0x24C6, 
--IBUS_KEY_parenleft, IBUS_KEY_R, IBUS_KEY_parenright,  0x24C7, 
--IBUS_KEY_parenleft, IBUS_KEY_S, IBUS_KEY_parenright,  0x24C8, 
--IBUS_KEY_parenleft, IBUS_KEY_T, IBUS_KEY_parenright,  0x24C9, 
--IBUS_KEY_parenleft, IBUS_KEY_U, IBUS_KEY_parenright,  0x24CA, 
--IBUS_KEY_parenleft, IBUS_KEY_V, IBUS_KEY_parenright,  0x24CB, 
--IBUS_KEY_parenleft, IBUS_KEY_W, IBUS_KEY_parenright,  0x24CC, 
--IBUS_KEY_parenleft, IBUS_KEY_X, IBUS_KEY_parenright,  0x24CD, 
--IBUS_KEY_parenleft, IBUS_KEY_Y, IBUS_KEY_parenright,  0x24CE, 
--IBUS_KEY_parenleft, IBUS_KEY_Z, IBUS_KEY_parenright,  0x24CF, 
--IBUS_KEY_parenleft, IBUS_KEY_a, IBUS_KEY_parenright,  0x24D0, 
--IBUS_KEY_parenleft, IBUS_KEY_b, IBUS_KEY_parenright,  0x24D1, 
--IBUS_KEY_parenleft, IBUS_KEY_c, IBUS_KEY_parenright,  0x24D2, 
--IBUS_KEY_parenleft, IBUS_KEY_d, IBUS_KEY_parenright,  0x24D3, 
--IBUS_KEY_parenleft, IBUS_KEY_e, IBUS_KEY_parenright,  0x24D4, 
--IBUS_KEY_parenleft, IBUS_KEY_f, IBUS_KEY_parenright,  0x24D5, 
--IBUS_KEY_parenleft, IBUS_KEY_g, IBUS_KEY_parenright,  0x24D6, 
--IBUS_KEY_parenleft, IBUS_KEY_h, IBUS_KEY_parenright,  0x24D7, 
--IBUS_KEY_parenleft, IBUS_KEY_i, IBUS_KEY_parenright,  0x24D8, 
--IBUS_KEY_parenleft, IBUS_KEY_j, IBUS_KEY_parenright,  0x24D9, 
--IBUS_KEY_parenleft, IBUS_KEY_k, IBUS_KEY_parenright,  0x24DA, 
--IBUS_KEY_parenleft, IBUS_KEY_l, IBUS_KEY_parenright,  0x24DB, 
--IBUS_KEY_parenleft, IBUS_KEY_m, IBUS_KEY_parenright,  0x24DC, 
--IBUS_KEY_parenleft, IBUS_KEY_n, IBUS_KEY_parenright,  0x24DD, 
--IBUS_KEY_parenleft, IBUS_KEY_o, IBUS_KEY_parenright,  0x24DE, 
--IBUS_KEY_parenleft, IBUS_KEY_p, IBUS_KEY_parenright,  0x24DF, 
--IBUS_KEY_parenleft, IBUS_KEY_q, IBUS_KEY_parenright,  0x24E0, 
--IBUS_KEY_parenleft, IBUS_KEY_r, IBUS_KEY_parenright,  0x24E1, 
--IBUS_KEY_parenleft, IBUS_KEY_s, IBUS_KEY_parenright,  0x24E2, 
--IBUS_KEY_parenleft, IBUS_KEY_t, IBUS_KEY_parenright,  0x24E3, 
--IBUS_KEY_parenleft, IBUS_KEY_u, IBUS_KEY_parenright,  0x24E4, 
--IBUS_KEY_parenleft, IBUS_KEY_v, IBUS_KEY_parenright,  0x24E5, 
--IBUS_KEY_parenleft, IBUS_KEY_w, IBUS_KEY_parenright,  0x24E6, 
--IBUS_KEY_parenleft, IBUS_KEY_x, IBUS_KEY_parenright,  0x24E7, 
--IBUS_KEY_parenleft, IBUS_KEY_y, IBUS_KEY_parenright,  0x24E8, 
--IBUS_KEY_parenleft, IBUS_KEY_z, IBUS_KEY_parenright,  0x24E9, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_WO, IBUS_KEY_parenright,  0x32FE, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_A, IBUS_KEY_parenright,  0x32D0, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_I, IBUS_KEY_parenright,  0x32D1, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_U, IBUS_KEY_parenright,  0x32D2, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_E, IBUS_KEY_parenright,  0x32D3, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_O, IBUS_KEY_parenright,  0x32D4, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_KA, IBUS_KEY_parenright,  0x32D5, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_KI, IBUS_KEY_parenright,  0x32D6, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_KU, IBUS_KEY_parenright,  0x32D7, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_KE, IBUS_KEY_parenright,  0x32D8, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_KO, IBUS_KEY_parenright,  0x32D9, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_SA, IBUS_KEY_parenright,  0x32DA, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_SHI, IBUS_KEY_parenright,  0x32DB, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_SU, IBUS_KEY_parenright,  0x32DC, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_SE, IBUS_KEY_parenright,  0x32DD, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_SO, IBUS_KEY_parenright,  0x32DE, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_TA, IBUS_KEY_parenright,  0x32DF, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_CHI, IBUS_KEY_parenright,  0x32E0, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_TSU, IBUS_KEY_parenright,  0x32E1, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_TE, IBUS_KEY_parenright,  0x32E2, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_TO, IBUS_KEY_parenright,  0x32E3, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_NA, IBUS_KEY_parenright,  0x32E4, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_NI, IBUS_KEY_parenright,  0x32E5, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_NU, IBUS_KEY_parenright,  0x32E6, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_NE, IBUS_KEY_parenright,  0x32E7, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_NO, IBUS_KEY_parenright,  0x32E8, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_HA, IBUS_KEY_parenright,  0x32E9, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_HI, IBUS_KEY_parenright,  0x32EA, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_FU, IBUS_KEY_parenright,  0x32EB, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_HE, IBUS_KEY_parenright,  0x32EC, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_HO, IBUS_KEY_parenright,  0x32ED, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_MA, IBUS_KEY_parenright,  0x32EE, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_MI, IBUS_KEY_parenright,  0x32EF, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_MU, IBUS_KEY_parenright,  0x32F0, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_ME, IBUS_KEY_parenright,  0x32F1, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_MO, IBUS_KEY_parenright,  0x32F2, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_YA, IBUS_KEY_parenright,  0x32F3, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_YU, IBUS_KEY_parenright,  0x32F4, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_YO, IBUS_KEY_parenright,  0x32F5, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_RA, IBUS_KEY_parenright,  0x32F6, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_RI, IBUS_KEY_parenright,  0x32F7, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_RU, IBUS_KEY_parenright,  0x32F8, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_RE, IBUS_KEY_parenright,  0x32F9, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_RO, IBUS_KEY_parenright,  0x32FA, 
--IBUS_KEY_parenleft, IBUS_KEY_kana_WA, IBUS_KEY_parenright,  0x32FB, 
--IBUS_KEY_parenleft, 0x1100, IBUS_KEY_parenright,  0x3260, 
--IBUS_KEY_parenleft, 0x1102, IBUS_KEY_parenright,  0x3261, 
--IBUS_KEY_parenleft, 0x1103, IBUS_KEY_parenright,  0x3262, 
--IBUS_KEY_parenleft, 0x1105, IBUS_KEY_parenright,  0x3263, 
--IBUS_KEY_parenleft, 0x1106, IBUS_KEY_parenright,  0x3264, 
--IBUS_KEY_parenleft, 0x1107, IBUS_KEY_parenright,  0x3265, 
--IBUS_KEY_parenleft, 0x1109, IBUS_KEY_parenright,  0x3266, 
--IBUS_KEY_parenleft, 0x110B, IBUS_KEY_parenright,  0x3267, 
--IBUS_KEY_parenleft, 0x110C, IBUS_KEY_parenright,  0x3268, 
--IBUS_KEY_parenleft, 0x110E, IBUS_KEY_parenright,  0x3269, 
--IBUS_KEY_parenleft, 0x110F, IBUS_KEY_parenright,  0x326A, 
--IBUS_KEY_parenleft, 0x1110, IBUS_KEY_parenright,  0x326B, 
--IBUS_KEY_parenleft, 0x1111, IBUS_KEY_parenright,  0x326C, 
--IBUS_KEY_parenleft, 0x1112, IBUS_KEY_parenright,  0x326D, 
--IBUS_KEY_parenleft, 0x30F0, IBUS_KEY_parenright,  0x32FC, 
--IBUS_KEY_parenleft, 0x30F1, IBUS_KEY_parenright,  0x32FD, 
--IBUS_KEY_parenleft, 0x4E00, IBUS_KEY_parenright,  0x3280, 
--IBUS_KEY_parenleft, 0x4E03, IBUS_KEY_parenright,  0x3286, 
--IBUS_KEY_parenleft, 0x4E09, IBUS_KEY_parenright,  0x3282, 
--IBUS_KEY_parenleft, 0x4E0A, IBUS_KEY_parenright,  0x32A4, 
--IBUS_KEY_parenleft, 0x4E0B, IBUS_KEY_parenright,  0x32A6, 
--IBUS_KEY_parenleft, 0x4E2D, IBUS_KEY_parenright,  0x32A5, 
--IBUS_KEY_parenleft, 0x4E5D, IBUS_KEY_parenright,  0x3288, 
--IBUS_KEY_parenleft, 0x4E8C, IBUS_KEY_parenright,  0x3281, 
--IBUS_KEY_parenleft, 0x4E94, IBUS_KEY_parenright,  0x3284, 
--IBUS_KEY_parenleft, 0x4F01, IBUS_KEY_parenright,  0x32AD, 
--IBUS_KEY_parenleft, 0x4F11, IBUS_KEY_parenright,  0x32A1, 
--IBUS_KEY_parenleft, 0x512A, IBUS_KEY_parenright,  0x329D, 
--IBUS_KEY_parenleft, 0x516B, IBUS_KEY_parenright,  0x3287, 
--IBUS_KEY_parenleft, 0x516D, IBUS_KEY_parenright,  0x3285, 
--IBUS_KEY_parenleft, 0x5199, IBUS_KEY_parenright,  0x32A2, 
--IBUS_KEY_parenleft, 0x52B4, IBUS_KEY_parenright,  0x3298, 
--IBUS_KEY_parenleft, 0x533B, IBUS_KEY_parenright,  0x32A9, 
--IBUS_KEY_parenleft, 0x5341, IBUS_KEY_parenright,  0x3289, 
--IBUS_KEY_parenleft, 0x5354, IBUS_KEY_parenright,  0x32AF, 
--IBUS_KEY_parenleft, 0x5370, IBUS_KEY_parenright,  0x329E, 
--IBUS_KEY_parenleft, 0x53F3, IBUS_KEY_parenright,  0x32A8, 
--IBUS_KEY_parenleft, 0x540D, IBUS_KEY_parenright,  0x3294, 
--IBUS_KEY_parenleft, 0x56DB, IBUS_KEY_parenright,  0x3283, 
--IBUS_KEY_parenleft, 0x571F, IBUS_KEY_parenright,  0x328F, 
--IBUS_KEY_parenleft, 0x591C, IBUS_KEY_parenright,  0x32B0, 
--IBUS_KEY_parenleft, 0x5973, IBUS_KEY_parenright,  0x329B, 
--IBUS_KEY_parenleft, 0x5B66, IBUS_KEY_parenright,  0x32AB, 
--IBUS_KEY_parenleft, 0x5B97, IBUS_KEY_parenright,  0x32AA, 
--IBUS_KEY_parenleft, 0x5DE6, IBUS_KEY_parenright,  0x32A7, 
--IBUS_KEY_parenleft, 0x65E5, IBUS_KEY_parenright,  0x3290, 
--IBUS_KEY_parenleft, 0x6708, IBUS_KEY_parenright,  0x328A, 
--IBUS_KEY_parenleft, 0x6709, IBUS_KEY_parenright,  0x3292, 
--IBUS_KEY_parenleft, 0x6728, IBUS_KEY_parenright,  0x328D, 
--IBUS_KEY_parenleft, 0x682A, IBUS_KEY_parenright,  0x3291, 
--IBUS_KEY_parenleft, 0x6B63, IBUS_KEY_parenright,  0x32A3, 
--IBUS_KEY_parenleft, 0x6C34, IBUS_KEY_parenright,  0x328C, 
--IBUS_KEY_parenleft, 0x6CE8, IBUS_KEY_parenright,  0x329F, 
--IBUS_KEY_parenleft, 0x706B, IBUS_KEY_parenright,  0x328B, 
--IBUS_KEY_parenleft, 0x7279, IBUS_KEY_parenright,  0x3295, 
--IBUS_KEY_parenleft, 0x7537, IBUS_KEY_parenright,  0x329A, 
--IBUS_KEY_parenleft, 0x76E3, IBUS_KEY_parenright,  0x32AC, 
--IBUS_KEY_parenleft, 0x793E, IBUS_KEY_parenright,  0x3293, 
--IBUS_KEY_parenleft, 0x795D, IBUS_KEY_parenright,  0x3297, 
--IBUS_KEY_parenleft, 0x79D8, IBUS_KEY_parenright,  0x3299, 
--IBUS_KEY_parenleft, 0x8CA1, IBUS_KEY_parenright,  0x3296, 
--IBUS_KEY_parenleft, 0x8CC7, IBUS_KEY_parenright,  0x32AE, 
--IBUS_KEY_parenleft, 0x9069, IBUS_KEY_parenright,  0x329C, 
--IBUS_KEY_parenleft, 0x91D1, IBUS_KEY_parenright,  0x328E, 
--IBUS_KEY_parenleft, 0x9805, IBUS_KEY_parenright,  0x32A0, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_parenright,  0x2461, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_0, IBUS_KEY_parenright,  0x24EA, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_parenright,  0x2460, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_parenright,  0x2461, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_parenright,  0x2462, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_parenright,  0x2463, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_5, IBUS_KEY_parenright,  0x2464, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_6, IBUS_KEY_parenright,  0x2465, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_7, IBUS_KEY_parenright,  0x2466, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_8, IBUS_KEY_parenright,  0x2467, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_9, IBUS_KEY_parenright,  0x2468, 
--IBUS_KEY_asterisk, IBUS_KEY_apostrophe, IBUS_KEY_A,  0x01FA, 
--IBUS_KEY_asterisk, IBUS_KEY_apostrophe, IBUS_KEY_a,  0x01FB, 
--IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_space,  0x00AD, 
--IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_minus,  0x2014, 
--IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_period,  0x2013, 
--IBUS_KEY_period, IBUS_KEY_exclam, IBUS_KEY_S,  0x1E68, 
--IBUS_KEY_period, IBUS_KEY_exclam, IBUS_KEY_s,  0x1E69, 
--IBUS_KEY_period, IBUS_KEY_apostrophe, IBUS_KEY_S,  0x1E64, 
--IBUS_KEY_period, IBUS_KEY_apostrophe, IBUS_KEY_s,  0x1E65, 
--IBUS_KEY_period, IBUS_KEY_acute, IBUS_KEY_S,  0x1E64, 
--IBUS_KEY_period, IBUS_KEY_acute, IBUS_KEY_s,  0x1E65, 
--IBUS_KEY_period, IBUS_KEY_dead_acute, IBUS_KEY_S,  0x1E64, 
--IBUS_KEY_period, IBUS_KEY_dead_acute, IBUS_KEY_s,  0x1E65, 
--IBUS_KEY_period, IBUS_KEY_dead_caron, IBUS_KEY_S,  0x1E66, 
--IBUS_KEY_period, IBUS_KEY_dead_caron, IBUS_KEY_s,  0x1E67, 
--IBUS_KEY_period, IBUS_KEY_dead_belowdot, IBUS_KEY_S,  0x1E68, 
--IBUS_KEY_period, IBUS_KEY_dead_belowdot, IBUS_KEY_s,  0x1E69, 
--IBUS_KEY_1, IBUS_KEY_1, IBUS_KEY_0,  0x2152, 
--IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_O,  0x1EDE, 
--IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_U,  0x1EEC, 
--IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_o,  0x1EDF, 
--IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_u,  0x1EED, 
--IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_A,  0x1EA8, 
--IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_E,  0x1EC2, 
--IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_O,  0x1ED4, 
--IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_a,  0x1EA9, 
--IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_e,  0x1EC3, 
--IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_o,  0x1ED5, 
--IBUS_KEY_question, IBUS_KEY_b, IBUS_KEY_A,  0x1EB2, 
--IBUS_KEY_question, IBUS_KEY_b, IBUS_KEY_a,  0x1EB3, 
--IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_A,  0x1EA8, 
--IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_E,  0x1EC2, 
--IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_O,  0x1ED4, 
--IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_a,  0x1EA9, 
--IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_e,  0x1EC3, 
--IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_o,  0x1ED5, 
--IBUS_KEY_question, IBUS_KEY_dead_breve, IBUS_KEY_A,  0x1EB2, 
--IBUS_KEY_question, IBUS_KEY_dead_breve, IBUS_KEY_a,  0x1EB3, 
--IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_O,  0x1EDE, 
--IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_U,  0x1EEC, 
--IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_o,  0x1EDF, 
--IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_u,  0x1EED, 
--IBUS_KEY_U, IBUS_KEY_exclam, IBUS_KEY_A,  0x1EB6, 
--IBUS_KEY_U, IBUS_KEY_exclam, IBUS_KEY_a,  0x1EB7, 
--IBUS_KEY_U, IBUS_KEY_cedilla, IBUS_KEY_E,  0x1E1C, 
--IBUS_KEY_U, IBUS_KEY_cedilla, IBUS_KEY_e,  0x1E1D, 
--IBUS_KEY_U, IBUS_KEY_dead_cedilla, IBUS_KEY_E,  0x1E1C, 
--IBUS_KEY_U, IBUS_KEY_dead_cedilla, IBUS_KEY_e,  0x1E1D, 
--IBUS_KEY_U, IBUS_KEY_dead_belowdot, IBUS_KEY_A,  0x1EB6, 
--IBUS_KEY_U, IBUS_KEY_dead_belowdot, IBUS_KEY_a,  0x1EB7, 
--IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_A,  0x1EAC, 
--IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_E,  0x1EC6, 
--IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_O,  0x1ED8, 
--IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_a,  0x1EAD, 
--IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_e,  0x1EC7, 
--IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_o,  0x1ED9, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_a,  0x00AA, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_h,  0x02B0, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_i,  0x2071, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_j,  0x02B2, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_l,  0x02E1, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_n,  0x207F, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_o,  0x00BA, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_r,  0x02B3, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_s,  0x02E2, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_w,  0x02B7, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_x,  0x02E3, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_y,  0x02B8, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0263,  0x02E0, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0266,  0x02B1, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0279,  0x02B4, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x027B,  0x02B5, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0281,  0x02B6, 
--IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0295,  0x02E4, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_a,  0x00AA, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_h,  0x02B0, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_i,  0x2071, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_j,  0x02B2, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_l,  0x02E1, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_n,  0x207F, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_o,  0x00BA, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_r,  0x02B3, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_s,  0x02E2, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_w,  0x02B7, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_x,  0x02E3, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_y,  0x02B8, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0263,  0x02E0, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0266,  0x02B1, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0279,  0x02B4, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x027B,  0x02B5, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0281,  0x02B6, 
--IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0295,  0x02E4, 
--IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_A,  0x1EAC, 
--IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_E,  0x1EC6, 
--IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_O,  0x1ED8, 
--IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_a,  0x1EAD, 
--IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_e,  0x1EC7, 
--IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_o,  0x1ED9, 
--IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_L,  0x1E38, 
--IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_R,  0x1E5C, 
--IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_l,  0x1E39, 
--IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_r,  0x1E5D, 
--IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_A,  0x01DE, 
--IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_O,  0x022A, 
--IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_U,  0x01D5, 
--IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_a,  0x01DF, 
--IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_o,  0x022B, 
--IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_u,  0x01D6, 
--IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_A,  0x01E0, 
--IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_O,  0x0230, 
--IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_a,  0x01E1, 
--IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_o,  0x0231, 
--IBUS_KEY_underscore, IBUS_KEY_semicolon, IBUS_KEY_O,  0x01EC, 
--IBUS_KEY_underscore, IBUS_KEY_semicolon, IBUS_KEY_o,  0x01ED, 
--IBUS_KEY_underscore, IBUS_KEY_asciitilde, IBUS_KEY_O,  0x022C, 
--IBUS_KEY_underscore, IBUS_KEY_asciitilde, IBUS_KEY_o,  0x022D, 
--IBUS_KEY_underscore, IBUS_KEY_dead_tilde, IBUS_KEY_O,  0x022C, 
--IBUS_KEY_underscore, IBUS_KEY_dead_tilde, IBUS_KEY_o,  0x022D, 
--IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_A,  0x01E0, 
--IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_O,  0x0230, 
--IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_a,  0x01E1, 
--IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_o,  0x0231, 
--IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_A,  0x01DE, 
--IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_O,  0x022A, 
--IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_U,  0x01D5, 
--IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_a,  0x01DF, 
--IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_o,  0x022B, 
--IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_u,  0x01D6, 
--IBUS_KEY_underscore, IBUS_KEY_dead_ogonek, IBUS_KEY_O,  0x01EC, 
--IBUS_KEY_underscore, IBUS_KEY_dead_ogonek, IBUS_KEY_o,  0x01ED, 
--IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_L,  0x1E38, 
--IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_R,  0x1E5C, 
--IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_l,  0x1E39, 
--IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_r,  0x1E5D, 
--IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_U,  0x01DB, 
--IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_u,  0x01DC, 
--IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota,  0x1FD2, 
--IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon,  0x1FE2, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F0B, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON,  0x1F1B, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F2B, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA,  0x1F3B, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON,  0x1F4B, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON,  0x1F5B, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1F6B, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F03, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon,  0x1F13, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F23, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota,  0x1F33, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron,  0x1F43, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon,  0x1F53, 
--IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1F63, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F0A, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON,  0x1F1A, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F2A, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA,  0x1F3A, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON,  0x1F4A, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1F6A, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F02, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon,  0x1F12, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F22, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_iota,  0x1F32, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron,  0x1F42, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon,  0x1F52, 
--IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1F62, 
--IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_O,  0x1EDC, 
--IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_U,  0x1EEA, 
--IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_o,  0x1EDD, 
--IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_u,  0x1EEB, 
--IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_A,  0x1EA6, 
--IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_E,  0x1EC0, 
--IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_O,  0x1ED2, 
--IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_a,  0x1EA7, 
--IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_e,  0x1EC1, 
--IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_o,  0x1ED3, 
--IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_E,  0x1E14, 
--IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_O,  0x1E50, 
--IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_e,  0x1E15, 
--IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_o,  0x1E51, 
--IBUS_KEY_grave, IBUS_KEY_b, IBUS_KEY_A,  0x1EB0, 
--IBUS_KEY_grave, IBUS_KEY_b, IBUS_KEY_a,  0x1EB1, 
--IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_E,  0x1E14, 
--IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_O,  0x1E50, 
--IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_e,  0x1E15, 
--IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_o,  0x1E51, 
--IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_A,  0x1EA6, 
--IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_E,  0x1EC0, 
--IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_O,  0x1ED2, 
--IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_a,  0x1EA7, 
--IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_e,  0x1EC1, 
--IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_o,  0x1ED3, 
--IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_E,  0x1E14, 
--IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_O,  0x1E50, 
--IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_e,  0x1E15, 
--IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_o,  0x1E51, 
--IBUS_KEY_grave, IBUS_KEY_dead_breve, IBUS_KEY_A,  0x1EB0, 
--IBUS_KEY_grave, IBUS_KEY_dead_breve, IBUS_KEY_a,  0x1EB1, 
--IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_U,  0x01DB, 
--IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_u,  0x01DC, 
--IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota,  0x1FD2, 
--IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon,  0x1FE2, 
--IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_O,  0x1EDC, 
--IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_U,  0x1EEA, 
--IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_o,  0x1EDD, 
--IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_u,  0x1EEB, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F0A, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON,  0x1F1A, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F2A, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA,  0x1F3A, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON,  0x1F4A, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1F6A, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F02, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon,  0x1F12, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F22, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota,  0x1F32, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron,  0x1F42, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon,  0x1F52, 
--IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1F62, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F0B, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON,  0x1F1B, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F2B, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA,  0x1F3B, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON,  0x1F4B, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON,  0x1F5B, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1F6B, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F03, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon,  0x1F13, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F23, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota,  0x1F33, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron,  0x1F43, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon,  0x1F53, 
--IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1F63, 
--IBUS_KEY_b, IBUS_KEY_exclam, IBUS_KEY_A,  0x1EB6, 
--IBUS_KEY_b, IBUS_KEY_exclam, IBUS_KEY_a,  0x1EB7, 
--IBUS_KEY_b, IBUS_KEY_comma, IBUS_KEY_E,  0x1E1C, 
--IBUS_KEY_b, IBUS_KEY_comma, IBUS_KEY_e,  0x1E1D, 
--IBUS_KEY_b, IBUS_KEY_cedilla, IBUS_KEY_E,  0x1E1C, 
--IBUS_KEY_b, IBUS_KEY_cedilla, IBUS_KEY_e,  0x1E1D, 
--IBUS_KEY_b, IBUS_KEY_dead_cedilla, IBUS_KEY_E,  0x1E1C, 
--IBUS_KEY_b, IBUS_KEY_dead_cedilla, IBUS_KEY_e,  0x1E1D, 
--IBUS_KEY_b, IBUS_KEY_dead_belowdot, IBUS_KEY_A,  0x1EB6, 
--IBUS_KEY_b, IBUS_KEY_dead_belowdot, IBUS_KEY_a,  0x1EB7, 
--IBUS_KEY_c, IBUS_KEY_quotedbl, IBUS_KEY_U,  0x01D9, 
--IBUS_KEY_c, IBUS_KEY_quotedbl, IBUS_KEY_u,  0x01DA, 
--IBUS_KEY_c, IBUS_KEY_dead_diaeresis, IBUS_KEY_U,  0x01D9, 
--IBUS_KEY_c, IBUS_KEY_dead_diaeresis, IBUS_KEY_u,  0x01DA, 
--IBUS_KEY_asciitilde, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota,  0x1FD7, 
--IBUS_KEY_asciitilde, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon,  0x1FE7, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F0F, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F2F, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA,  0x1F3F, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON,  0x1F5F, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1F6F, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F07, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F27, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota,  0x1F37, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon,  0x1F57, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1F67, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F0E, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F2E, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA,  0x1F3E, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1F6E, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F06, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F26, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_iota,  0x1F36, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon,  0x1F56, 
--IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1F66, 
--IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_O,  0x1EE0, 
--IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_U,  0x1EEE, 
--IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_o,  0x1EE1, 
--IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_u,  0x1EEF, 
--IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_A,  0x1EAA, 
--IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_E,  0x1EC4, 
--IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_O,  0x1ED6, 
--IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_a,  0x1EAB, 
--IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_e,  0x1EC5, 
--IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_o,  0x1ED7, 
--IBUS_KEY_asciitilde, IBUS_KEY_b, IBUS_KEY_A,  0x1EB4, 
--IBUS_KEY_asciitilde, IBUS_KEY_b, IBUS_KEY_a,  0x1EB5, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_A,  0x1EAA, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_E,  0x1EC4, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_O,  0x1ED6, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_a,  0x1EAB, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_e,  0x1EC5, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_o,  0x1ED7, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_breve, IBUS_KEY_A,  0x1EB4, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_breve, IBUS_KEY_a,  0x1EB5, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota,  0x1FD7, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon,  0x1FE7, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_O,  0x1EE0, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_U,  0x1EEE, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_o,  0x1EE1, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_u,  0x1EEF, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F0E, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F2E, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA,  0x1F3E, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1F6E, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F06, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F26, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota,  0x1F36, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon,  0x1F56, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1F66, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F0F, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F2F, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA,  0x1F3F, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON,  0x1F5F, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1F6F, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F07, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F27, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota,  0x1F37, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon,  0x1F57, 
--IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1F67, 
--IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_L,  0x1E38, 
--IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_R,  0x1E5C, 
--IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_l,  0x1E39, 
--IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_r,  0x1E5D, 
--IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_A,  0x01DE, 
--IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_O,  0x022A, 
--IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_U,  0x01D5, 
--IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_a,  0x01DF, 
--IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_o,  0x022B, 
--IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_u,  0x01D6, 
--IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_A,  0x01E0, 
--IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_O,  0x0230, 
--IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_a,  0x01E1, 
--IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_o,  0x0231, 
--IBUS_KEY_macron, IBUS_KEY_semicolon, IBUS_KEY_O,  0x01EC, 
--IBUS_KEY_macron, IBUS_KEY_semicolon, IBUS_KEY_o,  0x01ED, 
--IBUS_KEY_macron, IBUS_KEY_asciitilde, IBUS_KEY_O,  0x022C, 
--IBUS_KEY_macron, IBUS_KEY_asciitilde, IBUS_KEY_o,  0x022D, 
--IBUS_KEY_macron, IBUS_KEY_dead_tilde, IBUS_KEY_O,  0x022C, 
--IBUS_KEY_macron, IBUS_KEY_dead_tilde, IBUS_KEY_o,  0x022D, 
--IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_A,  0x01E0, 
--IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_O,  0x0230, 
--IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_a,  0x01E1, 
--IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_o,  0x0231, 
--IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_A,  0x01DE, 
--IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_O,  0x022A, 
--IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_U,  0x01D5, 
--IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_a,  0x01DF, 
--IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_o,  0x022B, 
--IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_u,  0x01D6, 
--IBUS_KEY_macron, IBUS_KEY_dead_ogonek, IBUS_KEY_O,  0x01EC, 
--IBUS_KEY_macron, IBUS_KEY_dead_ogonek, IBUS_KEY_o,  0x01ED, 
--IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_L,  0x1E38, 
--IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_R,  0x1E5C, 
--IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_l,  0x1E39, 
--IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_r,  0x1E5D, 
--IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_I,  0x1E2E, 
--IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_U,  0x01D7, 
--IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_i,  0x1E2F, 
--IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_u,  0x01D8, 
--IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota,  0x0390, 
--IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon,  0x03B0, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F0D, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON,  0x1F1D, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F2D, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA,  0x1F3D, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON,  0x1F4D, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON,  0x1F5D, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1F6D, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F05, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon,  0x1F15, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F25, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota,  0x1F35, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron,  0x1F45, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon,  0x1F55, 
--IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1F65, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F0C, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON,  0x1F1C, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F2C, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA,  0x1F3C, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON,  0x1F4C, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1F6C, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F04, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon,  0x1F14, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F24, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_iota,  0x1F34, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron,  0x1F44, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon,  0x1F54, 
--IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1F64, 
--IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_O,  0x1EDA, 
--IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_U,  0x1EE8, 
--IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_o,  0x1EDB, 
--IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_u,  0x1EE9, 
--IBUS_KEY_acute, IBUS_KEY_comma, IBUS_KEY_C,  0x1E08, 
--IBUS_KEY_acute, IBUS_KEY_comma, IBUS_KEY_c,  0x1E09, 
--IBUS_KEY_acute, IBUS_KEY_slash, IBUS_KEY_O,  0x01FE, 
--IBUS_KEY_acute, IBUS_KEY_slash, IBUS_KEY_o,  0x01FF, 
--IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_A,  0x1EA4, 
--IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_E,  0x1EBE, 
--IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_O,  0x1ED0, 
--IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_a,  0x1EA5, 
--IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_e,  0x1EBF, 
--IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_o,  0x1ED1, 
--IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_E,  0x1E16, 
--IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_O,  0x1E52, 
--IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_e,  0x1E17, 
--IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_o,  0x1E53, 
--IBUS_KEY_acute, IBUS_KEY_b, IBUS_KEY_A,  0x1EAE, 
--IBUS_KEY_acute, IBUS_KEY_b, IBUS_KEY_a,  0x1EAF, 
--IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_O,  0x1E4C, 
--IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_U,  0x1E78, 
--IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_o,  0x1E4D, 
--IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_u,  0x1E79, 
--IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_E,  0x1E16, 
--IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_O,  0x1E52, 
--IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_e,  0x1E17, 
--IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_o,  0x1E53, 
--IBUS_KEY_acute, IBUS_KEY_cedilla, IBUS_KEY_C,  0x1E08, 
--IBUS_KEY_acute, IBUS_KEY_cedilla, IBUS_KEY_c,  0x1E09, 
--IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_A,  0x1EA4, 
--IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_E,  0x1EBE, 
--IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_O,  0x1ED0, 
--IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_a,  0x1EA5, 
--IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_e,  0x1EBF, 
--IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_o,  0x1ED1, 
--IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_O,  0x1E4C, 
--IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_U,  0x1E78, 
--IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_o,  0x1E4D, 
--IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_u,  0x1E79, 
--IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_E,  0x1E16, 
--IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_O,  0x1E52, 
--IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_e,  0x1E17, 
--IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_o,  0x1E53, 
--IBUS_KEY_acute, IBUS_KEY_dead_breve, IBUS_KEY_A,  0x1EAE, 
--IBUS_KEY_acute, IBUS_KEY_dead_breve, IBUS_KEY_a,  0x1EAF, 
--IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_I,  0x1E2E, 
--IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_U,  0x01D7, 
--IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_i,  0x1E2F, 
--IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_u,  0x01D8, 
--IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota,  0x0390, 
--IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon,  0x03B0, 
--IBUS_KEY_acute, IBUS_KEY_dead_abovering, IBUS_KEY_A,  0x01FA, 
--IBUS_KEY_acute, IBUS_KEY_dead_abovering, IBUS_KEY_a,  0x01FB, 
--IBUS_KEY_acute, IBUS_KEY_dead_cedilla, IBUS_KEY_C,  0x1E08, 
--IBUS_KEY_acute, IBUS_KEY_dead_cedilla, IBUS_KEY_c,  0x1E09, 
--IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_O,  0x1EDA, 
--IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_U,  0x1EE8, 
--IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_o,  0x1EDB, 
--IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_u,  0x1EE9, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F0C, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON,  0x1F1C, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F2C, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA,  0x1F3C, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON,  0x1F4C, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1F6C, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F04, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon,  0x1F14, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F24, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota,  0x1F34, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron,  0x1F44, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon,  0x1F54, 
--IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1F64, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F0D, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON,  0x1F1D, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F2D, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA,  0x1F3D, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON,  0x1F4D, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON,  0x1F5D, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1F6D, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F05, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon,  0x1F15, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F25, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota,  0x1F35, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron,  0x1F45, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon,  0x1F55, 
--IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1F65, 
--IBUS_KEY_acute, IBUS_KEY_KP_Divide, IBUS_KEY_O,  0x01FE, 
--IBUS_KEY_acute, IBUS_KEY_KP_Divide, IBUS_KEY_o,  0x01FF, 
--0x05C1, 0x05BC, IBUS_KEY_hebrew_shin,  0xFB2C, 
--0x05C2, 0x05BC, IBUS_KEY_hebrew_shin,  0xFB2D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha,  0x1FB4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta,  0x1FC4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega,  0x1FF4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F00,  0x1F84, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F01,  0x1F85, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F08,  0x1F8C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F09,  0x1F8D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F20,  0x1F94, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F21,  0x1F95, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F28,  0x1F9C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F29,  0x1F9D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F60,  0x1FA4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F61,  0x1FA5, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F68,  0x1FAC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F69,  0x1FAD, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F89, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F99, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FA9, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F81, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F91, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA1, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F88, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F98, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FA8, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F80, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F90, 
--IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA0, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_alpha,  0x1FB2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_eta,  0x1FC2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_omega,  0x1FF2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F00,  0x1F82, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F01,  0x1F83, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F08,  0x1F8A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F09,  0x1F8B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F20,  0x1F92, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F21,  0x1F93, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F28,  0x1F9A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F29,  0x1F9B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F60,  0x1FA2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F61,  0x1FA3, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F68,  0x1FAA, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F69,  0x1FAB, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha,  0x1FB7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta,  0x1FC7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega,  0x1FF7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F00,  0x1F86, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F01,  0x1F87, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F08,  0x1F8E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F09,  0x1F8F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F20,  0x1F96, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F21,  0x1F97, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F28,  0x1F9E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F29,  0x1F9F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F60,  0x1FA6, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F61,  0x1FA7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F68,  0x1FAE, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F69,  0x1FAF, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_alpha,  0x1FB4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_eta,  0x1FC4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_omega,  0x1FF4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F00,  0x1F84, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F01,  0x1F85, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F08,  0x1F8C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F09,  0x1F8D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F20,  0x1F94, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F21,  0x1F95, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F28,  0x1F9C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F29,  0x1F9D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F60,  0x1FA4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F61,  0x1FA5, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F68,  0x1FAC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F69,  0x1FAD, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_alpha,  0x1FB2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_eta,  0x1FC2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_omega,  0x1FF2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F00,  0x1F82, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F01,  0x1F83, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F08,  0x1F8A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F09,  0x1F8B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F20,  0x1F92, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F21,  0x1F93, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F28,  0x1F9A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F29,  0x1F9B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F60,  0x1FA2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F61,  0x1FA3, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F68,  0x1FAA, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F69,  0x1FAB, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_alpha,  0x1FB4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_eta,  0x1FC4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_omega,  0x1FF4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F00,  0x1F84, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F01,  0x1F85, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F08,  0x1F8C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F09,  0x1F8D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F20,  0x1F94, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F21,  0x1F95, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F28,  0x1F9C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F29,  0x1F9D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F60,  0x1FA4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F61,  0x1FA5, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F68,  0x1FAC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F69,  0x1FAD, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_alpha,  0x1FB7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_eta,  0x1FC7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_omega,  0x1FF7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F00,  0x1F86, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F01,  0x1F87, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F08,  0x1F8E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F09,  0x1F8F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F20,  0x1F96, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F21,  0x1F97, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F28,  0x1F9E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F29,  0x1F9F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F60,  0x1FA6, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F61,  0x1FA7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F68,  0x1FAE, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F69,  0x1FAF, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F88, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F98, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FA8, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F80, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F90, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA0, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F89, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F99, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FA9, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F81, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F91, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA1, 
--IBUS_KEY_dead_abovedot, IBUS_KEY_f, IBUS_KEY_s,  0x1E9B, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_0, IBUS_KEY_parenright,  0x2469, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_1, IBUS_KEY_parenright,  0x246A, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_2, IBUS_KEY_parenright,  0x246B, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_3, IBUS_KEY_parenright,  0x246C, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_4, IBUS_KEY_parenright,  0x246D, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_5, IBUS_KEY_parenright,  0x246E, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_6, IBUS_KEY_parenright,  0x246F, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_7, IBUS_KEY_parenright,  0x2470, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_8, IBUS_KEY_parenright,  0x2471, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_9, IBUS_KEY_parenright,  0x2472, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_Space, IBUS_KEY_parenright,  0x246B, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_0, IBUS_KEY_parenright,  0x2469, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_1, IBUS_KEY_parenright,  0x246A, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_2, IBUS_KEY_parenright,  0x246B, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_3, IBUS_KEY_parenright,  0x246C, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_4, IBUS_KEY_parenright,  0x246D, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_5, IBUS_KEY_parenright,  0x246E, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_6, IBUS_KEY_parenright,  0x246F, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_7, IBUS_KEY_parenright,  0x2470, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_8, IBUS_KEY_parenright,  0x2471, 
--IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_9, IBUS_KEY_parenright,  0x2472, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_0, IBUS_KEY_parenright,  0x2473, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_1, IBUS_KEY_parenright,  0x3251, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_2, IBUS_KEY_parenright,  0x3252, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_3, IBUS_KEY_parenright,  0x3253, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_4, IBUS_KEY_parenright,  0x3254, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_5, IBUS_KEY_parenright,  0x3255, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_6, IBUS_KEY_parenright,  0x3256, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_7, IBUS_KEY_parenright,  0x3257, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_8, IBUS_KEY_parenright,  0x3258, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_9, IBUS_KEY_parenright,  0x3259, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_Space, IBUS_KEY_parenright,  0x3252, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_0, IBUS_KEY_parenright,  0x2473, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_1, IBUS_KEY_parenright,  0x3251, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_2, IBUS_KEY_parenright,  0x3252, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_3, IBUS_KEY_parenright,  0x3253, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_4, IBUS_KEY_parenright,  0x3254, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_5, IBUS_KEY_parenright,  0x3255, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_6, IBUS_KEY_parenright,  0x3256, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_7, IBUS_KEY_parenright,  0x3257, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_8, IBUS_KEY_parenright,  0x3258, 
--IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_9, IBUS_KEY_parenright,  0x3259, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_0, IBUS_KEY_parenright,  0x325A, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_1, IBUS_KEY_parenright,  0x325B, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_2, IBUS_KEY_parenright,  0x325C, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_3, IBUS_KEY_parenright,  0x325D, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_4, IBUS_KEY_parenright,  0x325E, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_5, IBUS_KEY_parenright,  0x325F, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_6, IBUS_KEY_parenright,  0x32B1, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_7, IBUS_KEY_parenright,  0x32B2, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_8, IBUS_KEY_parenright,  0x32B3, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_9, IBUS_KEY_parenright,  0x32B4, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_Space, IBUS_KEY_parenright,  0x325C, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_0, IBUS_KEY_parenright,  0x325A, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_1, IBUS_KEY_parenright,  0x325B, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_2, IBUS_KEY_parenright,  0x325C, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_3, IBUS_KEY_parenright,  0x325D, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_4, IBUS_KEY_parenright,  0x325E, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_5, IBUS_KEY_parenright,  0x325F, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_6, IBUS_KEY_parenright,  0x32B1, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_7, IBUS_KEY_parenright,  0x32B2, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_8, IBUS_KEY_parenright,  0x32B3, 
--IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_9, IBUS_KEY_parenright,  0x32B4, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_0, IBUS_KEY_parenright,  0x32B5, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_1, IBUS_KEY_parenright,  0x32B6, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_2, IBUS_KEY_parenright,  0x32B7, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_3, IBUS_KEY_parenright,  0x32B8, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_4, IBUS_KEY_parenright,  0x32B9, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_5, IBUS_KEY_parenright,  0x32BA, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_6, IBUS_KEY_parenright,  0x32BB, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_7, IBUS_KEY_parenright,  0x32BC, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_8, IBUS_KEY_parenright,  0x32BD, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_9, IBUS_KEY_parenright,  0x32BE, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_Space, IBUS_KEY_parenright,  0x32B7, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_0, IBUS_KEY_parenright,  0x32B5, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_1, IBUS_KEY_parenright,  0x32B6, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_2, IBUS_KEY_parenright,  0x32B7, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_3, IBUS_KEY_parenright,  0x32B8, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_4, IBUS_KEY_parenright,  0x32B9, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_5, IBUS_KEY_parenright,  0x32BA, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_6, IBUS_KEY_parenright,  0x32BB, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_7, IBUS_KEY_parenright,  0x32BC, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_8, IBUS_KEY_parenright,  0x32BD, 
--IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_9, IBUS_KEY_parenright,  0x32BE, 
--IBUS_KEY_parenleft, IBUS_KEY_5, IBUS_KEY_0, IBUS_KEY_parenright,  0x32BF, 
--IBUS_KEY_parenleft, 0x1100, 0x1161, IBUS_KEY_parenright,  0x326E, 
--IBUS_KEY_parenleft, 0x1102, 0x1161, IBUS_KEY_parenright,  0x326F, 
--IBUS_KEY_parenleft, 0x1103, 0x1161, IBUS_KEY_parenright,  0x3270, 
--IBUS_KEY_parenleft, 0x1105, 0x1161, IBUS_KEY_parenright,  0x3271, 
--IBUS_KEY_parenleft, 0x1106, 0x1161, IBUS_KEY_parenright,  0x3272, 
--IBUS_KEY_parenleft, 0x1107, 0x1161, IBUS_KEY_parenright,  0x3273, 
--IBUS_KEY_parenleft, 0x1109, 0x1161, IBUS_KEY_parenright,  0x3274, 
--IBUS_KEY_parenleft, 0x110B, 0x1161, IBUS_KEY_parenright,  0x3275, 
--IBUS_KEY_parenleft, 0x110C, 0x1161, IBUS_KEY_parenright,  0x3276, 
--IBUS_KEY_parenleft, 0x110E, 0x1161, IBUS_KEY_parenright,  0x3277, 
--IBUS_KEY_parenleft, 0x110F, 0x1161, IBUS_KEY_parenright,  0x3278, 
--IBUS_KEY_parenleft, 0x1110, 0x1161, IBUS_KEY_parenright,  0x3279, 
--IBUS_KEY_parenleft, 0x1111, 0x1161, IBUS_KEY_parenright,  0x327A, 
--IBUS_KEY_parenleft, 0x1112, 0x1161, IBUS_KEY_parenright,  0x327B, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_0, IBUS_KEY_parenright,  0x2473, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_1, IBUS_KEY_parenright,  0x3251, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_2, IBUS_KEY_parenright,  0x3252, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_3, IBUS_KEY_parenright,  0x3253, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_4, IBUS_KEY_parenright,  0x3254, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_5, IBUS_KEY_parenright,  0x3255, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_6, IBUS_KEY_parenright,  0x3256, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_7, IBUS_KEY_parenright,  0x3257, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_8, IBUS_KEY_parenright,  0x3258, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_9, IBUS_KEY_parenright,  0x3259, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_Space, IBUS_KEY_parenright,  0x3252, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_0, IBUS_KEY_parenright,  0x2473, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_1, IBUS_KEY_parenright,  0x3251, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_2, IBUS_KEY_parenright,  0x3252, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_3, IBUS_KEY_parenright,  0x3253, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_4, IBUS_KEY_parenright,  0x3254, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_5, IBUS_KEY_parenright,  0x3255, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_6, IBUS_KEY_parenright,  0x3256, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_7, IBUS_KEY_parenright,  0x3257, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_8, IBUS_KEY_parenright,  0x3258, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_9, IBUS_KEY_parenright,  0x3259, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_0, IBUS_KEY_parenright,  0x2469, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_1, IBUS_KEY_parenright,  0x246A, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_2, IBUS_KEY_parenright,  0x246B, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_3, IBUS_KEY_parenright,  0x246C, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_4, IBUS_KEY_parenright,  0x246D, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_5, IBUS_KEY_parenright,  0x246E, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_6, IBUS_KEY_parenright,  0x246F, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_7, IBUS_KEY_parenright,  0x2470, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_8, IBUS_KEY_parenright,  0x2471, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_9, IBUS_KEY_parenright,  0x2472, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_Space, IBUS_KEY_parenright,  0x246B, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_0, IBUS_KEY_parenright,  0x2469, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_1, IBUS_KEY_parenright,  0x246A, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_2, IBUS_KEY_parenright,  0x246B, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_3, IBUS_KEY_parenright,  0x246C, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_4, IBUS_KEY_parenright,  0x246D, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_5, IBUS_KEY_parenright,  0x246E, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_6, IBUS_KEY_parenright,  0x246F, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_7, IBUS_KEY_parenright,  0x2470, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_8, IBUS_KEY_parenright,  0x2471, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_9, IBUS_KEY_parenright,  0x2472, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_0, IBUS_KEY_parenright,  0x2473, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_1, IBUS_KEY_parenright,  0x3251, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_2, IBUS_KEY_parenright,  0x3252, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_3, IBUS_KEY_parenright,  0x3253, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_4, IBUS_KEY_parenright,  0x3254, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_5, IBUS_KEY_parenright,  0x3255, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_6, IBUS_KEY_parenright,  0x3256, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_7, IBUS_KEY_parenright,  0x3257, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_8, IBUS_KEY_parenright,  0x3258, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_9, IBUS_KEY_parenright,  0x3259, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_Space, IBUS_KEY_parenright,  0x3252, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_0, IBUS_KEY_parenright,  0x2473, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_1, IBUS_KEY_parenright,  0x3251, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_2, IBUS_KEY_parenright,  0x3252, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_3, IBUS_KEY_parenright,  0x3253, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_4, IBUS_KEY_parenright,  0x3254, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_5, IBUS_KEY_parenright,  0x3255, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_6, IBUS_KEY_parenright,  0x3256, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_7, IBUS_KEY_parenright,  0x3257, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_8, IBUS_KEY_parenright,  0x3258, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_9, IBUS_KEY_parenright,  0x3259, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_0, IBUS_KEY_parenright,  0x325A, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_1, IBUS_KEY_parenright,  0x325B, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_2, IBUS_KEY_parenright,  0x325C, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_3, IBUS_KEY_parenright,  0x325D, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_4, IBUS_KEY_parenright,  0x325E, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_5, IBUS_KEY_parenright,  0x325F, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_6, IBUS_KEY_parenright,  0x32B1, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_7, IBUS_KEY_parenright,  0x32B2, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_8, IBUS_KEY_parenright,  0x32B3, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_9, IBUS_KEY_parenright,  0x32B4, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_Space, IBUS_KEY_parenright,  0x325C, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_0, IBUS_KEY_parenright,  0x325A, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_1, IBUS_KEY_parenright,  0x325B, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_2, IBUS_KEY_parenright,  0x325C, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_3, IBUS_KEY_parenright,  0x325D, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_4, IBUS_KEY_parenright,  0x325E, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_5, IBUS_KEY_parenright,  0x325F, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_6, IBUS_KEY_parenright,  0x32B1, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_7, IBUS_KEY_parenright,  0x32B2, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_8, IBUS_KEY_parenright,  0x32B3, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_9, IBUS_KEY_parenright,  0x32B4, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_0, IBUS_KEY_parenright,  0x32B5, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_1, IBUS_KEY_parenright,  0x32B6, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_2, IBUS_KEY_parenright,  0x32B7, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_3, IBUS_KEY_parenright,  0x32B8, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_4, IBUS_KEY_parenright,  0x32B9, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_5, IBUS_KEY_parenright,  0x32BA, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_6, IBUS_KEY_parenright,  0x32BB, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_7, IBUS_KEY_parenright,  0x32BC, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_8, IBUS_KEY_parenright,  0x32BD, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_9, IBUS_KEY_parenright,  0x32BE, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_Space, IBUS_KEY_parenright,  0x32B7, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_0, IBUS_KEY_parenright,  0x32B5, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_1, IBUS_KEY_parenright,  0x32B6, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_2, IBUS_KEY_parenright,  0x32B7, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_3, IBUS_KEY_parenright,  0x32B8, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_4, IBUS_KEY_parenright,  0x32B9, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_5, IBUS_KEY_parenright,  0x32BA, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_6, IBUS_KEY_parenright,  0x32BB, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_7, IBUS_KEY_parenright,  0x32BC, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_8, IBUS_KEY_parenright,  0x32BD, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_9, IBUS_KEY_parenright,  0x32BE, 
--IBUS_KEY_parenleft, IBUS_KEY_KP_5, IBUS_KEY_0, IBUS_KEY_parenright,  0x32BF, 
--IBUS_KEY_C, IBUS_KEY_C, IBUS_KEY_C, IBUS_KEY_P,  0x262D, 
--IBUS_KEY_U, IBUS_KEY_space, IBUS_KEY_comma, IBUS_KEY_E,  0x1E1C, 
--IBUS_KEY_U, IBUS_KEY_space, IBUS_KEY_comma, IBUS_KEY_e,  0x1E1D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAB, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F83, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F93, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA3, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAA, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F82, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F92, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAA, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F82, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F92, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAB, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F83, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F93, 
--IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA3, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAF, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F87, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F97, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAE, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F86, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F96, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA6, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAE, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F86, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F96, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA6, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAF, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F87, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F97, 
--IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAB, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F83, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F93, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA3, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAA, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F82, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F92, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9A, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAA, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F82, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F92, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA2, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9B, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAB, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F83, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F93, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA3, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9C, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAC, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F84, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F94, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA4, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9D, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAD, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F85, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F95, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA5, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA,  0x1F8F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA,  0x1F9F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA,  0x1FAF, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha,  0x1F87, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta,  0x1F97, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega,  0x1FA7, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA,  0x1F8E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA,  0x1F9E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA,  0x1FAE, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha,  0x1F86, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta,  0x1F96, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega,  0x1FA6, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA,  0x1F8E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA,  0x1F9E, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA,  0x1FAE, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha,  0x1F86, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta,  0x1F96, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega,  0x1FA6, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA,  0x1F8F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA,  0x1F9F, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA,  0x1FAF, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha,  0x1F87, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta,  0x1F97, 
--IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega,  0x1FA7, 
--};
--
--static const guint16 gtk_compose_seqs_compact_32bit_first[] = {
--IBUS_KEY_dead_grave, 54, 123, 187, 187, 187, 
--IBUS_KEY_dead_acute, 187, 268, 316, 316, 316, 
--IBUS_KEY_dead_circumflex, 316, 388, 388, 388, 388, 
--IBUS_KEY_dead_tilde, 388, 406, 406, 406, 406, 
--IBUS_KEY_dead_macron, 406, 466, 466, 466, 466, 
--IBUS_KEY_dead_caron, 466, 502, 502, 502, 502, 
--IBUS_KEY_dead_doublegrave, 502, 538, 538, 538, 538, 
--IBUS_KEY_dead_invertedbreve, 538, 574, 574, 574, 574, 
--IBUS_KEY_Multi_key, 574, 574, 850, 920, 926, 
--IBUS_KEY_M,  0, 2,
--IBUS_KEY_m,  2, 2,
--0x0186,  4, 2,
--0x018E,  6, 2,
--0x0190,  8, 2,
--0x0196,  10, 2,
--0x01B1,  12, 2,
--0x01B2,  14, 2,
--0x01DD,  16, 2,
--0x0254,  18, 2,
--0x025B,  20, 2,
--0x0269,  22, 2,
--0x028A,  24, 2,
--0x028B,  26, 2,
--IBUS_KEY_ENG,  28, 2,
--IBUS_KEY_Cyrillic_a,  30, 2,
--IBUS_KEY_Cyrillic_o,  32, 2,
--IBUS_KEY_Cyrillic_er,  34, 2,
--IBUS_KEY_Cyrillic_u,  36, 2,
--IBUS_KEY_Cyrillic_A,  38, 2,
--IBUS_KEY_Cyrillic_O,  40, 2,
--IBUS_KEY_Cyrillic_ER,  42, 2,
--IBUS_KEY_Cyrillic_U,  44, 2,
--IBUS_KEY_dead_tilde, IBUS_KEY_A,  46, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_E,  49, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_I,  52, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_O,  55, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_U,  58, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_a,  61, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_e,  64, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_i,  67, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_o,  70, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_u,  73, 3,
--IBUS_KEY_dead_tilde, 0x0186,  76, 3,
--IBUS_KEY_dead_tilde, 0x018E,  79, 3,
--IBUS_KEY_dead_tilde, 0x0190,  82, 3,
--IBUS_KEY_dead_tilde, 0x01DD,  85, 3,
--IBUS_KEY_dead_tilde, 0x0254,  88, 3,
--IBUS_KEY_dead_tilde, 0x025B,  91, 3,
--IBUS_KEY_J,  94, 2,
--IBUS_KEY_j,  96, 2,
--0x0186,  98, 2,
--0x018E,  100, 2,
--0x0190,  102, 2,
--0x0196,  104, 2,
--0x01B1,  106, 2,
--0x01B2,  108, 2,
--0x01DD,  110, 2,
--0x0254,  112, 2,
--0x025B,  114, 2,
--0x0269,  116, 2,
--0x028A,  118, 2,
--0x028B,  120, 2,
--IBUS_KEY_ENG,  122, 2,
--IBUS_KEY_Cyrillic_a,  124, 2,
--IBUS_KEY_Cyrillic_ie,  126, 2,
--IBUS_KEY_Cyrillic_i,  128, 2,
--IBUS_KEY_Cyrillic_o,  130, 2,
--IBUS_KEY_Cyrillic_er,  132, 2,
--IBUS_KEY_Cyrillic_u,  134, 2,
--IBUS_KEY_Cyrillic_A,  136, 2,
--IBUS_KEY_Cyrillic_IE,  138, 2,
--IBUS_KEY_Cyrillic_I,  140, 2,
--IBUS_KEY_Cyrillic_O,  142, 2,
--IBUS_KEY_Cyrillic_ER,  144, 2,
--IBUS_KEY_Cyrillic_U,  146, 2,
--IBUS_KEY_dead_tilde, IBUS_KEY_A,  148, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_E,  151, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_I,  154, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_a,  157, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_e,  160, 3,
--IBUS_KEY_dead_tilde, IBUS_KEY_i,  163, 3,
--IBUS_KEY_dead_tilde, 0x0186,  166, 3,
--IBUS_KEY_dead_tilde, 0x018E,  169, 3,
--IBUS_KEY_dead_tilde, 0x0190,  172, 3,
--IBUS_KEY_dead_tilde, 0x01DD,  175, 3,
--IBUS_KEY_dead_tilde, 0x0254,  178, 3,
--IBUS_KEY_dead_tilde, 0x025B,  181, 3,
--0x0186,  184, 2,
--0x018E,  186, 2,
--0x0190,  188, 2,
--0x0196,  190, 2,
--0x01B1,  192, 2,
--0x01B2,  194, 2,
--0x01DD,  196, 2,
--0x0254,  198, 2,
--0x025B,  200, 2,
--0x0269,  202, 2,
--0x028A,  204, 2,
--0x028B,  206, 2,
--IBUS_KEY_Cyrillic_a,  208, 2,
--IBUS_KEY_Cyrillic_ie,  210, 2,
--IBUS_KEY_Cyrillic_i,  212, 2,
--IBUS_KEY_Cyrillic_o,  214, 2,
--IBUS_KEY_Cyrillic_er,  216, 2,
--IBUS_KEY_Cyrillic_u,  218, 2,
--IBUS_KEY_Cyrillic_A,  220, 2,
--IBUS_KEY_Cyrillic_IE,  222, 2,
--IBUS_KEY_Cyrillic_I,  224, 2,
--IBUS_KEY_Cyrillic_O,  226, 2,
--IBUS_KEY_Cyrillic_ER,  228, 2,
--IBUS_KEY_Cyrillic_U,  230, 2,
--0x0186,  232, 2,
--0x018E,  234, 2,
--0x0190,  236, 2,
--0x01DD,  238, 2,
--0x0254,  240, 2,
--0x025B,  242, 2,
--0x0186,  244, 2,
--0x018E,  246, 2,
--0x0190,  248, 2,
--0x0196,  250, 2,
--0x01B1,  252, 2,
--0x01B2,  254, 2,
--0x01DD,  256, 2,
--0x0254,  258, 2,
--0x025B,  260, 2,
--0x0269,  262, 2,
--0x028A,  264, 2,
--0x028B,  266, 2,
--IBUS_KEY_Cyrillic_a,  268, 2,
--IBUS_KEY_Cyrillic_ie,  270, 2,
--IBUS_KEY_Cyrillic_o,  272, 2,
--IBUS_KEY_Cyrillic_er,  274, 2,
--IBUS_KEY_Cyrillic_A,  276, 2,
--IBUS_KEY_Cyrillic_IE,  278, 2,
--IBUS_KEY_Cyrillic_O,  280, 2,
--IBUS_KEY_Cyrillic_ER,  282, 2,
--0x0186,  284, 2,
--0x018E,  286, 2,
--0x0190,  288, 2,
--0x0196,  290, 2,
--0x01B1,  292, 2,
--0x01B2,  294, 2,
--0x01DD,  296, 2,
--0x0254,  298, 2,
--0x025B,  300, 2,
--0x0269,  302, 2,
--0x028A,  304, 2,
--0x028B,  306, 2,
--IBUS_KEY_Cyrillic_a,  308, 2,
--IBUS_KEY_Cyrillic_ie,  310, 2,
--IBUS_KEY_Cyrillic_i,  312, 2,
--IBUS_KEY_Cyrillic_o,  314, 2,
--IBUS_KEY_Cyrillic_er,  316, 2,
--IBUS_KEY_Cyrillic_u,  318, 2,
--IBUS_KEY_Cyrillic_A,  320, 2,
--IBUS_KEY_Cyrillic_IE,  322, 2,
--IBUS_KEY_Cyrillic_I,  324, 2,
--IBUS_KEY_Cyrillic_O,  326, 2,
--IBUS_KEY_Cyrillic_ER,  328, 2,
--IBUS_KEY_Cyrillic_U,  330, 2,
--IBUS_KEY_Cyrillic_a,  332, 2,
--IBUS_KEY_Cyrillic_ie,  334, 2,
--IBUS_KEY_Cyrillic_i,  336, 2,
--IBUS_KEY_Cyrillic_o,  338, 2,
--IBUS_KEY_Cyrillic_er,  340, 2,
--IBUS_KEY_Cyrillic_u,  342, 2,
--IBUS_KEY_Cyrillic_A,  344, 2,
--IBUS_KEY_Cyrillic_IE,  346, 2,
--IBUS_KEY_Cyrillic_I,  348, 2,
--IBUS_KEY_Cyrillic_O,  350, 2,
--IBUS_KEY_Cyrillic_ER,  352, 2,
--IBUS_KEY_Cyrillic_U,  354, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_J,  356, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_j,  358, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_a,  360, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ie,  362, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_i,  364, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_o,  366, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_er,  368, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_u,  370, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_A,  372, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_IE,  374, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_I,  376, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_O,  378, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ER,  380, 2,
--IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_U,  382, 2,
--IBUS_KEY_F, IBUS_KEY_U,  384, 1,
--IBUS_KEY_J, IBUS_KEY_apostrophe,  385, 2,
--IBUS_KEY_J, IBUS_KEY_acute,  387, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_a,  389, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_ie,  391, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_i,  393, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_o,  395, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_er,  397, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_u,  399, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_A,  401, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_IE,  403, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_I,  405, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_O,  407, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_ER,  409, 2,
--IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_U,  411, 2,
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_a,  413, 2,
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_ie,  415, 2,
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_o,  417, 2,
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_er,  419, 2,
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_A,  421, 2,
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_IE,  423, 2,
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_O,  425, 2,
--IBUS_KEY_underscore, IBUS_KEY_Cyrillic_ER,  427, 2,
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_a,  429, 2,
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_o,  431, 2,
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_er,  433, 2,
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_u,  435, 2,
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_A,  437, 2,
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_O,  439, 2,
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_ER,  441, 2,
--IBUS_KEY_grave, IBUS_KEY_Cyrillic_U,  443, 2,
--IBUS_KEY_j, IBUS_KEY_apostrophe,  445, 2,
--IBUS_KEY_j, IBUS_KEY_acute,  447, 2,
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_a,  449, 2,
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_ie,  451, 2,
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_o,  453, 2,
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_er,  455, 2,
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_A,  457, 2,
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_IE,  459, 2,
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_O,  461, 2,
--IBUS_KEY_macron, IBUS_KEY_Cyrillic_ER,  463, 2,
--IBUS_KEY_acute, IBUS_KEY_J,  465, 2,
--IBUS_KEY_acute, IBUS_KEY_j,  467, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_a,  469, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_ie,  471, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_i,  473, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_o,  475, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_er,  477, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_u,  479, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_A,  481, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_IE,  483, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_I,  485, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_O,  487, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_ER,  489, 2,
--IBUS_KEY_acute, IBUS_KEY_Cyrillic_U,  491, 2,
--IBUS_KEY_backslash, IBUS_KEY_o, IBUS_KEY_slash,  493, 1,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_a,  494, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_ie,  496, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_i,  498, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_o,  500, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_er,  502, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_u,  504, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_A,  506, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_IE,  508, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_I,  510, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_O,  512, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_ER,  514, 2,
--IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_U,  516, 2,
--IBUS_KEY_p, IBUS_KEY_o, IBUS_KEY_o,  518, 1,
--IBUS_KEY_L, IBUS_KEY_L, IBUS_KEY_A, IBUS_KEY_P,  519, 1,
--};
--
--static const guint32 gtk_compose_seqs_compact_32bit_second[] = {
--0x004D, 0x0300, 
--0x006D, 0x0300, 
--0x0186, 0x0300, 
--0x018E, 0x0300, 
--0x0190, 0x0300, 
--0x0196, 0x0300, 
--0x01B1, 0x0300, 
--0x01B2, 0x0300, 
--0x01DD, 0x0300, 
--0x0254, 0x0300, 
--0x025B, 0x0300, 
--0x0269, 0x0300, 
--0x028A, 0x0300, 
--0x028B, 0x0300, 
--0x014A, 0x0300, 
--0x0430, 0x0300, 
--0x043E, 0x0300, 
--0x0440, 0x0300, 
--0x0443, 0x0300, 
--0x0410, 0x0300, 
--0x041E, 0x0300, 
--0x0420, 0x0300, 
--0x0423, 0x0300, 
--0x0041, 0x0303, 0x0300, 
--0x0045, 0x0303, 0x0300, 
--0x0049, 0x0303, 0x0300, 
--0x004F, 0x0303, 0x0300, 
--0x0055, 0x0303, 0x0300, 
--0x0061, 0x0303, 0x0300, 
--0x0065, 0x0303, 0x0300, 
--0x0069, 0x0303, 0x0300, 
--0x006F, 0x0303, 0x0300, 
--0x0075, 0x0303, 0x0300, 
--0x0186, 0x0303, 0x0300, 
--0x018E, 0x0303, 0x0300, 
--0x0190, 0x0303, 0x0300, 
--0x01DD, 0x0303, 0x0300, 
--0x0254, 0x0303, 0x0300, 
--0x025B, 0x0303, 0x0300, 
--0x004A, 0x0301, 
--0x006A, 0x0301, 
--0x0186, 0x0301, 
--0x018E, 0x0301, 
--0x0190, 0x0301, 
--0x0196, 0x0301, 
--0x01B1, 0x0301, 
--0x01B2, 0x0301, 
--0x01DD, 0x0301, 
--0x0254, 0x0301, 
--0x025B, 0x0301, 
--0x0269, 0x0301, 
--0x028A, 0x0301, 
--0x028B, 0x0301, 
--0x014A, 0x0301, 
--0x0430, 0x0301, 
--0x0435, 0x0301, 
--0x0438, 0x0301, 
--0x043E, 0x0301, 
--0x0440, 0x0301, 
--0x0443, 0x0301, 
--0x0410, 0x0301, 
--0x0415, 0x0301, 
--0x0418, 0x0301, 
--0x041E, 0x0301, 
--0x0420, 0x0301, 
--0x0423, 0x0301, 
--0x0041, 0x0303, 0x0301, 
--0x0045, 0x0303, 0x0301, 
--0x0049, 0x0303, 0x0301, 
--0x0061, 0x0303, 0x0301, 
--0x0065, 0x0303, 0x0301, 
--0x0069, 0x0303, 0x0301, 
--0x0186, 0x0303, 0x0301, 
--0x018E, 0x0303, 0x0301, 
--0x0190, 0x0303, 0x0301, 
--0x01DD, 0x0303, 0x0301, 
--0x0254, 0x0303, 0x0301, 
--0x025B, 0x0303, 0x0301, 
--0x0186, 0x0302, 
--0x018E, 0x0302, 
--0x0190, 0x0302, 
--0x0196, 0x0302, 
--0x01B1, 0x0302, 
--0x01B2, 0x0302, 
--0x01DD, 0x0302, 
--0x0254, 0x0302, 
--0x025B, 0x0302, 
--0x0269, 0x0302, 
--0x028A, 0x0302, 
--0x028B, 0x0302, 
--0x0430, 0x0302, 
--0x0435, 0x0302, 
--0x0438, 0x0302, 
--0x043E, 0x0302, 
--0x0440, 0x0302, 
--0x0443, 0x0302, 
--0x0410, 0x0302, 
--0x0415, 0x0302, 
--0x0418, 0x0302, 
--0x041E, 0x0302, 
--0x0420, 0x0302, 
--0x0423, 0x0302, 
--0x0186, 0x0303, 
--0x018E, 0x0303, 
--0x0190, 0x0303, 
--0x01DD, 0x0303, 
--0x0254, 0x0303, 
--0x025B, 0x0303, 
--0x0186, 0x0304, 
--0x018E, 0x0304, 
--0x0190, 0x0304, 
--0x0196, 0x0304, 
--0x01B1, 0x0304, 
--0x01B2, 0x0304, 
--0x01DD, 0x0304, 
--0x0254, 0x0304, 
--0x025B, 0x0304, 
--0x0269, 0x0304, 
--0x028A, 0x0304, 
--0x028B, 0x0304, 
--0x0430, 0x0304, 
--0x0435, 0x0304, 
--0x043E, 0x0304, 
--0x0440, 0x0304, 
--0x0410, 0x0304, 
--0x0415, 0x0304, 
--0x041E, 0x0304, 
--0x0420, 0x0304, 
--0x0186, 0x030C, 
--0x018E, 0x030C, 
--0x0190, 0x030C, 
--0x0196, 0x030C, 
--0x01B1, 0x030C, 
--0x01B2, 0x030C, 
--0x01DD, 0x030C, 
--0x0254, 0x030C, 
--0x025B, 0x030C, 
--0x0269, 0x030C, 
--0x028A, 0x030C, 
--0x028B, 0x030C, 
--0x0430, 0x030F, 
--0x0435, 0x030F, 
--0x0438, 0x030F, 
--0x043E, 0x030F, 
--0x0440, 0x030F, 
--0x0443, 0x030F, 
--0x0410, 0x030F, 
--0x0415, 0x030F, 
--0x0418, 0x030F, 
--0x041E, 0x030F, 
--0x0420, 0x030F, 
--0x0423, 0x030F, 
--0x0430, 0x0311, 
--0x0435, 0x0311, 
--0x0438, 0x0311, 
--0x043E, 0x0311, 
--0x0440, 0x0311, 
--0x0443, 0x0311, 
--0x0410, 0x0311, 
--0x0415, 0x0311, 
--0x0418, 0x0311, 
--0x041E, 0x0311, 
--0x0420, 0x0311, 
--0x0423, 0x0311, 
--0x004A, 0x0301, 
--0x006A, 0x0301, 
--0x0430, 0x0301, 
--0x0435, 0x0301, 
--0x0438, 0x0301, 
--0x043E, 0x0301, 
--0x0440, 0x0301, 
--0x0443, 0x0301, 
--0x0410, 0x0301, 
--0x0415, 0x0301, 
--0x0418, 0x0301, 
--0x041E, 0x0301, 
--0x0420, 0x0301, 
--0x0423, 0x0301, 
--0x1F595, 
--0x004A, 0x0301, 
--0x004A, 0x0301, 
--0x0430, 0x0302, 
--0x0435, 0x0302, 
--0x0438, 0x0302, 
--0x043E, 0x0302, 
--0x0440, 0x0302, 
--0x0443, 0x0302, 
--0x0410, 0x0302, 
--0x0415, 0x0302, 
--0x0418, 0x0302, 
--0x041E, 0x0302, 
--0x0420, 0x0302, 
--0x0423, 0x0302, 
--0x0430, 0x0304, 
--0x0435, 0x0304, 
--0x043E, 0x0304, 
--0x0440, 0x0304, 
--0x0410, 0x0304, 
--0x0415, 0x0304, 
--0x041E, 0x0304, 
--0x0420, 0x0304, 
--0x0430, 0x0300, 
--0x043E, 0x0300, 
--0x0440, 0x0300, 
--0x0443, 0x0300, 
--0x0410, 0x0300, 
--0x041E, 0x0300, 
--0x0420, 0x0300, 
--0x0423, 0x0300, 
--0x006A, 0x0301, 
--0x006A, 0x0301, 
--0x0430, 0x0304, 
--0x0435, 0x0304, 
--0x043E, 0x0304, 
--0x0440, 0x0304, 
--0x0410, 0x0304, 
--0x0415, 0x0304, 
--0x041E, 0x0304, 
--0x0420, 0x0304, 
--0x004A, 0x0301, 
--0x006A, 0x0301, 
--0x0430, 0x0301, 
--0x0435, 0x0301, 
--0x0438, 0x0301, 
--0x043E, 0x0301, 
--0x0440, 0x0301, 
--0x0443, 0x0301, 
--0x0410, 0x0301, 
--0x0415, 0x0301, 
--0x0418, 0x0301, 
--0x041E, 0x0301, 
--0x0420, 0x0301, 
--0x0423, 0x0301, 
--0x1F64C, 
--0x0430, 0x030F, 
--0x0435, 0x030F, 
--0x0438, 0x030F, 
--0x043E, 0x030F, 
--0x0440, 0x030F, 
--0x0443, 0x030F, 
--0x0410, 0x030F, 
--0x0415, 0x030F, 
--0x0418, 0x030F, 
--0x041E, 0x030F, 
--0x0420, 0x030F, 
--0x0423, 0x030F, 
--0x1F4A9, 
--0x1F596, 
--};
--
--#endif /* __GTK_IM_CONTEXT_SIMPLE_SEQS_H__ */
--
-diff --git a/src/ibus.gresources.xml.in b/src/ibus.gresources.xml.in
-new file mode 100644
-index 00000000..0582c2fb
---- /dev/null
-+++ b/src/ibus.gresources.xml.in
-@@ -0,0 +1,6 @@
-+<gresources>
-+  <gresource prefix='/org/freedesktop/ibus'>
-+    <file alias="compose/sequences">compose/sequences-@ENDIAN@-endian</file>
-+  </gresource>
-+</gresources>
-+
-diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c
-index 387a24a8..3e7b0f41 100644
---- a/src/ibuscomposetable.c
-+++ b/src/ibuscomposetable.c
-@@ -1,7 +1,7 @@
- /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
- /* ibus - The Input Bus
-  * Copyright (C) 2013-2014 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2013-2022 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2013-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-  *
-  * This library is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU Lesser General Public
-@@ -36,12 +36,6 @@
- 
- #include "ibusenginesimpleprivate.h"
- 
--/* This file contains the table of the compose sequences,
-- * static const guint16 gtk_compose_seqs_compact[] = {}
-- * It is generated from the compose-parse.py script.
-- */
--#include "gtkimcontextsimpleseqs.h"
--
- 
- #define IBUS_COMPOSE_TABLE_MAGIC "IBusComposeTable"
- #define IBUS_COMPOSE_TABLE_VERSION (4)
-@@ -55,10 +49,6 @@ typedef struct {
- } IBusComposeData;
- 
- 
--extern const IBusComposeTableCompactEx ibus_compose_table_compact;
--extern const IBusComposeTableCompactEx ibus_compose_table_compact_32bit;
--
--
- static void
- ibus_compose_data_free (IBusComposeData *compose_data)
- {
-@@ -504,24 +494,28 @@ ibus_compose_list_parse_file (const char *compose_file,
- 
- 
- static GList *
--ibus_compose_list_check_duplicated (GList *compose_list,
--                                    int    max_compose_len)
-+ibus_compose_list_check_duplicated (GList  *compose_list,
-+                                    int     max_compose_len,
-+                                    GSList *compose_tables)
- {
-     GList *list;
-     static guint16 *keysyms;
-     GList *removed_list = NULL;
-     IBusComposeData *compose_data;
--    gboolean is_32bit;
-+    GString *output = g_string_new ("");
- 
-     keysyms = g_new (guint16, max_compose_len + 1);
- 
-     for (list = compose_list; list != NULL; list = list->next) {
-         int i;
-         int n_compose = 0;
-+        gboolean is_32bit;
-+        guint n_outputs;
-+        GSList *tmp_list;
-         gboolean compose_finish = FALSE;
--        gunichar *output_chars = NULL;
-+        gboolean compose_match = FALSE;
-+        gboolean success = FALSE;
-         gunichar output_char = 0;
--        guint n_outputs;
- 
-         compose_data = list->data;
- 
-@@ -541,36 +535,50 @@ ibus_compose_list_check_duplicated (GList *compose_list,
-         n_outputs = unichar_length (compose_data->values);
-         is_32bit = (n_outputs > 1) ? TRUE :
-                 (compose_data->values[0] >= 0xFFFF) ? TRUE : FALSE;
--        if (!is_32bit &&
--            ibus_compose_table_compact_check (&ibus_compose_table_compact,
--                                              keysyms,
--                                              n_compose,
--                                              &compose_finish,
--                                              &output_chars) &&
--            compose_finish) {
--            if (compose_data->values[0] == *output_chars)
--                removed_list = g_list_append (removed_list, compose_data);
--            g_free (output_chars);
--        } else if (is_32bit &&
--                   ibus_compose_table_compact_check (
--                          &ibus_compose_table_compact_32bit,
--                          keysyms,
--                          n_compose,
--                          &compose_finish,
--                          &output_chars) && compose_finish) {
--            
--            if (n_outputs == unichar_length (output_chars)) {
-+        g_string_erase (output, 0, -1);
-+        tmp_list = compose_tables;
-+        while (tmp_list) {
-+            is_32bit = FALSE;
-+            if (ibus_compose_table_check (
-+                (IBusComposeTableEx *)tmp_list->data,
-+                keysyms,
-+                n_compose,
-+                &compose_finish,
-+                &compose_match,
-+                output,
-+                is_32bit) && compose_finish && compose_match) {
-+                if (compose_data->values[0] == g_utf8_get_char (output->str)) {
-+                    success = TRUE;
-+                    break;
-+                }
-+            }
-+            is_32bit = TRUE;
-+            if (ibus_compose_table_check (
-+                (IBusComposeTableEx *)tmp_list->data,
-+                keysyms,
-+                n_compose,
-+                &compose_finish,
-+                &compose_match,
-+                output,
-+                is_32bit) && compose_finish && compose_match) {
-                 int j = 0;
-+                gchar *str = output->str;
-                 while (j < n_outputs && compose_data->values[j]) {
--                    if (compose_data->values[j] != output_chars[j])
-+                    gunichar ch = g_utf8_get_char (str);
-+                    if (compose_data->values[j] != ch)
-                         break;
-+                    str = g_utf8_next_char (str);
-                     ++j;
-                 }
--                if (j == n_outputs)
--                    removed_list = g_list_append (removed_list, compose_data);
-+                if (j == n_outputs && *str == '\0') {
-+                    success = TRUE;
-+                    break;
-+                }
-             }
--            g_free (output_chars);
--
-+            tmp_list = tmp_list->next;
-+        }
-+        if (success) {
-+            removed_list = g_list_append (removed_list, compose_data);
-         } else if (ibus_check_algorithmically (keysyms,
-                                                n_compose,
-                                                &output_char)) {
-@@ -578,6 +586,7 @@ ibus_compose_list_check_duplicated (GList *compose_list,
-                 removed_list = g_list_append (removed_list, compose_data);
-         }
-     }
-+    g_string_free (output, TRUE);
- 
-     for (list = removed_list; list != NULL; list = list->next) {
-         compose_data = list->data;
-@@ -717,19 +726,100 @@ ibus_compose_hash_get_cache_path (guint32 hash)
- 
- 
- static GVariant *
--ibus_compose_table_serialize (IBusComposeTableEx *compose_table)
-+compose_data_to_variant (gconstpointer compose_data,
-+                         gboolean is_32bit,
-+                         guint16  index_stride,
-+                         gsize    n_seqs,
-+                         gboolean reverse_endianness,
-+                         GError **error)
-+{
-+    guint16 *compose_data16 = NULL;
-+    guint32 *compose_data32 = NULL;
-+    guint16 *target_data16 = NULL;
-+    guint32 *target_data32 = NULL;
-+    gsize i, length;
-+    GVariant *variant_data = NULL;
-+
-+    g_assert (compose_data);
-+    if (error)
-+        *error = NULL;
-+    if ((index_stride * n_seqs) > G_MAXUINT64) {
-+        if (error) {
-+            g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED,
-+                         "Length %u x %lu is too long",
-+                         index_stride, n_seqs);
-+        }
-+        return NULL;
-+    }
-+    length = index_stride * n_seqs;
-+
-+    if (reverse_endianness) {
-+        if (is_32bit) {
-+            if (!(target_data32 = g_new0 (guint32, length))) {
-+                g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED,
-+                             "Failed to malloc");
-+                return NULL;
-+            }
-+            compose_data32 = (guint32*)compose_data;
-+            for (i = 0; i < length; i++)
-+                target_data32[i] = GUINT32_SWAP_LE_BE (compose_data32[i]);
-+        } else {
-+            if (!(target_data16 = g_new0 (guint16, length))) {
-+                g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED,
-+                             "Failed to malloc");
-+                return NULL;
-+            }
-+            compose_data16 = (guint16*)compose_data;
-+            for (i = 0; i < length; i++)
-+                target_data16[i] = GUINT16_SWAP_LE_BE (compose_data16[i]);
-+        }
-+    } else {
-+        if (is_32bit)
-+            target_data32 = (guint32*)compose_data;
-+        else
-+            target_data16 = (guint16*)compose_data;
-+    }
-+
-+    if (is_32bit) {
-+        variant_data = g_variant_new_fixed_array (G_VARIANT_TYPE_UINT32,
-+                                                  target_data32,
-+                                                  length,
-+                                                  sizeof (guint32));
-+    } else {
-+        variant_data = g_variant_new_fixed_array (G_VARIANT_TYPE_UINT16,
-+                                                  target_data16,
-+                                                  length,
-+                                                  sizeof (guint16));
-+    }
-+    if (reverse_endianness) {
-+        g_free (target_data16);
-+        g_free (target_data32);
-+    }
-+    if (!variant_data) {
-+        g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED,
-+                     "Could not change compose data to GVariant.");
-+        return NULL;
-+    }
-+    return variant_data;
-+}
-+
-+
-+GVariant *
-+ibus_compose_table_serialize (IBusComposeTableEx *compose_table,
-+                              gboolean            reverse_endianness)
- {
-     const char *header = IBUS_COMPOSE_TABLE_MAGIC;
-     const guint16 version = IBUS_COMPOSE_TABLE_VERSION;
-     guint16 max_seq_len;
-     guint16 index_stride;
-     guint16 n_seqs;
--    guint16 n_seqs_32bit = 0;
--    guint16 second_size = 0;
-+    gsize n_seqs_32bit = 0;
-+    gsize second_size = 0;
-     GVariant *variant_data = NULL;
-     GVariant *variant_data_32bit_first = NULL;
-     GVariant *variant_data_32bit_second = NULL;
-     GVariant *variant_table;
-+    GError *error = NULL;
- 
-     g_return_val_if_fail (compose_table != NULL, NULL);
- 
-@@ -741,13 +831,18 @@ ibus_compose_table_serialize (IBusComposeTableEx *compose_table)
- 
-     if (n_seqs) {
-         g_return_val_if_fail (compose_table->data, NULL);
--
--        variant_data = g_variant_new_fixed_array (G_VARIANT_TYPE_UINT16,
--                                                  compose_table->data,
--                                                  (gsize)index_stride * n_seqs,
--                                                  sizeof (guint16));
-+        variant_data = compose_data_to_variant (compose_table->data,
-+                                                FALSE,
-+                                                index_stride,
-+                                                n_seqs,
-+                                                reverse_endianness,
-+                                                &error);
-         if (!variant_data) {
--            g_warning ("Could not change compose data to GVariant.");
-+            g_warning (
-+                    "Failed to generate variant from 16bit compose ID %u: %s",
-+                    compose_table->id,
-+                    error->message);
-+            g_error_free (error);
-             return NULL;
-         }
-     } else {
-@@ -782,18 +877,34 @@ ibus_compose_table_serialize (IBusComposeTableEx *compose_table)
-             g_warning ("data_second is NULL");
-             goto out_serialize;
-         }
--        variant_data_32bit_first = g_variant_new_fixed_array (
--                G_VARIANT_TYPE_UINT16,
--                compose_table->priv->data_first,
--                (gsize)index_stride * n_seqs_32bit,
--                sizeof (guint16));
--        variant_data_32bit_second = g_variant_new_fixed_array (
--                G_VARIANT_TYPE_UINT32,
--                compose_table->priv->data_second,
--                compose_table->priv->second_size,
--                sizeof (guint32));
--        if (!variant_data_32bit_first || !variant_data_32bit_second) {
--            g_warning ("Could not change 32bit compose data to GVariant.");
-+        variant_data_32bit_first =
-+                compose_data_to_variant (compose_table->priv->data_first,
-+                                         FALSE,
-+                                         index_stride,
-+                                         n_seqs_32bit,
-+                                         reverse_endianness,
-+                                         &error);
-+        if (!variant_data_32bit_first) {
-+            g_warning (
-+                    "Failed to generate variant from compose first ID %u: %s",
-+                    compose_table->id,
-+                    error->message);
-+            g_error_free (error);
-+            goto out_serialize;
-+        }
-+        variant_data_32bit_second =
-+                compose_data_to_variant (compose_table->priv->data_second,
-+                                         TRUE,
-+                                         1,
-+                                         compose_table->priv->second_size,
-+                                         reverse_endianness,
-+                                         &error);
-+        if (!variant_data_32bit_second) {
-+            g_warning (
-+                    "Failed to generate variant from compose second ID %u: %s",
-+                    compose_table->id,
-+                    error->message);
-+            g_error_free (error);
-             goto out_serialize;
-         }
-     } else {
-@@ -840,9 +951,10 @@ ibus_compose_table_find (gconstpointer data1,
- }
- 
- 
--static IBusComposeTableEx *
-+IBusComposeTableEx *
- ibus_compose_table_deserialize (const char *contents,
--                                gsize       length)
-+                                gsize       length,
-+                                gboolean    reverse_endianness)
- {
-     IBusComposeTableEx *retval = NULL;
-     GVariantType *type;
-@@ -857,9 +969,9 @@ ibus_compose_table_deserialize (const char *contents,
-     guint16 n_seqs_32bit = 0;
-     guint16 second_size = 0;
-     guint16 index_stride;
--    gconstpointer data = NULL;
--    gconstpointer data_32bit_first = NULL;
--    gconstpointer data_32bit_second = NULL;
-+    const guint16 *data = NULL;
-+    const guint16 *data_32bit_first = NULL;
-+    const guint32 *data_32bit_second = NULL;
-     gsize data_length = 0;
- 
-     g_return_val_if_fail (contents != NULL, NULL);
-@@ -932,9 +1044,9 @@ ibus_compose_table_deserialize (const char *contents,
-     }
- 
-     if (n_seqs && variant_data) {
--        data = g_variant_get_fixed_array (variant_data,
--                                          &data_length,
--                                          sizeof (guint16));
-+        data = (const guint16*)g_variant_get_fixed_array (variant_data,
-+                                                          &data_length,
-+                                                          sizeof (guint16));
-     }
-     index_stride = max_seq_len + 2;
- 
-@@ -945,10 +1057,8 @@ ibus_compose_table_deserialize (const char *contents,
-     }
- 
-     retval = g_new0 (IBusComposeTableEx, 1);
--    if (data_length) {
--        retval->data = g_new (guint16, data_length);
--        memcpy (retval->data, data, data_length * sizeof (guint16));
--    }
-+    if (data_length)
-+        retval->data = data;
-     retval->max_seq_len = max_seq_len;
-     retval->n_seqs = n_seqs;
- 
-@@ -965,9 +1075,10 @@ ibus_compose_table_deserialize (const char *contents,
- 
-     data_length = 0;
-     if (n_seqs_32bit && variant_data_32bit_first) {
--        data_32bit_first = g_variant_get_fixed_array (variant_data_32bit_first,
--                                                      &data_length,
--                                                      sizeof (guint16));
-+        data_32bit_first = (const guint16*)g_variant_get_fixed_array (
-+                variant_data_32bit_first,
-+                &data_length,
-+                sizeof (guint16));
-         if (data_length != (gsize) index_stride * n_seqs_32bit) {
-             g_warning ("32bit cache size is not correct %d %d %lu",
-                        max_seq_len, n_seqs_32bit, data_length);
-@@ -983,15 +1094,14 @@ ibus_compose_table_deserialize (const char *contents,
-             g_warning ("Failed g_new");
-             goto out_load_cache;
-         }
--        retval->priv->data_first = g_new (guint16, data_length);
--        memcpy (retval->priv->data_first,
--                data_32bit_first, data_length * sizeof (guint16));
-+        /* Do not memcpy for the possible mmap data */
-+        retval->priv->data_first = data_32bit_first;
-         retval->priv->first_n_seqs = n_seqs_32bit;
-     }
- 
-     data_length = 0;
-     if (second_size && variant_data_32bit_second) {
--        data_32bit_second = g_variant_get_fixed_array (
-+        data_32bit_second = (const guint32*)g_variant_get_fixed_array (
-                 variant_data_32bit_second,
-                 &data_length,
-                 sizeof (guint32));
-@@ -1002,14 +1112,9 @@ ibus_compose_table_deserialize (const char *contents,
-         }
-     }
-     if (data_length) {
--        if ((retval->priv->data_second = g_new (guint32, data_length))) {
--            memcpy (retval->priv->data_second,
--                    data_32bit_second, data_length * sizeof (guint32));
--            retval->priv->second_size = second_size;
--        } else {
--            g_warning ("Failed g_new");
--            retval->priv->second_size = 0;
--        }
-+        /* Do not memcpy for the possible mmap data */
-+        retval->priv->data_second = data_32bit_second;
-+        retval->priv->second_size = second_size;
-     }
- 
- 
-@@ -1058,14 +1163,15 @@ ibus_compose_table_load_cache (const gchar *compose_file)
-             break;
-         }
- 
--        retval = ibus_compose_table_deserialize (contents, length);
--        if (retval == NULL)
-+        retval = ibus_compose_table_deserialize (contents, length, FALSE);
-+        if (retval == NULL) {
-             g_warning ("Failed to load the cache file: %s", path);
--        else
-+        } else {
-+            retval->rawdata = contents;
-             retval->id = hash;
-+        }
-     } while (0);
- 
--    g_free (contents);
-     g_free (path);
-     return retval;
- }
-@@ -1083,7 +1189,7 @@ ibus_compose_table_save_cache (IBusComposeTableEx *compose_table)
-     if ((path = ibus_compose_hash_get_cache_path (compose_table->id)) == NULL)
-       return;
- 
--    variant_table = ibus_compose_table_serialize (compose_table);
-+    variant_table = ibus_compose_table_serialize (compose_table, FALSE);
-     if (variant_table == NULL) {
-         g_warning ("Failed to serialize compose table %s", path);
-         goto out_save_cache;
-@@ -1148,6 +1254,7 @@ ibus_compose_table_new_with_list (GList   *compose_list,
-     gsize s_size_total, s_size_16bit, v_size_32bit, v_index_32bit;
-     guint n = 0, m = 0;
-     int i, j;
-+    gpointer rawdata;
-     guint16 *ibus_compose_seqs = NULL;
-     guint16 *ibus_compose_seqs_32bit_first = NULL;
-     guint32 *ibus_compose_seqs_32bit_second = NULL;
-@@ -1171,22 +1278,53 @@ ibus_compose_table_new_with_list (GList   *compose_list,
-     }
- 
-     if (s_size_16bit) {
--        ibus_compose_seqs = g_new (guint16, s_size_16bit * n_index_stride);
--        if (!ibus_compose_seqs) {
-+        if (G_UNLIKELY ((s_size_16bit * n_index_stride) >
-+                        (G_MAXSIZE / sizeof (guint16)))) {
-+            g_warning ("Too long allocation %lu x %u",
-+                       s_size_16bit, n_index_stride);
-+            return NULL;
-+        }
-+        rawdata = (gpointer)g_new (guint16, s_size_16bit * n_index_stride);
-+        if (G_UNLIKELY (!rawdata)) {
-             g_warning ("Failed g_new");
-             return NULL;
-         }
-+        ibus_compose_seqs = (guint16*)rawdata;
-     }
-     if (s_size_total > s_size_16bit) {
--        ibus_compose_seqs_32bit_first =
--                g_new (guint16,
--                       (s_size_total - s_size_16bit) * n_index_stride);
--        ibus_compose_seqs_32bit_second = g_new (guint32, v_size_32bit);
-+        if (G_UNLIKELY (((s_size_total - s_size_16bit) * n_index_stride) >
-+                        (G_MAXSIZE / sizeof (guint16)))) {
-+            g_warning ("Too long allocation %lu x %u",
-+                       s_size_total - s_size_16bit, n_index_stride);
-+            return NULL;
-+        }
-+        rawdata = (gpointer)g_new (
-+                guint16,
-+                (s_size_total - s_size_16bit) * n_index_stride);
-+        if (G_UNLIKELY ((sizeof (guint16) * (s_size_total - s_size_16bit)
-+                        * n_index_stride) / sizeof (guint32) + v_size_32bit 
-+                        > (G_MAXSIZE / sizeof (guint32)))) {
-+            g_warning ("Too long allocation %lu x %u x %lu",
-+                       s_size_total - s_size_16bit,
-+                       n_index_stride,
-+                       v_size_32bit);
-+            return NULL;
-+        }
-+        if (G_LIKELY (rawdata)) {
-+            rawdata = g_realloc (
-+                    rawdata,
-+                    sizeof (guint16) * (s_size_total - s_size_16bit)
-+                        * n_index_stride + sizeof (guint32) * v_size_32bit);
-+        }
-+        if (G_LIKELY (rawdata)) {
-+            ibus_compose_seqs_32bit_first = (guint16*)rawdata;
-+            ibus_compose_seqs_32bit_second =
-+                    (guint32*)(rawdata + sizeof (guint16)
-+                    * (s_size_total - s_size_16bit) * n_index_stride);
-+        }
-         if (!ibus_compose_seqs_32bit_first || !ibus_compose_seqs_32bit_second) {
-             g_warning ("Failed g_new");
--            g_free (ibus_compose_seqs);
--            g_free (ibus_compose_seqs_32bit_first);
--            g_free (ibus_compose_seqs_32bit_second);
-+            g_free (rawdata);
-             return NULL;
-         }
-     }
-@@ -1247,6 +1385,7 @@ ibus_compose_table_new_with_list (GList   *compose_list,
-     retval->max_seq_len = max_compose_len;
-     retval->n_seqs = s_size_16bit;
-     retval->id = hash;
-+    retval->rawdata = rawdata;
-     if (s_size_total > s_size_16bit) {
-         retval->priv = g_new0 (IBusComposeTablePrivate, 1);
-         retval->priv->data_first = ibus_compose_seqs_32bit_first;
-@@ -1260,7 +1399,8 @@ ibus_compose_table_new_with_list (GList   *compose_list,
- 
- 
- IBusComposeTableEx *
--ibus_compose_table_new_with_file (const gchar *compose_file)
-+ibus_compose_table_new_with_file (const gchar *compose_file,
-+                                  GSList      *compose_tables)
- {
-     GList *compose_list = NULL;
-     IBusComposeTableEx *compose_table;
-@@ -1275,7 +1415,8 @@ ibus_compose_table_new_with_file (const gchar *compose_file)
-         return NULL;
-     n_index_stride = max_compose_len + 2;
-     compose_list = ibus_compose_list_check_duplicated (compose_list,
--                                                       max_compose_len);
-+                                                       max_compose_len,
-+                                                       compose_tables);
-     compose_list = g_list_sort_with_data (
-             compose_list,
-             (GCompareDataFunc) ibus_compose_data_compare,
-@@ -1370,7 +1511,8 @@ ibus_compose_table_list_add_file (GSList      *compose_tables,
-     if (compose_table != NULL)
-         return g_slist_prepend (compose_tables, compose_table);
- 
--   if ((compose_table = ibus_compose_table_new_with_file (compose_file))
-+   if ((compose_table = ibus_compose_table_new_with_file (compose_file,
-+                                                          compose_tables))
-            == NULL) {
-        return compose_tables;
-    }
-@@ -1380,6 +1522,20 @@ ibus_compose_table_list_add_file (GSList      *compose_tables,
- }
- 
- 
-+GSList *
-+ibus_compose_table_list_add_table (GSList             *compose_tables,
-+                                   IBusComposeTableEx *compose_table)
-+{
-+    g_return_val_if_fail (compose_table != NULL, compose_tables);
-+    if (g_slist_find_custom (compose_tables,
-+                             GINT_TO_POINTER (compose_table->id),
-+                             ibus_compose_table_find) != NULL) {
-+        return compose_tables;
-+    }
-+    return g_slist_prepend (compose_tables, compose_table);
-+}
-+
-+
- static int
- compare_seq (const void *key, const void *value)
- {
-@@ -1410,7 +1566,7 @@ ibus_compose_table_check (const IBusComposeTableEx *table,
-                           gboolean                  is_32bit)
- {
-     int row_stride = table->max_seq_len + 2;
--    guint16 *data_first;
-+    const guint16 *data_first;
-     int n_seqs;
-     guint16 *seq;
- 
-@@ -1508,147 +1664,6 @@ ibus_compose_table_check (const IBusComposeTableEx *table,
- }
- 
- 
--static int
--compare_seq_index (const void *key, const void *value)
--{
--    const guint16 *keysyms = key;
--    const guint16 *seq = value;
--
--    if (keysyms[0] < seq[0])
--        return -1;
--    else if (keysyms[0] > seq[0])
--        return 1;
--    return 0;
--}
--
--
--/**
-- * ibus_compose_table_compact_check:
-- * @table: A const `IBusComposeTableCompactEx`
-- * @compose_buffer: Typed compose sequence buffer
-- * @n_compose: The length of `compose_buffer`
-- * @compose_finish: If %TRUE, `output_chars` should be committed
-- * @output_chars: An array of gunichar of output compose characters
-- *
-- * output_chars is better to use gunichar instead of GString because
-- * IBusComposeData->values[] is the gunichar array.
-- */
--gboolean
--ibus_compose_table_compact_check (const IBusComposeTableCompactEx
--                                                                *table,
--                                  guint16                       *compose_buffer,
--                                  int                            n_compose,
--                                  gboolean                      *compose_finish,
--                                  gunichar                     **output_chars)
--{
--    int row_stride;
--    guint16 *seq_index;
--    guint16 *seq;
--    int i;
--
--    /* compose_finish and output_chars should not be initialized because
--     * ibus_compose_table_check() is called at first and
--     * engine->priv->tentative_match will be preedit after this is called.
--     */
--
--    /* Will never match, if the sequence in the compose buffer is longer
--     * than the sequences in the table.  Further, compare_seq (key, val)
--     * will overrun val if key is longer than val. */
--    if (n_compose > table->max_seq_len)
--        return FALSE;
--
--    seq_index = bsearch (compose_buffer,
--                         table->data,
--                         table->n_index_size,
--                         sizeof (guint16) *  table->n_index_stride,
--                         compare_seq_index);
--
--    if (seq_index == NULL)
--        return FALSE;
--
--    if (n_compose == 1)
--        return TRUE;
--
--    seq = NULL;
--
--    if (table->priv) {
--        for (i = n_compose - 1; i < table->max_seq_len; i++) {
--            row_stride = i + 2;
--
--            if (seq_index[i + 1] - seq_index[i] > 0) {
--                g_assert (row_stride);
--                seq = bsearch (compose_buffer + 1,
--                               table->data + seq_index[i],
--                               (seq_index[i + 1] - seq_index[i]) / row_stride,
--                               sizeof (guint16) * row_stride,
--                               compare_seq);
--                if (seq) {
--                    if (i == n_compose - 1)
--                        break;
--                    else
--                        return TRUE;
--                }
--            }
--        }
--        if (!seq) {
--            return FALSE;
--        } else {
--            int index = seq[row_stride - 2];
--            int length = seq[row_stride - 1];
--            int j;
--            if (compose_finish)
--                *compose_finish = TRUE;
--            if (output_chars) {
--                if (!(*output_chars))
--                    *output_chars = g_new (gunichar, length + 1);
--                for (j = 0; j < length; j++) {
--                    (*output_chars)[j] = table->priv->data2[index + j];
--                }
--                (*output_chars)[length] = 0;
--            }
--
--            return TRUE;
--        }
--    } else {
--        for (i = n_compose - 1; i < table->max_seq_len; i++) {
--            row_stride = i + 1;
--
--            if (seq_index[i + 1] - seq_index[i] > 0) {
--                g_assert (row_stride);
--                seq = bsearch (compose_buffer + 1,
--                               table->data + seq_index[i],
--                               (seq_index[i + 1] - seq_index[i]) / row_stride,
--                               sizeof (guint16) * row_stride,
--                               compare_seq);
--
--                if (seq) {
--                    if (i == n_compose - 1)
--                        break;
--                    else
--                        return TRUE;
--                }
--            }
--        }
--        if (!seq) {
--            return FALSE;
--        } else {
--            if (compose_finish)
--                *compose_finish = TRUE;
--            if (output_chars) {
--                if (!(*output_chars))
--                    *output_chars = g_new (gunichar, 2);
--                (*output_chars)[0] = seq[row_stride - 1];
--                (*output_chars)[1] = 0;
--            }
--
--            return TRUE;
--        }
--    }
--
--    g_assert_not_reached ();
--}
--
--
- /* This function receives a sequence of Unicode characters and tries to
-  * normalize it (NFC). We check for the case the the resulting string
-  * has length 1 (single character).
-diff --git a/src/ibuscomposetable.h b/src/ibuscomposetable.h
-index b60e53fe..be1463ae 100644
---- a/src/ibuscomposetable.h
-+++ b/src/ibuscomposetable.h
-@@ -2,7 +2,7 @@
- /* vim:set et sts=4: */
- /* ibus - The Input Bus
-  * Copyright (C) 2013-2014 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2013-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2013-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-  *
-  * This library is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU Lesser General Public
-@@ -46,31 +46,18 @@ struct _IBusComposeTable
- struct _IBusComposeTableEx
- {
-     IBusComposeTablePrivate *priv;
--    guint16 *data;
-+    const guint16 *data;
-     gint max_seq_len;
-     gint n_seqs;
-     guint32 id;
-+    char *rawdata;
- };
- 
--struct _IBusComposeTableCompact
--{
--    const guint16 *data;
--    gint max_seq_len;
--    gint n_index_size;
--    gint n_index_stride;
--};
--
--struct _IBusComposeTableCompactEx
--{
--    IBusComposeTableCompactPrivate *priv;
--    const guint16 *data;
--    gint max_seq_len;
--    gint n_index_size;
--    gint n_index_stride;
--};
- 
- IBusComposeTableEx *
--                  ibus_compose_table_new_with_file (const gchar *compose_file);
-+                  ibus_compose_table_new_with_file (const gchar *compose_file,
-+                                                    GSList
-+                                                               *compose_tables);
- IBusComposeTableEx *
-                   ibus_compose_table_load_cache    (const gchar *compose_file);
- void              ibus_compose_table_save_cache    (IBusComposeTableEx
-@@ -85,6 +72,10 @@ GSList *          ibus_compose_table_list_add_array
- GSList *          ibus_compose_table_list_add_file (GSList
-                                                                 *compose_tables,
-                                                     const gchar *compose_file);
-+GSList *          ibus_compose_table_list_add_table (GSList
-+                                                                *compose_tables,
-+                                                     IBusComposeTableEx
-+                                                                *compose_table);
- 
- G_BEGIN_DECLS
- #endif
-diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c
-index c57a3ea5..3d1668b2 100644
---- a/src/ibusenginesimple.c
-+++ b/src/ibusenginesimple.c
-@@ -2,7 +2,7 @@
- /* vim:set et sts=4: */
- /* ibus - The Input Bus
-  * Copyright (C) 2014 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2015-2022 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2015-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-  * Copyright (C) 2014-2017 Red Hat, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -34,12 +34,6 @@
- #include "ibuskeysyms.h"
- #include "ibusutil.h"
- 
--/* This file contains the table of the compose sequences,
-- * static const guint16 gtk_compose_seqs_compact[] = {}
-- * It is generated from the compose-parse.py script.
-- */
--#include "gtkimcontextsimpleseqs.h"
--
- #include <memory.h>
- #include <stdlib.h>
- 
-@@ -92,33 +86,6 @@ struct _IBusEngineSimplePrivate {
-     gboolean            lookup_table_visible;
- };
- 
--/* From the values below, the value 30 means the number of different first keysyms
-- * that exist in the Compose file (from Xorg). When running compose-parse.py without
-- * parameters, you get the count that you can put here. Needed when updating the
-- * gtkimcontextsimpleseqs.h header file (contains the compose sequences).
-- * Assign the value of "Number of different first items" of compose-parse.py
-- * to n_seqs in IBusComposeTableCompact
-- */
--IBusComposeTableCompactPrivate ibus_compose_table_compact_32bit_priv = {
--    gtk_compose_seqs_compact_32bit_second
--};
--
--const IBusComposeTableCompactEx ibus_compose_table_compact = {
--    NULL,
--    gtk_compose_seqs_compact,
--    5,
--    30,
--    6
--};
--
--const IBusComposeTableCompactEx ibus_compose_table_compact_32bit = {
--    &ibus_compose_table_compact_32bit_priv,
--    gtk_compose_seqs_compact_32bit_first,
--    5,
--    9,
--    6
--};
--
- guint COMPOSE_BUFFER_SIZE = 20;
- G_LOCK_DEFINE_STATIC (global_tables);
- static GSList *global_tables;
-@@ -174,6 +141,12 @@ ibus_engine_simple_class_init (IBusEngineSimpleClass *class)
- static void
- ibus_engine_simple_init (IBusEngineSimple *simple)
- {
-+    GBytes *data;
-+    GError *error = NULL;
-+    const char *contents;
-+    gsize length = 0;
-+    IBusComposeTableEx *en_compose_table;
-+
-     simple->priv = IBUS_ENGINE_SIMPLE_GET_PRIVATE (simple);
-     simple->priv->compose_buffer = g_new0(guint16, COMPOSE_BUFFER_SIZE + 1);
-     simple->priv->hex_mode_enabled =
-@@ -181,6 +154,22 @@ ibus_engine_simple_init (IBusEngineSimple *simple)
-         g_getenv("IBUS_ENABLE_CONTROL_SHIFT_U") != NULL;
-     simple->priv->tentative_match = g_string_new ("");
-     simple->priv->tentative_match_len = 0;
-+    data = g_resources_lookup_data ("/org/freedesktop/ibus/compose/sequences",
-+                                    G_RESOURCE_LOOKUP_FLAGS_NONE,
-+                                    &error);
-+    if (error) {
-+        g_warning ("Nout found compose resource %s", error->message);
-+        g_clear_error (&error);
-+        return;
-+    }
-+    contents = g_bytes_get_data (data, &length);
-+    en_compose_table = ibus_compose_table_deserialize (contents, length, FALSE);
-+    if (!en_compose_table) {
-+        g_warning ("Failed to load EN compose table");
-+    } else {
-+        global_tables = ibus_compose_table_list_add_table (global_tables,
-+                                                           en_compose_table);
-+    }
- }
- 
- 
-@@ -785,7 +774,6 @@ ibus_engine_simple_check_all_compose_table (IBusEngineSimple *simple,
-     GString *output = g_string_new ("");
-     gboolean success = FALSE;
-     gboolean is_32bit = FALSE;
--    gunichar *output_chars = NULL;
-     gunichar output_char = '\0';
- 
-     /* GtkIMContextSimple output the first compose char in case of
-@@ -850,57 +838,6 @@ ibus_engine_simple_check_all_compose_table (IBusEngineSimple *simple,
-     g_string_free (output, TRUE);
-     output = NULL;
- 
--    if (ibus_compose_table_compact_check (&ibus_compose_table_compact,
--                                          priv->compose_buffer,
--                                          n_compose,
--                                          &compose_finish,
--                                          &output_chars)) {
--        priv->in_compose_sequence = TRUE;
--        if (compose_finish) {
--            if (success) {
--                g_string_append_unichar (priv->tentative_match, *output_chars);
--                priv->tentative_match_len = n_compose;
--            } else {
--                ibus_engine_simple_commit_char (simple, *output_chars);
--                priv->compose_buffer[0] = 0;
--            }
--            g_free (output_chars);
--            ibus_engine_simple_update_preedit_text (simple);
--            return TRUE;
--        }
--        success = TRUE;
--    }
--    g_free (output_chars);
--    output_chars = NULL;
--    if (ibus_compose_table_compact_check (&ibus_compose_table_compact_32bit,
--                                          priv->compose_buffer,
--                                          n_compose,
--                                          &compose_finish,
--                                          &output_chars)) {
--        priv->in_compose_sequence = TRUE;
--        if (compose_finish) {
--            GError *error = NULL;
--            char *str = g_ucs4_to_utf8 (output_chars, -1, NULL, NULL, &error);
--            if (!str) {
--                g_warning ("Failed to output multiple characters: %s",
--                           error->message);
--                g_error_free (error);
--            } else if (success) {
--                g_string_append (priv->tentative_match, str);
--                priv->tentative_match_len = n_compose;
--            } else {
--                ibus_engine_simple_commit_str (simple, str);
--                priv->compose_buffer[0] = 0;
--            }
--            g_free (str);
--            g_free (output_chars);
--            ibus_engine_simple_update_preedit_text (simple);
--            return TRUE;
--        }
--        success = TRUE;
--    }
--    g_free (output_chars);
--    output_chars = NULL;
-     if (ibus_check_algorithmically (priv->compose_buffer,
-                                     n_compose,
-                                     &output_char)) {
-diff --git a/src/ibusenginesimpleprivate.h b/src/ibusenginesimpleprivate.h
-index ad93d2d2..41269464 100644
---- a/src/ibusenginesimpleprivate.h
-+++ b/src/ibusenginesimpleprivate.h
-@@ -1,7 +1,7 @@
- /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
- /* vim:set et sts=4: */
- /* ibus - The Input Bus
-- * Copyright (C) 2016-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2016-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-  * Copyright (C) 2016 Red Hat, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -32,25 +32,29 @@ G_BEGIN_DECLS
- #define IS_DEAD_KEY(k) \
-       ((k) >= IBUS_KEY_dead_grave && (k) <= IBUS_KEY_dead_greek)
- 
--extern const IBusComposeTableCompactEx ibus_compose_table_compact;
--extern const IBusComposeTableCompactEx ibus_compose_table_compact_32bit;
- 
- struct _IBusComposeTablePrivate
- {
--    guint16 *data_first;
--    guint32 *data_second;
-+    const guint16 *data_first;
-+    const guint32 *data_second;
-     gsize first_n_seqs;
-     gsize second_size;
- };
- 
--struct _IBusComposeTableCompactPrivate
--{
--    const guint32 *data2;
--};
- 
- gboolean ibus_check_algorithmically (const guint16              *compose_buffer,
-                                      int                         n_compose,
-                                      gunichar                   *output);
-+GVariant *
-+         ibus_compose_table_serialize
-+                                    (IBusComposeTableEx
-+                                                                *compose_table,
-+                                     gboolean                   reverse_endian);
-+IBusComposeTableEx *
-+         ibus_compose_table_deserialize
-+                                    (const char                 *contents,
-+                                     gsize                       length,
-+                                     gboolean                   reverse_endian);
- gboolean ibus_compose_table_check   (const IBusComposeTableEx   *table,
-                                      guint16                    *compose_buffer,
-                                      int                         n_compose,
-@@ -58,13 +62,6 @@ gboolean ibus_compose_table_check   (const IBusComposeTableEx   *table,
-                                      gboolean                   *compose_match,
-                                      GString                    *output,
-                                      gboolean                    is_32bit);
--gboolean ibus_compose_table_compact_check
--                                    (const IBusComposeTableCompactEx
--                                                                *table,
--                                     guint16                    *compose_buffer,
--                                     int                         n_compose,
--                                     gboolean                   *compose_finish,
--                                     gunichar                  **output_chars);
- gunichar ibus_keysym_to_unicode     (guint16                     keysym,
-                                      gboolean                    combining,
-                                      gboolean                   *need_space);
-diff --git a/src/ibusshare.c b/src/ibusshare.c
-index 0c0bda10..340168c8 100644
---- a/src/ibusshare.c
-+++ b/src/ibusshare.c
-@@ -2,7 +2,7 @@
- /* vim:set et sts=4: */
- /* ibus - The Input Bus
-  * Copyright (C) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2015-2021 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2015-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-  * Copyright (C) 2008-2018 Red Hat, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -24,6 +24,7 @@
- #include <config.h>
- #endif
- 
-+#include "ibusresources.h"
- #include "ibusshare.h"
- #include <glib.h>
- #include <glib/gstdio.h>
-@@ -313,6 +314,7 @@ ibus_init (void)
-     IBUS_TYPE_OBSERVED_PATH;
-     IBUS_TYPE_REGISTRY;
-     IBUS_TYPE_X_EVENT;
-+    _ibus_register_resource ();
- }
- 
- static GMainLoop *main_loop = NULL;
--- 
-2.38.1
-
-From d190bc32fe0fe780b66100e5461326973ac7a804 Mon Sep 17 00:00:00 2001
-From: Eberhard Beilharz <eb1@sil.org>
-Date: Thu, 12 Jan 2023 22:24:42 +0900
-Subject: [PATCH 1/3] configure: Fix texts for surrounding text
-
-The options and corresponding texts for surrounding-text were mixed
-up. This change makes them consistent with the text for other
-options.
-
-BUG=https://github.com/ibus/ibus/pull/2438
----
- configure.ac | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index a84c7130..cba242df 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -633,14 +633,13 @@ AC_SUBST(IBUS_ICON_KEYBOARD)
- # --disable-surrounding-text option.
- AC_ARG_ENABLE(surrounding-text,
-     AS_HELP_STRING([--disable-surrounding-text],
--        [Enable surrounding-text support]),
-+        [Disable surrounding-text support]),
-     [enable_surrounding_text=$enableval],
-     [enable_surrounding_text=yes]
- )
- if test x"$enable_surrounding_text" = x"yes"; then
-     AC_DEFINE(ENABLE_SURROUNDING, TRUE, [Enable surrounding-text support])
--else
--    enable_surrounding_text="no (disabled, use --enable-surrounding-text to enable)"
-+    enable_surrounding_text="yes (enabled, use --disable-surrounding-text to disable)"
- fi
- 
- # --disable-ui
--- 
-2.38.1
-
-From bd24be4582f67e278fc85e843d39b81629bf7d9b Mon Sep 17 00:00:00 2001
-From: Philippe Rouquier <bonfire-app@wanadoo.fr>
-Date: Mon, 23 Jan 2023 21:04:51 +0900
-Subject: [PATCH 2/3] Add active-surrounding-text property to IBusEngine
-
-When this property is set to TRUE, ibus daemon will update
-surrounding text on every focus(in/out) event which makes
-ibus_engine_get_surrounding_text() calls from an engine
-code unnecessary.
-This property must be set at construct time.
-
-BUG=https://github.com/ibus/ibus/pull/2447
----
- bus/engineproxy.c | 114 ++++++++++++++++++++++++++++++++++++++--------
- bus/ibusimpl.c    |  16 +++++++
- bus/ibusimpl.h    |   9 ++++
- src/ibusengine.c  |  47 ++++++++++++++++++-
- 4 files changed, 167 insertions(+), 19 deletions(-)
-
-diff --git a/bus/engineproxy.c b/bus/engineproxy.c
-index fd1f34fb..b3e16066 100644
---- a/bus/engineproxy.c
-+++ b/bus/engineproxy.c
-@@ -60,6 +60,7 @@ struct _BusEngineProxy {
-     /* cached properties */
-     IBusPropList *prop_list;
-     gboolean has_focus_id;
-+    gboolean has_active_surrounding_text;
- };
- 
- struct _BusEngineProxyClass {
-@@ -130,6 +131,8 @@ static void     bus_engine_proxy_initable_iface_init
-                                                                *initable_iface);
- static void     bus_engine_proxy_get_has_focus_id
-                                                 (BusEngineProxy    *engine);
-+static void     bus_engine_proxy_get_active_surrounding_text
-+                                                (BusEngineProxy    *engine);
- 
- G_DEFINE_TYPE_WITH_CODE (BusEngineProxy, bus_engine_proxy, IBUS_TYPE_PROXY,
-                          G_IMPLEMENT_INTERFACE (
-@@ -699,7 +702,6 @@ bus_engine_proxy_new_internal (const gchar     *path,
-     BusEngineProxy *engine;
-     BusIBusImpl *ibus = BUS_DEFAULT_IBUS;
-     GHashTable *hash_table = NULL;
--    EngineFocusCategory category = ENGINE_FOCUS_CATEGORY_NONE;
- 
-     g_assert (path);
-     g_assert (IBUS_IS_ENGINE_DESC (desc));
-@@ -721,9 +723,12 @@ bus_engine_proxy_new_internal (const gchar     *path,
-     if (layout != NULL && layout[0] != '\0') {
-         engine->keymap = ibus_keymap_get (layout);
-     }
--    if (ibus)
--        hash_table = bus_ibus_impl_get_engine_focus_id_table (ibus);
-+
-+    g_return_val_if_fail (ibus, engine);
-+
-+    hash_table = bus_ibus_impl_get_engine_focus_id_table (ibus);
-     if (hash_table) {
-+        EngineFocusCategory category;
-         category = (EngineFocusCategory)GPOINTER_TO_INT (
-                 g_hash_table_lookup (hash_table,
-                                      ibus_engine_desc_get_name (desc)));
-@@ -734,6 +739,21 @@ bus_engine_proxy_new_internal (const gchar     *path,
-         else
-             bus_engine_proxy_get_has_focus_id (engine);
-     }
-+
-+    hash_table = bus_ibus_impl_get_engine_active_surrounding_text_table (ibus);
-+    if (hash_table) {
-+        EngineSurroundingTextCategory category;
-+        category = (EngineSurroundingTextCategory)GPOINTER_TO_INT (
-+                g_hash_table_lookup (hash_table,
-+                                     ibus_engine_desc_get_name (desc)));
-+        if (category == ENGINE_SURROUNDING_TEXT_CATEGORY_HAS_ACTIVE)
-+            engine->has_active_surrounding_text = TRUE;
-+        else if (category == ENGINE_SURROUNDING_TEXT_CATEGORY_NOT_ACTIVE)
-+            engine->has_active_surrounding_text = FALSE;
-+        else
-+            bus_engine_proxy_get_active_surrounding_text (engine);
-+    }
-+
-     return engine;
- }
- 
-@@ -1263,6 +1283,26 @@ bus_engine_proxy_set_content_type (BusEngineProxy *engine,
-     g_variant_unref (content_type);
- }
- 
-+static void
-+bus_engine_proxy_get_engine_property (BusEngineProxy     *engine,
-+                                      const gchar        *prop_name,
-+                                      GAsyncReadyCallback callback,
-+                                      GHashTable         *hash_table)
-+{
-+    g_assert (BUS_IS_ENGINE_PROXY (engine));
-+    g_assert (hash_table);
-+    g_dbus_proxy_call ((GDBusProxy *) engine,
-+                       "org.freedesktop.DBus.Properties.Get",
-+                       g_variant_new ("(ss)",
-+                                      IBUS_INTERFACE_ENGINE,
-+                                      prop_name),
-+                       G_DBUS_CALL_FLAGS_NONE,
-+                       -1,
-+                       NULL,
-+                       callback,
-+                       g_hash_table_ref (hash_table));
-+}
-+
- static void
- _get_has_focus_id_cb (GObject        *object,
-                       GAsyncResult   *res,
-@@ -1299,23 +1339,57 @@ static void
- bus_engine_proxy_get_has_focus_id (BusEngineProxy *engine)
- {
-     BusIBusImpl *ibus = BUS_DEFAULT_IBUS;
--    GHashTable *hash_table;
--
--    g_assert (BUS_IS_ENGINE_PROXY (engine));
-     g_assert (ibus);
-+    bus_engine_proxy_get_engine_property (
-+            engine,
-+            "FocusId",
-+            _get_has_focus_id_cb,
-+            bus_ibus_impl_get_engine_focus_id_table (ibus));
-+}
- 
--    hash_table = bus_ibus_impl_get_engine_focus_id_table (ibus);
--    g_assert (hash_table);
--    g_dbus_proxy_call ((GDBusProxy *) engine,
--                       "org.freedesktop.DBus.Properties.Get",
--                       g_variant_new ("(ss)",
--                                      IBUS_INTERFACE_ENGINE,
--                                      "FocusId"),
--                       G_DBUS_CALL_FLAGS_NONE,
--                       -1,
--                       NULL,
--                       _get_has_focus_id_cb,
--                       g_hash_table_ref (hash_table));
-+static void
-+_get_active_surrounding_text_cb (GObject        *object,
-+                                 GAsyncResult   *res,
-+                                 gpointer        user_data)
-+{
-+    GHashTable *hash_table = (GHashTable*)user_data;
-+    BusEngineProxy *engine;
-+    GError *error = NULL;
-+    GVariant *result;
-+
-+    g_return_if_fail (BUS_IS_ENGINE_PROXY (object));
-+    engine = BUS_ENGINE_PROXY (object);
-+    result = g_dbus_proxy_call_finish (G_DBUS_PROXY (object), res, &error);
-+
-+    if (result != NULL) {
-+        GVariant *variant = NULL;
-+        gpointer value;
-+        g_variant_get (result, "(v)", &variant);
-+        engine->has_active_surrounding_text = g_variant_get_boolean (variant);
-+        g_variant_unref (variant);
-+        g_variant_unref (result);
-+        value =  GINT_TO_POINTER (
-+                engine->has_active_surrounding_text
-+                ? ENGINE_SURROUNDING_TEXT_CATEGORY_HAS_ACTIVE
-+                : ENGINE_SURROUNDING_TEXT_CATEGORY_NOT_ACTIVE);
-+        g_hash_table_replace (
-+            hash_table,
-+            (gpointer)ibus_engine_desc_get_name (engine->desc),
-+            value);
-+    }
-+    g_hash_table_unref (hash_table);
-+}
-+
-+static void
-+bus_engine_proxy_get_active_surrounding_text (BusEngineProxy *engine)
-+{
-+    BusIBusImpl *ibus = BUS_DEFAULT_IBUS;
-+    g_assert (ibus);
-+    bus_engine_proxy_get_engine_property (
-+            engine,
-+            "ActiveSurroundingText",
-+            _get_active_surrounding_text_cb,
-+            bus_ibus_impl_get_engine_active_surrounding_text_table (ibus));
- }
- 
- /* a macro to generate a function to call a nullary D-Bus method. */
-@@ -1348,6 +1422,8 @@ bus_engine_proxy_focus_in (BusEngineProxy *engine,
-     if (engine->has_focus)
-         return;
-     engine->has_focus = TRUE;
-+    if (engine->has_active_surrounding_text)
-+        g_signal_emit (engine, engine_signals[REQUIRE_SURROUNDING_TEXT], 0);
-     if (engine->has_focus_id) {
-         g_dbus_proxy_call ((GDBusProxy *)engine,
-                            "FocusInId",
-@@ -1404,6 +1480,8 @@ bus_engine_proxy_enable (BusEngineProxy *engine)
-     g_assert (BUS_IS_ENGINE_PROXY (engine));
-     if (!engine->enabled) {
-         engine->enabled = TRUE;
-+        if (engine->has_active_surrounding_text)
-+            g_signal_emit (engine, engine_signals[REQUIRE_SURROUNDING_TEXT], 0);
-         g_dbus_proxy_call ((GDBusProxy *)engine,
-                            "Enable",
-                            NULL,
-diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
-index 8a443545..6df86c3f 100644
---- a/bus/ibusimpl.c
-+++ b/bus/ibusimpl.c
-@@ -73,6 +73,7 @@ struct _BusIBusImpl {
-     GHashTable *engine_table;
- 
-     GHashTable *engine_focus_id_table;
-+    GHashTable *engine_active_surrounding_text_table;
- 
-     BusInputContext *focused_context;
-     BusPanelProxy   *panel;
-@@ -599,6 +600,8 @@ bus_ibus_impl_init (BusIBusImpl *ibus)
-     ibus->global_engine_name = NULL;
-     ibus->global_previous_engine_name = NULL;
-     ibus->engine_focus_id_table = g_hash_table_new (g_str_hash, g_str_equal);
-+    ibus->engine_active_surrounding_text_table = g_hash_table_new (g_str_hash,
-+                                                                   g_str_equal);
- 
-     /* focus the fake_context, if use_global_engine is enabled. */
-     if (ibus->use_global_engine)
-@@ -681,6 +684,11 @@ bus_ibus_impl_destroy (BusIBusImpl *ibus)
- 
-     bus_ibus_impl_registry_destroy (ibus);
- 
-+    if (ibus->engine_active_surrounding_text_table != NULL) {
-+        g_hash_table_destroy (ibus->engine_active_surrounding_text_table);
-+        ibus->engine_active_surrounding_text_table = NULL;
-+    }
-+
-     IBUS_OBJECT_CLASS (bus_ibus_impl_parent_class)->destroy (IBUS_OBJECT (ibus));
- }
- 
-@@ -2397,3 +2405,11 @@ bus_ibus_impl_get_engine_focus_id_table (BusIBusImpl *ibus)
-     return ibus->engine_focus_id_table;
- }
- 
-+GHashTable *
-+bus_ibus_impl_get_engine_active_surrounding_text_table (BusIBusImpl *ibus)
-+{
-+
-+    g_assert (BUS_IS_IBUS_IMPL (ibus));
-+
-+    return ibus->engine_active_surrounding_text_table;
-+}
-diff --git a/bus/ibusimpl.h b/bus/ibusimpl.h
-index cbe6856d..93a854de 100644
---- a/bus/ibusimpl.h
-+++ b/bus/ibusimpl.h
-@@ -66,6 +66,13 @@ typedef enum
-     ENGINE_FOCUS_CATEGORY_HAS_ID
- } EngineFocusCategory;
- 
-+typedef enum
-+{
-+    ENGINE_SURROUNDING_TEXT_CATEGORY_NONE = 0,
-+    ENGINE_SURROUNDING_TEXT_CATEGORY_NOT_ACTIVE,
-+    ENGINE_SURROUNDING_TEXT_CATEGORY_HAS_ACTIVE
-+} EngineSurroundingTextCategory;
-+
- GType            bus_ibus_impl_get_type             (void);
- 
- /**
-@@ -91,5 +98,7 @@ BusInputContext *bus_ibus_impl_get_focused_input_context
-                                                     (BusIBusImpl        *ibus);
- GHashTable      *bus_ibus_impl_get_engine_focus_id_table
-                                                     (BusIBusImpl        *ibus);
-+GHashTable      *bus_ibus_impl_get_engine_active_surrounding_text_table
-+                                                    (BusIBusImpl        *ibus);
- G_END_DECLS
- #endif
-diff --git a/src/ibusengine.c b/src/ibusengine.c
-index 7c797103..cc12ac5a 100644
---- a/src/ibusengine.c
-+++ b/src/ibusengine.c
-@@ -64,6 +64,7 @@ enum {
-     PROP_0,
-     PROP_ENGINE_NAME,
-     PROP_HAS_FOCUS_ID,
-+    PROP_ACTIVE_SURROUNDING_TEXT,
- };
- 
- 
-@@ -86,6 +87,7 @@ struct _IBusEnginePrivate {
-     gboolean               enable_extension;
-     gchar                 *current_extension_name;
-     gboolean               has_focus_id;
-+    gboolean               has_active_surrounding_text;
- };
- 
- 
-@@ -303,6 +305,7 @@ static const gchar introspection_xml[] =
-     /* FIXME properties */
-     "    <property name='ContentType' type='(uu)' access='write' />"
-     "    <property name='FocusId' type='(b)' access='read' />"
-+    "    <property name='ActiveSurroundingText' type='(b)' access='read' />"
-     "  </interface>"
-     "</node>";
- 
-@@ -391,6 +394,23 @@ ibus_engine_class_init (IBusEngineClass *class)
-                         G_PARAM_READWRITE |
-                         G_PARAM_CONSTRUCT_ONLY));
- 
-+    /**
-+     * IBusEngine:active-surrounding-text:
-+     *
-+     * When this property is set to %TRUE, "RequireSurroundingText" D-Bus
-+     * signal will be called by ibus-daemon on every focus-in/out event, with
-+     * no need for the engine to call ibus_engine_get_surrounding_text().
-+     * This property can only be set at construct time.
-+     */
-+    g_object_class_install_property (gobject_class,
-+                    PROP_ACTIVE_SURROUNDING_TEXT,
-+                    g_param_spec_boolean ("active-surrounding-text",
-+                        "enable surrounding text update by focus event",
-+                        "Enable surrounding text update by focus event",
-+                        FALSE,
-+                        G_PARAM_READWRITE |
-+                        G_PARAM_CONSTRUCT_ONLY));
-+
-     /* install signals */
-     /**
-      * IBusEngine::process-key-event:
-@@ -988,6 +1008,9 @@ ibus_engine_set_property (IBusEngine   *engine,
-     case PROP_HAS_FOCUS_ID:
-         engine->priv->has_focus_id = g_value_get_boolean (value);
-         break;
-+    case PROP_ACTIVE_SURROUNDING_TEXT:
-+        engine->priv->has_active_surrounding_text = g_value_get_boolean (value);
-+        break;
-     default:
-         G_OBJECT_WARN_INVALID_PROPERTY_ID (engine, prop_id, pspec);
-     }
-@@ -1006,6 +1029,9 @@ ibus_engine_get_property (IBusEngine *engine,
-     case PROP_HAS_FOCUS_ID:
-         g_value_set_boolean (value, engine->priv->has_focus_id);
-         break;
-+    case PROP_ACTIVE_SURROUNDING_TEXT:
-+        g_value_set_boolean (value, engine->priv->has_active_surrounding_text);
-+        break;
-     default:
-         G_OBJECT_WARN_INVALID_PROPERTY_ID (engine, prop_id, pspec);
-     }
-@@ -1445,6 +1471,24 @@ ibus_engine_service_method_call (IBusService           *service,
-     g_return_if_reached ();
- }
- 
-+/**
-+ * _ibus_engine_get_active_surrounding_text:
-+ *
-+ * Implement the "ActiveSurroundingText" method call of the
-+ * org.freedesktop.IBus interface.
-+ */
-+static GVariant *
-+_ibus_engine_get_active_surrounding_text (IBusEngine      *engine,
-+                                          GDBusConnection *connection,
-+                                          GError         **error)
-+{
-+    if (error) {
-+        *error = NULL;
-+    }
-+
-+    return g_variant_new_boolean (engine->priv->has_active_surrounding_text);
-+}
-+
- /**
-  * _ibus_engine_has_focus_id:
-  *
-@@ -1478,7 +1522,8 @@ ibus_engine_service_get_property (IBusService        *service,
-                                         GDBusConnection *,
-                                         GError **);
-     } methods [] =  {
--        { "FocusId",                    _ibus_engine_has_focus_id },
-+        { "FocusId",                _ibus_engine_has_focus_id },
-+        { "ActiveSurroundingText",  _ibus_engine_get_active_surrounding_text },
-     };
- 
-     if (g_strcmp0 (interface_name, IBUS_INTERFACE_ENGINE) != 0) {
--- 
-2.38.1
-
-From 2a235c8c33f1de56df4873fe3662d5beb1355715 Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Wed, 25 Jan 2023 15:10:50 +0900
-Subject: [PATCH 3/3] Refactor surrounding text warning & free focus-id tables
-
-- Free engine_focus_id_table in bus_ibus_impl_destroy
-- It would be better to check the function return value at the
-  first calling than the static variable for the surrounding text
-  warnings
-- Add API comments
-
-Fixes: https://github.com/ibus/ibus/commit/39b6907
-Fixes: https://github.com/ibus/ibus/commit/7bbcce6
-Fixes: https://github.com/ibus/ibus/commit/19ca106
-Fixes: https://github.com/ibus/ibus/commit/92771d0
----
- bus/ibusimpl.c              | 155 ++++++++++++++++++++----------------
- client/gtk2/ibusimcontext.c |  76 +++++++++---------
- src/ibuscomposetable.h      |  13 +++
- src/ibusengine.c            |  99 +++++++++++++----------
- 4 files changed, 196 insertions(+), 147 deletions(-)
-
-diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
-index 6df86c3f..c2ae88df 100644
---- a/bus/ibusimpl.c
-+++ b/bus/ibusimpl.c
-@@ -2,7 +2,7 @@
- /* vim:set et sts=4: */
- /* ibus - The Input Bus
-  * Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2011-2021 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2011-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-  * Copyright (C) 2008-2021 Red Hat, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -287,8 +287,10 @@ bus_ibus_impl_class_init (BusIBusImplClass *class)
- /**
-  * _panel_destroy_cb:
-  *
-- * A callback function which is called when (1) the connection to the panel process is terminated,
-- * or (2) ibus_proxy_destroy (ibus->panel); is called. See src/ibusproxy.c for details.
-+ * A callback function which is called when (1) the connection to the panel
-+ * process is terminated,
-+ * or (2) ibus_proxy_destroy (ibus->panel); is called. See src/ibusproxy.c for
-+ * details.
-  */
- static void
- _panel_destroy_cb (BusPanelProxy *panel,
-@@ -360,9 +362,8 @@ bus_ibus_impl_set_panel_extension_keys (BusIBusImpl *ibus,
-     if (ibus->extension_register_keys)
-         g_variant_unref (ibus->extension_register_keys);
-     ibus->extension_register_keys = g_variant_ref_sink (parameters);
--    if (ibus->focused_context != NULL) {
--            engine = bus_input_context_get_engine (ibus->focused_context);
--    }
-+    if (ibus->focused_context)
-+        engine = bus_input_context_get_engine (ibus->focused_context);
-     if (!engine)
-         return;
-     bus_engine_proxy_panel_extension_register_keys (engine, parameters);
-@@ -429,8 +430,7 @@ _panel_update_auxiliary_text_received_cb (BusPanelProxy *panel,
- 
-     if (!ibus->panel)
-         return;
--    bus_panel_proxy_update_auxiliary_text (
--            ibus->panel, text, visible);
-+    bus_panel_proxy_update_auxiliary_text (ibus->panel, text, visible);
- }
- 
- static void
-@@ -443,8 +443,10 @@ _registry_changed_cb (IBusRegistry *registry,
- /*
-  * _dbus_name_owner_changed_cb:
-  *
-- * A callback function to be called when the name-owner-changed signal is sent to the dbus object.
-- * This usually means a client (e.g. a panel/config/engine process or an application) is connected/disconnected to/from the bus.
-+ * A callback function to be called when the name-owner-changed signal is sent
-+ * to the dbus object.
-+ * This usually means a client (e.g. a panel/config/engine process or an
-+ * application) is connected/disconnected to/from the bus.
-  */
- static void
- _dbus_name_owner_changed_cb (BusDBusImpl   *dbus,
-@@ -561,7 +563,8 @@ _dbus_name_owner_changed_cb (BusDBusImpl   *dbus,
- /**
-  * bus_ibus_impl_init:
-  *
-- * The constructor of BusIBusImpl. Initialize all member variables of a BusIBusImpl object.
-+ * The constructor of #BusIBusImpl. Initialize all member variables of a
-+ * #BusIBusImpl object.
-  */
- static void
- bus_ibus_impl_init (BusIBusImpl *ibus)
-@@ -645,7 +648,8 @@ bus_ibus_impl_destroy (BusIBusImpl *ibus)
-                 if (flag == FALSE) {
-                     gpointer old;
-                     old = signal (SIGTERM, SIG_IGN);
--                    /* send TERM signal to the whole process group (i.e. engines, panel, and config daemon.) */
-+                    /* send TERM signal to the whole process group (i.e.
-+                     * engines, panel, and config daemon.) */
-                     kill (-getpid (), SIGTERM);
-                     signal (SIGTERM, old);
-                     flag = TRUE;
-@@ -661,35 +665,29 @@ bus_ibus_impl_destroy (BusIBusImpl *ibus)
-     g_list_free_full (ibus->register_engine_list, g_object_unref);
-     ibus->register_engine_list = NULL;
- 
--    if (ibus->factory_dict != NULL) {
--        g_hash_table_destroy (ibus->factory_dict);
--        ibus->factory_dict = NULL;
--    }
-+    if (ibus->factory_dict)
-+        g_clear_pointer (&ibus->factory_dict, g_hash_table_destroy);
- 
--    if (ibus->keymap != NULL) {
--        g_object_unref (ibus->keymap);
--        ibus->keymap = NULL;
--    }
-+    if (ibus->keymap)
-+        g_clear_pointer (&ibus->keymap, g_object_unref);
- 
--    g_free (ibus->global_engine_name);
--    ibus->global_engine_name = NULL;
-+    g_clear_pointer (&ibus->global_engine_name, g_free);
-+    g_clear_pointer (&ibus->global_previous_engine_name, g_free);
- 
--    g_free (ibus->global_previous_engine_name);
--    ibus->global_previous_engine_name = NULL;
--
--    if (ibus->fake_context) {
--        g_object_unref (ibus->fake_context);
--        ibus->fake_context = NULL;
--    }
-+    if (ibus->fake_context)
-+        g_clear_pointer (&ibus->fake_context, g_object_unref);
- 
-     bus_ibus_impl_registry_destroy (ibus);
- 
-+    if (ibus->engine_focus_id_table)
-+        g_clear_pointer (&ibus->engine_focus_id_table, g_hash_table_destroy);
-     if (ibus->engine_active_surrounding_text_table != NULL) {
--        g_hash_table_destroy (ibus->engine_active_surrounding_text_table);
--        ibus->engine_active_surrounding_text_table = NULL;
-+        g_clear_pointer (&ibus->engine_active_surrounding_text_table,
-+                         g_hash_table_destroy);
-     }
- 
--    IBUS_OBJECT_CLASS (bus_ibus_impl_parent_class)->destroy (IBUS_OBJECT (ibus));
-+    IBUS_OBJECT_CLASS (bus_ibus_impl_parent_class)->destroy (
-+            IBUS_OBJECT (ibus));
- }
- 
- /**
-@@ -749,7 +747,8 @@ _find_engine_desc_by_name (BusIBusImpl *ibus,
- /**
-  * _context_request_engine_cb:
-  *
-- * A callback function to be called when the "request-engine" signal is sent to the context.
-+ * A callback function to be called when the "request-engine" signal is sent to
-+ * the context.
-  */
- static IBusEngineDesc *
- _context_request_engine_cb (BusInputContext *context,
-@@ -788,12 +787,13 @@ bus_ibus_impl_set_context_engine_from_desc (BusIBusImpl     *ibus,
-                                             BusInputContext *context,
-                                             IBusEngineDesc  *desc)
- {
--    bus_input_context_set_engine_by_desc (context,
--                                          desc,
--                                          g_gdbus_timeout, /* timeout in msec. */
--                                          NULL, /* we do not cancel the call. */
--                                          NULL, /* use the default callback function. */
--                                          NULL);
-+    bus_input_context_set_engine_by_desc (
-+            context,
-+            desc,
-+            g_gdbus_timeout, /* timeout in msec. */
-+            NULL, /* we do not cancel the call. */
-+            NULL, /* use the default callback function. */
-+            NULL);
- }
- 
- static void
-@@ -827,7 +827,8 @@ bus_ibus_impl_set_focused_context (BusIBusImpl     *ibus,
- 
-     g_assert (BUS_IS_IBUS_IMPL (ibus));
-     g_assert (context == NULL || BUS_IS_INPUT_CONTEXT (context));
--    g_assert (context == NULL || bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS);
-+    g_assert (context == NULL ||
-+              bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS);
- 
-     /* Do noting if it is focused context. */
-     if (ibus->focused_context == context) {
-@@ -938,8 +939,8 @@ bus_ibus_impl_set_global_engine_by_name (BusIBusImpl *ibus,
-     if (!ibus->use_global_engine)
-         return;
- 
--    BusInputContext *context =
--            ibus->focused_context != NULL ? ibus->focused_context : ibus->fake_context;
-+    BusInputContext *context = ibus->focused_context != NULL
-+                               ? ibus->focused_context : ibus->fake_context;
- 
-     if (context == NULL) {
-         return;
-@@ -1008,7 +1009,8 @@ bus_ibus_impl_check_global_engine (BusIBusImpl *ibus)
- /**
-  * _context_engine_changed_cb:
-  *
-- * A callback function to be called when the "engine-changed" signal is sent to the context.
-+ * A callback function to be called when the "engine-changed" signal is sent to
-+ * the context.
-  * Update global engine as well if necessary.
-  */
- static void
-@@ -1023,7 +1025,8 @@ _context_engine_changed_cb (BusInputContext *context,
-         BusEngineProxy *engine = bus_input_context_get_engine (context);
-         if (engine != NULL) {
-             /* only set global engine if engine is not NULL */
--            const gchar *name = ibus_engine_desc_get_name (bus_engine_proxy_get_desc (engine));
-+            const gchar *name = ibus_engine_desc_get_name (
-+                    bus_engine_proxy_get_desc (engine));
-             if (g_strcmp0 (name, ibus->global_engine_name) == 0)
-                 return;
-             g_free (ibus->global_previous_engine_name);
-@@ -1037,8 +1040,10 @@ _context_engine_changed_cb (BusInputContext *context,
- /**
-  * _context_focus_in_cb:
-  *
-- * A callback function to be called when the "focus-in" signal is sent to the context.
-- * If necessary, enables the global engine on the context and update ibus->focused_context.
-+ * A callback function to be called when the "focus-in" signal is sent to the
-+ * context.
-+ * If necessary, enables the global engine on the context and update
-+ * ibus->focused_context.
-  */
- static void
- _context_focus_in_cb (BusInputContext *context,
-@@ -1059,7 +1064,8 @@ _context_focus_in_cb (BusInputContext *context,
- /**
-  * _context_focus_out_cb:
-  *
-- * A callback function to be called when the "focus-out" signal is sent to the context.
-+ * A callback function to be called when the "focus-out" signal is sent to the
-+ * context.
-  */
- static void
- _context_focus_out_cb (BusInputContext    *context,
-@@ -1069,7 +1075,8 @@ _context_focus_out_cb (BusInputContext    *context,
-     g_assert (BUS_IS_INPUT_CONTEXT (context));
- 
-     /* Do noting if context does not support focus.
--     * Actually, the context should emit focus signals, if it does not support focus */
-+     * Actually, the context should emit focus signals, if it does not support
-+     * focus */
-     if ((bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS) == 0) {
-         return;
-     }
-@@ -1127,7 +1134,8 @@ bus_ibus_impl_create_input_context (BusIBusImpl   *ibus,
-     g_object_ref_sink (context);
-     ibus->contexts = g_list_append (ibus->contexts, context);
- 
--    /* Installs glib signal handlers so that the ibus object could be notified when e.g. an IBus.InputContext D-Bus method is called. */
-+    /* Installs glib signal handlers so that the ibus object could be notified
-+     * when e.g. an IBus.InputContext D-Bus method is called. */
-     static const struct {
-         gchar *name;
-         GCallback callback;
-@@ -1149,7 +1157,8 @@ bus_ibus_impl_create_input_context (BusIBusImpl   *ibus,
- 
-     bus_input_context_enable (context);
- 
--    /* register the context object so that the object could handle IBus.InputContext method calls. */
-+    /* register the context object so that the object could handle
-+     * IBus.InputContext method calls. */
-     bus_dbus_impl_register_object (BUS_DEFAULT_DBUS,
-                                    (IBusService *) context);
-     g_object_ref (context);
-@@ -1159,14 +1168,15 @@ bus_ibus_impl_create_input_context (BusIBusImpl   *ibus,
- /**
-  * _ibus_create_input_context:
-  *
-- * Implement the "CreateInputContext" method call of the org.freedesktop.IBus interface.
-+ * Implement the "CreateInputContext" method call of the org.freedesktop.IBus
-+ * interface.
-  */
- static void
- _ibus_create_input_context (BusIBusImpl           *ibus,
-                             GVariant              *parameters,
-                             GDBusMethodInvocation *invocation)
- {
--    const gchar *client_name = NULL;  // e.g. "gtk-im"
-+    const gchar *client_name = NULL;  /* e.g. "gtk-im" */
-     g_variant_get (parameters, "(&s)", &client_name);
- 
-     BusConnection *connection =
-@@ -1176,9 +1186,11 @@ _ibus_create_input_context (BusIBusImpl           *ibus,
-                                                 connection,
-                                                 client_name);
-     if (context) {
--        const gchar *path = ibus_service_get_object_path ((IBusService *) context);
-+        const gchar *path =
-+                ibus_service_get_object_path ((IBusService *) context);
-         /* the format-string 'o' is for a D-Bus object path. */
--        g_dbus_method_invocation_return_value (invocation, g_variant_new ("(o)", path));
-+        g_dbus_method_invocation_return_value (invocation,
-+                                               g_variant_new ("(o)", path));
-         g_object_unref (context);
-     }
-     else {
-@@ -1259,14 +1271,16 @@ _component_destroy_cb (BusComponent *component,
-     g_assert (BUS_IS_IBUS_IMPL (ibus));
-     g_assert (BUS_IS_COMPONENT (component));
- 
--    ibus->registered_components = g_list_remove (ibus->registered_components, component);
-+    ibus->registered_components = g_list_remove (ibus->registered_components,
-+                                                 component);
- 
-     /* remove engines from engine_list */
-     GList *engines = bus_component_get_engines (component);
-     GList *p;
-     for (p = engines; p != NULL; p = p->next) {
-         if (g_list_find (ibus->register_engine_list, p->data)) {
--            ibus->register_engine_list = g_list_remove (ibus->register_engine_list, p->data);
-+            ibus->register_engine_list =
-+                    g_list_remove (ibus->register_engine_list, p->data);
-             g_object_unref (p->data);
-         }
-     }
-@@ -1389,7 +1403,8 @@ _ibus_list_engines_depre (BusIBusImpl           *ibus,
- /**
-  * _ibus_get_engines_by_names:
-  *
-- * Implement the "GetEnginesByNames" method call of the org.freedesktop.IBus interface.
-+ * Implement the "GetEnginesByNames" method call of the org.freedesktop.IBus
-+ * interface.
-  */
- static void
- _ibus_get_engines_by_names (BusIBusImpl           *ibus,
-@@ -1414,7 +1429,8 @@ _ibus_get_engines_by_names (BusIBusImpl           *ibus,
-                 "v",
-                 ibus_serializable_serialize ((IBusSerializable *)desc));
-     }
--    g_dbus_method_invocation_return_value (invocation, g_variant_new ("(av)", &builder));
-+    g_dbus_method_invocation_return_value (invocation,
-+                                           g_variant_new ("(av)", &builder));
- }
- 
- /**
-@@ -1609,7 +1625,7 @@ _ibus_get_global_engine (BusIBusImpl     *ibus,
- 
-         GVariant *variant = ibus_serializable_serialize (
-                 (IBusSerializable *) desc);
--        // Set type "v" for introspection_xml.
-+        /* Set type "v" for introspection_xml. */
-         retval = g_variant_new_variant (variant);
-         if (!retval) {
-             g_set_error (error,
-@@ -1752,12 +1768,13 @@ _ibus_set_global_engine (BusIBusImpl           *ibus,
-     SetGlobalEngineData *data = g_slice_new0 (SetGlobalEngineData);
-     data->ibus = g_object_ref (ibus);
-     data->invocation = invocation;
--    bus_input_context_set_engine_by_desc (context,
--                                          desc,
--                                          g_gdbus_timeout, /* timeout in msec. */
--                                          NULL, /* we do not cancel the call. */
--                                          (GAsyncReadyCallback) _ibus_set_global_engine_ready_cb,
--                                          data);
-+    bus_input_context_set_engine_by_desc (
-+            context,
-+            desc,
-+            g_gdbus_timeout, /* timeout in msec. */
-+            NULL, /* we do not cancel the call. */
-+            (GAsyncReadyCallback) _ibus_set_global_engine_ready_cb,
-+            data);
- }
- 
- /**
-@@ -2109,19 +2126,17 @@ BusFactoryProxy *
- bus_ibus_impl_lookup_factory (BusIBusImpl *ibus,
-                               const gchar *path)
- {
--    g_assert (BUS_IS_IBUS_IMPL (ibus));
--
-     BusFactoryProxy *factory;
- 
--    factory = (BusFactoryProxy *) g_hash_table_lookup (ibus->factory_dict, path);
--
-+    g_assert (BUS_IS_IBUS_IMPL (ibus));
-+    factory = (BusFactoryProxy *) g_hash_table_lookup (ibus->factory_dict,
-+                                                       path);
-     return factory;
- }
- 
- IBusKeymap *
- bus_ibus_impl_get_keymap (BusIBusImpl *ibus)
- {
--
-     g_assert (BUS_IS_IBUS_IMPL (ibus));
- 
-     return ibus->keymap;
-diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
-index 1f3723e6..ea8270bb 100644
---- a/client/gtk2/ibusimcontext.c
-+++ b/client/gtk2/ibusimcontext.c
-@@ -2,8 +2,8 @@
- /* vim:set et sts=4: */
- /* ibus - The Input Bus
-  * Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2015-2022 Takao Fujiwara <takao.fujiwara1@gmail.com>
-- * Copyright (C) 2008-2022 Red Hat, Inc.
-+ * Copyright (C) 2015-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2008-2023 Red Hat, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU Lesser General Public
-@@ -70,7 +70,6 @@ struct _IBusIMContext {
- #endif
- 
-     IBusInputContext *ibuscontext;
--    IBusInputContext *ibuscontext_needs_surrounding;
- 
-     /* preedit status */
-     gchar           *preedit_string;
-@@ -214,7 +213,7 @@ static gboolean _slave_delete_surrounding_cb
-                                              gint                offset_from_cursor,
-                                              guint               nchars,
-                                              IBusIMContext      *context);
--static void     _request_surrounding_text   (IBusIMContext      *context);
-+static gboolean _request_surrounding_text   (IBusIMContext      *context);
- static void     _create_fake_input_context  (void);
- static gboolean _set_content_type           (IBusIMContext      *context);
- 
-@@ -592,34 +591,19 @@ _process_key_event (IBusInputContext *context,
-  * context->caps has IBUS_CAP_SURROUNDING_TEXT and the current IBus
-  * engine needs surrounding-text.
-  */
--static void
-+static gboolean
- _request_surrounding_text (IBusIMContext *context)
- {
--    static gboolean warned = FALSE;
-+    gboolean return_value = TRUE;
-     if (context &&
-         (context->caps & IBUS_CAP_SURROUNDING_TEXT) != 0 &&
-         context->ibuscontext != NULL &&
-         ibus_input_context_needs_surrounding_text (context->ibuscontext)) {
--        gboolean return_value;
-         IDEBUG ("requesting surrounding text");
-         g_signal_emit (context, _signal_retrieve_surrounding_id, 0,
-                        &return_value);
--        if (!return_value) {
--            /* Engines can disable the surrounding text feature with
--             * the updated capabilities.
--             */
--            if (context->caps & IBUS_CAP_SURROUNDING_TEXT) {
--                context->caps &= ~IBUS_CAP_SURROUNDING_TEXT;
--                ibus_input_context_set_capabilities (context->ibuscontext,
--                                                     context->caps);
--            }
--            if (!warned) {
--                g_warning ("%s has no capability of surrounding-text feature",
--                           g_get_prgname ());
--                warned = TRUE;
--            }
--        }
-     }
-+    return return_value;
- }
- 
- static gboolean
-@@ -1013,7 +997,6 @@ ibus_im_context_init (GObject *obj)
-     ibusimcontext->cursor_area.height = 0;
- 
-     ibusimcontext->ibuscontext = NULL;
--    ibusimcontext->ibuscontext_needs_surrounding = NULL;
-     ibusimcontext->has_focus = FALSE;
-     ibusimcontext->time = GDK_CURRENT_TIME;
- #ifdef ENABLE_SURROUNDING
-@@ -2212,16 +2195,33 @@ _ibus_context_hide_preedit_text_cb (IBusInputContext *ibuscontext,
-     g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
- }
- 
-+static void
-+_ibus_warn_no_support_surrounding_text (IBusIMContext *context)
-+{
-+    /* Engines can disable the surrounding text feature with
-+     * the updated capabilities.
-+     */
-+    if (context->caps & IBUS_CAP_SURROUNDING_TEXT) {
-+        context->caps &= ~IBUS_CAP_SURROUNDING_TEXT;
-+        ibus_input_context_set_capabilities (context->ibuscontext,
-+                                             context->caps);
-+    }
-+    g_warning ("%s has no capability of surrounding-text feature",
-+               g_get_prgname ());
-+}
-+
- static void
- _ibus_context_require_surrounding_text_cb (IBusInputContext *ibuscontext,
-                                            IBusIMContext    *ibusimcontext)
- {
-     IDEBUG ("%s", __FUNCTION__);
-     g_assert (ibusimcontext->ibuscontext == ibuscontext);
--    if (ibusimcontext->ibuscontext_needs_surrounding == ibuscontext) {
--        _request_surrounding_text (ibusimcontext);
--        ibusimcontext->ibuscontext_needs_surrounding = NULL;
--    }
-+    if (!_request_surrounding_text (ibusimcontext))
-+        _ibus_warn_no_support_surrounding_text (ibusimcontext);
-+    g_signal_handlers_disconnect_by_func (
-+            ibusimcontext->ibuscontext,
-+            G_CALLBACK (_ibus_context_require_surrounding_text_cb),
-+            ibusimcontext);
- }
- 
- static void
-@@ -2263,6 +2263,7 @@ _create_input_context_done (IBusBus       *bus,
-         g_error_free (error);
-     }
-     else {
-+        gboolean requested_surrounding_text = FALSE;
-         ibus_input_context_set_client_commit_preedit (context, TRUE);
-         ibusimcontext->ibuscontext = context;
- 
-@@ -2290,16 +2291,12 @@ _create_input_context_done (IBusBus       *bus,
-                           "hide-preedit-text",
-                           G_CALLBACK (_ibus_context_hide_preedit_text_cb),
-                           ibusimcontext);
--        g_signal_connect (
--                ibusimcontext->ibuscontext,
--                "require-surrounding-text",
--                G_CALLBACK (_ibus_context_require_surrounding_text_cb),
--                ibusimcontext);
-         g_signal_connect (ibusimcontext->ibuscontext, "destroy",
-                           G_CALLBACK (_ibus_context_destroy_cb),
-                           ibusimcontext);
- 
--        ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps);
-+        ibus_input_context_set_capabilities (ibusimcontext->ibuscontext,
-+                                             ibusimcontext->caps);
- 
-         if (ibusimcontext->has_focus) {
-             /* The time order is _create_input_context() ->
-@@ -2313,11 +2310,18 @@ _create_input_context_done (IBusBus       *bus,
-             _set_cursor_location_internal (ibusimcontext);
-             if (ibus_input_context_needs_surrounding_text (
-                         ibusimcontext->ibuscontext)) {
--                _request_surrounding_text (ibusimcontext);
--            } else {
--                ibusimcontext->ibuscontext_needs_surrounding = ibusimcontext->ibuscontext;
-+                if (!_request_surrounding_text (ibusimcontext))
-+                    _ibus_warn_no_support_surrounding_text (ibusimcontext);
-+                requested_surrounding_text = TRUE;
-             }
-         }
-+        if (!requested_surrounding_text) {
-+            g_signal_connect (
-+                    ibusimcontext->ibuscontext,
-+                    "require-surrounding-text",
-+                    G_CALLBACK (_ibus_context_require_surrounding_text_cb),
-+                    ibusimcontext);
-+        }
- 
-         if (!g_queue_is_empty (ibusimcontext->events_queue)) {
- #if GTK_CHECK_VERSION (3, 98, 4)
-diff --git a/src/ibuscomposetable.h b/src/ibuscomposetable.h
-index be1463ae..32e337f7 100644
---- a/src/ibuscomposetable.h
-+++ b/src/ibuscomposetable.h
-@@ -46,6 +46,8 @@ struct _IBusComposeTable
- struct _IBusComposeTableEx
- {
-     IBusComposeTablePrivate *priv;
-+    /* @data is const value to accept mmap data and the releasable allocation
-+     * is assigned to @rawdata. */
-     const guint16 *data;
-     gint max_seq_len;
-     gint n_seqs;
-@@ -54,6 +56,17 @@ struct _IBusComposeTableEx
- };
- 
- 
-+/**
-+ * ibus_compose_table_new_with_file:
-+ * @compose_file: The path of the compose file
-+ * @compose_tables: (nullable): The list of other @IBusComposeTableEx
-+ * and the generating @IBusComposeTableEx excludes the compose keys
-+ * which are included in the other @IBusComposeTableEx.
-+ *
-+ * Generate @IBusComposeTableEx from the compose file.
-+ *
-+ * Returns: @IBusComposeTableEx
-+ */
- IBusComposeTableEx *
-                   ibus_compose_table_new_with_file (const gchar *compose_file,
-                                                     GSList
-diff --git a/src/ibusengine.c b/src/ibusengine.c
-index cc12ac5a..8aa27b66 100644
---- a/src/ibusengine.c
-+++ b/src/ibusengine.c
-@@ -2,7 +2,7 @@
- /* vim:set et sts=4: */
- /* ibus - The Input Bus
-  * Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2018-2022 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2018-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-  * Copyright (C) 2008-2021 Red Hat, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -371,7 +371,7 @@ ibus_engine_class_init (IBusEngineClass *class)
- 
-     /* install properties */
-     /**
--     * IBusEngine:name:
-+     * IBusEngine:engine-name:
-      *
-      * Name of this IBusEngine.
-      */
-@@ -385,6 +385,16 @@ ibus_engine_class_init (IBusEngineClass *class)
-                         G_PARAM_CONSTRUCT_ONLY |
-                         G_PARAM_STATIC_STRINGS));
- 
-+    /**
-+     * IBusEngine:has-focus-id:
-+     *
-+     * Use #IBusEngine::focus_in_id()/focus_out_id() class method insteads of
-+     * focus_in()/focus_out() class methods when this property is set to %TRUE.
-+     * Otherwise, use #IBusEngine::focus_in()/focus_out class methods.
-+     * This property can only be set at construct time.
-+     *
-+     * See also: IBusEngine::focus-in-id
-+     */
-     g_object_class_install_property (gobject_class,
-                     PROP_HAS_FOCUS_ID,
-                     g_param_spec_boolean ("has-focus-id",
-@@ -577,7 +587,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * in extended class to receive this signal.
-      *
-      * See also:  ibus_input_context_reset().
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[RESET] =
-         g_signal_new (I_("reset"),
-@@ -598,7 +609,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * in extended class to receive this signal.
-      *
-      * See also:  ibus_bus_set_global_engine().
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[ENABLE] =
-         g_signal_new (I_("enable"),
-@@ -619,7 +631,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * in extended class to receive this signal.
-      *
-      * See also:  ibus_bus_set_global_engine().
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[DISABLE] =
-         g_signal_new (I_("disable"),
-@@ -644,7 +657,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * in extended class to receive this signal.
-      *
-      * See also:  ibus_input_context_set_cursor_location().
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[SET_CURSOR_LOCATION] =
-         g_signal_new (I_("set-cursor-location"),
-@@ -670,7 +684,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * in extended class to receive this signal.
-      *
-      * See also:  ibus_input_context_set_capabilities().
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[SET_CAPABILITIES] =
-         g_signal_new (I_("set-capabilities"),
-@@ -691,7 +706,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * Implement the member function IBusEngineClass::page_up
-      * in extended class to receive this signal.
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[PAGE_UP] =
-         g_signal_new (I_("page-up"),
-@@ -711,7 +727,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * Implement the member function IBusEngineClass::page_down
-      * in extended class to receive this signal.
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[PAGE_DOWN] =
-         g_signal_new (I_("page-down"),
-@@ -731,7 +748,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * Implement the member function IBusEngineClass::cursor_up
-      * in extended class to receive this signal.
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[CURSOR_UP] =
-         g_signal_new (I_("cursor-up"),
-@@ -751,7 +769,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * Implement the member function IBusEngineClass::cursor_down
-      * in extended class to receive this signal.
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[CURSOR_DOWN] =
-         g_signal_new (I_("cursor-down"),
-@@ -774,7 +793,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * Implement the member function IBusEngineClass::candidate_clicked
-      * in extended class to receive this signal.
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[CANDIDATE_CLICKED] =
-         g_signal_new (I_("candidate-clicked"),
-@@ -799,7 +819,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * Implement the member function IBusEngineClass::property_activate
-      * in extended class to receive this signal.
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[PROPERTY_ACTIVATE] =
-         g_signal_new (I_("property-activate"),
-@@ -822,7 +843,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * Implement the member function IBusEngineClass::property_side
-      * in extended class to receive this signal.
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[PROPERTY_SHOW] =
-         g_signal_new (I_("property-show"),
-@@ -844,7 +866,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * Implement the member function IBusEngineClass::property_hide
-      * in extended class to receive this signal.
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[PROPERTY_HIDE] =
-         g_signal_new (I_("property-hide"),
-@@ -860,14 +883,16 @@ ibus_engine_class_init (IBusEngineClass *class)
-     /**
-      * IBusEngine::process-hand-writing-event:
-      * @engine: An IBusEngine.
--     * @coordinates: An array of double (0.0 to 1.0) which represents a stroke (i.e. [x1, y1, x2, y2, x3, y3, ...]).
-+     * @coordinates: An array of double (0.0 to 1.0) which represents a stroke
-+     *               (i.e. [x1, y1, x2, y2, x3, y3, ...]).
-      * @coordinates_len: The number of elements in the array.
-      *
-      * Emitted when a hand writing operation is cancelled.
-      * Implement the member function IBusEngineClass::cancel_hand_writing
-      * in extended class to receive this signal.
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[PROCESS_HAND_WRITING_EVENT] =
-         g_signal_new (I_("process-hand-writing-event"),
-@@ -890,7 +915,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * Implement the member function IBusEngineClass::cancel_hand_writing
-      * in extended class to receive this signal.
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[CANCEL_HAND_WRITING] =
-         g_signal_new (I_("cancel-hand-writing"),
-@@ -916,7 +942,8 @@ ibus_engine_class_init (IBusEngineClass *class)
-      * If anchor_pos equals to cursor_pos, it means "there are no selection"
-      * or "does not support selection retrival".
-      *
--     * <note><para>Argument @user_data is ignored in this function.</para></note>
-+     * <note><para>Argument @user_data is ignored in this function.</para>
-+     * </note>
-      */
-     engine_signals[SET_SURROUNDING_TEXT] =
-         g_signal_new (I_("set-surrounding-text"),
-@@ -1265,7 +1292,8 @@ ibus_engine_service_method_call (IBusService           *service,
-                                                    keycode,
-                                                    state);
-         }
--        g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", retval));
-+        g_dbus_method_invocation_return_value (invocation,
-+                                               g_variant_new ("(b)", retval));
-         return;
-     }
-     if (g_strcmp0 (method_name, "PanelExtensionReceived") == 0) {
-@@ -1449,8 +1477,10 @@ ibus_engine_service_method_call (IBusService           *service,
- 
-         coordinates = g_variant_get_fixed_array (g_variant_get_child_value (parameters, 0), &coordinates_len, sizeof (gdouble));
-         g_return_if_fail (coordinates != NULL);
--        g_return_if_fail (coordinates_len >= 4); /* The array should contain at least one line. */
--        g_return_if_fail (coordinates_len <= G_MAXUINT); /* to prevent overflow in the cast in g_signal_emit */
-+        /* The array should contain at least one line. */
-+        g_return_if_fail (coordinates_len >= 4);
-+        /* to prevent overflow in the cast in g_signal_emit */
-+        g_return_if_fail (coordinates_len <= G_MAXUINT);
-         g_return_if_fail ((coordinates_len & 1) == 0);
- 
-         g_signal_emit (engine, engine_signals[PROCESS_HAND_WRITING_EVENT], 0,
-@@ -1656,38 +1686,32 @@ ibus_engine_set_cursor_location (IBusEngine *engine,
-                                  gint        w,
-                                  gint        h)
- {
--    // g_debug ("set-cursor-location (%d, %d, %d, %d)", x, y, w, h);
- }
- 
- static void
- ibus_engine_set_capabilities (IBusEngine *engine,
-                               guint       caps)
- {
--    // g_debug ("set-capabilities (0x%04x)", caps);
- }
- 
- static void
- ibus_engine_page_up (IBusEngine *engine)
- {
--    // g_debug ("page-up");
- }
- 
- static void
- ibus_engine_page_down (IBusEngine *engine)
- {
--    // g_debug ("page-down");
- }
- 
- static void
- ibus_engine_cursor_up (IBusEngine *engine)
- {
--    // g_debug ("cursor-up");
- }
- 
- static void
- ibus_engine_cursor_down (IBusEngine *engine)
- {
--    // g_debug ("cursor-down");
- }
- 
- static void
-@@ -1696,7 +1720,6 @@ ibus_engine_candidate_clicked (IBusEngine *engine,
-                                guint       button,
-                                guint       state)
- {
--    // g_debug ("candidate-clicked");
- }
- 
- static void
-@@ -1704,19 +1727,16 @@ ibus_engine_property_activate (IBusEngine  *engine,
-                                const gchar *prop_name,
-                                guint        prop_state)
- {
--    // g_debug ("property-activate ('%s', %d)", prop_name, prop_state);
- }
- 
- static void
- ibus_engine_property_show (IBusEngine *engine, const gchar *prop_name)
- {
--    // g_debug ("property-show ('%s')", prop_name);
- }
- 
- static void
- ibus_engine_property_hide (IBusEngine *engine, const gchar *prop_name)
- {
--    // g_debug ("property-hide ('%s')", prop_name);
- }
- 
- static void
-@@ -1734,7 +1754,6 @@ ibus_engine_set_surrounding_text (IBusEngine *engine,
-     engine->priv->surrounding_text = (IBusText *) g_object_ref_sink (text ? text : text_empty);
-     engine->priv->surrounding_cursor_pos = cursor_pos;
-     engine->priv->selection_anchor_pos = anchor_pos;
--    // g_debug ("set-surrounding-text ('%s', %d, %d)", text->text, cursor_pos, anchor_pos);
- }
- 
- static void
-@@ -1742,17 +1761,18 @@ ibus_engine_process_hand_writing_event (IBusEngine         *engine,
-                                         const gdouble      *coordinates,
-                                         guint               coordinates_len)
- {
--    // guint i;
--    // g_debug ("process-hand-writing-event (%u)", coordinates_len);
--    // for (i = 0; i < coordinates_len; i++)
--    //     g_debug (" %lf", coordinates[i]);
-+#if 0
-+    guint i;
-+    g_debug ("process-hand-writing-event (%u)", coordinates_len);
-+    for (i = 0; i < coordinates_len; i++)
-+        g_debug (" %lf", coordinates[i]);
-+#endif
- }
- 
- static void
- ibus_engine_cancel_hand_writing (IBusEngine         *engine,
-                                  guint               n_strokes)
- {
--    // g_debug ("cancel-hand-writing (%u)", n_strokes);
- }
- 
- static void
-@@ -1760,7 +1780,6 @@ ibus_engine_set_content_type (IBusEngine *engine,
-                               guint       purpose,
-                               guint       hints)
- {
--    // g_debug ("set-content-type (%u %u)", purpose, hints);
- }
- 
- static void
-@@ -2085,8 +2104,6 @@ ibus_engine_get_surrounding_text (IBusEngine   *engine,
-     ibus_engine_emit_signal (engine,
-                              "RequireSurroundingText",
-                              NULL);
--
--    // g_debug ("get-surrounding-text ('%s', %d, %d)", (*text)->text, *cursor_pos, *anchor_pos);
- }
- 
- void
--- 
-2.38.1
-
-From f788f1f8317797ebc59f5f59acb4390824e5a4ef Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 17 Feb 2023 20:35:10 +0900
-Subject: [PATCH] Return error if D-Bus set/get property method is failed
-
-D-Bus set/get property methods are called from DBusConnection
-APIs invoke_set_property_in_idle_cb() and
-invoke_get_property_in_idle_cb() and the error values cannot be
-null if the methods are failed.
-
-BUG=rhbz#2169205
----
- bus/ibusimpl.c         | 86 ++++++++++++++++++------------------------
- bus/inputcontext.c     | 27 +++++++++++--
- src/ibusengine.c       | 44 ++++++++++++++-------
- src/ibusenginesimple.c |  2 +-
- src/ibusservice.c      | 27 ++++++++++---
- 5 files changed, 113 insertions(+), 73 deletions(-)
-
-diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
-index c2ae88df..f2ab2b30 100644
---- a/bus/ibusimpl.c
-+++ b/bus/ibusimpl.c
-@@ -700,11 +700,14 @@ _ibus_get_address (BusIBusImpl     *ibus,
-                    GDBusConnection *connection,
-                    GError         **error)
- {
--    if (error) {
--        *error = NULL;
-+    GVariant *retval = g_variant_new_string (bus_server_get_address ());
-+    if (!retval) {
-+        g_set_error (error,
-+                     G_DBUS_ERROR,
-+                     G_DBUS_ERROR_FAILED,
-+                     "Cannot get IBus address");
-     }
--
--    return g_variant_new_string (bus_server_get_address ());
-+    return retval;
- }
- 
- static void
-@@ -1213,9 +1216,6 @@ _ibus_get_current_input_context (BusIBusImpl     *ibus,
-                                  GError         **error)
- {
-     GVariant *retval = NULL;
--    if (error) {
--        *error = NULL;
--    }
- 
-     if (!ibus->focused_context)
-     {
-@@ -1359,14 +1359,11 @@ _ibus_get_engines (BusIBusImpl     *ibus,
-                    GDBusConnection *connection,
-                    GError         **error)
- {
-+    GVariant *retval;
-     GVariantBuilder builder;
-     GList *engines = NULL;
-     GList *p;
- 
--    if (error) {
--        *error = NULL;
--    }
--
-     g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
- 
-     engines = g_hash_table_get_values (ibus->engine_table);
-@@ -1379,7 +1376,9 @@ _ibus_get_engines (BusIBusImpl     *ibus,
- 
-     g_list_free (engines);
- 
--    return g_variant_builder_end (&builder);
-+    retval = g_variant_builder_end (&builder);
-+    g_assert (retval);
-+    return retval;
- }
- 
- static void
-@@ -1444,13 +1443,10 @@ _ibus_get_active_engines (BusIBusImpl     *ibus,
-                           GDBusConnection *connection,
-                           GError         **error)
- {
-+    GVariant *retval;
-     GVariantBuilder builder;
-     GList *p;
- 
--    if (error) {
--        *error = NULL;
--    }
--
-     g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
- 
-     for (p = ibus->register_engine_list; p != NULL; p = p->next) {
-@@ -1459,7 +1455,9 @@ _ibus_get_active_engines (BusIBusImpl     *ibus,
-                 ibus_serializable_serialize ((IBusSerializable *) p->data));
-     }
- 
--    return g_variant_builder_end (&builder);
-+    retval = g_variant_builder_end (&builder);
-+    g_assert (retval);
-+    return retval;
- }
- 
- static void
-@@ -1528,10 +1526,8 @@ _ibus_get_use_sys_layout (BusIBusImpl     *ibus,
-                           GDBusConnection *connection,
-                           GError         **error)
- {
--    if (error) {
-+    if (error)
-         *error = NULL;
--    }
--
-     return g_variant_new_boolean (ibus->use_sys_layout);
- }
- 
-@@ -1566,10 +1562,8 @@ _ibus_get_use_global_engine (BusIBusImpl     *ibus,
-                              GDBusConnection *connection,
-                              GError         **error)
- {
--    if (error) {
-+    if (error)
-         *error = NULL;
--    }
--
-     return g_variant_new_boolean (ibus->use_global_engine);
- }
- 
-@@ -1607,10 +1601,6 @@ _ibus_get_global_engine (BusIBusImpl     *ibus,
-     IBusEngineDesc *desc = NULL;
-     GVariant *retval = NULL;
- 
--    if (error) {
--        *error = NULL;
--    }
--
-     do {
-         if (!ibus->use_global_engine)
-             break;
-@@ -1790,10 +1780,8 @@ _ibus_get_global_engine_enabled (BusIBusImpl     *ibus,
- {
-     gboolean enabled = FALSE;
- 
--    if (error) {
-+    if (error)
-         *error = NULL;
--    }
--
-     do {
-         if (!ibus->use_global_engine)
-             break;
-@@ -1849,10 +1837,6 @@ _ibus_set_preload_engines (BusIBusImpl     *ibus,
-     BusFactoryProxy *factory = NULL;
-     GPtrArray *array = g_ptr_array_new ();
- 
--    if (error) {
--        *error = NULL;
--    }
--
-     g_variant_get (value, "^a&s", &names);
- 
-     for (i = 0; names[i] != NULL; i++) {
-@@ -1912,11 +1896,9 @@ _ibus_get_embed_preedit_text (BusIBusImpl     *ibus,
-                               GDBusConnection *connection,
-                               GError         **error)
- {
--    if (error) {
--        *error = NULL;
--    }
--
--    return g_variant_new_boolean (ibus->embed_preedit_text);
-+    GVariant *retval = g_variant_new_boolean (ibus->embed_preedit_text);
-+    g_assert (retval);
-+    return retval;
- }
- 
- /**
-@@ -1931,10 +1913,6 @@ _ibus_set_embed_preedit_text (BusIBusImpl     *ibus,
-                               GVariant        *value,
-                               GError         **error)
- {
--    if (error) {
--        *error = NULL;
--    }
--
-     gboolean embed_preedit_text = g_variant_get_boolean (value);
-     if (embed_preedit_text != ibus->embed_preedit_text) {
-         ibus->embed_preedit_text = embed_preedit_text;
-@@ -2038,6 +2016,8 @@ bus_ibus_impl_service_get_property (IBusService     *service,
-         { "EmbedPreeditText",      _ibus_get_embed_preedit_text },
-     };
- 
-+    if (error)
-+        *error = NULL;
-     if (g_strcmp0 (interface_name, IBUS_INTERFACE_IBUS) != 0) {
-         return IBUS_SERVICE_CLASS (
-                 bus_ibus_impl_parent_class)->service_get_property (
-@@ -2054,9 +2034,12 @@ bus_ibus_impl_service_get_property (IBusService     *service,
-         }
-     }
- 
--    g_warning ("service_get_property received an unknown property: %s",
--               property_name ? property_name : "(null)");
--    return NULL;
-+    g_set_error (error,
-+                 G_DBUS_ERROR,
-+                 G_DBUS_ERROR_FAILED,
-+                 "service_get_property received an unknown property: %s",
-+                 property_name ? property_name : "(null)");
-+    g_return_val_if_reached (NULL);
- }
- 
- /**
-@@ -2087,6 +2070,8 @@ bus_ibus_impl_service_set_property (IBusService     *service,
-         { "EmbedPreeditText",      _ibus_set_embed_preedit_text },
-     };
- 
-+    if (error)
-+        *error = NULL;
-     if (g_strcmp0 (interface_name, IBUS_INTERFACE_IBUS) != 0) {
-         return IBUS_SERVICE_CLASS (
-                 bus_ibus_impl_parent_class)->service_set_property (
-@@ -2104,9 +2089,12 @@ bus_ibus_impl_service_set_property (IBusService     *service,
-         }
-     }
- 
--    g_warning ("service_set_property received an unknown property: %s",
--               property_name ? property_name : "(null)");
--    return FALSE;
-+    g_set_error (error,
-+                 G_DBUS_ERROR,
-+                 G_DBUS_ERROR_FAILED,
-+                 "service_set_property received an unknown property: %s",
-+                 property_name ? property_name : "(null)");
-+    g_return_val_if_reached (FALSE);
- }
- 
- BusIBusImpl *
-diff --git a/bus/inputcontext.c b/bus/inputcontext.c
-index 72041ecb..e76bbdfc 100644
---- a/bus/inputcontext.c
-+++ b/bus/inputcontext.c
-@@ -2,7 +2,7 @@
- /* vim:set et sts=4: */
- /* ibus - The Input Bus
-  * Copyright (C) 2008-2014 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2015-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2015-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-  * Copyright (C) 2008-2016 Red Hat, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -1388,6 +1388,8 @@ bus_input_context_service_set_property (IBusService     *service,
-                                         GVariant        *value,
-                                         GError         **error)
- {
-+    if (error)
-+        *error = NULL;
-     if (g_strcmp0 (interface_name, IBUS_INTERFACE_INPUT_CONTEXT) != 0) {
-         return IBUS_SERVICE_CLASS (bus_input_context_parent_class)->
-             service_set_property (service,
-@@ -1400,10 +1402,22 @@ bus_input_context_service_set_property (IBusService     *service,
-                                   error);
-     }
- 
--    if (!bus_input_context_service_authorized_method (service, connection))
-+    if (!BUS_IS_INPUT_CONTEXT (service)) {
-+        g_set_error (error,
-+                     G_DBUS_ERROR,
-+                     G_DBUS_ERROR_FAILED,
-+                     "%p is not BusInputContext.", service);
-         return FALSE;
--
--    g_return_val_if_fail (BUS_IS_INPUT_CONTEXT (service), FALSE);
-+    }
-+    if (!bus_input_context_service_authorized_method (service, connection)) {
-+        /* No error message due to the security issue but GError is required
-+         * by gdbusconnection.c:invoke_set_property_in_idle_cb() */
-+        g_set_error (error,
-+                     G_DBUS_ERROR,
-+                     G_DBUS_ERROR_FAILED,
-+                     " ");
-+        return FALSE;
-+    }
- 
-     if (g_strcmp0 (property_name, "ContentType") == 0) {
-         _ic_set_content_type (BUS_INPUT_CONTEXT (service), value);
-@@ -1414,6 +1428,11 @@ bus_input_context_service_set_property (IBusService     *service,
-         return TRUE;
-     }
- 
-+    g_set_error (error,
-+                 G_DBUS_ERROR,
-+                 G_DBUS_ERROR_FAILED,
-+                 "service_set_property received an unknown property: %s",
-+                 property_name ? property_name : "(null)");
-     g_return_val_if_reached (FALSE);
- }
- 
-diff --git a/src/ibusengine.c b/src/ibusengine.c
-index 8aa27b66..321a58a1 100644
---- a/src/ibusengine.c
-+++ b/src/ibusengine.c
-@@ -1512,11 +1512,10 @@ _ibus_engine_get_active_surrounding_text (IBusEngine      *engine,
-                                           GDBusConnection *connection,
-                                           GError         **error)
- {
--    if (error) {
--        *error = NULL;
--    }
--
--    return g_variant_new_boolean (engine->priv->has_active_surrounding_text);
-+    GVariant *retval = g_variant_new_boolean (
-+            engine->priv->has_active_surrounding_text);
-+    g_assert (retval);
-+    return retval;
- }
- 
- /**
-@@ -1529,11 +1528,9 @@ _ibus_engine_has_focus_id (IBusEngine      *engine,
-                            GDBusConnection *connection,
-                            GError         **error)
- {
--    if (error) {
--        *error = NULL;
--    }
--
--    return g_variant_new_boolean (engine->priv->has_focus_id);
-+    GVariant *retval = g_variant_new_boolean (engine->priv->has_focus_id);
-+    g_assert (retval);
-+    return retval;
- }
- 
- static GVariant *
-@@ -1556,6 +1553,8 @@ ibus_engine_service_get_property (IBusService        *service,
-         { "ActiveSurroundingText",  _ibus_engine_get_active_surrounding_text },
-     };
- 
-+    if (error)
-+        *error = NULL;
-     if (g_strcmp0 (interface_name, IBUS_INTERFACE_ENGINE) != 0) {
-         return IBUS_SERVICE_CLASS (ibus_engine_parent_class)->
-                 service_get_property (service,
-@@ -1575,9 +1574,12 @@ ibus_engine_service_get_property (IBusService        *service,
-         }
-     }
- 
--    g_warning ("service_get_property received an unknown property: %s",
--               property_name ? property_name : "(null)");
--    return NULL;
-+    g_set_error (error,
-+                 G_DBUS_ERROR,
-+                 G_DBUS_ERROR_FAILED,
-+                 "service_get_property received an unknown property: %s",
-+                 property_name ? property_name : "(null)");
-+    g_return_val_if_reached (NULL);
- }
- 
- static gboolean
-@@ -1592,6 +1594,8 @@ ibus_engine_service_set_property (IBusService        *service,
- {
-     IBusEngine *engine = IBUS_ENGINE (service);
- 
-+    if (error)
-+        *error = NULL;
-     if (g_strcmp0 (interface_name, IBUS_INTERFACE_ENGINE) != 0) {
-         return IBUS_SERVICE_CLASS (ibus_engine_parent_class)->
-             service_set_property (service,
-@@ -1604,8 +1608,15 @@ ibus_engine_service_set_property (IBusService        *service,
-                                   error);
-     }
- 
--    if (!ibus_engine_service_authorized_method (service, connection))
-+    if (!ibus_engine_service_authorized_method (service, connection)) {
-+        /* No error message due to the security issue but GError is required
-+         * by gdbusconnection.c:invoke_set_property_in_idle_cb() */
-+        g_set_error (error,
-+                     G_DBUS_ERROR,
-+                     G_DBUS_ERROR_FAILED,
-+                     " ");
-         return FALSE;
-+    }
- 
-     if (g_strcmp0 (property_name, "ContentType") == 0) {
-         guint purpose = 0;
-@@ -1629,6 +1640,11 @@ ibus_engine_service_set_property (IBusService        *service,
-         return TRUE;
-     }
- 
-+    g_set_error (error,
-+                 G_DBUS_ERROR,
-+                 G_DBUS_ERROR_FAILED,
-+                 "service_set_property received an unknown property: %s",
-+                 property_name ? property_name : "(null)");
-     g_return_val_if_reached (FALSE);
- }
- 
-diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c
-index 3d1668b2..409d5a56 100644
---- a/src/ibusenginesimple.c
-+++ b/src/ibusenginesimple.c
-@@ -158,7 +158,7 @@ ibus_engine_simple_init (IBusEngineSimple *simple)
-                                     G_RESOURCE_LOOKUP_FLAGS_NONE,
-                                     &error);
-     if (error) {
--        g_warning ("Nout found compose resource %s", error->message);
-+        g_warning ("Not found compose resource %s", error->message);
-         g_clear_error (&error);
-         return;
-     }
-diff --git a/src/ibusservice.c b/src/ibusservice.c
-index 60255bd5..d207f707 100644
---- a/src/ibusservice.c
-+++ b/src/ibusservice.c
-@@ -2,7 +2,7 @@
- /* vim:set et sts=4: */
- /* ibus - The Input Bus
-  * Copyright (C) 2008-2015 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2015-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2015-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
-  * Copyright (C) 2008-2019 Red Hat, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -370,8 +370,9 @@ ibus_service_service_method_call (IBusService           *service,
-     g_dbus_method_invocation_return_error (invocation,
-                                            G_DBUS_ERROR,
-                                            G_DBUS_ERROR_UNKNOWN_METHOD,
--                                           "%s::%s", interface_name, method_name);
--    return;
-+                                           "%s::%s",
-+                                           interface_name, method_name);
-+    g_return_if_reached ();
- }
- 
- static GVariant *
-@@ -383,7 +384,15 @@ ibus_service_service_get_property (IBusService     *service,
-                                   const gchar      *property_name,
-                                   GError          **error)
- {
--    return NULL;
-+    if (error) {
-+        *error = NULL;
-+        g_set_error (error,
-+                     G_DBUS_ERROR,
-+                     G_DBUS_ERROR_FAILED,
-+                     "service_get_property received an unknown property: %s",
-+                     property_name ? property_name : "(null)");
-+    }
-+    g_return_val_if_reached (NULL);
- }
- 
- static gboolean
-@@ -396,7 +405,15 @@ ibus_service_service_set_property (IBusService     *service,
-                                   GVariant         *value,
-                                   GError          **error)
- {
--    return FALSE;
-+    if (error) {
-+        *error = NULL;
-+        g_set_error (error,
-+                     G_DBUS_ERROR,
-+                     G_DBUS_ERROR_FAILED,
-+                     "service_set_property received an unknown property: %s",
-+                     property_name ? property_name : "(null)");
-+    }
-+    g_return_val_if_reached (FALSE);
- }
- 
- static void
--- 
-2.38.1
-

                 reply	other threads:[~2026-05-31  2:08 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178019328622.1.15236656248940941244.rpms-ibus-f48dc0ddb5c6@fedoraproject.org \
    --to=tfujiwar@redhat.com \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox