public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ibus] autotool: Update ibus-HEAD.patch from upstream
@ 2026-05-31 2:07 Takao Fujiwara
0 siblings, 0 replies; only message in thread
From: Takao Fujiwara @ 2026-05-31 2:07 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/ibus
Branch : autotool
Commit : 677e87ac8992872f3bada01d5b01e429d506a00c
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date : 2019-07-26T12:28:32+09:00
Stats : +14745/-157 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/ibus/c/677e87ac8992872f3bada01d5b01e429d506a00c?branch=autotool
Log:
Update ibus-HEAD.patch from upstream
- Integrate a new compose feature
- Generate ibus-tests and ibus-desktop-testing sub packages
---
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index d54c1a8..5535d68 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1,154 +1,262 @@
-From 05a10950d635602fb3fcf4ed0021aa0b15dbd698 Mon Sep 17 00:00:00 2001
+From 026b19ef169dd9612d8a4a1ee34f7c42e7215c9a Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Thu, 9 May 2019 15:49:09 +0900
-Subject: [PATCH] src: Make ISO 639 language names with title
-
-Danish translations are small in iso-codes-iso-639-2-da.po for the
-genral usage but the users ask the title format on UI.
-Now ibus_get_language_name() and ibus_get_untranslated_language_name()
-return the dynamic allocation instead of the static characters
-to make the capital character.
+Date: Wed, 13 Mar 2019 19:16:17 +0900
+Subject: [PATCH 01/27] setup: Enable to run ibus-setup with a different python
-BUG=https://github.com/ibus/ibus/issues/2079
+BUG=https://github.com/ibus/ibus/issues/2086
---
- src/ibusutil.c | 63 ++++++++++++++++++++++++++++++++++++++++++--------
- src/ibusutil.h | 8 +++----
- 2 files changed, 58 insertions(+), 13 deletions(-)
+ setup/ibus-setup.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/src/ibusutil.c b/src/ibusutil.c
-index fd1da006..9d003e2e 100644
---- a/src/ibusutil.c
-+++ b/src/ibusutil.c
-@@ -2,7 +2,7 @@
- /* vim:set et sts=4: */
- /* bus - The Input Bus
- * Copyright (C) 2008-2015 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2010-2017 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2010-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
- * Copyright (C) 2008-2016 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
-@@ -125,8 +125,8 @@ _load_lang()
- ibus_xml_free (node);
- }
+diff --git a/setup/ibus-setup.in b/setup/ibus-setup.in
+index bb5c85cf..4a6830af 100644
+--- a/setup/ibus-setup.in
++++ b/setup/ibus-setup.in
+@@ -3,7 +3,7 @@
+ # ibus - The Input Bus
+ #
+ # Copyright (c) 2007-2010 Peng Huang <shawn.p.huang@gmail.com>
+-# Copyright (c) 2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
++# Copyright (c) 2018-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ # Copyright (c) 2007-2018 Red Hat, Inc.
+ #
+ # This library is free software; you can redistribute it and/or
+@@ -27,5 +27,5 @@ export IBUS_PREFIX=@prefix@
+ export IBUS_DATAROOTDIR=@datarootdir@
+ export IBUS_LOCALEDIR=@localedir@
+ export IBUS_LIBEXECDIR=${libexecdir}
+-exec @PYTHON@ @prefix@/share/ibus/setup/main.py $@
++exec ${PYTHON:-@PYTHON@} @prefix@/share/ibus/setup/main.py $@
--const gchar *
--ibus_get_untranslated_language_name (const gchar *_locale)
-+const static gchar *
-+ibus_get_untranslated_raw_language_name (const gchar *_locale)
- {
- const gchar *retval;
- gchar *p = NULL;
-@@ -148,19 +148,64 @@ ibus_get_untranslated_language_name (const gchar *_locale)
- return "Other";
- }
+--
+2.21.0
+
+From 2825bfc13618d382444aa1f87be22cd86e9bba29 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Wed, 13 Mar 2019 19:35:19 +0900
+Subject: [PATCH 02/27] src: Update ibusunicodegen.h for Unicode UCD 12.0
+
+---
+ src/ibusunicodegen.h | 36 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+diff --git a/src/ibusunicodegen.h b/src/ibusunicodegen.h
+index 9952fe0a..6a60a5a9 100644
+--- a/src/ibusunicodegen.h
++++ b/src/ibusunicodegen.h
+@@ -855,6 +855,10 @@ const static char *unicode_blocks[] = {
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+ N_("Sogdian"),
++ /* TRANSLATORS: You might refer the translations from gucharmap with
++ the following command:
++ msgmerge -C gucharmap.po ibus.po ibus.pot */
++ N_("Elymaic"),
+ /* TRANSLATORS: You might refer the translations from gucharmap with
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+@@ -935,6 +939,10 @@ const static char *unicode_blocks[] = {
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+ N_("Warang Citi"),
++ /* TRANSLATORS: You might refer the translations from gucharmap with
++ the following command:
++ msgmerge -C gucharmap.po ibus.po ibus.pot */
++ N_("Nandinagari"),
+ /* TRANSLATORS: You might refer the translations from gucharmap with
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+@@ -967,6 +975,10 @@ const static char *unicode_blocks[] = {
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+ N_("Makasar"),
++ /* TRANSLATORS: You might refer the translations from gucharmap with
++ the following command:
++ msgmerge -C gucharmap.po ibus.po ibus.pot */
++ N_("Tamil Supplement"),
+ /* TRANSLATORS: You might refer the translations from gucharmap with
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+@@ -983,6 +995,10 @@ const static char *unicode_blocks[] = {
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+ N_("Egyptian Hieroglyphs"),
++ /* TRANSLATORS: You might refer the translations from gucharmap with
++ the following command:
++ msgmerge -C gucharmap.po ibus.po ibus.pot */
++ N_("Egyptian Hieroglyph Format Controls"),
+ /* TRANSLATORS: You might refer the translations from gucharmap with
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+@@ -1031,6 +1047,10 @@ const static char *unicode_blocks[] = {
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+ N_("Kana Extended-A"),
++ /* TRANSLATORS: You might refer the translations from gucharmap with
++ the following command:
++ msgmerge -C gucharmap.po ibus.po ibus.pot */
++ N_("Small Kana Extension"),
+ /* TRANSLATORS: You might refer the translations from gucharmap with
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+@@ -1079,6 +1099,14 @@ const static char *unicode_blocks[] = {
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+ N_("Glagolitic Supplement"),
++ /* TRANSLATORS: You might refer the translations from gucharmap with
++ the following command:
++ msgmerge -C gucharmap.po ibus.po ibus.pot */
++ N_("Nyiakeng Puachue Hmong"),
++ /* TRANSLATORS: You might refer the translations from gucharmap with
++ the following command:
++ msgmerge -C gucharmap.po ibus.po ibus.pot */
++ N_("Wancho"),
+ /* TRANSLATORS: You might refer the translations from gucharmap with
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+@@ -1091,6 +1119,10 @@ const static char *unicode_blocks[] = {
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+ N_("Indic Siyaq Numbers"),
++ /* TRANSLATORS: You might refer the translations from gucharmap with
++ the following command:
++ msgmerge -C gucharmap.po ibus.po ibus.pot */
++ N_("Ottoman Siyaq Numbers"),
+ /* TRANSLATORS: You might refer the translations from gucharmap with
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+@@ -1151,6 +1183,10 @@ const static char *unicode_blocks[] = {
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+ N_("Chess Symbols"),
++ /* TRANSLATORS: You might refer the translations from gucharmap with
++ the following command:
++ msgmerge -C gucharmap.po ibus.po ibus.pot */
++ N_("Symbols and Pictographs Extended-A"),
+ /* TRANSLATORS: You might refer the translations from gucharmap with
+ the following command:
+ msgmerge -C gucharmap.po ibus.po ibus.pot */
+--
+2.21.0
+
+From 6099a45f2e734458202383fdf157aea95b1f35a5 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Wed, 13 Mar 2019 19:36:05 +0900
+Subject: [PATCH 03/27] build: Delete built sources with MAINTAINERCLEANFILES
+
+BUG=https://github.com/ibus/ibus/issues/2082
+---
+ src/Makefile.am | 9 ++++++++-
+ ui/gtk3/Makefile.am | 6 ++++++
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 6a62e0f0..a8e3d07d 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-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
++# Copyright (c) 2015-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ # Copyright (c) 2007-2017 Red Hat, Inc.
+ #
+ # This library is free software; you can redistribute it and/or
+@@ -256,6 +256,10 @@ dicts/emoji-en.dict: emoji-parser
+ echo "WARNING: Not found $(EMOJI_ANNOTATION_DIR)/en.xml" 1>&2; \
+ fi; \
+ for f in $(LANG_FILES) ; do \
++ if test -f dicts/emoji-$$f.dict; then \
++ echo "Already exists dicts/emoji-$$f.dict"; \
++ continue; \
++ fi; \
+ if test -f \
+ "$(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$$f.xml" ; then \
+ xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$$f.xml"; \
+@@ -279,6 +283,9 @@ dicts/emoji-en.dict: emoji-parser
+ echo "Generated $$plus_comment dicts/emoji-$$f.dict"; \
+ done
--const gchar *
-+static char *
-+get_first_item_in_semicolon_list (const char *list)
-+{
-+ char **items;
-+ char *item;
-+
-+ items = g_strsplit (list, "; ", 2);
-+
-+ item = g_strdup (items[0]);
-+ g_strfreev (items);
-+
-+ return item;
-+}
-+
-+static char *
-+capitalize_utf8_string (const char *str)
-+{
-+ char first[8] = { 0 };
-+
-+ if (!str)
-+ return NULL;
++ibusemojigen.h: dicts/emoji-en.dict
++ $(NULL)
+
-+ g_unichar_to_utf8 (g_unichar_totitle (g_utf8_get_char (str)), first);
-+
-+ return g_strconcat (first, g_utf8_offset_to_pointer (str, 1), NULL);
-+}
+ install-data-hook: $(dict_DATA)
+ @$(NORMAL_INSTALL)
+ $(AM_V_at)list='$(wildcard dicts/*.dict)'; \
+diff --git a/ui/gtk3/Makefile.am b/ui/gtk3/Makefile.am
+index 60205aa5..667d51c6 100644
+--- a/ui/gtk3/Makefile.am
++++ b/ui/gtk3/Makefile.am
+@@ -130,6 +130,8 @@ CLEANFILES = \
+ gtkpanel.xml \
+ $(NULL)
+
++MAINTAINERCLEANFILES =
+
-+gchar *
-+ibus_get_untranslated_language_name (const gchar *_locale)
-+{
-+ const gchar *raw = ibus_get_untranslated_raw_language_name (_locale);
-+ gchar *tmp = get_first_item_in_semicolon_list (raw);
-+ gchar *retval = capitalize_utf8_string (tmp);
-+ g_free (tmp);
-+ return retval;
-+}
+ emoji_headers = \
+ ibusemojidialog.h \
+ $(NULL)
+@@ -192,6 +194,8 @@ emojierapp.o: $(srcdir)/emojierapp.c
+ $(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+ $(NULL)
+
++MAINTAINERCLEANFILES += emojierapp.c
+
-+gchar *
- ibus_get_language_name (const gchar *_locale)
- {
-- const gchar *retval = ibus_get_untranslated_language_name (_locale);
-+ const gchar *raw = ibus_get_untranslated_raw_language_name (_locale);
-+ const gchar *translation = NULL;
-+ gchar *tmp;
-+ gchar *retval;
+ component_DATA += gtkextension.xml
+ CLEANFILES += gtkextension.xml
+ libexec_PROGRAMS += ibus-extension-gtk3
+@@ -240,6 +244,8 @@ panelbinding.o: $(srcdir)/panelbinding.c
+ $(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+ $(NULL)
- #ifdef ENABLE_NLS
-- if (g_strcmp0 (retval, "Other") == 0)
-- return dgettext (GETTEXT_PACKAGE, N_("Other"));
-+ if (g_strcmp0 (raw, "Other") == 0)
-+ return g_strdup (dgettext (GETTEXT_PACKAGE, N_("Other")));
- else
-- return dgettext ("iso_639-3", retval);
-+ translation = dgettext ("iso_639-3", raw);
- #else
-- return retval;
-+ translation = raw;
- #endif
++MAINTAINERCLEANFILES += extension.c panelbinding.c
+
-+ tmp = get_first_item_in_semicolon_list (translation);
-+ retval = capitalize_utf8_string (tmp);
-+ g_free (tmp);
-+ return retval;
- }
+ man_seven_files = $(man_seven_in_files:.7.in=.7)
+ man_seven_DATA =$(man_seven_files:.7=.7.gz)
+ man_sevendir = $(mandir)/man7
+--
+2.21.0
+
+From b497de5bc6525769e03b65c73fc991d4aa006223 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Wed, 20 Mar 2019 17:44:26 +0900
+Subject: [PATCH 04/27] test: Set GTK_IM_MODULE in test-console.sh
+
+---
+ src/tests/Makefile.am | 4 ++--
+ 1 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
+index e337a59b..e2ff5ea7 100644
+--- a/src/tests/Makefile.am
++++ b/src/tests/Makefile.am
+@@ -3,7 +3,7 @@
+ # ibus - The Input Bus
+ #
+ # Copyright (c) 2007-2015 Peng Huang <shawn.p.huang@gmail.com>
+-# Copyright (c) 2015-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
++# Copyright (c) 2015-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ # Copyright (c) 2007-2018 Red Hat, Inc.
+ #
+ # This library is free software; you can redistribute it and/or
+@@ -78,7 +78,7 @@ TESTS_ENVIRONMENT = \
- void
-diff --git a/src/ibusutil.h b/src/ibusutil.h
-index 226dd7a8..795365f6 100644
---- a/src/ibusutil.h
-+++ b/src/ibusutil.h
-@@ -2,8 +2,8 @@
- /* vim:set et sts=4: */
- /* bus - The Input Bus
- * Copyright (C) 2008-2015 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright (C) 2010-2017 Takao Fujiwara <takao.fujiwara1@gmail.com>
-- * Copyright (C) 2008-2016 Red Hat, Inc.
-+ * Copyright (C) 2010-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
-+ * Copyright (C) 2008-2018 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
-@@ -42,7 +42,7 @@
- *
- * Returns: untranslated language name
- */
--const gchar * ibus_get_untranslated_language_name
-+gchar * ibus_get_untranslated_language_name
- (const gchar *_locale);
+ LOG_COMPILER = $(srcdir)/runtest
- /**
-@@ -51,6 +51,6 @@ const gchar * ibus_get_untranslated_language_name
- *
- * Returns: translated language name
- */
--const gchar * ibus_get_language_name (const gchar *_locale);
-+gchar * ibus_get_language_name (const gchar *_locale);
+-EXTRA_DIST = runtest
++EXTRA_DIST = runtest ibus-compose.env
- #endif
+ ibus_bus_SOURCES = ibus-bus.c
+ ibus_bus_LDADD = $(prog_ldadd)
--
-2.20.1
+2.21.0
From 1cb5032e85d85f496e349236d1b74f17fb8db966 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Tue, 23 Apr 2019 15:40:45 +0900
-Subject: [PATCH] configure: Move ibus-setup from configure.ac to Makefile.am
+Subject: [PATCH 05/27] configure: Move ibus-setup from configure.ac to
+ Makefile.am
@localedir@ can be extracted to ${datarootdir}/locale and
it needs datarootdir=/usr/share in case configure.ac is used
@@ -203,12 +311,66 @@ index cb4dd8d1..34c8f136 100644
desktop_DATA = org.freedesktop.IBus.Setup.desktop
desktopdir = $(datadir)/applications
--
-2.20.1
+2.21.0
+
+From cc849c20d4dff31f6f88f93789790759bf087b77 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Tue, 23 Apr 2019 17:56:20 +0900
+Subject: [PATCH 06/27] NEWS: Add shortlog
+
+Update Makefile.am to insert shortlog in NEWS
+Update po/Makevars to add multiple COPYRIGHT_HOLDER
+---
+ Makefile.am | 7 +++++--
+ po/Makevars | 3 ++-
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index cf7460d6..9ff786dc 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3,8 +3,8 @@
+ # ibus - The Input Bus
+ #
+ # Copyright (c) 2007-2016 Peng Huang <shawn.p.huang@gmail.com>
+-# Copyright (c) 2015-2017 Takao Fujiwara <takao.fujiwara1@gmail.com>
+-# Copyright (c) 2007-2017 Red Hat, Inc.
++# Copyright (c) 2015-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
++# Copyright (c) 2007-2019 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
+@@ -103,6 +103,9 @@ dist-hook:
+ "$(IBUS_MAJOR_VERSION).$(IBUS_MINOR_VERSION).$$IBUS_PREV_MICRO_VERSION"; \
+ echo "Changes in IBus $(IBUS_VERSION)" > $(distdir)/NEWS; \
+ echo "" >> $(distdir)/NEWS; \
++ git shortlog $$IBUS_PREV_VERSION...$(IBUS_VERSION) \
++ >> $(distdir)/NEWS; \
++ echo "" >> $(distdir)/NEWS; \
+ git log $$IBUS_PREV_VERSION...$(IBUS_VERSION) --reverse \
+ --pretty=format:'%s (%an) %h' >> $(distdir)/NEWS; \
+ fi
+diff --git a/po/Makevars b/po/Makevars
+index d3fbeab2..1d16cc98 100644
+--- a/po/Makevars
++++ b/po/Makevars
+@@ -20,7 +20,8 @@ XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2
+ # or entity, or to disclaim their copyright. The empty string stands for
+ # the public domain; in this case the translators are expected to disclaim
+ # their copyright.
+-COPYRIGHT_HOLDER = Peng Huang <shawn.p.huang@gmail.com>
++COPYRIGHT_HOLDER = Peng Huang <shawn.p.huang@gmail.com> \
++Takao Fujiwara <takao.fujiwara1@gmail.com>
+
+ # This is the email address or URL to which the translators shall report
+ # bugs in the untranslated strings:
+--
+2.21.0
From 1c54fea645b2ec3a385d492e4ca30a70dbb87c3a Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Tue, 23 Apr 2019 18:44:45 +0900
-Subject: [PATCH] data/its: Add ibus.its for IME's component files
+Subject: [PATCH 07/27] data/its: Add ibus.its for IME's component files
IBusEngineDesc has translatable strings in longname and
description tags and they needs to be extracted by xgettext.
@@ -331,32 +493,205 @@ index 00000000..5a73798b
+ </locatingRule>
+</locatingRules>
--
-2.20.1
+2.21.0
-From cebe7a9553de69943b955ec99285f74961c9ee4e Mon Sep 17 00:00:00 2001
+From 91a256163427f04eb7763196b4ffe553911d2e01 Mon Sep 17 00:00:00 2001
+From: Gunnar Hjalmarsson <gunnarhj@users.noreply.github.com>
+Date: Tue, 7 May 2019 19:42:28 +0900
+Subject: [PATCH 08/27] bus: Indistinguishable address of ibus-daemon
+
+BUG=https://github.com/ibus/ibus/issues/2095
+---
+ bus/global.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bus/global.c b/bus/global.c
+index f147cd6f..2ba8b2a7 100644
+--- a/bus/global.c
++++ b/bus/global.c
+@@ -24,7 +24,7 @@
+ #include "global.h"
+
+ gchar **g_argv = NULL;
+-gchar *g_address = "unix:tmpdir=/tmp";
++gchar *g_address = "unix:tmpdir=/tmp/ibus";
+ gchar *g_cache = "auto";
+ gboolean g_mempro = FALSE;
+ gboolean g_verbose = FALSE;
+--
+2.21.0
+
+From 05a10950d635602fb3fcf4ed0021aa0b15dbd698 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Thu, 9 May 2019 15:49:21 +0900
-Subject: [PATCH] client/gtk2: Keep preedit cursor_pos and visible in clearing
- preedit text
+Date: Thu, 9 May 2019 15:49:09 +0900
+Subject: [PATCH 09/27] src: Make ISO 639 language names with title
-Clear the preedit_string but keep the preedit_cursor_pos and
-preedit_visible because a time lag could happen, firefox commit
-the preedit text before the preedit text is cleared and it cause
-a double commits of the Hangul preedit in firefox if the preedit
-would be located on the URL bar and click on anywhere of firefox
-out of the URL bar.
+Danish translations are small in iso-codes-iso-639-2-da.po for the
+genral usage but the users ask the title format on UI.
+Now ibus_get_language_name() and ibus_get_untranslated_language_name()
+return the dynamic allocation instead of the static characters
+to make the capital character.
+
+BUG=https://github.com/ibus/ibus/issues/2079
---
- client/gtk2/ibusimcontext.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
+ src/ibusutil.c | 63 ++++++++++++++++++++++++++++++++++++++++++--------
+ src/ibusutil.h | 8 +++----
+ 2 files changed, 58 insertions(+), 13 deletions(-)
-diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
-index 264a747a..5e3457ba 100644
---- a/client/gtk2/ibusimcontext.c
-+++ b/client/gtk2/ibusimcontext.c
-@@ -881,10 +881,18 @@ ibus_im_context_clear_preedit_text (IBusIMContext *ibusimcontext)
- ibusimcontext->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) {
- preedit_string = g_strdup (ibusimcontext->preedit_string);
- }
+diff --git a/src/ibusutil.c b/src/ibusutil.c
+index fd1da006..9d003e2e 100644
+--- a/src/ibusutil.c
++++ b/src/ibusutil.c
+@@ -2,7 +2,7 @@
+ /* vim:set et sts=4: */
+ /* bus - The Input Bus
+ * Copyright (C) 2008-2015 Peng Huang <shawn.p.huang@gmail.com>
+- * Copyright (C) 2010-2017 Takao Fujiwara <takao.fujiwara1@gmail.com>
++ * Copyright (C) 2010-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ * Copyright (C) 2008-2016 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+@@ -125,8 +125,8 @@ _load_lang()
+ ibus_xml_free (node);
+ }
+
+-const gchar *
+-ibus_get_untranslated_language_name (const gchar *_locale)
++const static gchar *
++ibus_get_untranslated_raw_language_name (const gchar *_locale)
+ {
+ const gchar *retval;
+ gchar *p = NULL;
+@@ -148,19 +148,64 @@ ibus_get_untranslated_language_name (const gchar *_locale)
+ return "Other";
+ }
+
+-const gchar *
++static char *
++get_first_item_in_semicolon_list (const char *list)
++{
++ char **items;
++ char *item;
++
++ items = g_strsplit (list, "; ", 2);
++
++ item = g_strdup (items[0]);
++ g_strfreev (items);
++
++ return item;
++}
++
++static char *
++capitalize_utf8_string (const char *str)
++{
++ char first[8] = { 0 };
++
++ if (!str)
++ return NULL;
++
++ g_unichar_to_utf8 (g_unichar_totitle (g_utf8_get_char (str)), first);
++
++ return g_strconcat (first, g_utf8_offset_to_pointer (str, 1), NULL);
++}
++
++gchar *
++ibus_get_untranslated_language_name (const gchar *_locale)
++{
++ const gchar *raw = ibus_get_untranslated_raw_language_name (_locale);
++ gchar *tmp = get_first_item_in_semicolon_list (raw);
++ gchar *retval = capitalize_utf8_string (tmp);
++ g_free (tmp);
++ return retval;
++}
++
++gchar *
+ ibus_get_language_name (const gchar *_locale)
+ {
+- const gchar *retval = ibus_get_untranslated_language_name (_locale);
++ const gchar *raw = ibus_get_untranslated_raw_language_name (_locale);
++ const gchar *translation = NULL;
++ gchar *tmp;
++ gchar *retval;
+
+ #ifdef ENABLE_NLS
+- if (g_strcmp0 (retval, "Other") == 0)
+- return dgettext (GETTEXT_PACKAGE, N_("Other"));
++ if (g_strcmp0 (raw, "Other") == 0)
++ return g_strdup (dgettext (GETTEXT_PACKAGE, N_("Other")));
+ else
+- return dgettext ("iso_639-3", retval);
++ translation = dgettext ("iso_639-3", raw);
+ #else
+- return retval;
++ translation = raw;
+ #endif
++
++ tmp = get_first_item_in_semicolon_list (translation);
++ retval = capitalize_utf8_string (tmp);
++ g_free (tmp);
++ return retval;
+ }
+
+ void
+diff --git a/src/ibusutil.h b/src/ibusutil.h
+index 226dd7a8..795365f6 100644
+--- a/src/ibusutil.h
++++ b/src/ibusutil.h
+@@ -2,8 +2,8 @@
+ /* vim:set et sts=4: */
+ /* bus - The Input Bus
+ * Copyright (C) 2008-2015 Peng Huang <shawn.p.huang@gmail.com>
+- * Copyright (C) 2010-2017 Takao Fujiwara <takao.fujiwara1@gmail.com>
+- * Copyright (C) 2008-2016 Red Hat, Inc.
++ * Copyright (C) 2010-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
++ * Copyright (C) 2008-2018 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
+@@ -42,7 +42,7 @@
+ *
+ * Returns: untranslated language name
+ */
+-const gchar * ibus_get_untranslated_language_name
++gchar * ibus_get_untranslated_language_name
+ (const gchar *_locale);
+
+ /**
+@@ -51,6 +51,6 @@ const gchar * ibus_get_untranslated_language_name
+ *
+ * Returns: translated language name
+ */
+-const gchar * ibus_get_language_name (const gchar *_locale);
++gchar * ibus_get_language_name (const gchar *_locale);
+
+ #endif
+--
+2.21.0
+
+From cebe7a9553de69943b955ec99285f74961c9ee4e Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Thu, 9 May 2019 15:49:21 +0900
+Subject: [PATCH 10/27] client/gtk2: Keep preedit cursor_pos and visible in
+ clearing preedit text
+
+Clear the preedit_string but keep the preedit_cursor_pos and
+preedit_visible because a time lag could happen, firefox commit
+the preedit text before the preedit text is cleared and it cause
+a double commits of the Hangul preedit in firefox if the preedit
+would be located on the URL bar and click on anywhere of firefox
+out of the URL bar.
+---
+ client/gtk2/ibusimcontext.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index 264a747a..5e3457ba 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -881,10 +881,18 @@ ibus_im_context_clear_preedit_text (IBusIMContext *ibusimcontext)
+ ibusimcontext->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) {
+ preedit_string = g_strdup (ibusimcontext->preedit_string);
+ }
+
+ /* Clear the preedit_string but keep the preedit_cursor_pos and
+ * preedit_visible because a time lag could happen, firefox commit
@@ -375,5 +710,14225 @@ index 264a747a..5e3457ba 100644
ibusimcontext);
if (preedit_string) {
--
-2.20.1
+2.21.0
+
+From b59f7f823b7b2051e4ca31834f9299a72f01b339 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Thu, 9 May 2019 17:02:21 +0900
+Subject: [PATCH 14/27] src: Support 32bit and multiple compose outputs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Compose file in en_US.UTF-8 now includes wide codepoints more than
+U+FFFF likes '<Multi_key> <F> <U> : "🖕" U1F595' but the current
+gtk_compose_seqs_compact[] is a guint16 array.
+To support 32bit and multiple compose outputs, the array is now
+separated to 16bit and 32bit arrays and 32bit array is also
+separated to gtk_compose_seqs_compact_32bit_first[] for 16bit
+key sequences and gtk_compose_seqs_compact_32bit_second[] for
+32bit output values.
+
+BUG=https://github.com/ibus/ibus/issues/2074
+---
+ src/gtkimcontextsimpleseqs.h | 9912 +++++++++++++++++----------------
+ src/ibuscomposetable.h | 13 +-
+ src/ibusenginesimple.c | 166 +-
+ src/ibusenginesimpleprivate.h | 8 +-
+ 4 files changed, 5380 insertions(+), 4719 deletions(-)
+
+diff --git a/src/gtkimcontextsimpleseqs.h b/src/gtkimcontextsimpleseqs.h
+index 632391a1..ffa5f125 100644
+--- a/src/gtkimcontextsimpleseqs.h
++++ b/src/gtkimcontextsimpleseqs.h
+@@ -94,4680 +94,5244 @@ 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, 10348, 14044, 15919,
+-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_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_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_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_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_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_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_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_asciicircum, 0x00B9,
+-IBUS_KEY_2, IBUS_KEY_3, 0x2154,
+-IBUS_KEY_2, IBUS_KEY_5, 0x2156,
+-IBUS_KEY_2, IBUS_KEY_asciicircum, 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_asciicircum, 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_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_o, 0x0151,
+-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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_beth, 0xFB31,
+-0x05BC, IBUS_KEY_hebrew_gimmel, 0xFB32,
+-0x05BC, IBUS_KEY_hebrew_daleth, 0xFB33,
+-0x05BC, IBUS_KEY_hebrew_he, 0xFB34,
+-0x05BC, IBUS_KEY_hebrew_waw, 0xFB35,
+-0x05BC, IBUS_KEY_hebrew_zayin, 0xFB36,
+-0x05BC, IBUS_KEY_hebrew_teth, 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_samekh, 0xFB41,
+-0x05BC, IBUS_KEY_hebrew_finalpe, 0xFB43,
+-0x05BC, IBUS_KEY_hebrew_pe, 0xFB44,
+-0x05BC, IBUS_KEY_hebrew_zadi, 0xFB46,
+-0x05BC, IBUS_KEY_hebrew_qoph, 0xFB47,
+-0x05BC, IBUS_KEY_hebrew_resh, 0xFB48,
+-0x05BC, IBUS_KEY_hebrew_shin, 0xFB49,
+-0x05BC, IBUS_KEY_hebrew_taw, 0xFB4A,
+-0x05BF, IBUS_KEY_hebrew_beth, 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_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_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_KP_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_KP_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_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/ibuscomposetable.h b/src/ibuscomposetable.h
+index 8346df6d..4bf89211 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-2016 Takao Fujiwara <takao.fujiwara1@gmail.com>
++ * Copyright (C) 2013-2019 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
+@@ -30,6 +30,8 @@ G_BEGIN_DECLS
+
+ typedef struct _IBusComposeTable IBusComposeTable;
+ typedef struct _IBusComposeTableCompact IBusComposeTableCompact;
++typedef struct _IBusComposeTableCompactEx IBusComposeTableCompactEx;
++typedef struct _IBusComposeTableCompactPrivate IBusComposeTableCompactPrivate;
+
+ struct _IBusComposeTable
+ {
+@@ -47,6 +49,15 @@ struct _IBusComposeTableCompact
+ gint n_index_stride;
+ };
+
++struct _IBusComposeTableCompactEx
++{
++ const guint16 *data;
++ gint max_seq_len;
++ gint n_index_size;
++ gint n_index_stride;
++ IBusComposeTableCompactPrivate *priv;
++};
++
+ IBusComposeTable *ibus_compose_table_new_with_file (const gchar *compose_file);
+ GSList *ibus_compose_table_list_add_array
+ (GSList
+diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c
+index 7615f121..fa4ddf5f 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-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
++ * Copyright (C) 2015-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ * Copyright (C) 2014-2017 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+@@ -89,16 +89,36 @@ struct _IBusEngineSimplePrivate {
+ gboolean lookup_table_visible;
+ };
+
++struct _IBusComposeTableCompactPrivate
++{
++ const guint32 *data2;
++};
++
+ /* 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
+ */
+-const IBusComposeTableCompact ibus_compose_table_compact = {
++const IBusComposeTableCompactPrivate ibus_compose_table_compact_32bit_priv = {
++ gtk_compose_seqs_compact_32bit_second
++};
++
++const IBusComposeTableCompactEx ibus_compose_table_compact = {
+ gtk_compose_seqs_compact,
+ 5,
+ 30,
+- 6
++ 6,
++ NULL
++};
++
++const IBusComposeTableCompactEx ibus_compose_table_compact_32bit = {
++ gtk_compose_seqs_compact_32bit_first,
++ 5,
++ 9,
++ 6,
++ &ibus_compose_table_compact_32bit_priv
+ };
+
+ static GSList *global_tables;
+@@ -320,12 +340,10 @@ ibus_engine_simple_commit_str (IBusEngineSimple *simple,
+ priv->in_hex_sequence = FALSE;
+ priv->tentative_match = 0;
+ priv->tentative_match_len = 0;
+- ibus_engine_simple_update_preedit_text (simple);
+ }
+ if (priv->tentative_emoji || priv->in_emoji_sequence) {
+ priv->in_emoji_sequence = FALSE;
+ g_clear_pointer (&priv->tentative_emoji, g_free);
+- ibus_engine_simple_update_preedit_text (simple);
+ }
+
+ ibus_engine_commit_text ((IBusEngine *)simple,
+@@ -680,11 +698,11 @@ check_table (IBusEngineSimple *simple,
+ }
+
+ gboolean
+-ibus_check_compact_table (const IBusComposeTableCompact *table,
+- guint16 *compose_buffer,
+- gint n_compose,
+- gboolean *compose_finish,
+- gunichar *output_char)
++ibus_check_compact_table (const IBusComposeTableCompactEx *table,
++ guint16 *compose_buffer,
++ gint n_compose,
++ gboolean *compose_finish,
++ gunichar **output_chars)
+ {
+ gint row_stride;
+ guint16 *seq_index;
+@@ -693,8 +711,8 @@ ibus_check_compact_table (const IBusComposeTableCompact *table,
+
+ if (compose_finish)
+ *compose_finish = FALSE;
+- if (output_char)
+- *output_char = 0;
++ if (output_chars)
++ *output_chars = NULL;
+
+ CHECK_COMPOSE_BUFFER_LENGTH (n_compose);
+
+@@ -730,41 +748,81 @@ ibus_check_compact_table (const IBusComposeTableCompact *table,
+ // g_debug ("compact: %04x ", *seq_index);
+ seq = NULL;
+
+- for (i = n_compose - 1; i < table->max_seq_len; i++) {
+- row_stride = i + 1;
++ 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) {
+- seq = bsearch (compose_buffer + 1,
++ if (seq_index[i + 1] - seq_index[i] > 0) {
++ 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);
+- // g_debug ("seq = %p", 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) {
++ *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;
++ }
+
+- if (seq) {
+- if (i == n_compose - 1)
+- break;
+- else
+- return TRUE;
++ // g_debug ("U+%04X\n", value);
++ 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) {
++ 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) {
++ *output_chars = g_new (gunichar, 2);
++ (*output_chars)[0] = seq[row_stride - 1];
++ (*output_chars)[1] = 0;
++ }
+
+- if (!seq) {
+- // g_debug ("no\n");
+- return FALSE;
++ // g_debug ("U+%04X\n", value);
++ return TRUE;
++ }
+ }
+- else {
+- if (compose_finish)
+- *compose_finish = TRUE;
+- if (output_char)
+- *output_char = seq[row_stride - 1];
+
+- // g_debug ("U+%04X\n", value);
+- return TRUE;
+- }
++ g_assert_not_reached ();
+ }
+
++
+ /* Checks if a keysym is a dead key. Dead key keysym values are defined in
+ * ../gdk/gdkkeysyms.h and the first is GDK_KEY_dead_grave. As X.Org is updated,
+ * more dead keys are added and we need to update the upper limit.
+@@ -949,8 +1007,8 @@ no_sequence_matches (IBusEngineSimple *simple,
+ (IBusEngine *)simple, keyval, keycode, modifiers);
+ } else if (priv->tentative_emoji && *priv->tentative_emoji) {
+ ibus_engine_simple_commit_str (simple, priv->tentative_emoji);
+- g_clear_pointer (&priv->tentative_emoji, g_free);
+ priv->compose_buffer[0] = 0;
++ ibus_engine_simple_update_preedit_text (simple);
+ } else {
+ priv->compose_buffer[0] = 0;
+ if (n_compose > 1) {
+@@ -1083,6 +1141,9 @@ ibus_engine_simple_check_all_compose_table (IBusEngineSimple *simple,
+ IBusEngineSimplePrivate *priv = simple->priv;
+ gboolean compose_finish;
+ gunichar output_char;
++ gunichar *output_chars = NULL;
++ gchar *output_str = NULL;
++ GError *error = NULL;
+ GSList *list = global_tables;
+
+ while (list) {
+@@ -1098,15 +1159,37 @@ ibus_engine_simple_check_all_compose_table (IBusEngineSimple *simple,
+ priv->compose_buffer,
+ n_compose,
+ &compose_finish,
+- &output_char)) {
++ &output_chars)) {
+ if (compose_finish) {
+- ibus_engine_simple_commit_char (simple, output_char);
++ ibus_engine_simple_commit_char (simple, *output_chars);
++ g_free (output_chars);
+ priv->compose_buffer[0] = 0;
+ }
+ ibus_engine_simple_update_preedit_text (simple);
+ return TRUE;
+ }
+-
++ if (ibus_check_compact_table (&ibus_compose_table_compact_32bit,
++ priv->compose_buffer,
++ n_compose,
++ &compose_finish,
++ &output_chars)) {
++ if (compose_finish) {
++ output_str = g_ucs4_to_utf8 (output_chars, -1, NULL, NULL, &error);
++ if (output_str) {
++ ibus_engine_simple_commit_str (simple, output_str);
++ g_free (output_str);
++ g_free (output_chars);
++ } else {
++ g_warning ("Failed to output multiple characters: %s",
++ error->message);
++ g_error_free (error);
++ }
++ priv->compose_buffer[0] = 0;
++ }
++
++ ibus_engine_simple_update_preedit_text (simple);
++ return TRUE;
++ }
+ if (ibus_check_algorithmically (priv->compose_buffer,
+ n_compose,
+ &output_char)) {
+@@ -1177,7 +1260,8 @@ ibus_engine_simple_process_key_event (IBusEngine *engine,
+ (keyval == IBUS_KEY_Control_L || keyval == IBUS_KEY_Control_R)) {
+ if (priv->tentative_emoji && *priv->tentative_emoji) {
+ ibus_engine_simple_commit_str (simple, priv->tentative_emoji);
+- g_clear_pointer (&priv->tentative_emoji, g_free);
++ priv->compose_buffer[0] = 0;
++ ibus_engine_simple_update_preedit_text (simple);
+ } else if (n_compose == 0) {
+ priv->modifiers_dropped = TRUE;
+ } else {
+@@ -1335,7 +1419,8 @@ ibus_engine_simple_process_key_event (IBusEngine *engine,
+ if (priv->in_emoji_sequence && have_hex_mods && is_emoji_start) {
+ if (priv->tentative_emoji && *priv->tentative_emoji) {
+ ibus_engine_simple_commit_str (simple, priv->tentative_emoji);
+- g_clear_pointer (&priv->tentative_emoji, g_free);
++ priv->compose_buffer[0] = 0;
++ ibus_engine_simple_update_preedit_text (simple);
+ }
+ else {
+ if (n_compose > 0) {
+@@ -1531,6 +1616,7 @@ ibus_engine_simple_process_key_event (IBusEngine *engine,
+ ibus_engine_simple_commit_str (simple,
+ priv->tentative_emoji);
+ priv->compose_buffer[0] = 0;
++ ibus_engine_simple_update_preedit_text (simple);
+ } else {
+ g_clear_pointer (&priv->tentative_emoji, g_free);
+ priv->in_emoji_sequence = FALSE;
+diff --git a/src/ibusenginesimpleprivate.h b/src/ibusenginesimpleprivate.h
+index cac404b1..c86c5324 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 Takao Fujiwara <takao.fujiwara1@gmail.com>
++ * Copyright (C) 2016-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ * Copyright (C) 2016 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+@@ -26,17 +26,17 @@
+
+ G_BEGIN_DECLS
+
+-extern const IBusComposeTableCompact ibus_compose_table_compact;
++extern const IBusComposeTableCompactEx ibus_compose_table_compact;
+
+ gboolean ibus_check_algorithmically (const guint16 *compose_buffer,
+ gint n_compose,
+ gunichar *output);
+-gboolean ibus_check_compact_table (const IBusComposeTableCompact
++gboolean ibus_check_compact_table (const IBusComposeTableCompactEx
+ *table,
+ guint16 *compose_buffer,
+ gint n_compose,
+ gboolean *compose_finish,
+- gunichar *output_char);
++ gunichar **output_chars);
+
+ G_END_DECLS
+
+--
+2.21.0
+
+From 5b6ad433f79c2e4781688d4985a15836d81f0a72 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 24 May 2019 14:34:05 +0900
+Subject: [PATCH 15/27] src: Enable multiple compose output and long key
+ sequences in user comopse
+
+Curently the max key sequences of user compose keys depends on the
+max key sequences of system compose keys, IBUS_MAX_COMPOSE_LEN.
+This change will have the max key sequences by user compose table
+and also will separate the user compose table with 16bit compose table
+and 32bit one to follow another change of system compose table to be able
+to output multiple compose outputs and 32bit compose ones likes emoji
+charaters.
+
+BUG=https://github.com/ibus/ibus/issues/1990
+---
+ src/ibuscomposetable.c | 639 ++++++++++++++++++++++------------
+ src/ibuscomposetable.h | 20 +-
+ src/ibusenginesimple.c | 87 +++--
+ src/ibusenginesimple.h | 4 +-
+ src/ibusenginesimpleprivate.h | 9 +
+ 5 files changed, 512 insertions(+), 247 deletions(-)
+
+diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c
+index 1c0ece41..4ac54e25 100644
+--- a/src/ibuscomposetable.c
++++ b/src/ibuscomposetable.c
+@@ -35,22 +35,25 @@
+ #include "ibusenginesimpleprivate.h"
+
+ #define IBUS_COMPOSE_TABLE_MAGIC "IBusComposeTable"
+-#define IBUS_COMPOSE_TABLE_VERSION (2)
++#define IBUS_COMPOSE_TABLE_VERSION (3)
+
+ typedef struct {
+ gunichar *sequence;
+- gunichar value[2];
++ gunichar *values;
+ gchar *comment;
+ } IBusComposeData;
+
++
+ static void
+ ibus_compose_data_free (IBusComposeData *compose_data)
+ {
+ g_free (compose_data->sequence);
++ g_free (compose_data->values);
+ g_free (compose_data->comment);
+ g_slice_free (IBusComposeData, compose_data);
+ }
+
++
+ static void
+ ibus_compose_list_element_free (IBusComposeData *compose_data,
+ gpointer data)
+@@ -58,6 +61,18 @@ ibus_compose_list_element_free (IBusComposeData *compose_data,
+ ibus_compose_data_free (compose_data);
+ }
+
++
++static guint
++unichar_length (gunichar *uni_array)
++{
++ guint i = 0;
++ g_return_val_if_fail (uni_array, 0);
++ while (uni_array[i])
++ ++i;
++ return i;
++}
++
++
+ static gboolean
+ is_codepoint (const gchar *str)
+ {
+@@ -75,63 +90,85 @@ is_codepoint (const gchar *str)
+ return TRUE;
+ }
+
++
+ static gboolean
+ parse_compose_value (IBusComposeData *compose_data,
+ const gchar *val,
+ const gchar *line)
+ {
+- gchar **words = g_strsplit (val, "\"", 3);
+- gunichar uch;
++ gchar *head, *end, *p;
++ gchar *ustr = NULL;
++ gunichar *uchars = NULL, *up;
++ GError *error = NULL;
++ int n_uchars = 0;
+
+- if (g_strv_length (words) < 3) {
++ if (!(head = strchr (val, '\"'))) {
+ g_warning ("Need to double-quote the value: %s: %s", val, line);
+ goto fail;
+ }
+-
+- uch = g_utf8_get_char (words[1]);
+-
+- if (uch == 0) {
+- g_warning ("Invalid value: %s: %s", val, line);
++ ++head;
++ p = head;
++ while ((*p != '\0') && (end = strchr (p, '\"'))) {
++ if (*(end - 1) == '\\' && *(end - 2) == '\\')
++ break;
++ if (*(end - 1) != '\\')
++ break;
++ p = end + 1;
++ }
++ if (end == NULL || *p == '\0') {
++ g_warning ("Need to double-quote the value: %s: %s", val, line);
+ goto fail;
+ }
+- else if (uch == '\\') {
+- uch = words[1][1];
+-
+- /* The escaped string "\"" is separated with '\\' and '"'. */
+- if (uch == '\0' && words[2][0] == '"') {
+- uch = '"';
+- /* The escaped octal */
+- } else if (uch >= '0' && uch <= '8') {
+- uch = g_ascii_strtoll(words[1] + 1, NULL, 8);
+- /* If we need to handle other escape sequences. */
+- } else if (uch != '\\') {
+- g_warning ("Invalid backslash: %s: %s", val, line);
++ ustr = g_strndup (head, end - head);
++ p = ustr + 1;
++ /* The escaped octal */
++ if (*ustr == '\\' && *p >= '0' && *p <= '8') {
++ compose_data->values = g_new (gunichar, 2);
++ compose_data->values[0] = g_ascii_strtoll(p, NULL, 8);
++ compose_data->values[1] = 0;
++ } else {
++ if (!(uchars = g_utf8_to_ucs4 (ustr, -1, NULL, NULL, &error)) ||
++ !uchars[0]) {
++ g_warning ("Invalid Unicode: %s: %s in %s:",
++ error->message, ustr, line);
++ g_error_free (error);
+ goto fail;
+ }
+- }
+
+- if (g_utf8_get_char (g_utf8_next_char (words[1])) > 0) {
+- g_warning ("GTK+ supports to output one char only: %s: %s", val, line);
+- goto fail;
++ for (up = uchars; *up; up++) {
++ if (*up == '\\') {
++ ++up;
++ if (*up != '"' && *up != '\\') {
++ g_warning ("Invalid backslash: %s: %s", val, line);
++ goto fail;
++ }
++ }
++ if (!compose_data->values) {
++ compose_data->values = g_new (gunichar, 2);
++ } else {
++ compose_data->values = g_renew (gunichar,
++ compose_data->values,
++ n_uchars + 1);
++ }
++ compose_data->values[n_uchars++] = *up;
++ }
++ compose_data->values[n_uchars] = 0;
+ }
+
+- compose_data->value[1] = uch;
+-
+- if (uch == '"')
+- compose_data->comment = g_strdup (g_strstrip (words[2] + 1));
+- else
+- compose_data->comment = g_strdup (g_strstrip (words[2]));
+-
+- g_strfreev (words);
++ g_free (ustr);
++ g_free (uchars);
++ compose_data->comment = g_strdup (g_strstrip (end + 1));
+
+ return TRUE;
+
+ fail:
+- g_strfreev (words);
++ g_free (ustr);
++ g_free (uchars);
+ return FALSE;
+ }
+
+-static gboolean
++
++static int
+ parse_compose_sequence (IBusComposeData *compose_data,
+ const gchar *seq,
+ const gchar *line)
+@@ -161,20 +198,20 @@ parse_compose_sequence (IBusComposeData *compose_data,
+
+ match = g_strndup (start, end - start);
+
+- if (compose_data->sequence == NULL)
+- compose_data->sequence = g_malloc (sizeof (gunichar) * 2);
+- else
+- compose_data->sequence = g_realloc (compose_data->sequence,
+- sizeof (gunichar) * (n + 2));
++ if (compose_data->sequence == NULL) {
++ compose_data->sequence = g_new (gunichar, 2);
++ } else {
++ compose_data->sequence = g_renew (gunichar,
++ compose_data->sequence,
++ n + 2);
++ }
+
+ if (is_codepoint (match)) {
+ codepoint = (gunichar) g_ascii_strtoll (match + 1, NULL, 16);
+ compose_data->sequence[n] = codepoint;
+- compose_data->sequence[n + 1] = 0;
+ } else {
+ codepoint = (gunichar) ibus_keyval_from_name (match);
+ compose_data->sequence[n] = codepoint;
+- compose_data->sequence[n + 1] = 0;
+ }
+
+ if (codepoint == IBUS_KEY_VoidSymbol)
+@@ -182,27 +219,35 @@ parse_compose_sequence (IBusComposeData *compose_data,
+ g_free (match);
+ n++;
+ }
++ if (compose_data->sequence)
++ compose_data->sequence[n] = 0;
+
+ g_strfreev (words);
+ if (0 == n || n >= IBUS_MAX_COMPOSE_LEN) {
+ g_warning ("The max number of sequences is %d: %s",
+ IBUS_MAX_COMPOSE_LEN, line);
+- return FALSE;
++ return -1;
+ }
+
+- return TRUE;
++ return n;
+
+ fail:
+ g_strfreev (words);
+- return FALSE;
++ return -1;
+ }
+
++
+ static void
+ parse_compose_line (GList **compose_list,
+- const gchar *line)
++ const gchar *line,
++ int *compose_len)
+ {
+ gchar **components = NULL;
+ IBusComposeData *compose_data = NULL;
++ int l;
++
++ g_assert (compose_len);
++ *compose_len = 0;
+
+ if (line[0] == '\0' || line[0] == '#')
+ return;
+@@ -219,11 +264,12 @@ parse_compose_line (GList **compose_list,
+
+ compose_data = g_slice_new0 (IBusComposeData);
+
+- if (!parse_compose_sequence (compose_data,
+- g_strstrip (components[0]),
+- line)) {
++ if ((l = parse_compose_sequence (compose_data,
++ g_strstrip (components[0]),
++ line)) < 1) {
+ goto fail;
+ }
++ *compose_len = l;
+
+ if (!parse_compose_value (compose_data, g_strstrip (components[1]), line))
+ goto fail;
+@@ -240,16 +286,21 @@ fail:
+ ibus_compose_data_free (compose_data);
+ }
+
++
+ static GList *
+-ibus_compose_list_parse_file (const gchar *compose_file)
++ibus_compose_list_parse_file (const gchar *compose_file,
++ int *max_compose_len)
+ {
+ gchar *contents = NULL;
+ gchar **lines = NULL;
+ gsize length = 0;
+ GError *error = NULL;
+ GList *compose_list = NULL;
++ int compose_len = 0;
+ int i;
+
++ g_assert (max_compose_len);
++
+ if (!g_file_get_contents (compose_file, &contents, &length, &error)) {
+ g_error ("%s", error->message);
+ g_error_free (error);
+@@ -258,33 +309,43 @@ ibus_compose_list_parse_file (const gchar *compose_file)
+
+ lines = g_strsplit (contents, "\n", -1);
+ g_free (contents);
+- for (i = 0; lines[i] != NULL; i++)
+- parse_compose_line (&compose_list, lines[i]);
++ for (i = 0; lines[i] != NULL; i++) {
++ parse_compose_line (&compose_list, lines[i], &compose_len);
++ if (*max_compose_len < compose_len)
++ *max_compose_len = compose_len;
++ }
+ g_strfreev (lines);
+
+ return compose_list;
+ }
+
++
+ static GList *
+-ibus_compose_list_check_duplicated (GList *compose_list)
++ibus_compose_list_check_duplicated (GList *compose_list,
++ int max_compose_len)
+ {
+ GList *list;
++ static guint16 *keysyms;
+ GList *removed_list = NULL;
+ IBusComposeData *compose_data;
++ gboolean is_32bit;
++
++ keysyms = g_new (guint16, max_compose_len + 1);
+
+ for (list = compose_list; list != NULL; list = list->next) {
+- static guint16 keysyms[IBUS_MAX_COMPOSE_LEN + 1];
+ int i;
+ int n_compose = 0;
+ gboolean compose_finish;
+- gunichar output_char;
++ gunichar *output_chars = NULL;
++ gunichar output_char = 0;
++ guint n_outputs;
+
+ compose_data = list->data;
+
+- for (i = 0; i < IBUS_MAX_COMPOSE_LEN + 1; i++)
++ for (i = 0; i < max_compose_len + 1; i++)
+ keysyms[i] = 0;
+
+- for (i = 0; i < IBUS_MAX_COMPOSE_LEN + 1; i++) {
++ for (i = 0; i < max_compose_len + 1; i++) {
+ gunichar codepoint = compose_data->sequence[i];
+ keysyms[i] = (guint16) codepoint;
+
+@@ -294,18 +355,41 @@ ibus_compose_list_check_duplicated (GList *compose_list)
+ n_compose++;
+ }
+
+- if (ibus_check_compact_table (&ibus_compose_table_compact,
++ n_outputs = unichar_length (compose_data->values);
++ is_32bit = (n_outputs > 1) ? TRUE :
++ (compose_data->values[0] >= 0xFFFF) ? TRUE : FALSE;
++ if (!is_32bit &&
++ ibus_check_compact_table (&ibus_compose_table_compact,
+ keysyms,
+ n_compose,
+ &compose_finish,
+- &output_char) && compose_finish) {
+- if (compose_data->value[1] == output_char)
++ &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_check_compact_table (&ibus_compose_table_compact_32bit,
++ keysyms,
++ n_compose,
++ &compose_finish,
++ &output_chars) && compose_finish) {
++
++ if (n_outputs == unichar_length (output_chars)) {
++ int j = 0;
++ while (compose_data->values[j] && j < n_outputs) {
++ if (compose_data->values[j] != output_chars[j])
++ break;
++ ++j;
++ }
++ if (j == n_outputs)
++ removed_list = g_list_append (removed_list, compose_data);
++ }
++ g_free (output_chars);
+
+ } else if (ibus_check_algorithmically (keysyms,
+ n_compose,
+ &output_char)) {
+- if (compose_data->value[1] == output_char)
++ if (compose_data->values[0] == output_char)
+ removed_list = g_list_append (removed_list, compose_data);
+ }
+ }
+@@ -317,85 +401,11 @@ ibus_compose_list_check_duplicated (GList *compose_list)
+ }
+
+ g_list_free (removed_list);
++ g_free (keysyms);
+
+ return compose_list;
+ }
+
+-static GList *
+-ibus_compose_list_check_uint16 (GList *compose_list)
+-{
+- GList *list;
+- GList *removed_list = NULL;
+- IBusComposeData *compose_data;
+-
+- for (list = compose_list; list != NULL; list = list->next) {
+- int i;
+-
+- compose_data = list->data;
+- for (i = 0; i < IBUS_MAX_COMPOSE_LEN; i++) {
+- gunichar codepoint = compose_data->sequence[i];
+-
+- if (codepoint == 0)
+- break;
+-
+- if (codepoint > 0xffff) {
+- removed_list = g_list_append (removed_list, compose_data);
+- break;
+- }
+- }
+- }
+-
+- for (list = removed_list; list != NULL; list = list->next) {
+- compose_data = list->data;
+- compose_list = g_list_remove (compose_list, compose_data);
+- ibus_compose_data_free (compose_data);
+- }
+-
+- g_list_free (removed_list);
+-
+- return compose_list;
+-}
+-
+-static GList *
+-ibus_compose_list_format_for_gtk (GList *compose_list,
+- int *p_max_compose_len,
+- int *p_n_index_stride)
+-{
+- GList *list;
+- IBusComposeData *compose_data;
+- int max_compose_len = 0;
+- int i;
+- gunichar codepoint;
+-
+- for (list = compose_list; list != NULL; list = list->next) {
+- compose_data = list->data;
+-
+- for (i = 0; i < IBUS_MAX_COMPOSE_LEN + 1; i++) {
+- codepoint = compose_data->sequence[i];
+- if (codepoint == 0) {
+- if (max_compose_len < i)
+- max_compose_len = i;
+- break;
+- }
+- }
+- }
+-
+- if (p_max_compose_len)
+- *p_max_compose_len = max_compose_len;
+- if (p_n_index_stride)
+- *p_n_index_stride = max_compose_len + 2;
+-
+- for (list = compose_list; list != NULL; list = list->next) {
+- compose_data = list->data;
+- codepoint = compose_data->value[1];
+- if (codepoint > 0xffff) {
+- compose_data->value[0] = codepoint / 0x10000;
+- compose_data->value[1] = codepoint - codepoint / 0x10000 * 0x10000;
+- }
+- }
+-
+- return compose_list;
+-}
+
+ static gint
+ ibus_compose_data_compare (gpointer a,
+@@ -416,6 +426,7 @@ ibus_compose_data_compare (gpointer a,
+ return 0;
+ }
+
++
+ static void
+ ibus_compose_list_print (GList *compose_list,
+ int max_compose_len,
+@@ -425,9 +436,6 @@ ibus_compose_list_print (GList *compose_list,
+ int i, j;
+ IBusComposeData *compose_data;
+ int total_size = 0;
+- gunichar upper;
+- gunichar lower;
+- const gchar *comment;
+ const gchar *keyval;
+
+ for (list = compose_list; list != NULL; list = list->next) {
+@@ -452,14 +460,10 @@ ibus_compose_list_print (GList *compose_list,
+ else
+ g_printf ("%s, ", keyval ? keyval : "(null)");
+ }
+- upper = compose_data->value[0];
+- lower = compose_data->value[1];
+- comment = compose_data->comment;
+-
+- if (list == g_list_last (compose_list))
+- g_printf (" %#06X, %#06X /* %s */\n", upper, lower, comment);
+- else
+- g_printf (" %#06X, %#06X, /* %s */\n", upper, lower, comment);
++ g_printf (" ");
++ for (i = 0; compose_data->values[i]; ++i)
++ g_printf ("%#06X, ", compose_data->values[i]);
++ g_printf (" /* %s */,\n", compose_data->comment);
+
+ total_size += n_index_stride;
+ }
+@@ -468,6 +472,7 @@ ibus_compose_list_print (GList *compose_list,
+ total_size, max_compose_len, n_index_stride);
+ }
+
++
+ /* Implemented from g_str_hash() */
+ static guint32
+ ibus_compose_table_data_hash (gconstpointer v,
+@@ -487,6 +492,7 @@ ibus_compose_table_data_hash (gconstpointer v,
+ return h;
+ }
+
++
+ static gchar *
+ ibus_compose_hash_get_cache_path (guint32 hash)
+ {
+@@ -511,67 +517,151 @@ ibus_compose_hash_get_cache_path (guint32 hash)
+ return path;
+ }
+
++
+ static GVariant *
+-ibus_compose_table_serialize (IBusComposeTable *compose_table)
++ibus_compose_table_serialize (IBusComposeTableEx *compose_table)
+ {
+ const gchar *header = IBUS_COMPOSE_TABLE_MAGIC;
+ const guint16 version = IBUS_COMPOSE_TABLE_VERSION;
+ guint16 max_seq_len;
+ guint16 index_stride;
+ guint16 n_seqs;
+- GVariant *variant_data;
++ guint16 n_seqs_32bit = 0;
++ guint16 second_size = 0;
++ GVariant *variant_data = NULL;
++ GVariant *variant_data_32bit_first = NULL;
++ GVariant *variant_data_32bit_second = NULL;
+ GVariant *variant_table;
+
+ g_return_val_if_fail (compose_table != NULL, NULL);
+- g_return_val_if_fail (compose_table->data != NULL, NULL);
+
+ max_seq_len = compose_table->max_seq_len;
+ index_stride = max_seq_len + 2;
+ n_seqs = compose_table->n_seqs;
+
+- g_return_val_if_fail (max_seq_len > 0, NULL);
+- g_return_val_if_fail (n_seqs > 0, NULL);
++ g_return_val_if_fail (max_seq_len, NULL);
+
+- variant_data = g_variant_new_fixed_array (G_VARIANT_TYPE_UINT16,
+- compose_table->data,
+- (gsize)index_stride * n_seqs,
+- sizeof (guint16));
+- if (variant_data == NULL) {
+- g_warning ("Could not change compose data to GVariant.");
+- return NULL;
++ 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));
++ if (!variant_data) {
++ g_warning ("Could not change compose data to GVariant.");
++ return NULL;
++ }
++ } else {
++ variant_data = g_variant_new_fixed_array (
++ G_VARIANT_TYPE_UINT16,
++ NULL,
++ 0,
++ sizeof (guint16));
++ g_assert (variant_data);
++ }
++ if (compose_table->priv) {
++ n_seqs_32bit = compose_table->priv->first_n_seqs;
++ second_size = compose_table->priv->second_size;
++ }
++ if (!n_seqs && !n_seqs_32bit) {
++ g_warning ("ComposeTable has not key sequences.");
++ goto out_serialize;
++ } else if (n_seqs_32bit && !second_size) {
++ g_warning ("Compose key sequences are loaded but the values could " \
++ "not be loaded.");
++ goto out_serialize;
++ } else if (!n_seqs_32bit && second_size) {
++ g_warning ("Compose values are loaded but the key sequences could " \
++ "not be loaded.");
++ goto out_serialize;
++ } else if (n_seqs_32bit && second_size) {
++ if (!compose_table->priv->data_first) {
++ g_warning ("data_first is NULL");
++ goto out_serialize;
++ }
++ if (!compose_table->priv->data_second) {
++ 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.");
++ goto out_serialize;
++ }
++ } else {
++ variant_data_32bit_first = g_variant_new_fixed_array (
++ G_VARIANT_TYPE_UINT16,
++ NULL,
++ 0,
++ sizeof (guint16));
++ variant_data_32bit_second = g_variant_new_fixed_array (
++ G_VARIANT_TYPE_UINT32,
++ NULL,
++ 0,
++ sizeof (guint32));
++ g_assert (variant_data_32bit_first && variant_data_32bit_second);
+ }
+- variant_table = g_variant_new ("(sqqqv)",
++ variant_table = g_variant_new ("(sqqqqqvvv)",
+ header,
+ version,
+ max_seq_len,
+ n_seqs,
+- variant_data);
++ n_seqs_32bit,
++ second_size,
++ variant_data,
++ variant_data_32bit_first,
++ variant_data_32bit_second);
+ return g_variant_ref_sink (variant_table);
++
++out_serialize:
++ g_clear_pointer (&variant_data, g_variant_unref);
++ g_clear_pointer (&variant_data_32bit_first, g_variant_unref);
++ g_clear_pointer (&variant_data_32bit_second, g_variant_unref);
++ return NULL;
+ }
+
++
+ static gint
+ ibus_compose_table_find (gconstpointer data1,
+ gconstpointer data2)
+ {
+- const IBusComposeTable *compose_table = (const IBusComposeTable *) data1;
++ const IBusComposeTableEx *compose_table =
++ (const IBusComposeTableEx *) data1;
+ guint32 hash = (guint32) GPOINTER_TO_INT (data2);
+ return compose_table->id != hash;
+ }
+
+-static IBusComposeTable *
++
++static IBusComposeTableEx *
+ ibus_compose_table_deserialize (const gchar *contents,
+ gsize length)
+ {
+- IBusComposeTable *retval = NULL;
++ IBusComposeTableEx *retval = NULL;
+ GVariantType *type;
+ GVariant *variant_data = NULL;
++ GVariant *variant_data_32bit_first = NULL;
++ GVariant *variant_data_32bit_second = NULL;
+ GVariant *variant_table = NULL;
+ const gchar *header = NULL;
+ guint16 version = 0;
+ guint16 max_seq_len = 0;
+ guint16 n_seqs = 0;
++ 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;
+ gsize data_length = 0;
+
+ g_return_val_if_fail (contents != NULL, NULL);
+@@ -587,7 +677,7 @@ ibus_compose_table_deserialize (const gchar *contents,
+ NULL);
+ g_variant_type_free (type);
+
+- if (variant_table == NULL) {
++ if (!variant_table) {
+ g_warning ("cache is broken.");
+ goto out_load_cache;
+ }
+@@ -611,7 +701,7 @@ ibus_compose_table_deserialize (const gchar *contents,
+ g_variant_unref (variant_table);
+ variant_table = NULL;
+
+- type = g_variant_type_new ("(sqqqv)");
++ type = g_variant_type_new ("(sqqqqqvvv)");
+ variant_table = g_variant_new_from_data (type,
+ contents,
+ length,
+@@ -620,58 +710,117 @@ ibus_compose_table_deserialize (const gchar *contents,
+ NULL);
+ g_variant_type_free (type);
+
+- if (variant_table == NULL) {
++ if (!variant_table) {
+ g_warning ("cache is broken.");
+ goto out_load_cache;
+ }
+
+ g_variant_ref_sink (variant_table);
+- g_variant_get (variant_table, "(&sqqqv)",
++ g_variant_get (variant_table, "(&sqqqqqvvv)",
+ NULL,
+ NULL,
+ &max_seq_len,
+ &n_seqs,
+- &variant_data);
+-
+- if (max_seq_len == 0 || n_seqs == 0) {
+- g_warning ("cache size is not correct %d %d", max_seq_len, n_seqs);
++ &n_seqs_32bit,
++ &second_size,
++ &variant_data,
++ &variant_data_32bit_first,
++ &variant_data_32bit_second);
++
++ if (max_seq_len == 0 || (n_seqs == 0 && n_seqs_32bit == 0)) {
++ g_warning ("cache size is not correct %d %d %d",
++ max_seq_len, n_seqs, n_seqs_32bit);
+ goto out_load_cache;
+ }
+
+- data = g_variant_get_fixed_array (variant_data,
+- &data_length,
+- sizeof (guint16));
++ if (n_seqs && variant_data) {
++ data = g_variant_get_fixed_array (variant_data,
++ &data_length,
++ sizeof (guint16));
++ }
+ index_stride = max_seq_len + 2;
+
+- if (data == NULL) {
+- g_warning ("cache data is null.");
+- goto out_load_cache;
+- }
+- if (data_length != (gsize) index_stride * n_seqs) {
++ if (data_length != (gsize)index_stride * n_seqs) {
+ g_warning ("cache size is not correct %d %d %lu",
+ max_seq_len, n_seqs, data_length);
+ goto out_load_cache;
+ }
+
+- retval = g_new0 (IBusComposeTable, 1);
+- retval->data = g_new (guint16, data_length);
+- memcpy (retval->data, data, data_length * sizeof (guint16));
++ retval = g_new0 (IBusComposeTableEx, 1);
++ if (data_length) {
++ retval->data = g_new (guint16, data_length);
++ memcpy (retval->data, data, data_length * sizeof (guint16));
++ }
+ retval->max_seq_len = max_seq_len;
+ retval->n_seqs = n_seqs;
+
++ if (n_seqs_32bit && !second_size) {
++ g_warning ("32bit key sequences are loaded but the values " \
++ "could not be loaded.");
++ goto out_load_cache;
++ }
++ if (!n_seqs_32bit && second_size) {
++ g_warning ("32bit key sequences could not loaded but the values " \
++ "are loaded.");
++ goto out_load_cache;
++ }
++
++ 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));
++ 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);
++ goto out_load_cache;
++ }
++ }
++ if (!data && !data_32bit_first) {
++ g_warning ("cache data is null.");
++ goto out_load_cache;
++ }
++ if (data_length) {
++ retval->priv = g_new0 (IBusComposeTablePrivate, 1);
++ retval->priv->data_first = g_new (guint16, data_length);
++ memcpy (retval->priv->data_first,
++ data_32bit_first, data_length * sizeof (guint16));
++ 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 (
++ variant_data_32bit_second,
++ &data_length,
++ sizeof (guint32));
++ if (data_length != (gsize) second_size) {
++ g_warning ("32bit cache size is not correct %d %d",
++ max_seq_len, second_size);
++ goto out_load_cache;
++ }
++ }
++ if (data_length) {
++ 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;
++ }
++
+
+ out_load_cache:
+- if (variant_data)
+- g_variant_unref (variant_data);
+- if (variant_table)
+- g_variant_unref (variant_table);
++ g_clear_pointer (&variant_data, g_variant_unref);
++ g_clear_pointer (&variant_data_32bit_first, g_variant_unref);
++ g_clear_pointer (&variant_data_32bit_second, g_variant_unref);
++ g_clear_pointer (&variant_table, g_variant_unref);
+ return retval;
+ }
+
+-static IBusComposeTable *
++
++static IBusComposeTableEx *
+ ibus_compose_table_load_cache (const gchar *compose_file)
+ {
+- IBusComposeTable *retval = NULL;
++ IBusComposeTableEx *retval = NULL;
+ guint32 hash;
+ gchar *path = NULL;
+ gchar *contents = NULL;
+@@ -712,8 +861,9 @@ ibus_compose_table_load_cache (const gchar *compose_file)
+ return retval;
+ }
+
++
+ static void
+-ibus_compose_table_save_cache (IBusComposeTable *compose_table)
++ibus_compose_table_save_cache (IBusComposeTableEx *compose_table)
+ {
+ gchar *path = NULL;
+ GVariant *variant_table = NULL;
+@@ -742,67 +892,119 @@ out_save_cache:
+ g_free (path);
+ }
+
+-static IBusComposeTable *
++
++static IBusComposeTableEx *
+ ibus_compose_table_new_with_list (GList *compose_list,
+ int max_compose_len,
+ int n_index_stride,
+ guint32 hash)
+ {
+- guint length;
+- guint n = 0;
++ gsize s_size_total, s_size_16bit, v_size_32bit, v_index_32bit;
++ guint n = 0, m = 0;
+ int i, j;
+ guint16 *ibus_compose_seqs = NULL;
++ guint16 *ibus_compose_seqs_32bit_first = NULL;
++ guint32 *ibus_compose_seqs_32bit_second = NULL;
+ GList *list;
+- IBusComposeData *compose_data;
+- IBusComposeTable *retval = NULL;
++ IBusComposeData *compose_data = NULL;
++ IBusComposeTableEx *retval = NULL;
+
+ g_return_val_if_fail (compose_list != NULL, NULL);
+
+- length = g_list_length (compose_list);
++ s_size_total = g_list_length (compose_list);
++ s_size_16bit = s_size_total;
++ v_size_32bit = 0;
++
++ for (list = compose_list; list != NULL; list = list->next) {
++ compose_data = list->data;
++ if (unichar_length (compose_data->values) > 1 ||
++ compose_data->values[0] >= 0xFFFF) {
++ --s_size_16bit;
++ v_size_32bit += unichar_length (compose_data->values);
++ }
++ }
+
+- ibus_compose_seqs = g_new0 (guint16, length * n_index_stride);
++ if (s_size_16bit)
++ ibus_compose_seqs = g_new (guint16, s_size_16bit * n_index_stride);
++ 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);
++ }
+
++ v_index_32bit = 0;
+ for (list = compose_list; list != NULL; list = list->next) {
++ gboolean is_32bit = FALSE;
+ compose_data = list->data;
++
++ is_32bit = unichar_length (compose_data->values) > 1 ? TRUE :
++ compose_data->values[0] >= 0xFFFF ? TRUE : FALSE;
+ for (i = 0; i < max_compose_len; i++) {
+ if (compose_data->sequence[i] == 0) {
+- for (j = i; j < max_compose_len; j++)
+- ibus_compose_seqs[n++] = 0;
++ for (j = i; j < max_compose_len; j++) {
++ if (is_32bit)
++ ibus_compose_seqs_32bit_first[m++] = 0;
++ else
++ ibus_compose_seqs[n++] = 0;
++ }
+ break;
+ }
+- ibus_compose_seqs[n++] = (guint16) compose_data->sequence[i];
++ if (is_32bit) {
++ ibus_compose_seqs_32bit_first[m++] =
++ (guint16) compose_data->sequence[i];
++ } else {
++ ibus_compose_seqs[n++] = (guint16) compose_data->sequence[i];
++ }
++ }
++ if (is_32bit) {
++ for (j = 0; compose_data->values[j]; j++) {
++ ibus_compose_seqs_32bit_second[v_index_32bit + j] =
++ compose_data->values[j];
++ }
++ ibus_compose_seqs_32bit_first[m++] = j;
++ ibus_compose_seqs_32bit_first[m++] = v_index_32bit;
++ v_index_32bit += j;
++ } else {
++ ibus_compose_seqs[n++] = (guint16) compose_data->values[0];
++ ibus_compose_seqs[n++] = 0;
+ }
+- ibus_compose_seqs[n++] = (guint16) compose_data->value[0];
+- ibus_compose_seqs[n++] = (guint16) compose_data->value[1];
+ }
+
+- retval = g_new0 (IBusComposeTable, 1);
++ retval = g_new0 (IBusComposeTableEx, 1);
+ retval->data = ibus_compose_seqs;
+ retval->max_seq_len = max_compose_len;
+- retval->n_seqs = length;
++ retval->n_seqs = s_size_16bit;
+ retval->id = hash;
++ if (s_size_total > s_size_16bit) {
++ retval->priv = g_new0 (IBusComposeTablePrivate, 1);
++ retval->priv->data_first = ibus_compose_seqs_32bit_first;
++ retval->priv->data_second = ibus_compose_seqs_32bit_second;
++ retval->priv->first_n_seqs = s_size_total - s_size_16bit;
++ retval->priv->second_size = v_size_32bit;
++ }
+
+ return retval;
+ }
+
+-IBusComposeTable *
++
++IBusComposeTableEx *
+ ibus_compose_table_new_with_file (const gchar *compose_file)
+ {
+ GList *compose_list = NULL;
+- IBusComposeTable *compose_table;
++ IBusComposeTableEx *compose_table;
+ int max_compose_len = 0;
+ int n_index_stride = 0;
+
+ g_assert (compose_file != NULL);
+
+- compose_list = ibus_compose_list_parse_file (compose_file);
++ compose_list = ibus_compose_list_parse_file (compose_file,
++ &max_compose_len);
+ if (compose_list == NULL)
+ return NULL;
+- compose_list = ibus_compose_list_check_duplicated (compose_list);
+- compose_list = ibus_compose_list_check_uint16 (compose_list);
+- compose_list = ibus_compose_list_format_for_gtk (compose_list,
+- &max_compose_len,
+- &n_index_stride);
++ n_index_stride = max_compose_len + 2;
++ compose_list = ibus_compose_list_check_duplicated (compose_list,
++ max_compose_len);
+ compose_list = g_list_sort_with_data (
+ compose_list,
+ (GCompareDataFunc) ibus_compose_data_compare,
+@@ -814,9 +1016,8 @@ ibus_compose_table_new_with_file (const gchar *compose_file)
+ return NULL;
+ }
+
+- if (g_getenv ("IBUS_COMPOSE_TABLE_PRINT") != NULL) {
++ if (g_getenv ("IBUS_COMPOSE_TABLE_PRINT") != NULL)
+ ibus_compose_list_print (compose_list, max_compose_len, n_index_stride);
+- }
+
+ compose_table = ibus_compose_table_new_with_list (
+ compose_list,
+@@ -830,6 +1031,7 @@ ibus_compose_table_new_with_file (const gchar *compose_file)
+ return compose_table;
+ }
+
++
+ /* if ibus_compose_seqs[N - 1] is an outputed compose character,
+ * ibus_compose_seqs[N * 2 - 1] is also an outputed compose character.
+ * and ibus_compose_seqs[0] to ibus_compose_seqs[0 + N - 3] are the
+@@ -845,7 +1047,7 @@ ibus_compose_table_list_add_array (GSList *compose_tables,
+ gint n_seqs)
+ {
+ guint32 hash;
+- IBusComposeTable *compose_table;
++ IBusComposeTableEx *compose_table;
+ int n_index_stride = max_seq_len + 2;
+ int length = n_index_stride * n_seqs;
+ int i;
+@@ -866,7 +1068,7 @@ ibus_compose_table_list_add_array (GSList *compose_tables,
+ for (i = 0; i < length; i++)
+ ibus_compose_seqs[i] = data[i];
+
+- compose_table = g_new (IBusComposeTable, 1);
++ compose_table = g_new (IBusComposeTableEx, 1);
+ compose_table->data = ibus_compose_seqs;
+ compose_table->max_seq_len = max_seq_len;
+ compose_table->n_seqs = n_seqs;
+@@ -875,12 +1077,13 @@ ibus_compose_table_list_add_array (GSList *compose_tables,
+ return g_slist_prepend (compose_tables, compose_table);
+ }
+
++
+ GSList *
+ ibus_compose_table_list_add_file (GSList *compose_tables,
+ const gchar *compose_file)
+ {
+ guint32 hash;
+- IBusComposeTable *compose_table;
++ IBusComposeTableEx *compose_table;
+
+ g_return_val_if_fail (compose_file != NULL, compose_tables);
+
+diff --git a/src/ibuscomposetable.h b/src/ibuscomposetable.h
+index 4bf89211..777c5f42 100644
+--- a/src/ibuscomposetable.h
++++ b/src/ibuscomposetable.h
+@@ -29,6 +29,8 @@
+ G_BEGIN_DECLS
+
+ typedef struct _IBusComposeTable IBusComposeTable;
++typedef struct _IBusComposeTableEx IBusComposeTableEx;
++typedef struct _IBusComposeTablePrivate IBusComposeTablePrivate;
+ typedef struct _IBusComposeTableCompact IBusComposeTableCompact;
+ typedef struct _IBusComposeTableCompactEx IBusComposeTableCompactEx;
+ typedef struct _IBusComposeTableCompactPrivate IBusComposeTableCompactPrivate;
+@@ -41,6 +43,15 @@ struct _IBusComposeTable
+ guint32 id;
+ };
+
++struct _IBusComposeTableEx
++{
++ IBusComposeTablePrivate *priv;
++ guint16 *data;
++ gint max_seq_len;
++ gint n_seqs;
++ guint32 id;
++};
++
+ struct _IBusComposeTableCompact
+ {
+ const guint16 *data;
+@@ -51,22 +62,23 @@ struct _IBusComposeTableCompact
+
+ struct _IBusComposeTableCompactEx
+ {
++ IBusComposeTableCompactPrivate *priv;
+ const guint16 *data;
+ gint max_seq_len;
+ gint n_index_size;
+ gint n_index_stride;
+- IBusComposeTableCompactPrivate *priv;
+ };
+
+-IBusComposeTable *ibus_compose_table_new_with_file (const gchar *compose_file);
+-GSList *ibus_compose_table_list_add_array
++IBusComposeTableEx *
++ ibus_compose_table_new_with_file (const gchar *compose_file);
++GSList * ibus_compose_table_list_add_array
+ (GSList
+ *compose_tables,
+ const guint16
+ *data,
+ gint max_seq_len,
+ gint n_seqs);
+-GSList *ibus_compose_table_list_add_file (GSList
++GSList * ibus_compose_table_list_add_file (GSList
+ *compose_tables,
+ const gchar *compose_file);
+
+diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c
+index fa4ddf5f..2242203c 100644
+--- a/src/ibusenginesimple.c
++++ b/src/ibusenginesimple.c
+@@ -101,24 +101,24 @@ struct _IBusComposeTableCompactPrivate
+ * Assign the value of "Number of different first items" of compose-parse.py
+ * to n_seqs in IBusComposeTableCompact
+ */
+-const IBusComposeTableCompactPrivate ibus_compose_table_compact_32bit_priv = {
++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,
+- NULL
++ 6
+ };
+
+ const IBusComposeTableCompactEx ibus_compose_table_compact_32bit = {
++ &ibus_compose_table_compact_32bit_priv,
+ gtk_compose_seqs_compact_32bit_first,
+ 5,
+ 9,
+- 6,
+- &ibus_compose_table_compact_32bit_priv
++ 6
+ };
+
+ static GSList *global_tables;
+@@ -630,13 +630,15 @@ compare_seq (const void *key, const void *value)
+
+
+ static gboolean
+-check_table (IBusEngineSimple *simple,
+- const IBusComposeTable *table,
+- gint n_compose)
++check_table (IBusEngineSimple *simple,
++ const IBusComposeTableEx *table,
++ gint n_compose,
++ gboolean is_32bit)
+ {
+- // g_debug("check_table");
+ IBusEngineSimplePrivate *priv = simple->priv;
+ gint row_stride = table->max_seq_len + 2;
++ guint16 *data_first;
++ int n_seqs;
+ guint16 *seq;
+
+ g_assert (IBUS_IS_ENGINE_SIMPLE (simple));
+@@ -645,8 +647,17 @@ check_table (IBusEngineSimple *simple,
+ if (n_compose > table->max_seq_len)
+ return FALSE;
+
++ if (is_32bit) {
++ if (!table->priv)
++ return FALSE;
++ data_first = table->priv->data_first;
++ n_seqs = table->priv->first_n_seqs;
++ } else {
++ data_first = table->data;
++ n_seqs = table->n_seqs;
++ }
+ seq = bsearch (priv->compose_buffer,
+- table->data, table->n_seqs,
++ data_first, n_seqs,
+ sizeof (guint16) * row_stride,
+ compare_seq);
+
+@@ -660,7 +671,7 @@ check_table (IBusEngineSimple *simple,
+ /* Back up to the first sequence that matches to make sure
+ * we find the exact match if their is one.
+ */
+- while (seq > table->data) {
++ while (seq > data_first) {
+ prev_seq = seq - row_stride;
+ if (compare_seq (priv->compose_buffer, prev_seq) != 0) {
+ break;
+@@ -671,14 +682,25 @@ check_table (IBusEngineSimple *simple,
+ /* complete sequence */
+ if (n_compose == table->max_seq_len || seq[n_compose] == 0) {
+ guint16 *next_seq;
+- gunichar value =
+- 0x10000 * seq[table->max_seq_len] + seq[table->max_seq_len + 1];
++ gunichar value = 0;
++ int num = 0;
++ int index = 0;
++ gchar *output_str = NULL;
++ GError *error = NULL;
++
++ if (is_32bit) {
++ num = seq[table->max_seq_len];
++ index = seq[table->max_seq_len + 1];
++ value = table->priv->data_second[index];
++ } else {
++ value = seq[table->max_seq_len];
++ }
+
+ /* We found a tentative match. See if there are any longer
+ * sequences containing this subsequence
+ */
+ next_seq = seq + row_stride;
+- if (next_seq < table->data + row_stride * table->n_seqs) {
++ if (next_seq < data_first + row_stride * n_seqs) {
+ if (compare_seq (priv->compose_buffer, next_seq) == 0) {
+ priv->tentative_match = value;
+ priv->tentative_match_len = n_compose;
+@@ -689,9 +711,21 @@ check_table (IBusEngineSimple *simple,
+ }
+ }
+
+- ibus_engine_simple_commit_char (simple, value);
++ if (is_32bit) {
++ output_str = g_ucs4_to_utf8 (table->priv->data_second + index,
++ num, NULL, NULL, &error);
++ if (output_str) {
++ ibus_engine_simple_commit_str(simple, output_str);
++ g_free (output_str);
++ } else {
++ g_warning ("Failed to output multiple characters: %s",
++ error->message);
++ g_error_free (error);
++ }
++ } else {
++ ibus_engine_simple_commit_char (simple, value);
++ }
+ priv->compose_buffer[0] = 0;
+- // g_debug ("U+%04X\n", value);
+ }
+ ibus_engine_simple_update_preedit_text (simple);
+ return TRUE;
+@@ -754,10 +788,10 @@ ibus_check_compact_table (const IBusComposeTableCompactEx *table,
+
+ if (seq_index[i + 1] - seq_index[i] > 0) {
+ 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);
++ 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;
+@@ -1148,8 +1182,15 @@ ibus_engine_simple_check_all_compose_table (IBusEngineSimple *simple,
+
+ while (list) {
+ if (check_table (simple,
+- (IBusComposeTable *)list->data,
+- n_compose)) {
++ (IBusComposeTableEx *)list->data,
++ n_compose,
++ FALSE)) {
++ return TRUE;
++ }
++ if (check_table (simple,
++ (IBusComposeTableEx *)list->data,
++ n_compose,
++ TRUE)) {
+ return TRUE;
+ }
+ list = list->next;
+@@ -1178,12 +1219,12 @@ ibus_engine_simple_check_all_compose_table (IBusEngineSimple *simple,
+ if (output_str) {
+ ibus_engine_simple_commit_str (simple, output_str);
+ g_free (output_str);
+- g_free (output_chars);
+ } else {
+ g_warning ("Failed to output multiple characters: %s",
+ error->message);
+ g_error_free (error);
+ }
++ g_free (output_chars);
+ priv->compose_buffer[0] = 0;
+ }
+
+diff --git a/src/ibusenginesimple.h b/src/ibusenginesimple.h
+index a5ef34fb..bd385e5b 100644
+--- a/src/ibusenginesimple.h
++++ b/src/ibusenginesimple.h
+@@ -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-2017 Takao Fujiwara <takao.fujiwara1@gmail.com>
++ * Copyright (C) 2015-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ * Copyright (C) 2008-2017 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+@@ -44,7 +44,7 @@
+
+ G_BEGIN_DECLS
+
+-#define IBUS_MAX_COMPOSE_LEN 7
++#define IBUS_MAX_COMPOSE_LEN 0xFF
+
+ /*
+ * Type macros.
+diff --git a/src/ibusenginesimpleprivate.h b/src/ibusenginesimpleprivate.h
+index c86c5324..508d9344 100644
+--- a/src/ibusenginesimpleprivate.h
++++ b/src/ibusenginesimpleprivate.h
+@@ -27,6 +27,15 @@
+ G_BEGIN_DECLS
+
+ extern const IBusComposeTableCompactEx ibus_compose_table_compact;
++extern const IBusComposeTableCompactEx ibus_compose_table_compact_32bit;
++
++struct _IBusComposeTablePrivate
++{
++ guint16 *data_first;
++ guint32 *data_second;
++ gsize first_n_seqs;
++ gsize second_size;
++};
+
+ gboolean ibus_check_algorithmically (const guint16 *compose_buffer,
+ gint n_compose,
+--
+2.21.0
+
+From 82a728de97308f6ce36c814e30a292f96e76cc13 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Wed, 29 May 2019 17:37:35 +0900
+Subject: [PATCH 16/27] src: Change a fixed compose buffer to a variable one
+
+Now the long key sequence of the compose key is supported in both
+system compose and user compose but the internal compose buffer is
+still a fixed size. The compose buffer size will be a variable size
+and the initial size will be 20 with this change.
+---
+ src/ibusenginesimple.c | 48 ++++++++++++++++++++++--------------------
+ 1 file changed, 25 insertions(+), 23 deletions(-)
+
+diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c
+index 2242203c..0604693d 100644
+--- a/src/ibusenginesimple.c
++++ b/src/ibusenginesimple.c
+@@ -44,29 +44,31 @@
+ #include <stdlib.h>
+
+ #define X11_DATADIR X11_DATA_PREFIX "/share/X11/locale"
+-#define EMOJI_SOURCE_LEN 100
+ #define IBUS_ENGINE_SIMPLE_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_ENGINE_SIMPLE, IBusEngineSimplePrivate))
+
+ #define SET_COMPOSE_BUFFER_ELEMENT_NEXT(buffer, index, value) { \
+- if ((index) < EMOJI_SOURCE_LEN) { \
++ if ((index) >= COMPOSE_BUFFER_SIZE && \
++ COMPOSE_BUFFER_SIZE < IBUS_MAX_COMPOSE_LEN) { \
++ COMPOSE_BUFFER_SIZE = ((index) + 10) < IBUS_MAX_COMPOSE_LEN \
++ ? ((index) + 10) : IBUS_MAX_COMPOSE_LEN; \
++ (buffer) = g_renew (guint16, (buffer), COMPOSE_BUFFER_SIZE + 1);\
++ } \
++ if ((index) < COMPOSE_BUFFER_SIZE) { \
+ (buffer)[(index)] = (value); \
+ (index) += 1; \
+ } \
+ }
+
+ #define SET_COMPOSE_BUFFER_ELEMENT_END(buffer, index, value) { \
+- if ((index) >= EMOJI_SOURCE_LEN) { \
+- (index) = EMOJI_SOURCE_LEN; \
+- (buffer)[EMOJI_SOURCE_LEN - 1] = (value); \
+- } else { \
+- (buffer)[(index)] = (value); \
+- } \
++ if ((index) > COMPOSE_BUFFER_SIZE) \
++ (index) = COMPOSE_BUFFER_SIZE; \
++ (buffer)[(index)] = (value); \
+ }
+
+ #define CHECK_COMPOSE_BUFFER_LENGTH(index) { \
+- if ((index) > EMOJI_SOURCE_LEN) \
+- (index) = EMOJI_SOURCE_LEN; \
++ if ((index) > COMPOSE_BUFFER_SIZE) \
++ (index) = COMPOSE_BUFFER_SIZE; \
+ }
+
+ typedef struct {
+@@ -75,7 +77,7 @@ typedef struct {
+ } IBusEngineDict;
+
+ struct _IBusEngineSimplePrivate {
+- guint16 compose_buffer[EMOJI_SOURCE_LEN];
++ guint16 *compose_buffer;
+ gunichar tentative_match;
+ gchar *tentative_emoji;
+ gint tentative_match_len;
+@@ -121,6 +123,7 @@ const IBusComposeTableCompactEx ibus_compose_table_compact_32bit = {
+ 6
+ };
+
++guint COMPOSE_BUFFER_SIZE = 20;
+ static GSList *global_tables;
+
+ /* functions prototype */
+@@ -175,6 +178,7 @@ static void
+ ibus_engine_simple_init (IBusEngineSimple *simple)
+ {
+ simple->priv = IBUS_ENGINE_SIMPLE_GET_PRIVATE (simple);
++ simple->priv->compose_buffer = g_new (guint16, COMPOSE_BUFFER_SIZE + 1);
+ simple->priv->hex_mode_enabled =
+ g_getenv("IBUS_ENABLE_CTRL_SHIFT_U") != NULL ||
+ g_getenv("IBUS_ENABLE_CONTROL_SHIFT_U") != NULL;
+@@ -193,7 +197,8 @@ ibus_engine_simple_destroy (IBusEngineSimple *simple)
+ priv->emoji_dict = NULL;
+ }
+
+- g_clear_pointer (&priv->lookup_table, g_object_unref);
++ g_clear_object (&priv->lookup_table);
++ g_clear_pointer (&priv->compose_buffer, g_free);
+ g_clear_pointer (&priv->tentative_emoji, g_free);
+
+ IBUS_OBJECT_CLASS(ibus_engine_simple_parent_class)->destroy (
+@@ -356,7 +361,7 @@ ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple)
+ {
+ IBusEngineSimplePrivate *priv = simple->priv;
+
+- gunichar outbuf[EMOJI_SOURCE_LEN + 1];
++ gunichar outbuf[COMPOSE_BUFFER_SIZE + 1];
+ int len = 0;
+
+ if (priv->in_hex_sequence || priv->in_emoji_sequence) {
+@@ -376,10 +381,7 @@ ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple)
+ ++hexchars;
+ }
+
+- if (priv->in_hex_sequence)
+- g_assert (len <= IBUS_MAX_COMPOSE_LEN + 1);
+- else
+- g_assert (len <= EMOJI_SOURCE_LEN + 1);
++ g_assert (len <= COMPOSE_BUFFER_SIZE);
+ } else if (priv->tentative_match) {
+ outbuf[len++] = priv->tentative_match;
+ } else if (priv->tentative_emoji && *priv->tentative_emoji) {
+@@ -406,7 +408,7 @@ ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple)
+ ++len;
+ ++hexchars;
+ }
+- g_assert (len <= IBUS_MAX_COMPOSE_LEN + 1);
++ g_assert (len <= IBUS_MAX_COMPOSE_LEN);
+ }
+
+ outbuf[len] = L'\0';
+@@ -1265,11 +1267,11 @@ ibus_engine_simple_process_key_event (IBusEngine *engine,
+ guint printable_keyval;
+ gint i;
+
+- while (n_compose < EMOJI_SOURCE_LEN && priv->compose_buffer[n_compose] != 0)
++ while (n_compose <= COMPOSE_BUFFER_SIZE && priv->compose_buffer[n_compose] != 0)
+ n_compose++;
+- if (n_compose >= EMOJI_SOURCE_LEN) {
++ if (n_compose > COMPOSE_BUFFER_SIZE) {
+ g_warning ("copmose table buffer is full.");
+- n_compose = EMOJI_SOURCE_LEN - 1;
++ n_compose = COMPOSE_BUFFER_SIZE;
+ }
+
+ if (modifiers & IBUS_RELEASE_MASK) {
+@@ -1348,8 +1350,8 @@ ibus_engine_simple_process_key_event (IBusEngine *engine,
+ /* gtkimcontextsimple causes a buffer overflow in priv->compose_buffer.
+ * Add the check code here.
+ */
+- if ((n_compose >= IBUS_MAX_COMPOSE_LEN && priv->in_hex_sequence) ||
+- (n_compose >= EMOJI_SOURCE_LEN && priv->in_emoji_sequence)) {
++ if (n_compose > COMPOSE_BUFFER_SIZE &&
++ (priv->in_hex_sequence || priv->in_emoji_sequence)) {
+ if (is_backspace) {
+ priv->compose_buffer[--n_compose] = 0;
+ }
+--
+2.21.0
+
+From 80254484071eb57e1152579b60ec8a95522ebc22 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Mon, 24 Jun 2019 17:28:55 +0900
+Subject: [PATCH 17/27] src: s/iso_639-3/iso_639_3/ in ibus_get_language_name()
+
+iso-codes 3.66 has iso_639_3.xml only but 3.67 has both iso_639_3.xml
+and iso_639-3.xml. RHEL 7 uses iso-codes 3.46.
+
+BUG=https://github.com/ibus/ibus/issues/2101
+---
+ ibus/lang.py | 6 +++---
+ src/ibusutil.c | 10 +++++-----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/ibus/lang.py b/ibus/lang.py
+index 64324bd8..238a9172 100644
+--- a/ibus/lang.py
++++ b/ibus/lang.py
+@@ -3,7 +3,7 @@
+ # ibus - The Input Bus
+ #
+ # Copyright (c) 2007-2010 Peng Huang <shawn.p.huang@gmail.com>
+-# Copyright (c) 2007-2010 Red Hat, Inc.
++# Copyright (c) 2007-2019 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
+@@ -36,7 +36,7 @@ def get_language_name(_locale):
+ lang = lang.lower()
+ if lang in __languages_dict:
+ lang = __languages_dict[lang]
+- lang = gettext.dgettext("iso_639-3", lang)
++ lang = gettext.dgettext("iso_639_3", lang)
+ else:
+ lang = _(u"Other")
+ lang = gettext.dgettext("ibus", lang)
+@@ -62,7 +62,7 @@ def __char_data(data):
+ def __load_lang():
+ import os
+ import _config
+- iso_639_3_xml = os.path.join(_config.ISOCODES_PREFIX, "share/xml/iso-codes/iso_639-3.xml")
++ iso_639_3_xml = os.path.join(_config.ISOCODES_PREFIX, "share/xml/iso-codes/iso_639_3.xml")
+ p = xml.parsers.expat.ParserCreate()
+ p.StartElementHandler = __start_element
+ p.EndElementHandler = __end_element
+diff --git a/src/ibusutil.c b/src/ibusutil.c
+index 9d003e2e..88c054a2 100644
+--- a/src/ibusutil.c
++++ b/src/ibusutil.c
+@@ -2,7 +2,7 @@
+ /* vim:set et sts=4: */
+ /* bus - The Input Bus
+ * Copyright (C) 2008-2015 Peng Huang <shawn.p.huang@gmail.com>
+- * Copyright (C) 2010-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
++ * Copyright (C) 2010-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ * Copyright (C) 2008-2016 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+@@ -99,14 +99,14 @@ _load_lang()
+ struct stat buf;
+
+ #ifdef ENABLE_NLS
+- bindtextdomain ("iso_639-3", LOCALEDIR);
+- bind_textdomain_codeset ("iso_639-3", "UTF-8");
++ bindtextdomain ("iso_639_3", LOCALEDIR);
++ bind_textdomain_codeset ("iso_639_3", "UTF-8");
+ #endif
+
+ __languages_dict = g_hash_table_new_full (g_str_hash,
+ g_str_equal, g_free, g_free);
+ filename = g_build_filename (ISOCODES_PREFIX,
+- "share/xml/iso-codes/iso_639-3.xml",
++ "share/xml/iso-codes/iso_639_3.xml",
+ NULL);
+ if (g_stat (filename, &buf) != 0) {
+ g_warning ("Can not get stat of file %s", filename);
+@@ -197,7 +197,7 @@ ibus_get_language_name (const gchar *_locale)
+ if (g_strcmp0 (raw, "Other") == 0)
+ return g_strdup (dgettext (GETTEXT_PACKAGE, N_("Other")));
+ else
+- translation = dgettext ("iso_639-3", raw);
++ translation = dgettext ("iso_639_3", raw);
+ #else
+ translation = raw;
+ #endif
+--
+2.21.0
+
+From 69e443c07f944b3137aada31dcdbcb49728ff805 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 28 Jun 2019 20:43:36 +0900
+Subject: [PATCH 18/27] bus: Disable panel extension for gnome-initial-setup
+ user
+
+gnome-initial-setup user is executed before the post setup is finished
+after the installation is finished.
+---
+ bus/main.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/bus/main.c b/bus/main.c
+index 6f1f39ca..3223d541 100644
+--- a/bus/main.c
++++ b/bus/main.c
+@@ -49,6 +49,7 @@ static gchar *desktop = "gnome";
+
+ static gchar *panel_extension_disable_users[] = {
+ "gdm",
++ "gnome-initial-setup",
+ "liveuser"
+ };
+
+--
+2.21.0
+
+From c360cbd830943a4bfb0ece9cc07b99a426dc2121 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Mon, 9 Apr 2018 11:57:09 +0900
+Subject: [PATCH] src/tests: Add ibus-compose.env
+
+---
+ src/tests/ibus-compose.env | 3 +++
+ 1 file changed, 3 insertions(+)
+ create mode 100644 src/tests/ibus-compose.env
+
+diff --git a/src/tests/ibus-compose.env b/src/tests/ibus-compose.env
+new file mode 100644
+index 00000000..734ab8fa
+--- /dev/null
++++ b/src/tests/ibus-compose.env
+@@ -0,0 +1,3 @@
++LANG=el_GR.UTF-8
++LANG=fi_FI.UTF-8
++LANG=pt_BR.UTF-8
+--
+2.21.0
+
+From ac492f31b435b9464d591094d470bc94027168e8 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 28 Jun 2019 21:15:07 +0900
+Subject: [PATCH 19/27] src/tests: Fix ibus-compose for IBusComposeTableEx
+
+Recently IBusComposeTablEx has been integrated and the return value of
+ibus_compose_table_new_with_file() is also changed and ibus-compose
+needs to be updated.
+
+Clear IBusComposeTablePrivate in ibus_compose_table_list_add_array()
+for the ibus-compose testing.
+
+Clear compose_buffer in IBusEngineSimple.
+
+Use g_get_language_names_with_category instead() of g_get_locale_variants().
+
+Add ibus-compose.emoji for the tests of long compose sequences and
+multiple compose output characters.
+
+IBUS_COMPOSE_CACHE_DIR variable is added for the temporary caches.
+---
+ src/ibuscomposetable.c | 15 ++--
+ src/ibuscomposetable.h | 4 +
+ src/ibusenginesimple.c | 14 ++-
+ src/tests/Makefile.am | 2 +-
+ src/tests/ibus-compose.c | 163 +++++++++++++++++++++++++++--------
+ src/tests/ibus-compose.emoji | 11 +++
+ src/tests/ibus-compose.env | 1 +
+ src/tests/runtest | 4 +-
+ 8 files changed, 174 insertions(+), 47 deletions(-)
+ create mode 100644 src/tests/ibus-compose.emoji
+
+diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c
+index 4ac54e25..5fd37f10 100644
+--- a/src/ibuscomposetable.c
++++ b/src/ibuscomposetable.c
+@@ -497,13 +497,18 @@ static gchar *
+ ibus_compose_hash_get_cache_path (guint32 hash)
+ {
+ gchar *basename = NULL;
++ const gchar *cache_dir;
+ gchar *dir = NULL;
+ gchar *path = NULL;
+
+ basename = g_strdup_printf ("%08x.cache", hash);
+
+- dir = g_build_filename (g_get_user_cache_dir (),
+- "ibus", "compose", NULL);
++ if ((cache_dir = g_getenv ("IBUS_COMPOSE_CACHE_DIR"))) {
++ dir = g_strdup (cache_dir);
++ } else {
++ dir = g_build_filename (g_get_user_cache_dir (),
++ "ibus", "compose", NULL);
++ }
+ path = g_build_filename (dir, basename, NULL);
+ if (g_mkdir_with_parents (dir, 0755) != 0) {
+ g_warning ("Failed to mkdir %s", dir);
+@@ -817,7 +822,7 @@ out_load_cache:
+ }
+
+
+-static IBusComposeTableEx *
++IBusComposeTableEx *
+ ibus_compose_table_load_cache (const gchar *compose_file)
+ {
+ IBusComposeTableEx *retval = NULL;
+@@ -862,7 +867,7 @@ ibus_compose_table_load_cache (const gchar *compose_file)
+ }
+
+
+-static void
++void
+ ibus_compose_table_save_cache (IBusComposeTableEx *compose_table)
+ {
+ gchar *path = NULL;
+@@ -1068,7 +1073,7 @@ ibus_compose_table_list_add_array (GSList *compose_tables,
+ for (i = 0; i < length; i++)
+ ibus_compose_seqs[i] = data[i];
+
+- compose_table = g_new (IBusComposeTableEx, 1);
++ compose_table = g_new0 (IBusComposeTableEx, 1);
+ compose_table->data = ibus_compose_seqs;
+ compose_table->max_seq_len = max_seq_len;
+ compose_table->n_seqs = n_seqs;
+diff --git a/src/ibuscomposetable.h b/src/ibuscomposetable.h
+index 777c5f42..b60e53fe 100644
+--- a/src/ibuscomposetable.h
++++ b/src/ibuscomposetable.h
+@@ -71,6 +71,10 @@ struct _IBusComposeTableCompactEx
+
+ IBusComposeTableEx *
+ ibus_compose_table_new_with_file (const gchar *compose_file);
++IBusComposeTableEx *
++ ibus_compose_table_load_cache (const gchar *compose_file);
++void ibus_compose_table_save_cache (IBusComposeTableEx
++ *compose_table);
+ GSList * ibus_compose_table_list_add_array
+ (GSList
+ *compose_tables,
+diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c
+index 0604693d..b623e149 100644
+--- a/src/ibusenginesimple.c
++++ b/src/ibusenginesimple.c
+@@ -178,7 +178,7 @@ static void
+ ibus_engine_simple_init (IBusEngineSimple *simple)
+ {
+ simple->priv = IBUS_ENGINE_SIMPLE_GET_PRIVATE (simple);
+- simple->priv->compose_buffer = g_new (guint16, COMPOSE_BUFFER_SIZE + 1);
++ simple->priv->compose_buffer = g_new0(guint16, COMPOSE_BUFFER_SIZE + 1);
+ simple->priv->hex_mode_enabled =
+ g_getenv("IBUS_ENABLE_CTRL_SHIFT_U") != NULL ||
+ g_getenv("IBUS_ENABLE_CONTROL_SHIFT_U") != NULL;
+@@ -1747,9 +1747,14 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple,
+ gboolean retval = TRUE;
+ gchar *path = NULL;
+ const gchar *home;
++#if GLIB_CHECK_VERSION (2, 58, 0)
++ const gchar * const *langs;
++ const gchar * const *lang = NULL;
++#else
+ const gchar *_locale;
+ gchar **langs = NULL;
+ gchar **lang = NULL;
++#endif
+ gchar * const sys_langs[] = { "el_gr", "fi_fi", "pt_br", NULL };
+ gchar * const *sys_lang = NULL;
+
+@@ -1787,6 +1792,9 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple,
+ g_free (path);
+ path = NULL;
+
++#if GLIB_CHECK_VERSION (2, 58, 0)
++ langs = g_get_language_names_with_category ("LC_CTYPE");
++#else
+ _locale = g_getenv ("LC_CTYPE");
+ if (_locale == NULL)
+ _locale = g_getenv ("LANG");
+@@ -1795,6 +1803,7 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple,
+
+ /* FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=751826 */
+ langs = g_get_locale_variants (_locale);
++#endif
+
+ for (lang = langs; *lang; lang++) {
+ if (g_str_has_prefix (*lang, "en_US"))
+@@ -1821,7 +1830,9 @@ ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple,
+ path = NULL;
+ }
+
++#if !GLIB_CHECK_VERSION (2, 58, 0)
+ g_strfreev (langs);
++#endif
+
+ if (path != NULL)
+ ibus_engine_simple_add_compose_file (simple, path);
+@@ -1853,3 +1864,4 @@ ibus_engine_simple_add_compose_file (IBusEngineSimple *simple,
+ compose_file);
+ return TRUE;
+ }
++
+diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
+index e2ff5ea7..a58504a3 100644
+--- a/src/tests/Makefile.am
++++ b/src/tests/Makefile.am
+@@ -78,7 +78,7 @@ TESTS_ENVIRONMENT = \
+
+ LOG_COMPILER = $(srcdir)/runtest
+
+-EXTRA_DIST = runtest ibus-compose.env
++EXTRA_DIST = runtest ibus-compose.emoji ibus-compose.env
+
+ ibus_bus_SOURCES = ibus-bus.c
+ ibus_bus_LDADD = $(prog_ldadd)
+diff --git a/src/tests/ibus-compose.c b/src/tests/ibus-compose.c
+index aabb36ac..e1911b32 100644
+--- a/src/tests/ibus-compose.c
++++ b/src/tests/ibus-compose.c
+@@ -1,37 +1,36 @@
+ #include <gtk/gtk.h>
+ #include "ibus.h"
+ #include "ibuscomposetable.h"
++#include "ibusenginesimpleprivate.h"
+
+ #define GREEN "\033[0;32m"
+ #define RED "\033[0;31m"
+ #define NC "\033[0m"
+
+ IBusBus *m_bus;
+-IBusComposeTable *m_compose_table;
++gchar *m_compose_file;
++IBusComposeTableEx *m_compose_table;
+ IBusEngine *m_engine;
++gchar *m_srcdir;
+ int m_retval;
+
+ static gboolean window_focus_in_event_cb (GtkWidget *entry,
+ GdkEventFocus *event,
+ gpointer data);
+
+-static IBusEngine *
+-create_engine_cb (IBusFactory *factory, const gchar *name, gpointer data)
++
++static gchar *
++get_compose_path ()
+ {
+- static int i = 1;
+- gchar *engine_path =
+- g_strdup_printf ("/org/freedesktop/IBus/engine/simpletest/%d",
+- i++);
+- gchar *compose_path = NULL;
+ const gchar * const *langs;
+ const gchar * const *l;
++ gchar *compose_path = NULL;
+
+- m_engine = ibus_engine_new_with_type (IBUS_TYPE_ENGINE_SIMPLE,
+- name,
+- engine_path,
+- ibus_bus_get_connection (m_bus));
+- g_free (engine_path);
++#if GLIB_CHECK_VERSION (2, 58, 0)
++ langs = g_get_language_names_with_category ("LC_CTYPE");
++#else
+ langs = g_get_language_names ();
++#endif
+ for (l = langs; *l; l++) {
+ if (g_str_has_prefix (*l, "en_US"))
+ break;
+@@ -46,18 +45,39 @@ create_engine_cb (IBusFactory *factory, const gchar *name, gpointer data)
+ g_free (compose_path);
+ compose_path = NULL;
+ }
++
++ return compose_path;
++}
++
++
++static IBusEngine *
++create_engine_cb (IBusFactory *factory,
++ const gchar *name,
++ gpointer data)
++{
++ static int i = 1;
++ gchar *engine_path =
++ g_strdup_printf ("/org/freedesktop/IBus/engine/simpletest/%d",
++ i++);
++ gchar *compose_path;
++
++ m_engine = ibus_engine_new_with_type (IBUS_TYPE_ENGINE_SIMPLE,
++ name,
++ engine_path,
++ ibus_bus_get_connection (m_bus));
++ g_free (engine_path);
++ if (m_compose_file)
++ compose_path = g_build_filename (m_srcdir, m_compose_file, NULL);
++ else
++ compose_path = get_compose_path ();
+ if (compose_path != NULL) {
+- m_compose_table = ibus_compose_table_new_with_file (compose_path);
++ ibus_engine_simple_add_compose_file (IBUS_ENGINE_SIMPLE (m_engine),
++ compose_path);
++ m_compose_table = ibus_compose_table_load_cache (compose_path);
+ if (m_compose_table == NULL)
+ g_warning ("Your locale uses en_US compose table.");
+- else
+- ibus_engine_simple_add_table (IBUS_ENGINE_SIMPLE (m_engine),
+- m_compose_table->data,
+- m_compose_table->max_seq_len,
+- m_compose_table->n_seqs);
+- } else {
+- g_warning ("Your locale uses en_US compose file.");
+ }
++ g_free (compose_path);
+ return m_engine;
+ }
+
+@@ -118,6 +138,7 @@ set_engine_cb (GObject *object, GAsyncResult *res, gpointer data)
+ GError *error = NULL;
+ int i, j;
+ int index_stride;
++ IBusComposeTablePrivate *priv;
+
+ if (!ibus_bus_set_global_engine_async_finish (bus, res, &error)) {
+ g_warning ("set engine failed: %s", error->message);
+@@ -149,6 +170,27 @@ set_engine_cb (GObject *object, GAsyncResult *res, gpointer data)
+ keyval, keycode, modifiers, &retval);
+ }
+ }
++ priv = m_compose_table->priv;
++ if (priv) {
++ for (i = 0;
++ i < (priv->first_n_seqs * index_stride);
++ i += index_stride) {
++ for (j = i; j < i + (index_stride - 1); j++) {
++ guint keyval = priv->data_first[j];
++ guint keycode = 0;
++ guint modifiers = 0;
++ gboolean retval;
++
++ if (keyval == 0)
++ break;
++ g_signal_emit_by_name (m_engine, "process-key-event",
++ keyval, keycode, modifiers, &retval);
++ modifiers |= IBUS_RELEASE_MASK;
++ g_signal_emit_by_name (m_engine, "process-key-event",
++ keyval, keycode, modifiers, &retval);
++ }
++ }
++ }
+
+ g_signal_handlers_disconnect_by_func (entry,
+ G_CALLBACK (window_focus_in_event_cb),
+@@ -183,41 +225,87 @@ window_inserted_text_cb (GtkEntryBuffer *buffer,
+ static int n_loop = 0;
+ #endif
+ static guint stride = 0;
++ static gboolean enable_32bit = FALSE;
+ guint i;
+ int seq;
+ gunichar code = g_utf8_get_char (chars);
+ const gchar *test;
+ GtkEntry *entry = GTK_ENTRY (data);
++ IBusComposeTablePrivate *priv;
+
+ g_assert (m_compose_table != NULL);
+
++ priv = m_compose_table->priv;
++
+ #if !GTK_CHECK_VERSION (3, 22, 16)
+ if (n_loop % 2 == 1) {
+ n_loop = 0;
+ return;
+ }
+ #endif
+- i = stride + (m_compose_table->max_seq_len + 2) - 1;
+- seq = (i + 1) / (m_compose_table->max_seq_len + 2);
+- if (m_compose_table->data[i] == code) {
+- test = GREEN "PASS" NC;
++ i = stride + (m_compose_table->max_seq_len + 2) - 2;
++ seq = (i + 2) / (m_compose_table->max_seq_len + 2);
++ if (!enable_32bit) {
++ if (m_compose_table->data[i] == code) {
++ test = GREEN "PASS" NC;
++ } else {
++ test = RED "FAIL" NC;
++ m_retval = -1;
++ }
++ g_print ("%05d/%05d %s expected: %04X typed: %04X\n",
++ seq,
++ m_compose_table->n_seqs,
++ test,
++ m_compose_table->data[i],
++ code);
+ } else {
+- test = RED "FAIL" NC;
+- m_retval = -1;
++ const gchar *p = chars;
++ guint num = priv->data_first[i];
++ guint index = priv->data_first[i + 1];
++ guint j = 0;
++ gboolean valid_output = TRUE;
++ if (seq == 2)
++ g_print ("test\n");
++ for (j = 0; j < num; j++) {
++ if (priv->data_second[index + j] != code) {
++ valid_output = FALSE;
++ break;
++ }
++ p = g_utf8_next_char (p);
++ code = g_utf8_get_char (p);
++ }
++ if (valid_output) {
++ test = GREEN "PASS" NC;
++ } else {
++ test = RED "FAIL" NC;
++ m_retval = -1;
++ }
++ g_print ("%05d/%05ld %s expected: %04X[%d] typed: %04X\n",
++ seq,
++ priv->first_n_seqs,
++ test,
++ valid_output ? priv->data_second[index]
++ : priv->data_second[index + j],
++ valid_output ? index + num : index + j,
++ valid_output ? g_utf8_get_char (chars) : code);
+ }
+- g_print ("%05d/%05d %s expected: %04X typed: %04X\n",
+- seq,
+- m_compose_table->n_seqs,
+- test,
+- m_compose_table->data[i],
+- code);
+-
+- if (seq == m_compose_table->n_seqs) {
++
++ stride += m_compose_table->max_seq_len + 2;
++
++ if (!enable_32bit && seq == m_compose_table->n_seqs) {
++ if (priv) {
++ enable_32bit = TRUE;
++ stride = 0;
++ } else {
++ gtk_main_quit ();
++ return;
++ }
++ }
++ if (enable_32bit && seq == priv->first_n_seqs) {
+ gtk_main_quit ();
+ return;
+ }
+
+- stride += m_compose_table->max_seq_len + 2;
+ #if !GTK_CHECK_VERSION (3, 22, 16)
+ n_loop++;
+ #endif
+@@ -248,6 +336,9 @@ main (int argc, char *argv[])
+ ibus_init ();
+ gtk_init (&argc, &argv);
+
++ m_srcdir = argc > 1 ? g_strdup (argv[1]) : g_strdup (".");
++ m_compose_file = g_strdup (g_getenv ("COMPOSE_FILE"));
++
+ if (!register_ibus_engine ())
+ return -1;
+
+diff --git a/src/tests/ibus-compose.emoji b/src/tests/ibus-compose.emoji
+new file mode 100644
+index 00000000..7fbf82cf
+--- /dev/null
++++ b/src/tests/ibus-compose.emoji
+@@ -0,0 +1,11 @@
++<Multi_key> <Multi_key> <l> <e> <o> : "♌" U264C # LEO
++<Multi_key> <Multi_key> <v> <i> <r> <g> <o> : "♍" U264D # VIRGO
++<Multi_key> <Multi_key> <I> <n> <t> : "∫"
++<Multi_key> <Multi_key> <I> <I> <n> <t> : "∬"
++<Multi_key> <Multi_key> <I> <I> <n> <o> : "🗼"
++<Multi_key> <Multi_key> <I> <I> <n> <p> : "(゜∀゜)"
++<Multi_key> <Multi_key> <I> <I> <n> <q> : "*・゜゜・*:.。..。.:*・゜(n‘Д‘)η゜・*:.。. .。.:*・ ゜゜・* !!!!!"
++<Multi_key> <Multi_key> <I> <I> <I> <n> <t> : "∭"
++<Multi_key> <Multi_key> <o> <I> <n> <t> : "∮"
++<Multi_key> <Multi_key> <o> <I> <I> <n> <t> : "∯"
++<Multi_key> <Multi_key> <o> <I> <I> <I> <n> <t> : "∰"
+diff --git a/src/tests/ibus-compose.env b/src/tests/ibus-compose.env
+index 734ab8fa..a9e289e4 100644
+--- a/src/tests/ibus-compose.env
++++ b/src/tests/ibus-compose.env
+@@ -1,3 +1,4 @@
+ LANG=el_GR.UTF-8
+ LANG=fi_FI.UTF-8
+ LANG=pt_BR.UTF-8
++LANG=en_US.UTF-8 COMPOSE_FILE=ibus-compose.emoji
+diff --git a/src/tests/runtest b/src/tests/runtest
+index 4e980c71..35ccc5a0 100755
+--- a/src/tests/runtest
++++ b/src/tests/runtest
+@@ -184,7 +184,9 @@ run_test_case()
+ export GTK_IM_MODULE=ibus
+ fi
+
+- "../$tst" ${1+"$@"}
++ export IBUS_COMPOSE_CACHE_DIR=$PWD
++
++ "../$tst" ../$top_srcdir/src/tests ${1+"$@"}
+
+ retval=`expr $retval \| $?`
+
+--
+2.21.0
+
+From 76dec798d5cf6cdaa96c3373f9c0e1cd13eb31f5 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 28 Jun 2019 21:28:32 +0900
+Subject: [PATCH 20/27] src/tests: Use GTest for ibus-compose
+
+---
+ src/tests/ibus-compose.c | 45 ++++++++++++++++++++++++++++------------
+ 1 file changed, 32 insertions(+), 13 deletions(-)
+
+diff --git a/src/tests/ibus-compose.c b/src/tests/ibus-compose.c
+index e1911b32..09c687c2 100644
+--- a/src/tests/ibus-compose.c
++++ b/src/tests/ibus-compose.c
+@@ -12,7 +12,6 @@ gchar *m_compose_file;
+ IBusComposeTableEx *m_compose_table;
+ IBusEngine *m_engine;
+ gchar *m_srcdir;
+-int m_retval;
+
+ static gboolean window_focus_in_event_cb (GtkWidget *entry,
+ GdkEventFocus *event,
+@@ -124,8 +123,7 @@ register_ibus_engine ()
+ static gboolean
+ finit (gpointer data)
+ {
+- m_retval = -1;
+- g_warning ("time out");
++ g_test_incomplete ("time out");
+ gtk_main_quit ();
+ return FALSE;
+ }
+@@ -141,7 +139,9 @@ set_engine_cb (GObject *object, GAsyncResult *res, gpointer data)
+ IBusComposeTablePrivate *priv;
+
+ if (!ibus_bus_set_global_engine_async_finish (bus, res, &error)) {
+- g_warning ("set engine failed: %s", error->message);
++ gchar *msg = g_strdup_printf ("set engine failed: %s", error->message);
++ g_test_incomplete (msg);
++ g_free (msg);
+ g_error_free (error);
+ return;
+ }
+@@ -250,7 +250,7 @@ window_inserted_text_cb (GtkEntryBuffer *buffer,
+ test = GREEN "PASS" NC;
+ } else {
+ test = RED "FAIL" NC;
+- m_retval = -1;
++ g_test_fail ();
+ }
+ g_print ("%05d/%05d %s expected: %04X typed: %04X\n",
+ seq,
+@@ -278,7 +278,7 @@ window_inserted_text_cb (GtkEntryBuffer *buffer,
+ test = GREEN "PASS" NC;
+ } else {
+ test = RED "FAIL" NC;
+- m_retval = -1;
++ g_test_fail ();
+ }
+ g_print ("%05d/%05ld %s expected: %04X[%d] typed: %04X\n",
+ seq,
+@@ -330,20 +330,39 @@ create_window ()
+ gtk_widget_show_all (window);
+ }
+
++static void
++test_compose (void)
++{
++ if (!register_ibus_engine ()) {
++ g_test_fail ();
++ return;
++ }
++
++ create_window ();
++ gtk_main ();
++
++}
++
+ int
+ main (int argc, char *argv[])
+ {
++ const gchar *test_name;
++ gchar *test_path;
++
+ ibus_init ();
++ g_test_init (&argc, &argv, NULL);
+ gtk_init (&argc, &argv);
+
+ m_srcdir = argc > 1 ? g_strdup (argv[1]) : g_strdup (".");
+ m_compose_file = g_strdup (g_getenv ("COMPOSE_FILE"));
++#if GLIB_CHECK_VERSION (2, 58, 0)
++ test_name = g_get_language_names_with_category ("LC_CTYPE")[0];
++#else
++ test_name = g_getenv ("LANG");
++#endif
++ test_path = g_build_filename ("/ibus-compose", test_name, NULL);
++ g_test_add_func (test_path, test_compose);
++ g_free (test_path);
+
+- if (!register_ibus_engine ())
+- return -1;
+-
+- create_window ();
+- gtk_main ();
+-
+- return m_retval;
++ return g_test_run ();
+ }
+--
+2.21.0
+
+From 6bdc692e0dc72a9afae5407983859e88c16b4971 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Wed, 10 Jul 2019 18:18:04 +0900
+Subject: [PATCH 21/27] src: Support common_name in ISO 639
+
+Nowadays "Bangla" is preferred to "Bengali" for BN language code
+and iso_639*.xml describes it in "common_name" tag.
+
+BUG=https://github.com/ibus/ibus/issues/2104
+---
+ src/ibusutil.c | 21 ++++++++++++++++-----
+ 1 file changed, 16 insertions(+), 5 deletions(-)
+
+diff --git a/src/ibusutil.c b/src/ibusutil.c
+index 88c054a2..701984c7 100644
+--- a/src/ibusutil.c
++++ b/src/ibusutil.c
+@@ -53,6 +53,7 @@ _iso_codes_parse_xml_node (XMLNode *node)
+ XMLNode *sub_node = (XMLNode *)p->data;
+ gchar **attributes = NULL;
+ int i, j;
++ gboolean has_common_name = FALSE;
+ struct {
+ const gchar *key;
+ gchar *value;
+@@ -68,14 +69,24 @@ _iso_codes_parse_xml_node (XMLNode *node)
+
+ attributes = sub_node->attributes;
+ for (i = 0; attributes[i]; i += 2) {
+- if (g_strcmp0 (attributes[i], "name") == 0) {
++ if (!g_strcmp0 (attributes[i], "common_name")) {
+ for (j = 0; j < G_N_ELEMENTS (entries); j++) {
+ if (entries[j].value == NULL)
+ continue;
+- g_hash_table_insert (__languages_dict,
+- (gpointer) g_strdup (entries[j].value),
+- (gpointer) g_strdup (attributes[i + 1]));
+- entries[j].value = NULL;
++ g_hash_table_replace (__languages_dict,
++ g_strdup (entries[j].value),
++ g_strdup (attributes[i + 1]));
++ }
++ has_common_name = TRUE;
++ } else if (!g_strcmp0 (attributes[i], "name")) {
++ if (has_common_name)
++ continue;
++ for (j = 0; j < G_N_ELEMENTS (entries); j++) {
++ if (entries[j].value == NULL)
++ continue;
++ g_hash_table_replace (__languages_dict,
++ g_strdup (entries[j].value),
++ g_strdup (attributes[i + 1]));
+ }
+ } else {
+ for (j = 0; j < G_N_ELEMENTS (entries); j++) {
+--
+2.21.0
+
+From af00f4156b5c79c526eab18c49da80affd41ebee Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 12 Jul 2019 21:12:38 +0900
+Subject: [PATCH 22/27] src/tests: Install IBus tests into
+ gnome-desktop-testing
+
+---
+ configure.ac | 13 +++++++++++
+ src/tests/Makefile.am | 39 ++++++++++++++++++++++++++++++-
+ src/tests/ibus-compose-locales.in | 23 ++++++++++++++++++
+ src/tests/ibus-compose.c | 10 ++++++--
+ src/tests/meta.test.in | 4 ++++
+ src/tests/runtest | 4 ++--
+ 6 files changed, 88 insertions(+), 5 deletions(-)
+ create mode 100755 src/tests/ibus-compose-locales.in
+ create mode 100644 src/tests/meta.test.in
+
+diff --git a/configure.ac b/configure.ac
+index b5a87b56..f1df3ac1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -595,6 +595,18 @@ PKG_CHECK_MODULES(XTEST,
+ )
+ AM_CONDITIONAL([ENABLE_XTEST], [test x"$enable_xtest" = x"yes"])
+
++# --enable-install-tests
++AC_ARG_ENABLE(install-tests,
++ AS_HELP_STRING([--enable-install-tests],
++ [Enable to install tests]),
++ [enable_install_tests=$enableval],
++ [enable_install_tests=no]
++)
++AM_CONDITIONAL([ENABLE_INSTALL_TESTS], [test x"$enable_install_tests" = x"yes"])
++if test x"$enable_install_tests" = x"no"; then
++ enable_install_tests="no (disabled, use --enable-install-tests to enable)"
++fi
++
+
+ # --disable-emoji-dict option.
+ AC_ARG_ENABLE(emoji-dict,
+@@ -773,5 +785,6 @@ Build options:
+ Enable Unicode dict $enable_unicode_dict
+ UCD directory $UCD_DIR
+ Run test cases $enable_tests
++ Install tests $enable_install_tests
+ ])
+
+diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
+index a58504a3..ff31111b 100644
+--- a/src/tests/Makefile.am
++++ b/src/tests/Makefile.am
+@@ -78,7 +78,44 @@ TESTS_ENVIRONMENT = \
+
+ LOG_COMPILER = $(srcdir)/runtest
+
+-EXTRA_DIST = runtest ibus-compose.emoji ibus-compose.env
++if ENABLE_INSTALL_TESTS
++test_metas_in = meta.test.in
++test_execs = $(TESTS:ibus-compose=ibus-compose-locales)
++test_metas = $(addsuffix .test, $(test_execs))
++test_sources_DATA = \
++ $(test_metas) \
++ ibus-compose.emoji \
++ ibus-compose.env \
++ $(NULL)
++test_sourcesdir = $(datadir)/installed-tests/ibus
++
++test_execs_PROGRAMS = $(TESTS)
++if ENABLE_GTK3
++test_execs_SCRIPTS = ibus-compose-locales
++endif
++test_execsdir = $(libexecdir)/installed-tests/ibus
++endif
++
++$(test_metas): $(test_metas_in) $(test_programs)
++ f=`echo $@ | sed -e 's/\.test//'`; \
++ TEST_EXEC=$(test_execsdir)/$$f; \
++ sed -e "s|@TEST_EXEC[@]|$$TEST_EXEC|g" $(test_metas_in) > $@.tmp; \
++ mv $@.tmp $@; \
++ $(NULL)
++
++ibus-compose-locales: ibus-compose-locales.in
++ SRCDIR=$(test_sourcesdir); \
++ sed -e "s|@SRCDIR[@]|$$SRCDIR|g" $< > $@.tmp; \
++ mv $@.tmp $@; \
++ $(NULL)
++
++EXTRA_DIST = \
++ $(test_metas_in) \
++ runtest \
++ ibus-compose.emoji \
++ ibus-compose.env \
++ ibus-compose-locales.in \
++ $(NULL)
+
+ ibus_bus_SOURCES = ibus-bus.c
+ ibus_bus_LDADD = $(prog_ldadd)
+diff --git a/src/tests/ibus-compose-locales.in b/src/tests/ibus-compose-locales.in
+new file mode 100755
+index 00000000..8d2384d1
+--- /dev/null
++++ b/src/tests/ibus-compose-locales.in
+@@ -0,0 +1,23 @@
++#!/bin/sh
++
++SRCDIR=@SRCDIR@
++BUILDDIR=`dirname $0`
++
++
++export IBUS_COMPOSE_CACHE_DIR=$PWD
++
++for var in `cat $SRCDIR/ibus-compose.env`
++do
++ IS_COMMENT=`echo "$var" | grep "^#"`
++ if [ "x$IS_COMMENT" != x ] ; then
++ continue
++ fi
++ env $var $BUILDDIR/ibus-compose $SRCDIR $@
++
++ CACHE_FILES=`ls *.cache`
++ if [ x"$CACHE_FILES" != x ] ; then
++ echo "Clean $CACHE_FILES"
++ rm $CACHE_FILES
++ fi
++done
++
+diff --git a/src/tests/ibus-compose.c b/src/tests/ibus-compose.c
+index 09c687c2..c8d3c126 100644
+--- a/src/tests/ibus-compose.c
++++ b/src/tests/ibus-compose.c
+@@ -264,8 +264,6 @@ window_inserted_text_cb (GtkEntryBuffer *buffer,
+ guint index = priv->data_first[i + 1];
+ guint j = 0;
+ gboolean valid_output = TRUE;
+- if (seq == 2)
+- g_print ("test\n");
+ for (j = 0; j < num; j++) {
+ if (priv->data_second[index + j] != code) {
+ valid_output = FALSE;
+@@ -351,6 +349,14 @@ main (int argc, char *argv[])
+
+ ibus_init ();
+ g_test_init (&argc, &argv, NULL);
++ /* FIXME:
++ * IBusIMContext opens GtkIMContextSimple as the slave and
++ * GtkIMContextSimple opens the compose table on el_GR.UTF-8, and the
++ * multiple outputs in el_GR's compose causes a warning in gtkcomposetable
++ * and the warning always causes a fatal in GTest:
++ " "GTK+ supports to output one char only: "
++ */
++ g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL);
+ gtk_init (&argc, &argv);
+
+ m_srcdir = argc > 1 ? g_strdup (argv[1]) : g_strdup (".");
+diff --git a/src/tests/meta.test.in b/src/tests/meta.test.in
+new file mode 100644
+index 00000000..ae2b2991
+--- /dev/null
++++ b/src/tests/meta.test.in
+@@ -0,0 +1,4 @@
++[Test]
++Type=session
++Exec=@TEST_EXEC@ --tap
++Output=TAP
+diff --git a/src/tests/runtest b/src/tests/runtest
+index 35ccc5a0..1fcc9283 100755
+--- a/src/tests/runtest
++++ b/src/tests/runtest
+@@ -200,7 +200,7 @@ if test -f $envfile ; then
+ ENVS="`cat $envfile`"
+ fi;
+ if test x"$ENVS" = x ; then
+- run_test_case
++ run_test_case $@
+ else
+ LANG_backup=$LANG
+ i=1
+@@ -212,7 +212,7 @@ else
+ export $e
+ echo "Run `func_basename $tst` on $e"
+ echo "======================="
+- run_test_case
++ run_test_case $@
+ echo ""
+ i=`expr $i + 1`
+ done
+--
+2.21.0
+
+From 2a4f9518d42b618d8111fa5f9f885757524758a0 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 12 Jul 2019 21:12:40 +0900
+Subject: [PATCH 23/27] src/tests: Rename test-console.sh to
+ ibus-desktop-testing-runner
+
+---
+ src/tests/Makefile.am | 9 +++++++++
+ .../tests/ibus-desktop-testing-runner.in | 0
+ 2 files changed, 9 insertions(+)
+ create mode 100755 .../tests/ibus-desktop-testing-runner.in
+
+diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
+index ff31111b..b9aad29a 100644
+--- a/src/tests/Makefile.am
++++ b/src/tests/Makefile.am
+@@ -79,6 +79,7 @@ TESTS_ENVIRONMENT = \
+ LOG_COMPILER = $(srcdir)/runtest
+
+ if ENABLE_INSTALL_TESTS
++bin_SCRIPTS = ibus-desktop-testing-runner
+ test_metas_in = meta.test.in
+ test_execs = $(TESTS:ibus-compose=ibus-compose-locales)
+ test_metas = $(addsuffix .test, $(test_execs))
+@@ -109,12 +110,20 @@ ibus-compose-locales: ibus-compose-locales.in
+ mv $@.tmp $@; \
+ $(NULL)
+
++ ibus-desktop-testing-runner.in \
++ibus-desktop-testing-runner: ibus-desktop-testing-runner.in
++ SRCDIR=$(test_sourcesdir); \
++ sed -e "s|@SRCDIR[@]|$$SRCDIR|g" $< > $@.tmp; \
++ mv $@.tmp $@; \
++ $(NULL)
++
+ EXTRA_DIST = \
+ $(test_metas_in) \
+ runtest \
+ ibus-compose.emoji \
+ ibus-compose.env \
+ ibus-compose-locales.in \
++ ibus-desktop-testing-runner.in \
+ $(NULL)
+
+ ibus_bus_SOURCES = ibus-bus.c
+diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in
+new file mode 100755
+index 00000000..07c8a96d
+--- /dev/null
++++ b/src/tests/ibus-desktop-testing-runner.in
+@@ -0,0 +1,255 @@
++#!/bin/sh
++# -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*-
++# vim:set noet ts=4:
++#
++# ibus-anthy - The Anthy engine for IBus
++#
++# Copyright (c) 2018-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
++# Copyright (c) 2018 Red Hat, Inc.
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program 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 General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License along
++# with this program; if not, write to the Free Software Foundation, Inc.,
++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++
++# This test runs /usr/bin/ibus-daemon after install ibus
++#
++# # init 3
++# Login as root
++# # /root/ibus/tests/test-console.sh --tests ibus-compose \
++# --builddir /root/ibus/src/tests --srcdir /root/ibus/src/tests
++
++PROGNAME=`basename $0`
++VERSION=0.1
++DISPLAY=:99.0
++BUILDDIR="."
++SRCDIR="."
++TEST_LOG=test-suite.log
++HAVE_GRAPHICS=1
++DESKTOP_COMMAND="gnome-session"
++PID_XORG=0
++PID_GNOME_SESSION=0
++TESTS=""
++GREEN='\033[0;32m'
++RED='\033[0;31m'
++NC='\033[0m'
++
++usage()
++{
++ echo -e \
++"This test runs /usr/bin/ibus-daemon after install ibus\n" \
++"$PROGNAME [OPTIONS…]\n" \
++"\n" \
++"OPTIONS:\n" \
++"-h, --help This help\n" \
++"-v, --version Show version\n" \
++"-b, --builddir=BUILDDIR Set the BUILDDIR\n" \
++"-s, --srcdir=SOURCEDIR Set the SOURCEDIR\n" \
++"-c, --no-graphics Use Xvfb instead of Xorg\n" \
++"-d, --desktop=DESKTOP Run DESTKTOP. The default is gnome-session\n" \
++"-t, --tests=\"TESTS...\" Run TESTS programs which is separated by space\n" \
++""
++}
++
++parse_args()
++{
++ # This is GNU getopt. "sudo port getopt" in BSD?
++ ARGS=`getopt -o hvb:s:cd:t: --long help,version,builddir:,srcdir:,no-graphics,desktop:,tests:\
++ -- "$@"`;
++ eval set -- "$ARGS"
++ while [ 1 ] ; do
++ case "$1" in
++ -h | --help ) usage; exit 0;;
++ -v | --version ) echo -e "$VERSION"; exit 0;;
++ -b | --builddir ) BUILDDIR="$2"; shift 2;;
++ -s | --srcdir ) SRCDIR="$2"; shift 2;;
++ -c | --no-graphics ) HAVE_GRAPHICS=0; shift;;
++ -d | --desktop ) DESKTOP_COMMAND="$2"; shift 2;;
++ -t | --tests ) TESTS="$2"; shift 2;;
++ -- ) shift; break;;
++ * ) usage; exit 1;;
++ esac
++ done
++}
++
++init_desktop()
++{
++ if test x$FORCE_TEST != x ; then
++ RUN_ARGS="$RUN_ARGS --force"
++ fi
++
++ if test ! -f $HOME/.config/gnome-initial-setup-done ; then
++ if test ! -f /var/lib/AccountsService/users/$USER ; then
++ mkdir -p /var/lib/AccountsService/users
++ cat >> /var/lib/AccountsService/users/$USER << _EOF
++[User]
++Language=ja_JP.UTF-8
++XSession=gnome
++SystemAccount=false
++_EOF
++ fi
++ mkdir -p $HOME/.config
++ touch $HOME/.config/gnome-initial-setup-done
++ fi
++
++ # Prevent from launching a XDG dialog
++ XDG_LOCALE_FILE="$HOME/.config/user-dirs.locale"
++ if test -f $XDG_LOCALE_FILE ; then
++ XDG_LANG_ORIG=`cat $XDG_LOCALE_FILE`
++ XDG_LANG_NEW=`echo $LANG | sed -e 's/\(.*\)\..*/\1/'`
++ if [ "$XDG_LANG_ORIG" != "$XDG_LANG_NEW" ] ; then
++ echo "Overriding XDG locale $XDG_LANG_ORIG with $XDG_LANG_NEW"
++ echo "$XDG_LANG_NEW" > $XDG_LOCALE_FILE
++ fi
++ fi
++}
++
++run_dbus_daemon()
++{
++ a=`ps -ef | grep dbus-daemon | grep "\-\-system" | grep -v session | grep -v grep`
++ if test x"$a" = x ; then
++ eval `dbus-launch --sh-syntax`
++ fi
++ SUSER=`echo "$USER" | cut -c 1-7`
++ a=`ps -ef | grep dbus-daemon | grep "$SUSER" | grep -v gdm | grep session | grep -v grep`
++ if test x"$a" = x ; then
++ systemctl --user start dbus
++ export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus
++ fi
++ systemctl --user status dbus | col -b
++ ps -ef | grep dbus-daemon | grep "$SUSER" | grep -v gdm | egrep 'session|system' | grep -v grep
++ systemctl --user show-environment | col -b
++}
++
++run_desktop()
++{
++ if test $HAVE_GRAPHICS -eq 1 ; then
++ /usr/libexec/Xorg.wrap -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xorg.log -config ./xorg.conf -configdir . $DISPLAY &
++ else
++ /usr/bin/Xvfb $DISPLAY -noreset +extension GLX +extension RANDR +extension RENDER -screen 0 1280x1024x24 &
++ fi
++ PID_XORG=$!
++ sleep 1
++ export DISPLAY=$DISPLAY
++ $DESKTOP_COMMAND &
++ PID_GNOME_SESSION=$!
++ sleep 30
++ if test "$DESKTOP_COMMAND" != "gnome-session" ; then
++ ibus-daemon --daemonize --verbose
++ sleep 1
++ fi
++}
++
++count_case_result()
++{
++ retval=$1
++ pass=$2
++ fail=$3
++
++ if test $retval -eq 0 ; then
++ pass=`expr $pass + 1`
++ else
++ fail=`expr $fail + 1`
++ fi
++ echo $pass $fail
++}
++
++echo_case_result()
++{
++ retval=$1
++ tst=$2
++ log=$3
++ subtst=${4:-''}
++
++ if test $retval -eq 0 ; then
++ echo -e "${GREEN}PASS${NC}: $tst $subtst"
++ else
++ echo -e "${RED}FAIL${NC}: $tst $subtst"
++ echo "FAIL: $tst $subtst" >> $TEST_LOG
++ echo "======================" >> $TEST_LOG
++ echo "" >> $TEST_LOG
++ cat "$log" >> $TEST_LOG
++ echo "" >> $TEST_LOG
++ fi
++}
++
++run_test_suite()
++{
++ cd `dirname $0`
++ pass=0
++ fail=0
++
++ export GTK_IM_MODULE=ibus
++ export IBUS_COMPOSE_CACHE_DIR=$PWD
++ if test -f $TEST_LOG ; then
++ rm $TEST_LOG
++ fi
++ for tst in $TESTS; do
++ ENVS=
++ if test -f $SRCDIR/${tst}.env ; then
++ ENVS="`cat $SRCDIR/${tst}.env`"
++ fi
++ if test x"$ENVS" = x ; then
++ $BUILDDIR/$tst $SRCDIR >&${tst}.log
++ retval=$?
++ read pass fail << EOF
++ `count_case_result $retval $pass $fail`
++EOF
++ echo_case_result $retval $tst ${tst}.log
++ else
++ LANG_backup=$LANG
++ i=1
++ for e in $ENVS; do
++ first=`echo "$e" | cut -c1-1`
++ if test x"$first" = x"#" ; then
++ continue
++ fi
++ export $e
++ $BUILDDIR/$tst $SRCDIR >&${tst}.${i}.log
++ retval=$?
++ read pass fail << EOF
++ `count_case_result $retval $pass $fail`
++EOF
++ echo_case_result $retval $tst ${tst}.${i}.log $e
++ i=`expr $i + 1`
++ done
++ export LANG=$LANG_backup
++ fi
++ done
++ echo ""
++ echo -e "# ${GREEN}PASS${NC}: $pass"
++ echo -e "# ${RED}FAIL${NC}: $fail"
++ if test -f ${TEST_LOG} ; then
++ echo ""
++ echo -e "${RED}See ${TEST_LOG}$NC"
++ fi
++}
++
++finit()
++{
++ if test "$DESKTOP_COMMAND" != "gnome-session" ; then
++ ibus exit
++ fi
++ kill $PID_GNOME_SESSION $PID_XORG
++}
++
++main()
++{
++ parse_args $@
++ init_desktop
++ run_dbus_daemon
++ run_desktop
++ run_test_suite
++ finit
++}
++
++main $@
+--
+2.21.0
+
+From fa081ac8ea37d2feb7c7f395ad66e7381b4cb65b Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 12 Jul 2019 21:20:32 +0900
+Subject: [PATCH 24/27] src/tests: Use gnome-desktop-testing-runner
+
+---
+ src/tests/Makefile.am | 4 +-
+ src/tests/ibus-desktop-testing-runner.in | 154 ++++++++++++++++++-----
+ 2 files changed, 123 insertions(+), 35 deletions(-)
+
+diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
+index b9aad29a..913e42fb 100644
+--- a/src/tests/Makefile.am
++++ b/src/tests/Makefile.am
+@@ -105,8 +105,8 @@ $(test_metas): $(test_metas_in) $(test_programs)
+ $(NULL)
+
+ ibus-compose-locales: ibus-compose-locales.in
+- SRCDIR=$(test_sourcesdir); \
+- sed -e "s|@SRCDIR[@]|$$SRCDIR|g" $< > $@.tmp; \
++ INSTALLEDDIR=$(datadir)/installed-tests; \
++ sed -e "s|@INSTALLEDDIR[@]|$$INSTALLEDDIR|g" $< > $@.tmp; \
+ mv $@.tmp $@; \
+ $(NULL)
+
+diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in
+index 9e689634..a90c1378 100755
+--- a/src/tests/ibus-desktop-testing-runner.in
++++ b/src/tests/ibus-desktop-testing-runner.in
+@@ -2,7 +2,7 @@
+ # -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+ # vim:set noet ts=4:
+ #
+-# ibus-anthy - The Anthy engine for IBus
++# ibus - The Input Bus
+ #
+ # Copyright (c) 2018-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ # Copyright (c) 2018 Red Hat, Inc.
+@@ -33,16 +33,32 @@ VERSION=0.1
+ DISPLAY=:99.0
+ BUILDDIR="."
+ SRCDIR="."
+-TEST_LOG=test-suite.log
++TEST_LOG="test-suite.log"
++RESULT_LOG=""
+ HAVE_GRAPHICS=1
+ DESKTOP_COMMAND="gnome-session"
+ PID_XORG=0
+ PID_GNOME_SESSION=0
++TESTING_RUNNER="default"
+ TESTS=""
+ GREEN='\033[0;32m'
+ RED='\033[0;31m'
+ NC='\033[0m'
+
++print_log()
++{
++ if [ x"$RESULT_LOG" != x ] ; then
++ # avoid 'echo -e' before call 'sed'.
++ if [ x"$1" = x'-e' ] ; then
++ shift
++ fi
++ NO_ESCAPE=`echo $@ | sed -e 's/\\\033\\[0;3.m//g' -e 's/\\\033\\[0m//g'`
++ echo $NO_ESCAPE >> $RESULT_LOG
++ else
++ echo $@
++ fi
++}
++
+ usage()
+ {
+ echo -e \
+@@ -57,13 +73,19 @@ usage()
+ "-c, --no-graphics Use Xvfb instead of Xorg\n" \
+ "-d, --desktop=DESKTOP Run DESTKTOP. The default is gnome-session\n" \
+ "-t, --tests=\"TESTS...\" Run TESTS programs which is separated by space\n" \
++"-r, --runner=RUNNER Run TESTS programs with a test RUNNER.\n" \
++" RUNNDER = gnome or default.\n" \
++" default is an embedded runner.\n" \
++"-o, --output=OUTPUT_FILE OUtput the log to OUTPUT_FILE\n" \
++"-O, --result=RESULT_FILE OUtput the result to RESULT_FILE\n" \
+ ""
+ }
+
+ parse_args()
+ {
+ # This is GNU getopt. "sudo port getopt" in BSD?
+- ARGS=`getopt -o hvb:s:cd:t: --long help,version,builddir:,srcdir:,no-graphics,desktop:,tests:\
++ ARGS=`getopt -o hvb:s:cd:t:r:o:O: --long \
++ help,version,builddir:,srcdir:,no-graphics,desktop:,tests:,runner:,output:,result:\
+ -- "$@"`;
+ eval set -- "$ARGS"
+ while [ 1 ] ; do
+@@ -75,6 +97,9 @@ parse_args()
+ -c | --no-graphics ) HAVE_GRAPHICS=0; shift;;
+ -d | --desktop ) DESKTOP_COMMAND="$2"; shift 2;;
+ -t | --tests ) TESTS="$2"; shift 2;;
++ -r | --runner ) TESTING_RUNNER="$2"; shift 2;;
++ -o | --output ) TEST_LOG="$2"; shift 2;;
++ -O | --result ) RESULT_LOG="$2"; shift 2;;
+ -- ) shift; break;;
+ * ) usage; exit 1;;
+ esac
+@@ -83,18 +108,31 @@ parse_args()
+
+ init_desktop()
+ {
++ if [ "$RESULT_LOG" != "" ] ; then
++ rm $RESULT_LOG
++ fi
++ if [ "$TEST_LOG" = "" ] ; then
++ print_log -e "${RED}FAIL${NC}: ${RED}ERROR${NC}: a log file is required to get return value with 'read' command"
++ abrt
++ else
++ rm $TEST_LOG
++ fi
+ if test x$FORCE_TEST != x ; then
+ RUN_ARGS="$RUN_ARGS --force"
+ fi
+
+ if test ! -f $HOME/.config/gnome-initial-setup-done ; then
++ IS_SYSTEM_ACCOUNT=false
++ if [ "$USER" = "root" ] ; then
++ IS_SYSTEM_ACCOUNT=true
++ fi
+ if test ! -f /var/lib/AccountsService/users/$USER ; then
+ mkdir -p /var/lib/AccountsService/users
+ cat >> /var/lib/AccountsService/users/$USER << _EOF
+ [User]
+ Language=ja_JP.UTF-8
+ XSession=gnome
+-SystemAccount=false
++SystemAccount=$IS_SYSTEM_ACCOUNT
+ _EOF
+ fi
+ mkdir -p $HOME/.config
+@@ -167,71 +205,120 @@ echo_case_result()
+ {
+ retval=$1
+ tst=$2
+- log=$3
+- subtst=${4:-''}
++ subtst=${3:-''}
+
+ if test $retval -eq 0 ; then
+- echo -e "${GREEN}PASS${NC}: $tst $subtst"
++ print_log -e "${GREEN}PASS${NC}: $tst $subtst"
+ else
+- echo -e "${RED}FAIL${NC}: $tst $subtst"
+- echo "FAIL: $tst $subtst" >> $TEST_LOG
+- echo "======================" >> $TEST_LOG
+- echo "" >> $TEST_LOG
+- cat "$log" >> $TEST_LOG
+- echo "" >> $TEST_LOG
++ print_log -e "${RED}FAIL${NC}: $tst $subtst"
++ print_log "======================"
++ print_log ""
+ fi
+ }
+
+-run_test_suite()
++run_direct_test_cases()
+ {
+- cd `dirname $0`
+ pass=0
+ fail=0
+-
+- export GTK_IM_MODULE=ibus
+- export IBUS_COMPOSE_CACHE_DIR=$PWD
+- if test -f $TEST_LOG ; then
+- rm $TEST_LOG
+- fi
+ for tst in $TESTS; do
+ ENVS=
+ if test -f $SRCDIR/${tst}.env ; then
+ ENVS="`cat $SRCDIR/${tst}.env`"
+ fi
+ if test x"$ENVS" = x ; then
+- $BUILDDIR/$tst $SRCDIR >&${tst}.log
++ $BUILDDIR/$tst $SRCDIR 2>>$TEST_LOG 1>>$TEST_LOG
+ retval=$?
+ read pass fail << EOF
+ `count_case_result $retval $pass $fail`
+ EOF
+- echo_case_result $retval $tst ${tst}.log
++ echo_case_result $retval $tst
++ CACHE_FILES=`ls *.cache`
++ if [ x"$CACHE_FILES" != x ] ; then
++ print_log "Clean $CACHE_FILES"
++ rm $CACHE_FILES
++ fi
+ else
+ LANG_backup=$LANG
+ i=1
+ for e in $ENVS; do
+- first=`echo "$e" | cut -c1-1`
++ first=`echo "$e" | grep '^#'`
+ if test x"$first" = x"#" ; then
+ continue
+ fi
+ export $e
+- $BUILDDIR/$tst $SRCDIR >&${tst}.${i}.log
++ $BUILDDIR/$tst $SRCDIR 2>>$TEST_LOG 1>>$TEST_LOG
+ retval=$?
+ read pass fail << EOF
+ `count_case_result $retval $pass $fail`
+ EOF
+- echo_case_result $retval $tst ${tst}.${i}.log $e
++ echo_case_result $retval $tst $e
++ CACHE_FILES=`ls *.cache`
++ if [ x"$CACHE_FILES" != x ] ; then
++ print_log "Clean $CACHE_FILES"
++ rm $CACHE_FILES
++ fi
+ i=`expr $i + 1`
+ done
+ export LANG=$LANG_backup
+ fi
+ done
++ echo $pass $fail
++}
++
++run_gnome_desktop_testing_runner()
++{
++ pass=0
++ fail=0
++ if [ x"$TESTS" = x ] ; then
++ TESTS='ibus'
++ fi
++ for tst in $TESTS; do
++ tst_dir="@INSTALLEDDIR@/$tst"
++ if [ ! -d "$tst_dir" ] ; then
++ print_log -e "${RED}FAIL${NC}: Not found %tst_dir"
++ fail=1
++ continue
++ fi
++ gnome-desktop-testing-runner $tst 2>>$TEST_LOG 1>>$TEST_LOG
++ retval=$?
++ read pass fail << EOF
++ `count_case_result $retval $pass $fail`
++EOF
++ done
++ echo $pass $fail
++}
++
++run_test_suite()
++{
++ pass=0
++ fail=0
++ export GTK_IM_MODULE=ibus
++ export IBUS_COMPOSE_CACHE_DIR=$PWD
++ if [ x"$TESTING_RUNNER" = x ] ; then
++ TESTING_RUNNER="default"
++ fi
++ case $TESTING_RUNNER in
++ default)
++ # Get only the last value with do-while.
++ read pass fail << EOF_RUNNER
++ `run_direct_test_cases`
++EOF_RUNNER
++ ;;
++ gnome)
++ read pass fail << EOF_RUNNER
++ `run_gnome_desktop_testing_runner`
++EOF_RUNNER
++ ;;
++ esac
+ echo ""
+- echo -e "# ${GREEN}PASS${NC}: $pass"
+- echo -e "# ${RED}FAIL${NC}: $fail"
+- if test -f ${TEST_LOG} ; then
+- echo ""
+- echo -e "${RED}See ${TEST_LOG}$NC"
++ if [ $pass -ne 0 ] ; then
++ print_log -e "${GREEN}PASS${NC}: $pass"
+ fi
++ if [ $fail -ne 0 ] ; then
++ print_log -e "${RED}FAIL${NC}: $fail"
++ fi
++ echo ""
++ echo "See ${TEST_LOG}"
+ }
+
+ finit()
+@@ -240,14 +327,15 @@ finit()
+ ibus exit
+ fi
+ kill $PID_GNOME_SESSION $PID_XORG
++ echo "Finished $PROGNAME testing"
+ }
+
+ main()
+ {
+ parse_args $@
+ init_desktop
+- run_dbus_daemon
+- run_desktop
++ run_dbus_daemon 2>>$TEST_LOG 1>>$TEST_LOG
++ run_desktop 2>>$TEST_LOG 1>>$TEST_LOG
+ run_test_suite
+ finit
+ }
+--
+2.21.0
+
+From 85b647a1c57c206779eb0b4b15a734c1b1f29c10 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Wed, 24 Jul 2019 17:27:37 +0900
+Subject: [PATCH 25/27] src/tests: Fix IBus test cases for
+ gnome-desktop-testing
+
+- dconf/config.c: Replaced dconf_client_write_fast() with
+ dconf_client_write_sync() because
+ dconf_client_write_fast() does not syn the data when
+ ibus_config_get_values() is called immediately after
+ ibus_config_set_value() is called.
+
+- ibus-compose-locales.in returns the return value of ibus-compose
+
+- ibus-compose: Set $NO_AT_BRIDGE to suppress a AT_SPI warning
+ and call g_log_set_always_fatal() because GtkIMContextSimple
+ does not support multiple compose outputs yet and the API can
+ suppress a warning.
+
+- ibus-config: Delete async watch testings which causes several errors
+ with gnome-shell testing and the testing is now deprecated and
+ GSettings is recommended.
+
+- ibus-desktop-testing-runner.in: Support --output=log:stdout to
+ cat the log to stdout and Use dbus-launch --exit-with-session instead of
+ --sh-syntax and count PASS of test cases instead of PASS of
+ gnome-desktop-testing and always run ibus exit and kill
+ gnome-shell-calendar-server
+
+- ibus-engine-switch.c: Set xkb:jp::jpn if gnome-shell sets xkb:us::eng
+
+- ibus-inputcontext.c: Use ibus_bus_get_global_engine() instead of
+ ibus_bus_list_active_engines() since ibus_bus_list_active_engines()
+ does not work with gnome-shell and the API is now deprecated.
+
+- ibus-keypress.c: Set $NO_AT_BRIDGE to suppress a AT_SPI warning
+---
+ conf/dconf/config.c | 14 +-
+ src/tests/Makefile.am | 19 +-
+ src/tests/ibus-compose-locales.in | 4 +-
+ src/tests/ibus-compose.c | 10 +-
+ src/tests/ibus-config.c | 283 -----------------------
+ src/tests/ibus-desktop-testing-runner.in | 77 +++---
+ src/tests/ibus-engine-switch.c | 34 ++-
+ src/tests/ibus-inputcontext.c | 29 +--
+ src/tests/ibus-keypress.c | 4 +
+ 9 files changed, 126 insertions(+), 348 deletions(-)
+
+diff --git a/conf/dconf/config.c b/conf/dconf/config.c
+index 500ea1d8..30ac137d 100644
+--- a/conf/dconf/config.c
++++ b/conf/dconf/config.c
+@@ -335,7 +335,19 @@ ibus_config_dconf_set_value (IBusConfigService *config,
+ }
+
+ #ifdef DCONF_0_13_4
+- retval = dconf_client_write_fast (client, gkey, value, error);
++ /* Use dconf_client_write_sync() instead of dconf_client_write_fast()
++ * because dconf_client_write_fast() does not sync the data when
++ * ibus_config_get_values() is called immediately after
++ * ibus_config_set_value() is called.
++ * We won't add a new API for the sync only since IBusConfig is
++ * now deprecated and GSettings is recommended.
++ */
++ retval = dconf_client_write_sync (client,
++ gkey,
++ value,
++ NULL,
++ NULL,
++ error);
+ #else
+ retval = dconf_client_write (client,
+ gkey,
+diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
+index 913e42fb..2e75932c 100644
+--- a/src/tests/Makefile.am
++++ b/src/tests/Makefile.am
+@@ -55,6 +55,8 @@ TESTS = \
+ ibus-util \
+ $(NULL)
+
++CLEANFILES =
++
+ if ENABLE_ENGINE
+ TESTS += ibus-engine-switch
+ endif
+@@ -90,9 +92,17 @@ test_sources_DATA = \
+ $(NULL)
+ test_sourcesdir = $(datadir)/installed-tests/ibus
+
++CLEANFILES += \
++ $(test_metas) \
++ ibus-desktop-testing-runner \
++ $(NULL)
++
+ test_execs_PROGRAMS = $(TESTS)
+ if ENABLE_GTK3
+ test_execs_SCRIPTS = ibus-compose-locales
++CLEANFILES += \
++ ibus-compose-locales \
++ $(NULL)
+ endif
+ test_execsdir = $(libexecdir)/installed-tests/ibus
+ endif
+@@ -105,15 +115,14 @@ $(test_metas): $(test_metas_in) $(test_programs)
+ $(NULL)
+
+ ibus-compose-locales: ibus-compose-locales.in
+- INSTALLEDDIR=$(datadir)/installed-tests; \
+- sed -e "s|@INSTALLEDDIR[@]|$$INSTALLEDDIR|g" $< > $@.tmp; \
++ SRCDIR=$(test_sourcesdir); \
++ sed -e "s|@SRCDIR[@]|$$SRCDIR|g" $< > $@.tmp; \
+ mv $@.tmp $@; \
+ $(NULL)
+
+- ibus-desktop-testing-runner.in \
+ ibus-desktop-testing-runner: ibus-desktop-testing-runner.in
+- SRCDIR=$(test_sourcesdir); \
+- sed -e "s|@SRCDIR[@]|$$SRCDIR|g" $< > $@.tmp; \
++ INSTALLEDDIR=$(datadir)/installed-tests; \
++ sed -e "s|@INSTALLEDDIR[@]|$$INSTALLEDDIR|g" $< > $@.tmp; \
+ mv $@.tmp $@; \
+ $(NULL)
+
+diff --git a/src/tests/ibus-compose-locales.in b/src/tests/ibus-compose-locales.in
+index 8d2384d1..fad02965 100755
+--- a/src/tests/ibus-compose-locales.in
++++ b/src/tests/ibus-compose-locales.in
+@@ -6,6 +6,7 @@ BUILDDIR=`dirname $0`
+
+ export IBUS_COMPOSE_CACHE_DIR=$PWD
+
++retval=0
+ for var in `cat $SRCDIR/ibus-compose.env`
+ do
+ IS_COMMENT=`echo "$var" | grep "^#"`
+@@ -13,6 +14,7 @@ do
+ continue
+ fi
+ env $var $BUILDDIR/ibus-compose $SRCDIR $@
++ retval=`expr $retval + $?`
+
+ CACHE_FILES=`ls *.cache`
+ if [ x"$CACHE_FILES" != x ] ; then
+@@ -20,4 +22,4 @@ do
+ rm $CACHE_FILES
+ fi
+ done
+-
++exit $retval
+diff --git a/src/tests/ibus-compose.c b/src/tests/ibus-compose.c
+index c8d3c126..db359477 100644
+--- a/src/tests/ibus-compose.c
++++ b/src/tests/ibus-compose.c
+@@ -344,20 +344,26 @@ test_compose (void)
+ int
+ main (int argc, char *argv[])
+ {
++ GLogLevelFlags flags;
+ const gchar *test_name;
+ gchar *test_path;
+
+ ibus_init ();
++ /* Avoid a warning of "AT-SPI: Could not obtain desktop path or name"
++ * with gtk_main().
++ */
++ g_setenv ("NO_AT_BRIDGE", "1", TRUE);
+ g_test_init (&argc, &argv, NULL);
+ /* FIXME:
+ * IBusIMContext opens GtkIMContextSimple as the slave and
+ * GtkIMContextSimple opens the compose table on el_GR.UTF-8, and the
+- * multiple outputs in el_GR's compose causes a warning in gtkcomposetable
++ * multiple outputs in el_GR's compose causes a warning in gtkcomposetable
+ * and the warning always causes a fatal in GTest:
+ " "GTK+ supports to output one char only: "
+ */
+- g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL);
++ flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL);
+ gtk_init (&argc, &argv);
++ g_log_set_always_fatal (flags);
+
+ m_srcdir = argc > 1 ? g_strdup (argv[1]) : g_strdup (".");
+ m_compose_file = g_strdup (g_getenv ("COMPOSE_FILE"));
+diff --git a/src/tests/ibus-config.c b/src/tests/ibus-config.c
+index c6141ab5..9b925ad9 100644
+--- a/src/tests/ibus-config.c
++++ b/src/tests/ibus-config.c
+@@ -133,254 +133,6 @@ test_config_set_get (void)
+ g_object_unref (config);
+ }
+
+-typedef struct {
+- GMainLoop *loop;
+- guint timeout_id;
+- gchar *section;
+- gchar *name;
+-} WatchData;
+-
+-typedef struct {
+- gchar *section;
+- gchar *name;
+-} WatchKey;
+-
+-typedef struct {
+- WatchKey *watched; /* watched keys (null-terminated) */
+- WatchKey *changed; /* changed keys (null-terminated) */
+- WatchKey *notified; /* notified keys (same length as
+- changed, not null-terminated) */
+-} WatchTestData;
+-
+-static WatchKey default_watched[] = {
+- { NULL }
+-};
+-static WatchKey default_changed[] = {
+- { "test/s1", "n1" },
+- { "test/s1", "n2" },
+- { "test/s2", "n1" },
+- { "test/s2", "n2" },
+- { NULL }
+-};
+-static WatchKey default_notified[] = {
+- { "test/s1", "n1" },
+- { "test/s1", "n2" },
+- { "test/s2", "n1" },
+- { "test/s2", "n2" }
+-};
+-static WatchTestData default_data = {
+- default_watched,
+- default_changed,
+- default_notified
+-};
+-
+-static WatchKey section_watched[] = {
+- { "test/s1", NULL },
+- { NULL }
+-};
+-static WatchKey section_notified[] = {
+- { "test/s1", "n1" },
+- { "test/s1", "n2" },
+- { NULL, NULL },
+- { NULL, NULL },
+-};
+-static WatchTestData section_data = {
+- section_watched,
+- default_changed,
+- section_notified
+-};
+-
+-static WatchKey section_multiple_watched[] = {
+- { "test/s1", NULL },
+- { "test/s2", NULL },
+- { NULL }
+-};
+-static WatchKey section_multiple_notified[] = {
+- { "test/s1", "n1" },
+- { "test/s1", "n2" },
+- { "test/s2", "n1" },
+- { "test/s2", "n2" },
+-};
+-static WatchTestData section_multiple_data = {
+- section_multiple_watched,
+- default_changed,
+- section_multiple_notified
+-};
+-
+-static WatchKey section_name_watched[] = {
+- { "test/s1", "n1" },
+- { NULL }
+-};
+-static WatchKey section_name_notified[] = {
+- { "test/s1", "n1" },
+- { NULL, NULL },
+- { NULL, NULL },
+- { NULL, NULL },
+-};
+-static WatchTestData section_name_data = {
+- section_name_watched,
+- default_changed,
+- section_name_notified
+-};
+-
+-static WatchKey section_name_multiple_watched[] = {
+- { "test/s1", "n1" },
+- { "test/s2", "n2" },
+- { NULL }
+-};
+-static WatchKey section_name_multiple_notified[] = {
+- { "test/s1", "n1" },
+- { NULL, NULL },
+- { NULL, NULL },
+- { "test/s2", "n2" },
+-};
+-static WatchTestData section_name_multiple_data = {
+- section_name_multiple_watched,
+- default_changed,
+- section_name_multiple_notified
+-};
+-
+-typedef struct {
+- IBusConfig *config;
+- WatchData data;
+-} WatchFixture;
+-
+-static void
+-value_changed_cb (IBusConfig *config,
+- const gchar *section,
+- const gchar *name,
+- GVariant *value,
+- gpointer user_data)
+-{
+- WatchData *data = (WatchData *) user_data;
+-
+- data->section = g_strdup (section);
+- data->name = g_strdup (name);
+-
+- g_main_loop_quit (data->loop);
+-}
+-
+-static gboolean
+-timeout_cb (gpointer user_data)
+-{
+- WatchData *data = (WatchData *) user_data;
+- g_main_loop_quit (data->loop);
+- data->timeout_id = 0;
+- return FALSE;
+-}
+-
+-static void
+-change_and_test (IBusConfig *config,
+- const gchar *section,
+- const gchar *name,
+- const gchar *expected_section,
+- const gchar *expected_name,
+- WatchData *data)
+-{
+- gboolean retval;
+- GVariant *var;
+-
+- data->section = NULL;
+- data->name = NULL;
+-
+- /* Unset won't notify value-changed signal. */
+- var = ibus_config_get_values (config, section);
+- if (var != NULL) {
+- GVariant *value = g_variant_lookup_value (var, name,
+- G_VARIANT_TYPE_VARIANT);
+- if (value != NULL) {
+- ibus_config_unset (config, section, name);
+- g_variant_unref (value);
+- }
+- g_variant_unref (var);
+- }
+-
+- data->timeout_id = g_timeout_add (1, timeout_cb, data);
+- g_main_loop_run (data->loop);
+- if (data->timeout_id != 0) {
+- g_source_remove (data->timeout_id);
+- }
+-
+- retval = ibus_config_set_value (config, section, name,
+- g_variant_new_int32 (1));
+- g_assert (retval);
+-
+- data->timeout_id = g_timeout_add (1, timeout_cb, data);
+- g_main_loop_run (data->loop);
+- if (data->timeout_id != 0) {
+- g_source_remove (data->timeout_id);
+- }
+-
+- g_assert_cmpstr (data->section, ==, expected_section);
+- g_assert_cmpstr (data->name, ==, expected_name);
+-
+- g_free (data->section);
+- g_free (data->name);
+-}
+-
+-static void
+-watch_fixture_setup (WatchFixture *fixture, gconstpointer user_data)
+-{
+- fixture->config = ibus_config_new (ibus_bus_get_connection (bus),
+- NULL,
+- NULL);
+- g_assert (fixture->config);
+-
+- fixture->data.loop = g_main_loop_new (NULL, FALSE);
+- g_signal_connect (fixture->config, "value-changed",
+- G_CALLBACK (value_changed_cb), &fixture->data);
+-}
+-
+-static void
+-watch_fixture_teardown (WatchFixture *fixture, gconstpointer user_data)
+-{
+- g_main_loop_unref (fixture->data.loop);
+-
+- ibus_proxy_destroy (IBUS_PROXY (fixture->config));
+- g_object_unref (fixture->config);
+-}
+-
+-static void
+-test_config_watch (WatchFixture *fixture, gconstpointer user_data)
+-{
+- const WatchTestData *data = user_data;
+- gint i;
+-
+- for (i = 0; data->watched[i].section != NULL; i++) {
+- ibus_config_watch (fixture->config,
+- data->watched[i].section,
+- data->watched[i].name);
+- }
+- for (i = 0; data->changed[i].section != NULL; i++) {
+- change_and_test (fixture->config,
+- data->changed[i].section,
+- data->changed[i].name,
+- data->notified[i].section,
+- data->notified[i].name,
+- &fixture->data);
+- }
+- for (i = 0; data->watched[i].section != NULL; i++) {
+- ibus_config_unwatch (fixture->config,
+- data->watched[i].section,
+- data->watched[i].name);
+- }
+- if (i > 0) {
+- /* Check if the above unwatch takes effect. */
+- for (i = 0; data->changed[i].section != NULL; i++) {
+- change_and_test (fixture->config,
+- data->changed[i].section,
+- data->changed[i].name,
+- NULL,
+- NULL,
+- &fixture->data);
+- }
+- } else {
+- /* Since we reuse single D-Bus connection, we need to remove the
+- default match rule for the next ibus_config_new() call. */
+- ibus_config_unwatch (fixture->config, NULL, NULL);
+- }
+-}
+-
+ gint
+ main (gint argc,
+ gchar **argv)
+@@ -390,41 +142,6 @@ main (gint argc,
+ g_test_init (&argc, &argv, NULL);
+ bus = ibus_bus_new ();
+
+- g_test_add ("/ibus/config-watch/default",
+- WatchFixture,
+- &default_data,
+- watch_fixture_setup,
+- test_config_watch,
+- watch_fixture_teardown);
+-
+- g_test_add ("/ibus/config-watch/section",
+- WatchFixture,
+- §ion_data,
+- watch_fixture_setup,
+- test_config_watch,
+- watch_fixture_teardown);
+-
+- g_test_add ("/ibus/config-watch/section-multiple",
+- WatchFixture,
+- §ion_multiple_data,
+- watch_fixture_setup,
+- test_config_watch,
+- watch_fixture_teardown);
+-
+- g_test_add ("/ibus/config-watch/section-name",
+- WatchFixture,
+- §ion_name_data,
+- watch_fixture_setup,
+- test_config_watch,
+- watch_fixture_teardown);
+-
+- g_test_add ("/ibus/config-watch/section-name-multiple",
+- WatchFixture,
+- §ion_name_multiple_data,
+- watch_fixture_setup,
+- test_config_watch,
+- watch_fixture_teardown);
+-
+ g_test_add_func ("/ibus/create-config-async", test_create_config_async);
+ g_test_add_func ("/ibus/config-set-get", test_config_set_get);
+
+diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in
+index a90c1378..b7a72285 100755
+--- a/src/tests/ibus-desktop-testing-runner.in
++++ b/src/tests/ibus-desktop-testing-runner.in
+@@ -34,9 +34,10 @@ DISPLAY=:99.0
+ BUILDDIR="."
+ SRCDIR="."
+ TEST_LOG="test-suite.log"
++TEST_LOG_STDOUT=0
+ RESULT_LOG=""
+ HAVE_GRAPHICS=1
+-DESKTOP_COMMAND="gnome-session"
++DESKTOP_COMMAND="dbus-launch --exit-with-session gnome-session"
+ PID_XORG=0
+ PID_GNOME_SESSION=0
+ TESTING_RUNNER="default"
+@@ -109,19 +110,26 @@ parse_args()
+ init_desktop()
+ {
+ if [ "$RESULT_LOG" != "" ] ; then
+- rm $RESULT_LOG
++ if [ -f $RESULT_LOG ] ; then
++ rm $RESULT_LOG
++ fi
++ fi
++ HAS_STDOUT=`echo "$TEST_LOG" | grep ':stdout'`
++ if [ x"$HAS_STDOUT" != x ] ; then
++ TEST_LOG=`echo "$TEST_LOG" | sed -e 's|:stdout||'`
++ TEST_LOG_STDOUT=1
+ fi
+ if [ "$TEST_LOG" = "" ] ; then
+ print_log -e "${RED}FAIL${NC}: ${RED}ERROR${NC}: a log file is required to get return value with 'read' command"
+- abrt
+- else
++ exit -1
++ elif [ -f $TEST_LOG ] ; then
+ rm $TEST_LOG
+ fi
+- if test x$FORCE_TEST != x ; then
++ if [ x$FORCE_TEST != x ] ; then
+ RUN_ARGS="$RUN_ARGS --force"
+ fi
+
+- if test ! -f $HOME/.config/gnome-initial-setup-done ; then
++ if [ ! -f $HOME/.config/gnome-initial-setup-done ] ; then
+ IS_SYSTEM_ACCOUNT=false
+ if [ "$USER" = "root" ] ; then
+ IS_SYSTEM_ACCOUNT=true
+@@ -141,7 +149,7 @@ _EOF
+
+ # Prevent from launching a XDG dialog
+ XDG_LOCALE_FILE="$HOME/.config/user-dirs.locale"
+- if test -f $XDG_LOCALE_FILE ; then
++ if [ -f $XDG_LOCALE_FILE ] ; then
+ XDG_LANG_ORIG=`cat $XDG_LOCALE_FILE`
+ XDG_LANG_NEW=`echo $LANG | sed -e 's/\(.*\)\..*/\1/'`
+ if [ "$XDG_LANG_ORIG" != "$XDG_LANG_NEW" ] ; then
+@@ -153,19 +161,8 @@ _EOF
+
+ run_dbus_daemon()
+ {
+- a=`ps -ef | grep dbus-daemon | grep "\-\-system" | grep -v session | grep -v grep`
+- if test x"$a" = x ; then
+- eval `dbus-launch --sh-syntax`
+- fi
+- SUSER=`echo "$USER" | cut -c 1-7`
+- a=`ps -ef | grep dbus-daemon | grep "$SUSER" | grep -v gdm | grep session | grep -v grep`
+- if test x"$a" = x ; then
+- systemctl --user start dbus
+- export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus
+- fi
+- systemctl --user status dbus | col -b
+- ps -ef | grep dbus-daemon | grep "$SUSER" | grep -v gdm | egrep 'session|system' | grep -v grep
+- systemctl --user show-environment | col -b
++ # Use dbus-launch --exit-with-session later instead of --sh-syntax
++ export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus
+ }
+
+ run_desktop()
+@@ -181,7 +178,8 @@ run_desktop()
+ $DESKTOP_COMMAND &
+ PID_GNOME_SESSION=$!
+ sleep 30
+- if test "$DESKTOP_COMMAND" != "gnome-session" ; then
++ HAS_GNOME=`echo $DESKTOP_COMMAND | grep gnome-session`
++ if [ x"$HAS_GNOME" = x ] ; then
+ ibus-daemon --daemonize --verbose
+ sleep 1
+ fi
+@@ -285,6 +283,16 @@ run_gnome_desktop_testing_runner()
+ `count_case_result $retval $pass $fail`
+ EOF
+ done
++ child_pass=`grep '^PASS:' $TEST_LOG | wc -l`
++ child_fail=`grep '^FAIL:' $TEST_LOG | wc -l`
++ if [ $child_pass -ne 0 -o $child_fail -ne 0 ] ; then
++ pass=$child_pass
++ if [ $child_fail -ne 0 ] ; then
++ fail=`expr $child_fail / 2`
++ else
++ fail=0
++ fi
++ fi
+ echo $pass $fail
+ }
+
+@@ -311,22 +319,29 @@ EOF_RUNNER
+ ;;
+ esac
+ echo ""
+- if [ $pass -ne 0 ] ; then
+- print_log -e "${GREEN}PASS${NC}: $pass"
+- fi
+- if [ $fail -ne 0 ] ; then
+- print_log -e "${RED}FAIL${NC}: $fail"
+- fi
++ print_log -e "${GREEN}PASS${NC}: $pass"
++ print_log -e "${RED}FAIL${NC}: $fail"
+ echo ""
+- echo "See ${TEST_LOG}"
++ if [ $TEST_LOG_STDOUT -eq 1 ] ; then
++ cat $TEST_LOG
++ else
++ echo "See $TEST_LOG"
++ fi
+ }
+
+ finit()
+ {
+- if test "$DESKTOP_COMMAND" != "gnome-session" ; then
+- ibus exit
+- fi
++ echo "Killing left gnome-session and Xorg"
+ kill $PID_GNOME_SESSION $PID_XORG
++ ibus exit
++ SUSER=`echo "$USER" | cut -c 1-7`
++ LEFT_CALENDAR=`ps -ef | grep gnome-shell-calendar-server | grep $SUSER | grep -v grep`
++ if [ x"$LEFT_CALENDAR" != x ] ; then
++ echo "Killing left gnome-shell-calendar-server"
++ echo "$LEFT_CALENDAR"
++ echo "$LEFT_CALENDAR" | awk '{print $2}' | xargs kill
++ fi
++
+ echo "Finished $PROGNAME testing"
+ }
+
+diff --git a/src/tests/ibus-engine-switch.c b/src/tests/ibus-engine-switch.c
+index 5c2bd516..a1eeba2a 100644
+--- a/src/tests/ibus-engine-switch.c
++++ b/src/tests/ibus-engine-switch.c
+@@ -13,17 +13,25 @@ static const gchar *engine_names[] = {
+ AFTER_ENGINE
+ };
+
++static const gchar *engine_names2[] = {
++ AFTER_ENGINE,
++ BEFORE_ENGINE
++};
++
+ static void
+-change_global_engine (void)
++change_global_engine (gboolean reverse)
+ {
+ gint i;
+
+ for (i = 0; i < G_N_ELEMENTS (engine_names); i++) {
+- ibus_bus_set_global_engine (bus, engine_names[i]);
++ const gchar *engine_name = engine_names[i];
++ if (reverse)
++ engine_name = engine_names2[i];
++ ibus_bus_set_global_engine (bus, engine_name);
+ IBusEngineDesc *engine_desc = ibus_bus_get_global_engine (bus);
+ g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc),
+ ==,
+- engine_names[i]);
++ engine_name);
+ g_object_unref (G_OBJECT (engine_desc));
+ }
+ }
+@@ -46,6 +54,7 @@ typedef struct {
+ gint count;
+ guint timeout_id;
+ guint idle_id;
++ gboolean reverse;
+ } GlobalEngineChangedData;
+
+ static void
+@@ -70,7 +79,7 @@ static gboolean
+ change_global_engine_cb (gpointer user_data)
+ {
+ GlobalEngineChangedData *data = (GlobalEngineChangedData *) user_data;
+- change_global_engine ();
++ change_global_engine (data->reverse);
+ data->idle_id = 0;
+ return FALSE;
+ }
+@@ -78,12 +87,25 @@ change_global_engine_cb (gpointer user_data)
+ static void
+ test_global_engine (void)
+ {
++ GLogLevelFlags flags;
++ IBusEngineDesc *desc;
+ GlobalEngineChangedData data;
+ guint handler_id;
+
+ if (!ibus_bus_get_use_global_engine (bus))
+ return;
+
++ /* "No global engine." warning is not critical message. */
++ flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL);
++ desc = ibus_bus_get_global_engine (bus);
++ g_log_set_always_fatal (flags);
++ if (desc &&
++ !g_strcmp0 (BEFORE_ENGINE, ibus_engine_desc_get_name (desc))) {
++ data.reverse = TRUE;
++ } else {
++ data.reverse = FALSE;
++ }
++
+ data.count = 0;
+
+ handler_id = g_signal_connect (bus,
+@@ -141,7 +163,7 @@ test_context_engine_set_by_global (void)
+ /* ibus_bus_set_global_engine() changes focused context engine. */
+ ibus_input_context_focus_in (context);
+
+- change_global_engine ();
++ change_global_engine (FALSE);
+
+ /* ibus_input_context_set_engine() does not take effect when
+ global engine is used. */
+@@ -170,7 +192,7 @@ test_context_engine_set_by_focus (void)
+
+ ibus_input_context_focus_in (context);
+
+- change_global_engine ();
++ change_global_engine (FALSE);
+
+ /* When focus is lost, context engine is set to "dummy". */
+ ibus_input_context_focus_in (another_context);
+diff --git a/src/tests/ibus-inputcontext.c b/src/tests/ibus-inputcontext.c
+index fab183aa..ed04bd64 100644
+--- a/src/tests/ibus-inputcontext.c
++++ b/src/tests/ibus-inputcontext.c
+@@ -37,18 +37,6 @@ fatal_handler(const gchar *log_domain,
+ return TRUE;
+ }
+
+-static gchar *
+-get_last_engine_id (const GList *engines)
+-{
+- const char *result = NULL;
+- for (; engines; engines = g_list_next (engines)) {
+- IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (engines->data);
+- g_assert (engine_desc);
+- result = ibus_engine_desc_get_name (engine_desc);
+- }
+- return g_strdup (result);
+-}
+-
+ static void
+ call_basic_ipcs (IBusInputContext *context)
+ {
+@@ -68,18 +56,23 @@ call_basic_ipcs (IBusInputContext *context)
+ static void
+ test_input_context (void)
+ {
+- GList *engines;
+- gchar *active_engine_name = NULL;
+ IBusInputContext *context;
++ GLogLevelFlags flags;
+ IBusEngineDesc *engine_desc;
++ gchar *active_engine_name = NULL;
+ gchar *current_ic;
+
+ context = ibus_bus_create_input_context (bus, "test");
+ call_basic_ipcs (context);
+
+- engines = ibus_bus_list_active_engines (bus);
+- if (engines != NULL) {
+- active_engine_name = get_last_engine_id (engines);
++ /* "No global engine." warning is not critical message. */
++ flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL);
++ engine_desc = ibus_bus_get_global_engine (bus);
++ g_log_set_always_fatal (flags);
++ if (engine_desc != NULL) {
++ active_engine_name = g_strdup (ibus_engine_desc_get_name(engine_desc));
++ g_object_unref (engine_desc);
++ engine_desc = NULL;
+ } else {
+ active_engine_name = g_strdup ("dummy");
+ }
+@@ -111,8 +104,6 @@ test_input_context (void)
+ g_object_unref (context);
+
+ g_free (active_engine_name);
+- g_list_foreach (engines, (GFunc) g_object_unref, NULL);
+- g_list_free (engines);
+ }
+
+ static void
+diff --git a/src/tests/ibus-keypress.c b/src/tests/ibus-keypress.c
+index 17920226..dd1b0042 100644
+--- a/src/tests/ibus-keypress.c
++++ b/src/tests/ibus-keypress.c
+@@ -288,6 +288,10 @@ int
+ main (int argc, char *argv[])
+ {
+ ibus_init ();
++ /* Avoid a warning of "AT-SPI: Could not obtain desktop path or name"
++ * with gtk_main().
++ */
++ g_setenv ("NO_AT_BRIDGE", "1", TRUE);
+ g_test_init (&argc, &argv, NULL);
+ gtk_init (&argc, &argv);
+
+--
+2.21.0
+
+From 0c89a7ee33bfe5b403c798e0ddb39e4c05d0d971 Mon Sep 17 00:00:00 2001
+From: Hodong Kim <cogniti@gmail.com>
+Date: Thu, 25 Jul 2019 14:37:52 +0900
+Subject: [PATCH 27/27] client/x11: Update LOCALES_STRING
+
+Update LOCALES_STRING in locales.h from /usr/share/i18n/SUPPORTED on
+Debian Buster.
+
+BUG=https://github.com/ibus/ibus/pull/2110
+---
+ client/x11/locales.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/client/x11/locales.h b/client/x11/locales.h
+index 0155e22a..61af74fb 100644
+--- a/client/x11/locales.h
++++ b/client/x11/locales.h
+@@ -1,2 +1,2 @@
+ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+-#define LOCALES_STRING "aa,af,am,an,ar,as,ast,az,be,ber,bg,bn,bo,br,bs,byn,C,ca,crh,cs,csb,cy,da,de,dz,el,en,es,et,eu,fa,fi,fil,fo,fr,fur,fy,ga,gd,gez,gl,gu,gv,ha,he,hi,hne,hr,hsb,ht,hu,hy,id,ig,ik,is,it,iu,iw,ja,ka,kk,kl,km,kn,ko,ks,ku,kw,ky,lg,li,lo,lt,lv,mai,mg,mi,mk,ml,mn,mr,ms,mt,nan,nb,nds,ne,nl,nn,no,nr,nso,oc,om,or,pa,pa,pap,pl,pt,ro,ru,rw,sa,sc,sd,se,shs,si,sid,sk,sl,so,sq,sr,ss,st,sv,ta,te,tg,th,ti,tig,tk,tl,tn,tr,ts,tt,ug,uk,ur,uz,ve,vi,wa,wo,xh,yi,yo,zh,zu"
++#define LOCALES_STRING "aa,af,agr,ak,am,an,anp,ar,ayc,az,as,ast,be,bem,ber,bg,bhb,bho,bi,bn,bo,br,brx,bs,byn,C,ca,ce,chr,cmn,crh,cs,csb,cv,cy,da,de,doi,dsb,dv,dz,el,en,eo,es,et,eu,fa,ff,fi,fil,fo,fr,fur,fy,ga,gd,gez,gl,gu,gv,ha,hak,he,hi,hif,hne,hr,hsb,ht,hu,hy,ia,id,ig,ik,is,it,iu,ja,ka,kab,kk,kl,km,kn,ko,kok,ks,ku,kw,ky,lb,lg,li,lij,ln,lo,lt,lv,lzh,mag,mai,mfe,mg,mhr,mi,miq,mjw,mk,ml,mn,mni,mr,ms,mt,my,nan,nb,nds,ne,nhn,niu,nl,nn,no,nr,nso,oc,om,or,os,pa,pap,pl,ps,pt,quz,raj,ro,ru,rw,sa,sah,sat,sc,sd,se,sgs,shn,shs,si,sid,sk,sl,sm,so,sq,sr,ss,st,sv,sw,szl,ta,tcy,te,tg,th,the,ti,tig,tk,tl,tn,to,tpi,tr,ts,tt,ug,uk,unm,ur,uz,ve,vi,wa,wae,wal,wo,xh,yi,yo,yue,yuw,zh,zu"
+--
+2.21.0
diff --git a/ibus.spec b/ibus.spec
index ba24b3f..ce7b91a 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -35,7 +35,7 @@
Name: ibus
Version: 1.5.20
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPLv2+
URL: https://github.com/ibus/%name/wiki
@@ -233,6 +233,24 @@ BuildArch: noarch
%description devel-docs
The ibus-devel-docs package contains developer documentation for IBus
+%package desktop-testing
+Summary: Wrapper of InstalledTests Runner for IBus
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%description desktop-testing
+GNOME desktop testing runner implements the InstalledTests specification
+and IBus also needs focus events to enable input contexts on text widgets.
+The wrapper script runs gnome-session for the focus events and GNOME
+desktop testing runner internally.
+
+%package tests
+Summary: Tests for the %{name} package
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%description tests
+The %{name}-tests package contains tests that can be used to verify
+the functionality of the installed %{name} package.
+
%prep
%autosetup -S git
@@ -270,6 +288,7 @@ autoreconf -f -i -v
--disable-appindicator \
%endif
--enable-introspection \
+ --enable-install-tests \
%{nil}
make -C ui/gtk3 maintainer-clean-generic
@@ -434,7 +453,21 @@ dconf update || :
%dir %{_datadir}/gtk-doc/html
%{_datadir}/gtk-doc/html/*
+%files desktop-testing
+%{_bindir}/ibus-desktop-testing-runner
+
+%files tests
+%dir %{_libexecdir}/installed-tests
+%{_libexecdir}/installed-tests/ibus
+%dir %{_datadir}/installed-tests
+%{_datadir}/installed-tests/ibus
+
%changelog
+* Fri Jul 26 2019 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.20-6
+- Update ibus-HEAD.patch from upstream
+ Integrate a new compose feature
+ Generate ibus-tests and ibus-desktop-testing sub packages
+
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.20-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-05-31 2:07 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-31 2:07 [rpms/ibus] autotool: Update ibus-HEAD.patch from upstream Takao Fujiwara
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox