ibus/ibus-HEAD.patch

15154 lines
651 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 026b19ef169dd9612d8a4a1ee34f7c42e7215c9a Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
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/2086
---
setup/ibus-setup.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
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 $@
--
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
+ibusemojigen.h: dicts/emoji-en.dict
+ $(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 =
+
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
+
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)
+MAINTAINERCLEANFILES += extension.c panelbinding.c
+
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 = \
LOG_COMPILER = $(srcdir)/runtest
-EXTRA_DIST = runtest
+EXTRA_DIST = runtest ibus-compose.env
ibus_bus_SOURCES = ibus-bus.c
ibus_bus_LDADD = $(prog_ldadd)
--
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 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
and deleting the datarootdir line caused a regression.
All variables can be extracted in Makefile.am with sed.
---
configure.ac | 1 -
setup/Makefile.am | 13 +++++++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/configure.ac b/configure.ac
index 9518e808..7503f3e8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -724,7 +724,6 @@ ibus/interface/Makefile
ui/Makefile
ui/gtk3/Makefile
setup/Makefile
-setup/ibus-setup
bindings/Makefile
bindings/pygobject/Makefile
bindings/vala/Makefile
diff --git a/setup/Makefile.am b/setup/Makefile.am
index cb4dd8d1..34c8f136 100644
--- a/setup/Makefile.am
+++ b/setup/Makefile.am
@@ -3,8 +3,8 @@
# ibus - The Input Bus
#
# Copyright (c) 2007-2014 Peng Huang <shawn.p.huang@gmail.com>
-# Copyright (c) 2015-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
-# Copyright (c) 2007-2018 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
@@ -40,6 +40,15 @@ ibussetup_DATA = \
bin_SCRIPTS = ibus-setup
ibussetupdir = $(pkgdatadir)/setup
+ibus-setup: ibus-setup.in
+ $(AM_V_GEN) sed -e "s|\@datarootdir\@|$(datarootdir)|g" \
+ -e "s|\@localedir\@|$(localedir)|g" \
+ -e "s|\@libexecdir\@|$(libexecdir)|g" \
+ -e "s|\@prefix\@|$(prefix)|g" \
+ -e "s|\@PYTHON\@|$(PYTHON)|g" \
+ $< > $@.tmp && \
+ mv $@.tmp $@
+
desktop_notrans_files = ibus-setup.desktop
desktop_DATA = org.freedesktop.IBus.Setup.desktop
desktopdir = $(datadir)/applications
--
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 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.
After you install the ibus.[its|loc] to /usr/share/gettext/its,
each engine's component file needs to renamed with
'.inputMethod.xml' in the source directory suffix. E.g.
Rename 'anthy.xml' to 'anthy.inputMethod.xml' and write the file
path to the engine's POTFILES.in
---
configure.ac | 1 +
data/Makefile.am | 3 ++-
data/its/Makefile.am | 29 +++++++++++++++++++++++++++++
data/its/ibus.its | 14 ++++++++++++++
data/its/ibus.loc | 7 +++++++
5 files changed, 53 insertions(+), 1 deletion(-)
create mode 100644 data/its/Makefile.am
create mode 100644 data/its/ibus.its
create mode 100644 data/its/ibus.loc
diff --git a/configure.ac b/configure.ac
index 7503f3e8..b5a87b56 100644
--- a/configure.ac
+++ b/configure.ac
@@ -711,6 +711,7 @@ util/IMdkit/Makefile
data/Makefile
data/annotations/Makefile
data/icons/Makefile
+data/its/Makefile
data/keymaps/Makefile
data/dconf/Makefile
docs/Makefile
diff --git a/data/Makefile.am b/data/Makefile.am
index 2533f444..aa3ee466 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -3,7 +3,7 @@
# ibus - The Input Bus
#
# Copyright (c) 2007-2016 Peng Huang <shawn.p.huang@gmail.com>
-# Copyright (c) 2007-2018 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
@@ -23,6 +23,7 @@
SUBDIRS = \
annotations \
icons \
+ its \
keymaps \
$(NULL)
diff --git a/data/its/Makefile.am b/data/its/Makefile.am
new file mode 100644
index 00000000..07c8a96d
--- /dev/null
+++ b/data/its/Makefile.am
@@ -0,0 +1,29 @@
+# vim:set noet ts=4:
+#
+# ibus - The Input Bus
+#
+# Copyright (c) 2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+# Copyright (c) 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
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
+
+itsdir = $(datadir)/gettext/its
+its_DATA = \
+ ibus.its \
+ ibus.loc \
+ $(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/data/its/ibus.its b/data/its/ibus.its
new file mode 100644
index 00000000..30d8d4e2
--- /dev/null
+++ b/data/its/ibus.its
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<its:rules xmlns:its="http://www.w3.org/2005/11/its"
+ version="2.0">
+ <its:translateRule selector="/component" translate="no"/>
+ <its:translateRule selector="/engines" translate="no"/>
+ <its:translateRule selector="//engine" translate="no"/>
+ <its:translateRule selector="//longname |
+ //description"
+ translate="yes"/>
+ <its:translateRule selector="//longname[@translatable = 'no']"
+ translate="no"/>
+ <its:translateRule selector="//description[@translatable = 'no']"
+ translate="no"/>
+</its:rules>
diff --git a/data/its/ibus.loc b/data/its/ibus.loc
new file mode 100644
index 00000000..5a73798b
--- /dev/null
+++ b/data/its/ibus.loc
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<locatingRules>
+ <locatingRule name="IBusEngineDesc" pattern="*.inputMethod.xml">
+ <documentRule localName="engines" target="ibus.its"/>
+ <documentRule localName="component" target="ibus.its"/>
+ </locatingRule>
+</locatingRules>
--
2.21.0
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:09 +0900
Subject: [PATCH 09/27] 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.
BUG=https://github.com/ibus/ibus/issues/2079
---
src/ibusutil.c | 63 ++++++++++++++++++++++++++++++++++++++++++--------
src/ibusutil.h | 8 +++----
2 files changed, 58 insertions(+), 13 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);
}
-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
+ * 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.
+ */
_ibus_context_update_preedit_text_cb (ibusimcontext->ibuscontext,
ibus_text_new_from_string (""),
- 0,
- FALSE,
+ ibusimcontext->preedit_cursor_pos,
+ ibusimcontext->preedit_visible,
IBUS_ENGINE_PREEDIT_CLEAR,
ibusimcontext);
if (preedit_string) {
--
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,
- &section_data,
- watch_fixture_setup,
- test_config_watch,
- watch_fixture_teardown);
-
- g_test_add ("/ibus/config-watch/section-multiple",
- WatchFixture,
- &section_multiple_data,
- watch_fixture_setup,
- test_config_watch,
- watch_fixture_teardown);
-
- g_test_add ("/ibus/config-watch/section-name",
- WatchFixture,
- &section_name_data,
- watch_fixture_setup,
- test_config_watch,
- watch_fixture_teardown);
-
- g_test_add ("/ibus/config-watch/section-name-multiple",
- WatchFixture,
- &section_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
From f4463c0433c5f48a4fb2830e8c2ae9619fbb18d1 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Mon, 29 Jul 2019 19:05:43 +0900
Subject: [PATCH] src/tests: Fix a fatal error with g_warning
I set g_log_set_always_fatal() before gtk_init() in ibus-compose for
a compose warning of GtkIMContextSimple but actually the warning is
output during gtk_main() due to GtkIMContextSimple.set_client_window()
so I moved g_log_set_always_fatal() before gtk_main() in ibus-compose.c.
Also set IFS in ibus-compose-locales to set the delimiter to '\n' for
for-loop arguments.
---
src/tests/ibus-compose-locales.in | 8 ++++++++
src/tests/ibus-compose.c | 21 ++++++++++-----------
2 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/src/tests/ibus-compose-locales.in b/src/tests/ibus-compose-locales.in
index fad02965..f650b584 100755
--- a/src/tests/ibus-compose-locales.in
+++ b/src/tests/ibus-compose-locales.in
@@ -7,19 +7,27 @@ BUILDDIR=`dirname $0`
export IBUS_COMPOSE_CACHE_DIR=$PWD
retval=0
+# Let for-loop notice '\n' as a delimiter
+IFS=$'\n'
for var in `cat $SRCDIR/ibus-compose.env`
do
+ # Revert IFS to recognize env a=foo b=foo
+ IFS=' '
IS_COMMENT=`echo "$var" | grep "^#"`
if [ "x$IS_COMMENT" != x ] ; then
continue
fi
+ echo "# Starting $var $BUILDDIR/ibus-compose $SRCDIR $@"
env $var $BUILDDIR/ibus-compose $SRCDIR $@
retval=`expr $retval + $?`
+ echo "# Finished $var $BUILDDIR/ibus-compose $SRCDIR $@ with $retval"
CACHE_FILES=`ls *.cache`
if [ x"$CACHE_FILES" != x ] ; then
echo "Clean $CACHE_FILES"
rm $CACHE_FILES
fi
+ IFS=$'\n'
done
+IFS=' '
exit $retval
diff --git a/src/tests/ibus-compose.c b/src/tests/ibus-compose.c
index db359477..4b4c56e7 100644
--- a/src/tests/ibus-compose.c
+++ b/src/tests/ibus-compose.c
@@ -331,20 +331,28 @@ create_window ()
static void
test_compose (void)
{
+ GLogLevelFlags flags;
if (!register_ibus_engine ()) {
g_test_fail ();
return;
}
create_window ();
+ /* 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: "
+ */
+ flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL);
gtk_main ();
-
+ g_log_set_always_fatal (flags);
}
int
main (int argc, char *argv[])
{
- GLogLevelFlags flags;
const gchar *test_name;
gchar *test_path;
@@ -354,16 +362,7 @@ main (int argc, char *argv[])
*/
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
- * and the warning always causes a fatal in GTest:
- " "GTK+ supports to output one char only: "
- */
- 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"));
--
2.21.0
From 7dde99600777f195da614130950ecbd339439d35 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Wed, 31 Jul 2019 16:27:49 +0900
Subject: [PATCH] src/tests: Fix wrong echo with direct runner in
ibus-desktop-testing-runner
The wrong echo prevent from counting the test results in the direct
testing runner.
---
src/tests/ibus-desktop-testing-runner.in | 33 +++++++++++++-----------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in
index b7a72285..3045d601 100755
--- a/src/tests/ibus-desktop-testing-runner.in
+++ b/src/tests/ibus-desktop-testing-runner.in
@@ -153,7 +153,7 @@ _EOF
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 "# Overriding XDG locale $XDG_LANG_ORIG with $XDG_LANG_NEW"
echo "$XDG_LANG_NEW" > $XDG_LOCALE_FILE
fi
fi
@@ -206,11 +206,9 @@ echo_case_result()
subtst=${3:-''}
if test $retval -eq 0 ; then
- print_log -e "${GREEN}PASS${NC}: $tst $subtst"
+ echo "PASS: $tst $subtst" >>$TEST_LOG
else
- print_log -e "${RED}FAIL${NC}: $tst $subtst"
- print_log "======================"
- print_log ""
+ echo "FAIL: $tst $subtst" >>$TEST_LOG
fi
}
@@ -232,32 +230,37 @@ EOF
echo_case_result $retval $tst
CACHE_FILES=`ls *.cache`
if [ x"$CACHE_FILES" != x ] ; then
- print_log "Clean $CACHE_FILES"
+ echo "# Clean $CACHE_FILES" >>$TEST_LOG
rm $CACHE_FILES
fi
else
- LANG_backup=$LANG
i=1
+ # Let for-loop notice '\n' as a delimiter
+ IFS=$'\n'
for e in $ENVS; do
+ # Revert IFS to recognize env a=foo b=foo
+ IFS=' '
first=`echo "$e" | grep '^#'`
if test x"$first" = x"#" ; then
continue
fi
- export $e
- $BUILDDIR/$tst $SRCDIR 2>>$TEST_LOG 1>>$TEST_LOG
+ echo "# Starting $e $BUILDDIR/$tst $SRCDIR" >>$TEST_LOG
+ env $e $BUILDDIR/$tst $SRCDIR 2>>$TEST_LOG 1>>$TEST_LOG
retval=$?
+ echo "# Finished $e $BUILDDIR/$tst $SRCDIR with $retval" >>$TEST_LOG
read pass fail << EOF
`count_case_result $retval $pass $fail`
EOF
echo_case_result $retval $tst $e
CACHE_FILES=`ls *.cache`
if [ x"$CACHE_FILES" != x ] ; then
- print_log "Clean $CACHE_FILES"
+ echo "# Clean $CACHE_FILES" >>$TEST_LOG
rm $CACHE_FILES
fi
i=`expr $i + 1`
+ IFS=$'\n'
done
- export LANG=$LANG_backup
+ IFS=' '
fi
done
echo $pass $fail
@@ -325,24 +328,24 @@ EOF_RUNNER
if [ $TEST_LOG_STDOUT -eq 1 ] ; then
cat $TEST_LOG
else
- echo "See $TEST_LOG"
+ echo "# See $TEST_LOG"
fi
}
finit()
{
- echo "Killing left gnome-session and Xorg"
+ 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 "# Killing left gnome-shell-calendar-server"
echo "$LEFT_CALENDAR"
echo "$LEFT_CALENDAR" | awk '{print $2}' | xargs kill
fi
- echo "Finished $PROGNAME testing"
+ echo "# Finished $PROGNAME testing"
}
main()
--
2.21.0