From 026b19ef169dd9612d8a4a1ee34f7c42e7215c9a Mon Sep 17 00:00:00 2001 From: fujiwarat 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 -# Copyright (c) 2018 Takao Fujiwara +# Copyright (c) 2018-2019 Takao Fujiwara # 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 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 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 -# Copyright (c) 2015-2018 Takao Fujiwara +# Copyright (c) 2015-2019 Takao Fujiwara # 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 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 -# Copyright (c) 2015-2018 Takao Fujiwara +# Copyright (c) 2015-2019 Takao Fujiwara # 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 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 -# Copyright (c) 2015-2018 Takao Fujiwara -# Copyright (c) 2007-2018 Red Hat, Inc. +# Copyright (c) 2015-2019 Takao Fujiwara +# 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 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 -# Copyright (c) 2015-2017 Takao Fujiwara -# Copyright (c) 2007-2017 Red Hat, Inc. +# Copyright (c) 2015-2019 Takao Fujiwara +# 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 +COPYRIGHT_HOLDER = Peng Huang \ +Takao Fujiwara # 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 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 -# 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 +# 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 @@ + + + + + + + + + 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 @@ + + + + + + + -- 2.21.0 From 91a256163427f04eb7763196b4ffe553911d2e01 Mon Sep 17 00:00:00 2001 From: Gunnar Hjalmarsson 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 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 - * Copyright (C) 2010-2017 Takao Fujiwara + * Copyright (C) 2010-2018 Takao Fujiwara * 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 - * Copyright (C) 2010-2017 Takao Fujiwara - * Copyright (C) 2008-2016 Red Hat, Inc. + * Copyright (C) 2010-2018 Takao Fujiwara + * 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 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 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 ' : "🖕" 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 - * Copyright (C) 2013-2016 Takao Fujiwara + * Copyright (C) 2013-2019 Takao Fujiwara * * 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 - * Copyright (C) 2015-2018 Takao Fujiwara + * Copyright (C) 2015-2019 Takao Fujiwara * 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 + * Copyright (C) 2016-2019 Takao Fujiwara * 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 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 - * Copyright (C) 2015-2017 Takao Fujiwara + * Copyright (C) 2015-2019 Takao Fujiwara * 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 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 #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 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 -# 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 - * Copyright (C) 2010-2018 Takao Fujiwara + * Copyright (C) 2010-2019 Takao Fujiwara * 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 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 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 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 #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 @@ + : "♌" U264C # LEO + : "♍" U264D # VIRGO + : "∫" + : "∬" + : "🗼" +

: "(゜∀゜)" + : "*・゜゜・*:.。..。.:*・゜(n‘Д‘)η゜・*:.。. .。.:*・ ゜゜・* !!!!!" + : "∭" + : "∮" + : "∯" + : "∰" 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 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 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 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 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 +# 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 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 # 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 Date: Wed, 24 Jul 2019 17:27:37 +0900 Subject: [PATCH 25/27] src/tests: Fix IBus test cases for gnome-desktop-testing - dconf/config.c: Replaced dconf_client_write_fast() with dconf_client_write_sync() because dconf_client_write_fast() does not syn the data when ibus_config_get_values() is called immediately after ibus_config_set_value() is called. - ibus-compose-locales.in returns the return value of ibus-compose - ibus-compose: Set $NO_AT_BRIDGE to suppress a AT_SPI warning and call g_log_set_always_fatal() because GtkIMContextSimple does not support multiple compose outputs yet and the API can suppress a warning. - ibus-config: Delete async watch testings which causes several errors with gnome-shell testing and the testing is now deprecated and GSettings is recommended. - ibus-desktop-testing-runner.in: Support --output=log:stdout to cat the log to stdout and Use dbus-launch --exit-with-session instead of --sh-syntax and count PASS of test cases instead of PASS of gnome-desktop-testing and always run ibus exit and kill gnome-shell-calendar-server - ibus-engine-switch.c: Set xkb:jp::jpn if gnome-shell sets xkb:us::eng - ibus-inputcontext.c: Use ibus_bus_get_global_engine() instead of ibus_bus_list_active_engines() since ibus_bus_list_active_engines() does not work with gnome-shell and the API is now deprecated. - ibus-keypress.c: Set $NO_AT_BRIDGE to suppress a AT_SPI warning --- conf/dconf/config.c | 14 +- src/tests/Makefile.am | 19 +- src/tests/ibus-compose-locales.in | 4 +- src/tests/ibus-compose.c | 10 +- src/tests/ibus-config.c | 283 ----------------------- src/tests/ibus-desktop-testing-runner.in | 77 +++--- src/tests/ibus-engine-switch.c | 34 ++- src/tests/ibus-inputcontext.c | 29 +-- src/tests/ibus-keypress.c | 4 + 9 files changed, 126 insertions(+), 348 deletions(-) diff --git a/conf/dconf/config.c b/conf/dconf/config.c index 500ea1d8..30ac137d 100644 --- a/conf/dconf/config.c +++ b/conf/dconf/config.c @@ -335,7 +335,19 @@ ibus_config_dconf_set_value (IBusConfigService *config, } #ifdef DCONF_0_13_4 - retval = dconf_client_write_fast (client, gkey, value, error); + /* Use dconf_client_write_sync() instead of dconf_client_write_fast() + * because dconf_client_write_fast() does not sync the data when + * ibus_config_get_values() is called immediately after + * ibus_config_set_value() is called. + * We won't add a new API for the sync only since IBusConfig is + * now deprecated and GSettings is recommended. + */ + retval = dconf_client_write_sync (client, + gkey, + value, + NULL, + NULL, + error); #else retval = dconf_client_write (client, gkey, diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am index 913e42fb..2e75932c 100644 --- a/src/tests/Makefile.am +++ b/src/tests/Makefile.am @@ -55,6 +55,8 @@ TESTS = \ ibus-util \ $(NULL) +CLEANFILES = + if ENABLE_ENGINE TESTS += ibus-engine-switch endif @@ -90,9 +92,17 @@ test_sources_DATA = \ $(NULL) test_sourcesdir = $(datadir)/installed-tests/ibus +CLEANFILES += \ + $(test_metas) \ + ibus-desktop-testing-runner \ + $(NULL) + test_execs_PROGRAMS = $(TESTS) if ENABLE_GTK3 test_execs_SCRIPTS = ibus-compose-locales +CLEANFILES += \ + ibus-compose-locales \ + $(NULL) endif test_execsdir = $(libexecdir)/installed-tests/ibus endif @@ -105,15 +115,14 @@ $(test_metas): $(test_metas_in) $(test_programs) $(NULL) ibus-compose-locales: ibus-compose-locales.in - INSTALLEDDIR=$(datadir)/installed-tests; \ - sed -e "s|@INSTALLEDDIR[@]|$$INSTALLEDDIR|g" $< > $@.tmp; \ + SRCDIR=$(test_sourcesdir); \ + sed -e "s|@SRCDIR[@]|$$SRCDIR|g" $< > $@.tmp; \ mv $@.tmp $@; \ $(NULL) - ibus-desktop-testing-runner.in \ ibus-desktop-testing-runner: ibus-desktop-testing-runner.in - SRCDIR=$(test_sourcesdir); \ - sed -e "s|@SRCDIR[@]|$$SRCDIR|g" $< > $@.tmp; \ + INSTALLEDDIR=$(datadir)/installed-tests; \ + sed -e "s|@INSTALLEDDIR[@]|$$INSTALLEDDIR|g" $< > $@.tmp; \ mv $@.tmp $@; \ $(NULL) diff --git a/src/tests/ibus-compose-locales.in b/src/tests/ibus-compose-locales.in index 8d2384d1..fad02965 100755 --- a/src/tests/ibus-compose-locales.in +++ b/src/tests/ibus-compose-locales.in @@ -6,6 +6,7 @@ BUILDDIR=`dirname $0` export IBUS_COMPOSE_CACHE_DIR=$PWD +retval=0 for var in `cat $SRCDIR/ibus-compose.env` do IS_COMMENT=`echo "$var" | grep "^#"` @@ -13,6 +14,7 @@ do continue fi env $var $BUILDDIR/ibus-compose $SRCDIR $@ + retval=`expr $retval + $?` CACHE_FILES=`ls *.cache` if [ x"$CACHE_FILES" != x ] ; then @@ -20,4 +22,4 @@ do rm $CACHE_FILES fi done - +exit $retval diff --git a/src/tests/ibus-compose.c b/src/tests/ibus-compose.c index c8d3c126..db359477 100644 --- a/src/tests/ibus-compose.c +++ b/src/tests/ibus-compose.c @@ -344,20 +344,26 @@ test_compose (void) int main (int argc, char *argv[]) { + GLogLevelFlags flags; const gchar *test_name; gchar *test_path; ibus_init (); + /* Avoid a warning of "AT-SPI: Could not obtain desktop path or name" + * with gtk_main(). + */ + g_setenv ("NO_AT_BRIDGE", "1", TRUE); g_test_init (&argc, &argv, NULL); /* FIXME: * IBusIMContext opens GtkIMContextSimple as the slave and * GtkIMContextSimple opens the compose table on el_GR.UTF-8, and the - * multiple outputs in el_GR's compose causes a warning in gtkcomposetable + * multiple outputs in el_GR's compose causes a warning in gtkcomposetable * and the warning always causes a fatal in GTest: " "GTK+ supports to output one char only: " */ - g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); + flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); gtk_init (&argc, &argv); + g_log_set_always_fatal (flags); m_srcdir = argc > 1 ? g_strdup (argv[1]) : g_strdup ("."); m_compose_file = g_strdup (g_getenv ("COMPOSE_FILE")); diff --git a/src/tests/ibus-config.c b/src/tests/ibus-config.c index c6141ab5..9b925ad9 100644 --- a/src/tests/ibus-config.c +++ b/src/tests/ibus-config.c @@ -133,254 +133,6 @@ test_config_set_get (void) g_object_unref (config); } -typedef struct { - GMainLoop *loop; - guint timeout_id; - gchar *section; - gchar *name; -} WatchData; - -typedef struct { - gchar *section; - gchar *name; -} WatchKey; - -typedef struct { - WatchKey *watched; /* watched keys (null-terminated) */ - WatchKey *changed; /* changed keys (null-terminated) */ - WatchKey *notified; /* notified keys (same length as - changed, not null-terminated) */ -} WatchTestData; - -static WatchKey default_watched[] = { - { NULL } -}; -static WatchKey default_changed[] = { - { "test/s1", "n1" }, - { "test/s1", "n2" }, - { "test/s2", "n1" }, - { "test/s2", "n2" }, - { NULL } -}; -static WatchKey default_notified[] = { - { "test/s1", "n1" }, - { "test/s1", "n2" }, - { "test/s2", "n1" }, - { "test/s2", "n2" } -}; -static WatchTestData default_data = { - default_watched, - default_changed, - default_notified -}; - -static WatchKey section_watched[] = { - { "test/s1", NULL }, - { NULL } -}; -static WatchKey section_notified[] = { - { "test/s1", "n1" }, - { "test/s1", "n2" }, - { NULL, NULL }, - { NULL, NULL }, -}; -static WatchTestData section_data = { - section_watched, - default_changed, - section_notified -}; - -static WatchKey section_multiple_watched[] = { - { "test/s1", NULL }, - { "test/s2", NULL }, - { NULL } -}; -static WatchKey section_multiple_notified[] = { - { "test/s1", "n1" }, - { "test/s1", "n2" }, - { "test/s2", "n1" }, - { "test/s2", "n2" }, -}; -static WatchTestData section_multiple_data = { - section_multiple_watched, - default_changed, - section_multiple_notified -}; - -static WatchKey section_name_watched[] = { - { "test/s1", "n1" }, - { NULL } -}; -static WatchKey section_name_notified[] = { - { "test/s1", "n1" }, - { NULL, NULL }, - { NULL, NULL }, - { NULL, NULL }, -}; -static WatchTestData section_name_data = { - section_name_watched, - default_changed, - section_name_notified -}; - -static WatchKey section_name_multiple_watched[] = { - { "test/s1", "n1" }, - { "test/s2", "n2" }, - { NULL } -}; -static WatchKey section_name_multiple_notified[] = { - { "test/s1", "n1" }, - { NULL, NULL }, - { NULL, NULL }, - { "test/s2", "n2" }, -}; -static WatchTestData section_name_multiple_data = { - section_name_multiple_watched, - default_changed, - section_name_multiple_notified -}; - -typedef struct { - IBusConfig *config; - WatchData data; -} WatchFixture; - -static void -value_changed_cb (IBusConfig *config, - const gchar *section, - const gchar *name, - GVariant *value, - gpointer user_data) -{ - WatchData *data = (WatchData *) user_data; - - data->section = g_strdup (section); - data->name = g_strdup (name); - - g_main_loop_quit (data->loop); -} - -static gboolean -timeout_cb (gpointer user_data) -{ - WatchData *data = (WatchData *) user_data; - g_main_loop_quit (data->loop); - data->timeout_id = 0; - return FALSE; -} - -static void -change_and_test (IBusConfig *config, - const gchar *section, - const gchar *name, - const gchar *expected_section, - const gchar *expected_name, - WatchData *data) -{ - gboolean retval; - GVariant *var; - - data->section = NULL; - data->name = NULL; - - /* Unset won't notify value-changed signal. */ - var = ibus_config_get_values (config, section); - if (var != NULL) { - GVariant *value = g_variant_lookup_value (var, name, - G_VARIANT_TYPE_VARIANT); - if (value != NULL) { - ibus_config_unset (config, section, name); - g_variant_unref (value); - } - g_variant_unref (var); - } - - data->timeout_id = g_timeout_add (1, timeout_cb, data); - g_main_loop_run (data->loop); - if (data->timeout_id != 0) { - g_source_remove (data->timeout_id); - } - - retval = ibus_config_set_value (config, section, name, - g_variant_new_int32 (1)); - g_assert (retval); - - data->timeout_id = g_timeout_add (1, timeout_cb, data); - g_main_loop_run (data->loop); - if (data->timeout_id != 0) { - g_source_remove (data->timeout_id); - } - - g_assert_cmpstr (data->section, ==, expected_section); - g_assert_cmpstr (data->name, ==, expected_name); - - g_free (data->section); - g_free (data->name); -} - -static void -watch_fixture_setup (WatchFixture *fixture, gconstpointer user_data) -{ - fixture->config = ibus_config_new (ibus_bus_get_connection (bus), - NULL, - NULL); - g_assert (fixture->config); - - fixture->data.loop = g_main_loop_new (NULL, FALSE); - g_signal_connect (fixture->config, "value-changed", - G_CALLBACK (value_changed_cb), &fixture->data); -} - -static void -watch_fixture_teardown (WatchFixture *fixture, gconstpointer user_data) -{ - g_main_loop_unref (fixture->data.loop); - - ibus_proxy_destroy (IBUS_PROXY (fixture->config)); - g_object_unref (fixture->config); -} - -static void -test_config_watch (WatchFixture *fixture, gconstpointer user_data) -{ - const WatchTestData *data = user_data; - gint i; - - for (i = 0; data->watched[i].section != NULL; i++) { - ibus_config_watch (fixture->config, - data->watched[i].section, - data->watched[i].name); - } - for (i = 0; data->changed[i].section != NULL; i++) { - change_and_test (fixture->config, - data->changed[i].section, - data->changed[i].name, - data->notified[i].section, - data->notified[i].name, - &fixture->data); - } - for (i = 0; data->watched[i].section != NULL; i++) { - ibus_config_unwatch (fixture->config, - data->watched[i].section, - data->watched[i].name); - } - if (i > 0) { - /* Check if the above unwatch takes effect. */ - for (i = 0; data->changed[i].section != NULL; i++) { - change_and_test (fixture->config, - data->changed[i].section, - data->changed[i].name, - NULL, - NULL, - &fixture->data); - } - } else { - /* Since we reuse single D-Bus connection, we need to remove the - default match rule for the next ibus_config_new() call. */ - ibus_config_unwatch (fixture->config, NULL, NULL); - } -} - gint main (gint argc, gchar **argv) @@ -390,41 +142,6 @@ main (gint argc, g_test_init (&argc, &argv, NULL); bus = ibus_bus_new (); - g_test_add ("/ibus/config-watch/default", - WatchFixture, - &default_data, - watch_fixture_setup, - test_config_watch, - watch_fixture_teardown); - - g_test_add ("/ibus/config-watch/section", - WatchFixture, - §ion_data, - watch_fixture_setup, - test_config_watch, - watch_fixture_teardown); - - g_test_add ("/ibus/config-watch/section-multiple", - WatchFixture, - §ion_multiple_data, - watch_fixture_setup, - test_config_watch, - watch_fixture_teardown); - - g_test_add ("/ibus/config-watch/section-name", - WatchFixture, - §ion_name_data, - watch_fixture_setup, - test_config_watch, - watch_fixture_teardown); - - g_test_add ("/ibus/config-watch/section-name-multiple", - WatchFixture, - §ion_name_multiple_data, - watch_fixture_setup, - test_config_watch, - watch_fixture_teardown); - g_test_add_func ("/ibus/create-config-async", test_create_config_async); g_test_add_func ("/ibus/config-set-get", test_config_set_get); diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in index a90c1378..b7a72285 100755 --- a/src/tests/ibus-desktop-testing-runner.in +++ b/src/tests/ibus-desktop-testing-runner.in @@ -34,9 +34,10 @@ DISPLAY=:99.0 BUILDDIR="." SRCDIR="." TEST_LOG="test-suite.log" +TEST_LOG_STDOUT=0 RESULT_LOG="" HAVE_GRAPHICS=1 -DESKTOP_COMMAND="gnome-session" +DESKTOP_COMMAND="dbus-launch --exit-with-session gnome-session" PID_XORG=0 PID_GNOME_SESSION=0 TESTING_RUNNER="default" @@ -109,19 +110,26 @@ parse_args() init_desktop() { if [ "$RESULT_LOG" != "" ] ; then - rm $RESULT_LOG + if [ -f $RESULT_LOG ] ; then + rm $RESULT_LOG + fi + fi + HAS_STDOUT=`echo "$TEST_LOG" | grep ':stdout'` + if [ x"$HAS_STDOUT" != x ] ; then + TEST_LOG=`echo "$TEST_LOG" | sed -e 's|:stdout||'` + TEST_LOG_STDOUT=1 fi if [ "$TEST_LOG" = "" ] ; then print_log -e "${RED}FAIL${NC}: ${RED}ERROR${NC}: a log file is required to get return value with 'read' command" - abrt - else + exit -1 + elif [ -f $TEST_LOG ] ; then rm $TEST_LOG fi - if test x$FORCE_TEST != x ; then + if [ x$FORCE_TEST != x ] ; then RUN_ARGS="$RUN_ARGS --force" fi - if test ! -f $HOME/.config/gnome-initial-setup-done ; then + if [ ! -f $HOME/.config/gnome-initial-setup-done ] ; then IS_SYSTEM_ACCOUNT=false if [ "$USER" = "root" ] ; then IS_SYSTEM_ACCOUNT=true @@ -141,7 +149,7 @@ _EOF # Prevent from launching a XDG dialog XDG_LOCALE_FILE="$HOME/.config/user-dirs.locale" - if test -f $XDG_LOCALE_FILE ; then + if [ -f $XDG_LOCALE_FILE ] ; then XDG_LANG_ORIG=`cat $XDG_LOCALE_FILE` XDG_LANG_NEW=`echo $LANG | sed -e 's/\(.*\)\..*/\1/'` if [ "$XDG_LANG_ORIG" != "$XDG_LANG_NEW" ] ; then @@ -153,19 +161,8 @@ _EOF run_dbus_daemon() { - a=`ps -ef | grep dbus-daemon | grep "\-\-system" | grep -v session | grep -v grep` - if test x"$a" = x ; then - eval `dbus-launch --sh-syntax` - fi - SUSER=`echo "$USER" | cut -c 1-7` - a=`ps -ef | grep dbus-daemon | grep "$SUSER" | grep -v gdm | grep session | grep -v grep` - if test x"$a" = x ; then - systemctl --user start dbus - export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus - fi - systemctl --user status dbus | col -b - ps -ef | grep dbus-daemon | grep "$SUSER" | grep -v gdm | egrep 'session|system' | grep -v grep - systemctl --user show-environment | col -b + # Use dbus-launch --exit-with-session later instead of --sh-syntax + export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus } run_desktop() @@ -181,7 +178,8 @@ run_desktop() $DESKTOP_COMMAND & PID_GNOME_SESSION=$! sleep 30 - if test "$DESKTOP_COMMAND" != "gnome-session" ; then + HAS_GNOME=`echo $DESKTOP_COMMAND | grep gnome-session` + if [ x"$HAS_GNOME" = x ] ; then ibus-daemon --daemonize --verbose sleep 1 fi @@ -285,6 +283,16 @@ run_gnome_desktop_testing_runner() `count_case_result $retval $pass $fail` EOF done + child_pass=`grep '^PASS:' $TEST_LOG | wc -l` + child_fail=`grep '^FAIL:' $TEST_LOG | wc -l` + if [ $child_pass -ne 0 -o $child_fail -ne 0 ] ; then + pass=$child_pass + if [ $child_fail -ne 0 ] ; then + fail=`expr $child_fail / 2` + else + fail=0 + fi + fi echo $pass $fail } @@ -311,22 +319,29 @@ EOF_RUNNER ;; esac echo "" - if [ $pass -ne 0 ] ; then - print_log -e "${GREEN}PASS${NC}: $pass" - fi - if [ $fail -ne 0 ] ; then - print_log -e "${RED}FAIL${NC}: $fail" - fi + print_log -e "${GREEN}PASS${NC}: $pass" + print_log -e "${RED}FAIL${NC}: $fail" echo "" - echo "See ${TEST_LOG}" + if [ $TEST_LOG_STDOUT -eq 1 ] ; then + cat $TEST_LOG + else + echo "See $TEST_LOG" + fi } finit() { - if test "$DESKTOP_COMMAND" != "gnome-session" ; then - ibus exit - fi + echo "Killing left gnome-session and Xorg" kill $PID_GNOME_SESSION $PID_XORG + ibus exit + SUSER=`echo "$USER" | cut -c 1-7` + LEFT_CALENDAR=`ps -ef | grep gnome-shell-calendar-server | grep $SUSER | grep -v grep` + if [ x"$LEFT_CALENDAR" != x ] ; then + echo "Killing left gnome-shell-calendar-server" + echo "$LEFT_CALENDAR" + echo "$LEFT_CALENDAR" | awk '{print $2}' | xargs kill + fi + echo "Finished $PROGNAME testing" } diff --git a/src/tests/ibus-engine-switch.c b/src/tests/ibus-engine-switch.c index 5c2bd516..a1eeba2a 100644 --- a/src/tests/ibus-engine-switch.c +++ b/src/tests/ibus-engine-switch.c @@ -13,17 +13,25 @@ static const gchar *engine_names[] = { AFTER_ENGINE }; +static const gchar *engine_names2[] = { + AFTER_ENGINE, + BEFORE_ENGINE +}; + static void -change_global_engine (void) +change_global_engine (gboolean reverse) { gint i; for (i = 0; i < G_N_ELEMENTS (engine_names); i++) { - ibus_bus_set_global_engine (bus, engine_names[i]); + const gchar *engine_name = engine_names[i]; + if (reverse) + engine_name = engine_names2[i]; + ibus_bus_set_global_engine (bus, engine_name); IBusEngineDesc *engine_desc = ibus_bus_get_global_engine (bus); g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, - engine_names[i]); + engine_name); g_object_unref (G_OBJECT (engine_desc)); } } @@ -46,6 +54,7 @@ typedef struct { gint count; guint timeout_id; guint idle_id; + gboolean reverse; } GlobalEngineChangedData; static void @@ -70,7 +79,7 @@ static gboolean change_global_engine_cb (gpointer user_data) { GlobalEngineChangedData *data = (GlobalEngineChangedData *) user_data; - change_global_engine (); + change_global_engine (data->reverse); data->idle_id = 0; return FALSE; } @@ -78,12 +87,25 @@ change_global_engine_cb (gpointer user_data) static void test_global_engine (void) { + GLogLevelFlags flags; + IBusEngineDesc *desc; GlobalEngineChangedData data; guint handler_id; if (!ibus_bus_get_use_global_engine (bus)) return; + /* "No global engine." warning is not critical message. */ + flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); + desc = ibus_bus_get_global_engine (bus); + g_log_set_always_fatal (flags); + if (desc && + !g_strcmp0 (BEFORE_ENGINE, ibus_engine_desc_get_name (desc))) { + data.reverse = TRUE; + } else { + data.reverse = FALSE; + } + data.count = 0; handler_id = g_signal_connect (bus, @@ -141,7 +163,7 @@ test_context_engine_set_by_global (void) /* ibus_bus_set_global_engine() changes focused context engine. */ ibus_input_context_focus_in (context); - change_global_engine (); + change_global_engine (FALSE); /* ibus_input_context_set_engine() does not take effect when global engine is used. */ @@ -170,7 +192,7 @@ test_context_engine_set_by_focus (void) ibus_input_context_focus_in (context); - change_global_engine (); + change_global_engine (FALSE); /* When focus is lost, context engine is set to "dummy". */ ibus_input_context_focus_in (another_context); diff --git a/src/tests/ibus-inputcontext.c b/src/tests/ibus-inputcontext.c index fab183aa..ed04bd64 100644 --- a/src/tests/ibus-inputcontext.c +++ b/src/tests/ibus-inputcontext.c @@ -37,18 +37,6 @@ fatal_handler(const gchar *log_domain, return TRUE; } -static gchar * -get_last_engine_id (const GList *engines) -{ - const char *result = NULL; - for (; engines; engines = g_list_next (engines)) { - IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (engines->data); - g_assert (engine_desc); - result = ibus_engine_desc_get_name (engine_desc); - } - return g_strdup (result); -} - static void call_basic_ipcs (IBusInputContext *context) { @@ -68,18 +56,23 @@ call_basic_ipcs (IBusInputContext *context) static void test_input_context (void) { - GList *engines; - gchar *active_engine_name = NULL; IBusInputContext *context; + GLogLevelFlags flags; IBusEngineDesc *engine_desc; + gchar *active_engine_name = NULL; gchar *current_ic; context = ibus_bus_create_input_context (bus, "test"); call_basic_ipcs (context); - engines = ibus_bus_list_active_engines (bus); - if (engines != NULL) { - active_engine_name = get_last_engine_id (engines); + /* "No global engine." warning is not critical message. */ + flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); + engine_desc = ibus_bus_get_global_engine (bus); + g_log_set_always_fatal (flags); + if (engine_desc != NULL) { + active_engine_name = g_strdup (ibus_engine_desc_get_name(engine_desc)); + g_object_unref (engine_desc); + engine_desc = NULL; } else { active_engine_name = g_strdup ("dummy"); } @@ -111,8 +104,6 @@ test_input_context (void) g_object_unref (context); g_free (active_engine_name); - g_list_foreach (engines, (GFunc) g_object_unref, NULL); - g_list_free (engines); } static void diff --git a/src/tests/ibus-keypress.c b/src/tests/ibus-keypress.c index 17920226..dd1b0042 100644 --- a/src/tests/ibus-keypress.c +++ b/src/tests/ibus-keypress.c @@ -288,6 +288,10 @@ int main (int argc, char *argv[]) { ibus_init (); + /* Avoid a warning of "AT-SPI: Could not obtain desktop path or name" + * with gtk_main(). + */ + g_setenv ("NO_AT_BRIDGE", "1", TRUE); g_test_init (&argc, &argv, NULL); gtk_init (&argc, &argv); -- 2.21.0 From 0c89a7ee33bfe5b403c798e0ddb39e4c05d0d971 Mon Sep 17 00:00:00 2001 From: Hodong Kim 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 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 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