From 677e87ac8992872f3bada01d5b01e429d506a00c Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Jul 26 2019 03:28:32 +0000 Subject: Update ibus-HEAD.patch from upstream - Integrate a new compose feature - Generate ibus-tests and ibus-desktop-testing sub packages --- diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index d54c1a8..5535d68 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -1,154 +1,262 @@ -From 05a10950d635602fb3fcf4ed0021aa0b15dbd698 Mon Sep 17 00:00:00 2001 +From 026b19ef169dd9612d8a4a1ee34f7c42e7215c9a Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Thu, 9 May 2019 15:49:09 +0900 -Subject: [PATCH] src: Make ISO 639 language names with title - -Danish translations are small in iso-codes-iso-639-2-da.po for the -genral usage but the users ask the title format on UI. -Now ibus_get_language_name() and ibus_get_untranslated_language_name() -return the dynamic allocation instead of the static characters -to make the capital character. +Date: Wed, 13 Mar 2019 19:16:17 +0900 +Subject: [PATCH 01/27] setup: Enable to run ibus-setup with a different python -BUG=https://github.com/ibus/ibus/issues/2079 +BUG=https://github.com/ibus/ibus/issues/2086 --- - src/ibusutil.c | 63 ++++++++++++++++++++++++++++++++++++++++++-------- - src/ibusutil.h | 8 +++---- - 2 files changed, 58 insertions(+), 13 deletions(-) + setup/ibus-setup.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/src/ibusutil.c b/src/ibusutil.c -index fd1da006..9d003e2e 100644 ---- a/src/ibusutil.c -+++ b/src/ibusutil.c -@@ -2,7 +2,7 @@ - /* vim:set et sts=4: */ - /* bus - The Input Bus - * Copyright (C) 2008-2015 Peng Huang -- * 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); - } +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 $@ --const gchar * --ibus_get_untranslated_language_name (const gchar *_locale) -+const static gchar * -+ibus_get_untranslated_raw_language_name (const gchar *_locale) - { - const gchar *retval; - gchar *p = NULL; -@@ -148,19 +148,64 @@ ibus_get_untranslated_language_name (const gchar *_locale) - return "Other"; - } +-- +2.21.0 + +From 2825bfc13618d382444aa1f87be22cd86e9bba29 Mon Sep 17 00:00:00 2001 +From: fujiwarat +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 --const gchar * -+static char * -+get_first_item_in_semicolon_list (const char *list) -+{ -+ char **items; -+ char *item; -+ -+ items = g_strsplit (list, "; ", 2); -+ -+ item = g_strdup (items[0]); -+ g_strfreev (items); -+ -+ return item; -+} -+ -+static char * -+capitalize_utf8_string (const char *str) -+{ -+ char first[8] = { 0 }; -+ -+ if (!str) -+ return NULL; ++ibusemojigen.h: dicts/emoji-en.dict ++ $(NULL) + -+ g_unichar_to_utf8 (g_unichar_totitle (g_utf8_get_char (str)), first); -+ -+ return g_strconcat (first, g_utf8_offset_to_pointer (str, 1), NULL); -+} + install-data-hook: $(dict_DATA) + @$(NORMAL_INSTALL) + $(AM_V_at)list='$(wildcard dicts/*.dict)'; \ +diff --git a/ui/gtk3/Makefile.am b/ui/gtk3/Makefile.am +index 60205aa5..667d51c6 100644 +--- a/ui/gtk3/Makefile.am ++++ b/ui/gtk3/Makefile.am +@@ -130,6 +130,8 @@ CLEANFILES = \ + gtkpanel.xml \ + $(NULL) + ++MAINTAINERCLEANFILES = + -+gchar * -+ibus_get_untranslated_language_name (const gchar *_locale) -+{ -+ const gchar *raw = ibus_get_untranslated_raw_language_name (_locale); -+ gchar *tmp = get_first_item_in_semicolon_list (raw); -+ gchar *retval = capitalize_utf8_string (tmp); -+ g_free (tmp); -+ return retval; -+} + emoji_headers = \ + ibusemojidialog.h \ + $(NULL) +@@ -192,6 +194,8 @@ emojierapp.o: $(srcdir)/emojierapp.c + $(AM_V_CC_no)$(COMPILE) -c -o $@ $< + $(NULL) + ++MAINTAINERCLEANFILES += emojierapp.c + -+gchar * - ibus_get_language_name (const gchar *_locale) - { -- const gchar *retval = ibus_get_untranslated_language_name (_locale); -+ const gchar *raw = ibus_get_untranslated_raw_language_name (_locale); -+ const gchar *translation = NULL; -+ gchar *tmp; -+ gchar *retval; + component_DATA += gtkextension.xml + CLEANFILES += gtkextension.xml + libexec_PROGRAMS += ibus-extension-gtk3 +@@ -240,6 +244,8 @@ panelbinding.o: $(srcdir)/panelbinding.c + $(AM_V_CC_no)$(COMPILE) -c -o $@ $< + $(NULL) - #ifdef ENABLE_NLS -- if (g_strcmp0 (retval, "Other") == 0) -- return dgettext (GETTEXT_PACKAGE, N_("Other")); -+ if (g_strcmp0 (raw, "Other") == 0) -+ return g_strdup (dgettext (GETTEXT_PACKAGE, N_("Other"))); - else -- return dgettext ("iso_639-3", retval); -+ translation = dgettext ("iso_639-3", raw); - #else -- return retval; -+ translation = raw; - #endif ++MAINTAINERCLEANFILES += extension.c panelbinding.c + -+ tmp = get_first_item_in_semicolon_list (translation); -+ retval = capitalize_utf8_string (tmp); -+ g_free (tmp); -+ return retval; - } + man_seven_files = $(man_seven_in_files:.7.in=.7) + man_seven_DATA =$(man_seven_files:.7=.7.gz) + man_sevendir = $(mandir)/man7 +-- +2.21.0 + +From b497de5bc6525769e03b65c73fc991d4aa006223 Mon Sep 17 00:00:00 2001 +From: fujiwarat +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 = \ - 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); + LOG_COMPILER = $(srcdir)/runtest - /** -@@ -51,6 +51,6 @@ const gchar * ibus_get_untranslated_language_name - * - * Returns: translated language name - */ --const gchar * ibus_get_language_name (const gchar *_locale); -+gchar * ibus_get_language_name (const gchar *_locale); +-EXTRA_DIST = runtest ++EXTRA_DIST = runtest ibus-compose.env - #endif + ibus_bus_SOURCES = ibus-bus.c + ibus_bus_LDADD = $(prog_ldadd) -- -2.20.1 +2.21.0 From 1cb5032e85d85f496e349236d1b74f17fb8db966 Mon Sep 17 00:00:00 2001 From: fujiwarat Date: Tue, 23 Apr 2019 15:40:45 +0900 -Subject: [PATCH] configure: Move ibus-setup from configure.ac to Makefile.am +Subject: [PATCH 05/27] configure: Move ibus-setup from configure.ac to + Makefile.am @localedir@ can be extracted to ${datarootdir}/locale and it needs datarootdir=/usr/share in case configure.ac is used @@ -203,12 +311,66 @@ index cb4dd8d1..34c8f136 100644 desktop_DATA = org.freedesktop.IBus.Setup.desktop desktopdir = $(datadir)/applications -- -2.20.1 +2.21.0 + +From cc849c20d4dff31f6f88f93789790759bf087b77 Mon Sep 17 00:00:00 2001 +From: fujiwarat +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] data/its: Add ibus.its for IME's component files +Subject: [PATCH 07/27] data/its: Add ibus.its for IME's component files IBusEngineDesc has translatable strings in longname and description tags and they needs to be extracted by xgettext. @@ -331,32 +493,205 @@ index 00000000..5a73798b + + -- -2.20.1 +2.21.0 -From cebe7a9553de69943b955ec99285f74961c9ee4e Mon Sep 17 00:00:00 2001 +From 91a256163427f04eb7763196b4ffe553911d2e01 Mon Sep 17 00:00:00 2001 +From: Gunnar Hjalmarsson +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:21 +0900 -Subject: [PATCH] client/gtk2: Keep preedit cursor_pos and visible in clearing - preedit text +Date: Thu, 9 May 2019 15:49:09 +0900 +Subject: [PATCH 09/27] src: Make ISO 639 language names with title -Clear the preedit_string but keep the preedit_cursor_pos and -preedit_visible because a time lag could happen, firefox commit -the preedit text before the preedit text is cleared and it cause -a double commits of the Hangul preedit in firefox if the preedit -would be located on the URL bar and click on anywhere of firefox -out of the URL bar. +Danish translations are small in iso-codes-iso-639-2-da.po for the +genral usage but the users ask the title format on UI. +Now ibus_get_language_name() and ibus_get_untranslated_language_name() +return the dynamic allocation instead of the static characters +to make the capital character. + +BUG=https://github.com/ibus/ibus/issues/2079 --- - client/gtk2/ibusimcontext.c | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) + src/ibusutil.c | 63 ++++++++++++++++++++++++++++++++++++++++++-------- + src/ibusutil.h | 8 +++---- + 2 files changed, 58 insertions(+), 13 deletions(-) -diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c -index 264a747a..5e3457ba 100644 ---- a/client/gtk2/ibusimcontext.c -+++ b/client/gtk2/ibusimcontext.c -@@ -881,10 +881,18 @@ ibus_im_context_clear_preedit_text (IBusIMContext *ibusimcontext) - ibusimcontext->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) { - preedit_string = g_strdup (ibusimcontext->preedit_string); - } +diff --git a/src/ibusutil.c b/src/ibusutil.c +index fd1da006..9d003e2e 100644 +--- a/src/ibusutil.c ++++ b/src/ibusutil.c +@@ -2,7 +2,7 @@ + /* vim:set et sts=4: */ + /* bus - The Input Bus + * Copyright (C) 2008-2015 Peng Huang +- * 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 @@ -375,5 +710,14225 @@ index 264a747a..5e3457ba 100644 ibusimcontext); if (preedit_string) { -- -2.20.1 +2.21.0 + +From b59f7f823b7b2051e4ca31834f9299a72f01b339 Mon Sep 17 00:00:00 2001 +From: fujiwarat +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 diff --git a/ibus.spec b/ibus.spec index ba24b3f..ce7b91a 100644 --- a/ibus.spec +++ b/ibus.spec @@ -35,7 +35,7 @@ Name: ibus Version: 1.5.20 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ URL: https://github.com/ibus/%name/wiki @@ -233,6 +233,24 @@ BuildArch: noarch %description devel-docs The ibus-devel-docs package contains developer documentation for IBus +%package desktop-testing +Summary: Wrapper of InstalledTests Runner for IBus +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description desktop-testing +GNOME desktop testing runner implements the InstalledTests specification +and IBus also needs focus events to enable input contexts on text widgets. +The wrapper script runs gnome-session for the focus events and GNOME +desktop testing runner internally. + +%package tests +Summary: Tests for the %{name} package +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description tests +The %{name}-tests package contains tests that can be used to verify +the functionality of the installed %{name} package. + %prep %autosetup -S git @@ -270,6 +288,7 @@ autoreconf -f -i -v --disable-appindicator \ %endif --enable-introspection \ + --enable-install-tests \ %{nil} make -C ui/gtk3 maintainer-clean-generic @@ -434,7 +453,21 @@ dconf update || : %dir %{_datadir}/gtk-doc/html %{_datadir}/gtk-doc/html/* +%files desktop-testing +%{_bindir}/ibus-desktop-testing-runner + +%files tests +%dir %{_libexecdir}/installed-tests +%{_libexecdir}/installed-tests/ibus +%dir %{_datadir}/installed-tests +%{_datadir}/installed-tests/ibus + %changelog +* Fri Jul 26 2019 Takao Fujiwara - 1.5.20-6 +- Update ibus-HEAD.patch from upstream + Integrate a new compose feature + Generate ibus-tests and ibus-desktop-testing sub packages + * Thu Jul 25 2019 Fedora Release Engineering - 1.5.20-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild