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