summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-03-22 02:37:14 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-03-22 02:37:14 +0000
commit60325df7dbe734bb0dcf622f75c8eb9365e534a5 (patch)
tree07ec1466e0cc91cea99c87d4dac3cbc626928d67
parent48f87c1eeab18e32352f048d09c706bb20c4b090 (diff)
parent64a62ebcfba3327b42abe2c3d44c089fc7470caf (diff)
downloadgtk+-60325df7dbe734bb0dcf622f75c8eb9365e534a5.tar.gz
Merge branch 'better-dead-keys' into 'master'
Better dead keys See merge request GNOME/gtk!3329
-rwxr-xr-xgtk/compose/compose-parse.py (renamed from gtk/compose-parse.py)15
-rw-r--r--gtk/compose/gtk-compose-lookaside.txt (renamed from gtk/gtk-compose-lookaside.txt)4
-rw-r--r--gtk/compose/gtk-compose-remove.txt14
-rw-r--r--gtk/gtkimcontextsimple.c196
-rw-r--r--gtk/gtkimcontextsimpleseqs.h199
5 files changed, 312 insertions, 116 deletions
diff --git a/gtk/compose-parse.py b/gtk/compose/compose-parse.py
index 767f2b421e..23444bc1ed 100755
--- a/gtk/compose-parse.py
+++ b/gtk/compose/compose-parse.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#
# compose-parse.py, version 1.4
@@ -26,6 +26,7 @@ URL_KEYSYMSTXT = "http://www.cl.cam.ac.uk/~mgk25/ucs/keysyms.txt"
URL_GDKKEYSYMSH = "http://git.gnome.org/browse/gtk%2B/plain/gdk/gdkkeysyms.h"
URL_UNICODEDATATXT = 'http://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt'
FILENAME_COMPOSE_SUPPLEMENTARY = 'gtk-compose-lookaside.txt'
+FILENAME_COMPOSE_NEGATIVE_SUPPLEMENTARY = 'gtk-compose-remove.txt'
# We currently support keysyms of size 2; once upstream xorg gets sorted,
# we might produce some tables with size 2 and some with size 4.
@@ -449,6 +450,18 @@ for seq in composefile.readlines():
xorg_compose_sequences_raw.append(seq)
try:
+ composefile_lookaside = open(FILENAME_COMPOSE_NEGATIVE_SUPPLEMENTARY, 'r')
+ for seq in composefile_lookaside.readlines():
+ xorg_compose_sequences_raw.remove(seq)
+except IOError, (errno, strerror):
+ if opt_verbose:
+ print "I/O error(%s): %s" % (errno, strerror)
+ print "Did not find negative lookaside compose file. Continuing..."
+except:
+ print "Unexpected error: ", sys.exc_info()[0]
+ sys.exit(-1)
+
+try:
composefile_lookaside = open(FILENAME_COMPOSE_SUPPLEMENTARY, 'r')
for seq in composefile_lookaside.readlines():
xorg_compose_sequences_raw.append(seq)
diff --git a/gtk/gtk-compose-lookaside.txt b/gtk/compose/gtk-compose-lookaside.txt
index 3f3b23c69c..c846cc8121 100644
--- a/gtk/gtk-compose-lookaside.txt
+++ b/gtk/compose/gtk-compose-lookaside.txt
@@ -403,3 +403,7 @@
<Multi_key> <Greek_omicron> <apostrophe> : "ό" U03CC
<Multi_key> <Greek_upsilon> <apostrophe> : "ύ" U03CD
<Multi_key> <Greek_omega> <apostrophe> : "ώ" U03CE
+
+# This sequence matches our handling of dead keys better.
+# We remove the xorg sequence that maps this to '
+<dead_acute> <space> : "´" acute # ACUTE ACCENT
diff --git a/gtk/compose/gtk-compose-remove.txt b/gtk/compose/gtk-compose-remove.txt
new file mode 100644
index 0000000000..620df9e9ce
--- /dev/null
+++ b/gtk/compose/gtk-compose-remove.txt
@@ -0,0 +1,14 @@
+<dead_tilde> <dead_tilde> : "~" asciitilde # TILDE
+<dead_acute> <space> : "'" apostrophe # APOSTROPHE
+<dead_acute> <dead_acute> : "´" acute # ACUTE ACCENT
+<dead_grave> <dead_grave> : "`" grave # GRAVE ACCENT
+<dead_abovering> <dead_abovering> : "°" degree # DEGREE SIGN
+<dead_macron> <dead_macron> : "¯" macron # MACRON
+<dead_breve> <dead_breve> : "˘" breve # BREVE
+<dead_abovedot> <dead_abovedot> : "˙" abovedot # DOT ABOVE
+<dead_diaeresis> <dead_diaeresis> : "¨" diaeresis # DIAERESIS
+<dead_doubleacute> <dead_doubleacute> : "˝" U2dd # DOUBLE ACUTE ACCENT
+<dead_caron> <dead_caron> : "ˇ" caron # CARON
+<dead_cedilla> <dead_cedilla> : "¸" cedilla # CEDILLA
+<dead_ogonek> <dead_ogonek> : "˛" ogonek # OGONEK
+<dead_iota> <dead_iota> : "ͺ" U37a # GREEK YPOGEGRAMMENI
diff --git a/gtk/gtkimcontextsimple.c b/gtk/gtkimcontextsimple.c
index f1fa021e73..9c1024e0c3 100644
--- a/gtk/gtkimcontextsimple.c
+++ b/gtk/gtkimcontextsimple.c
@@ -433,6 +433,79 @@ beep_surface (GdkSurface *surface)
gdk_surface_beep (surface);
}
+static inline gboolean
+is_dead_key (guint keysym)
+{
+ return GDK_KEY_dead_grave <= keysym && keysym <= GDK_KEY_dead_greek;
+}
+
+static gunichar
+dead_key_to_unicode (guint keysym,
+ gboolean *need_space)
+{
+ /* Sadly, not all the dead keysyms have spacing mark equivalents
+ * in Unicode. For those that don't, we use space + the non-spacing
+ * mark as an approximation
+ */
+ switch (keysym)
+ {
+#define CASE(keysym, unicode, sp) \
+ case GDK_KEY_dead_##keysym: *need_space = sp; return unicode;
+
+ CASE (grave, 0x60, 0);
+ CASE (acute, 0xb4, 0);
+ CASE (circumflex, 0x5e, 0);
+ CASE (tilde, 0x7e, 0);
+ CASE (macron, 0xaf, 0);
+ CASE (breve, 0x2d8, 0);
+ CASE (abovedot, 0x307, 1);
+ CASE (diaeresis, 0xa8, 0);
+ CASE (abovering, 0x2da, 0);
+ CASE (hook, 0x2c0, 0);
+ CASE (doubleacute, 0x2dd, 0);
+ CASE (caron, 0x2c7, 0);
+ CASE (cedilla, 0xb8, 0);
+ CASE (ogonek, 0x2db, 0);
+ CASE (iota, 0x37a, 0);
+ CASE (voiced_sound, 0x3099, 1);
+ CASE (semivoiced_sound, 0x309a, 1);
+ CASE (belowdot, 0x323, 1);
+ CASE (horn, 0x31b, 1);
+ CASE (stroke, 0x335, 1);
+ CASE (abovecomma, 0x2bc, 0);
+ CASE (abovereversedcomma, 0x2bd, 1);
+ CASE (doublegrave, 0x30f, 1);
+ CASE (belowring, 0x2f3, 0);
+ CASE (belowmacron, 0x2cd, 0);
+ CASE (belowcircumflex, 0x32d, 1);
+ CASE (belowtilde, 0x330, 1);
+ CASE (belowbreve, 0x32e, 1);
+ CASE (belowdiaeresis, 0x324, 1);
+ CASE (invertedbreve, 0x32f, 1);
+ CASE (belowcomma, 0x326, 1);
+ CASE (lowline, 0x5f, 0);
+ CASE (aboveverticalline, 0x2c8, 0);
+ CASE (belowverticalline, 0x2cc, 0);
+ CASE (longsolidusoverlay, 0x338, 1);
+ CASE (a, 0x363, 1);
+ CASE (A, 0x363, 1);
+ CASE (e, 0x364, 1);
+ CASE (E, 0x364, 1);
+ CASE (i, 0x365, 1);
+ CASE (I, 0x365, 1);
+ CASE (o, 0x366, 1);
+ CASE (O, 0x366, 1);
+ CASE (u, 0x367, 1);
+ CASE (U, 0x367, 1);
+ CASE (small_schwa, 0x1dea, 1);
+ CASE (capital_schwa, 0x1dea, 1);
+#undef CASE
+ default:
+ *need_space = FALSE;
+ return gdk_keyval_to_unicode (keysym);
+ }
+}
+
static gboolean
no_sequence_matches (GtkIMContextSimple *context_simple,
int n_compose,
@@ -492,6 +565,31 @@ no_sequence_matches (GtkIMContextSimple *context_simple,
{
keyval = gdk_key_event_get_keyval (event);
+ if (n_compose == 2 && is_dead_key (priv->compose_buffer[0]))
+ {
+ gboolean need_space;
+ GString *s;
+
+ s = g_string_new ("");
+
+ /* dead keys are never *really* dead */
+ ch = dead_key_to_unicode (priv->compose_buffer[0], &need_space);
+ if (ch)
+ {
+ if (need_space)
+ g_string_append_c (s, ' ');
+ g_string_append_unichar (s, ch);
+ }
+
+ ch = gdk_keyval_to_unicode (priv->compose_buffer[1]);
+ if (ch != 0 && !g_unichar_iscntrl (ch))
+ g_string_append_unichar (s, ch);
+
+ gtk_im_context_simple_commit_string (context_simple, s->str);
+ g_string_free (s, TRUE);
+ return TRUE;
+ }
+
priv->compose_buffer[0] = 0;
if (n_compose > 1) /* Invalid sequence */
{
@@ -824,6 +922,39 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
output = g_string_new ("");
+ if (n_compose == 2)
+ {
+ /* Special-case deadkey-deadkey sequences.
+ * We are not doing chained deadkeys, so we
+ * want to commit the first key, and contine
+ * preediting with second.
+ */
+ if (is_dead_key (priv->compose_buffer[0]) &&
+ is_dead_key (priv->compose_buffer[1]))
+ {
+ gunichar ch;
+ gboolean need_space;
+ guint next;
+
+ next = priv->compose_buffer[1];
+
+ ch = dead_key_to_unicode (priv->compose_buffer[0], &need_space);
+ if (ch)
+ {
+ if (need_space)
+ g_string_append_c (output, ' ');
+ g_string_append_unichar (output, ch);
+
+ gtk_im_context_simple_commit_string (context_simple, output->str);
+ g_string_set_size (output, 0);
+
+ priv->compose_buffer[0] = next;
+ priv->compose_buffer[1] = 0;
+ n_compose = 1;
+ }
+ }
+ }
+
G_LOCK (global_tables);
tmp_list = global_tables;
@@ -982,70 +1113,9 @@ gtk_im_context_simple_get_preedit_string (GtkIMContext *context,
gunichar ch;
gboolean need_space;
- if (GDK_KEY_dead_grave <= priv->compose_buffer[i] && priv->compose_buffer[i] <= GDK_KEY_dead_greek)
+ if (is_dead_key (priv->compose_buffer[i]))
{
- /* Sadly, not all the dead keysyms have spacing mark equivalents
- * in Unicode. For those that don't, we use space + the non-spacing
- * mark as an approximation
- */
- switch (priv->compose_buffer[i])
- {
- #define CASE(keysym, unicode, sp) \
- case GDK_KEY_dead_##keysym: ch = unicode; need_space = sp; break
-
- CASE (grave, 0x60, 0);
- CASE (acute, 0xb4, 0);
- CASE (circumflex, 0x5e, 0);
- CASE (tilde, 0x7e, 0);
- CASE (macron, 0xaf, 0);
- CASE (breve, 0x2d8, 0);
- CASE (abovedot, 0x307, 1);
- CASE (diaeresis, 0xa8, 0);
- CASE (abovering, 0x2da, 0);
- CASE (hook, 0x2c0, 0);
- CASE (doubleacute, 0x2dd, 0);
- CASE (caron, 0x2c7, 0);
- CASE (cedilla, 0xb8, 0);
- CASE (ogonek, 0x2db, 0);
- CASE (iota, 0x37a, 0);
- CASE (voiced_sound, 0x3099, 1);
- CASE (semivoiced_sound, 0x309a, 1);
- CASE (belowdot, 0x323, 1);
- CASE (horn, 0x31b, 1);
- CASE (stroke, 0x335, 1);
- CASE (abovecomma, 0x2bc, 0);
- CASE (abovereversedcomma, 0x2bd, 1);
- CASE (doublegrave, 0x30f, 1);
- CASE (belowring, 0x2f3, 0);
- CASE (belowmacron, 0x2cd, 0);
- CASE (belowcircumflex, 0x32d, 1);
- CASE (belowtilde, 0x330, 1);
- CASE (belowbreve, 0x32e, 1);
- CASE (belowdiaeresis, 0x324, 1);
- CASE (invertedbreve, 0x32f, 1);
- CASE (belowcomma, 0x326, 1);
- CASE (lowline, 0x5f, 0);
- CASE (aboveverticalline, 0x2c8, 0);
- CASE (belowverticalline, 0x2cc, 0);
- CASE (longsolidusoverlay, 0x338, 1);
- CASE (a, 0x363, 1);
- CASE (A, 0x363, 1);
- CASE (e, 0x364, 1);
- CASE (E, 0x364, 1);
- CASE (i, 0x365, 1);
- CASE (I, 0x365, 1);
- CASE (o, 0x366, 1);
- CASE (O, 0x366, 1);
- CASE (u, 0x367, 1);
- CASE (U, 0x367, 1);
- CASE (small_schwa, 0x1dea, 1);
- CASE (capital_schwa, 0x1dea, 1);
- #undef CASE
- default:
- need_space = FALSE;
- ch = gdk_keyval_to_unicode (priv->compose_buffer[i]);
- break;
- }
+ ch = dead_key_to_unicode (priv->compose_buffer[i], &need_space);
if (ch)
{
if (need_space)
diff --git a/gtk/gtkimcontextsimpleseqs.h b/gtk/gtkimcontextsimpleseqs.h
index 4ba242c6bf..901d1c4af6 100644
--- a/gtk/gtkimcontextsimpleseqs.h
+++ b/gtk/gtkimcontextsimpleseqs.h
@@ -66,35 +66,35 @@
static const guint16 gtk_compose_seqs_compact[] = {
GDK_KEY_Greek_accentdieresis, 180, 184, 184, 184, 184,
-GDK_KEY_dead_grave, 184, 246, 333, 545, 545,
-GDK_KEY_dead_acute, 545, 609, 705, 981, 981,
-GDK_KEY_dead_circumflex, 981, 1105, 1105, 1305, 1305,
-GDK_KEY_dead_tilde, 1305, 1389, 1452, 1592, 1592,
-GDK_KEY_dead_macron, 1592, 1638, 1656, 1728, 1728,
-GDK_KEY_dead_breve, 1728, 1778, 1778, 1802, 1802,
-GDK_KEY_dead_abovedot, 1802, 1832, 1835, 1871, 1871,
-GDK_KEY_dead_diaeresis, 1871, 1959, 1971, 1995, 1995,
-GDK_KEY_dead_abovering, 1995, 2005, 2005, 2005, 2005,
-GDK_KEY_dead_doubleacute, 2005, 2015, 2015, 2015, 2015,
-GDK_KEY_dead_caron, 2015, 2057, 2057, 2065, 2065,
-GDK_KEY_dead_cedilla, 2065, 2077, 2083, 2083, 2083,
-GDK_KEY_dead_ogonek, 2083, 2093, 2093, 2093, 2093,
-GDK_KEY_dead_iota, 2093, 2115, 2214, 2646, 3306,
-GDK_KEY_dead_voiced_sound, 3306, 3352, 3352, 3352, 3352,
-GDK_KEY_dead_semivoiced_sound, 3352, 3362, 3362, 3362, 3362,
-GDK_KEY_dead_belowdot, 3362, 3378, 3378, 3394, 3394,
-GDK_KEY_dead_hook, 3394, 3472, 3475, 3531, 3531,
-GDK_KEY_dead_horn, 3531, 3541, 3541, 3541, 3541,
-GDK_KEY_dead_stroke, 3541, 3629, 3641, 3641, 3641,
-GDK_KEY_dead_psili, 3641, 3669, 3669, 3669, 3669,
-GDK_KEY_dead_dasia, 3669, 3701, 3701, 3701, 3701,
-GDK_KEY_dead_belowring, 3701, 3703, 3703, 3703, 3703,
-GDK_KEY_dead_belowtilde, 3703, 3705, 3705, 3705, 3705,
-GDK_KEY_dead_belowdiaeresis, 3705, 3705, 3708, 3708, 3708,
-GDK_KEY_dead_belowcomma, 3708, 3722, 3722, 3722, 3722,
-GDK_KEY_dead_currency, 3722, 3820, 3826, 3826, 3826,
-GDK_KEY_dead_greek, 3826, 3928, 3952, 3952, 3952,
-GDK_KEY_Multi_key, 3952, 3952, 10348, 14044, 15919,
+GDK_KEY_dead_grave, 184, 244, 331, 543, 543,
+GDK_KEY_dead_acute, 543, 605, 701, 977, 977,
+GDK_KEY_dead_circumflex, 977, 1101, 1101, 1301, 1301,
+GDK_KEY_dead_tilde, 1301, 1383, 1446, 1586, 1586,
+GDK_KEY_dead_macron, 1586, 1630, 1648, 1720, 1720,
+GDK_KEY_dead_breve, 1720, 1768, 1768, 1792, 1792,
+GDK_KEY_dead_abovedot, 1792, 1820, 1823, 1859, 1859,
+GDK_KEY_dead_diaeresis, 1859, 1945, 1957, 1981, 1981,
+GDK_KEY_dead_abovering, 1981, 1989, 1989, 1989, 1989,
+GDK_KEY_dead_doubleacute, 1989, 1997, 1997, 1997, 1997,
+GDK_KEY_dead_caron, 1997, 2037, 2037, 2045, 2045,
+GDK_KEY_dead_cedilla, 2045, 2055, 2061, 2061, 2061,
+GDK_KEY_dead_ogonek, 2061, 2069, 2069, 2069, 2069,
+GDK_KEY_dead_iota, 2069, 2089, 2188, 2620, 3280,
+GDK_KEY_dead_voiced_sound, 3280, 3326, 3326, 3326, 3326,
+GDK_KEY_dead_semivoiced_sound, 3326, 3336, 3336, 3336, 3336,
+GDK_KEY_dead_belowdot, 3336, 3352, 3352, 3368, 3368,
+GDK_KEY_dead_hook, 3368, 3446, 3449, 3505, 3505,
+GDK_KEY_dead_horn, 3505, 3515, 3515, 3515, 3515,
+GDK_KEY_dead_stroke, 3515, 3603, 3615, 3615, 3615,
+GDK_KEY_dead_psili, 3615, 3643, 3643, 3643, 3643,
+GDK_KEY_dead_dasia, 3643, 3675, 3675, 3675, 3675,
+GDK_KEY_dead_belowring, 3675, 3677, 3677, 3677, 3677,
+GDK_KEY_dead_belowtilde, 3677, 3679, 3679, 3679, 3679,
+GDK_KEY_dead_belowdiaeresis, 3679, 3679, 3682, 3682, 3682,
+GDK_KEY_dead_belowcomma, 3682, 3696, 3696, 3696, 3696,
+GDK_KEY_dead_currency, 3696, 3794, 3800, 3800, 3800,
+GDK_KEY_dead_greek, 3800, 3902, 3926, 3926, 3926,
+GDK_KEY_Multi_key, 3926, 3926, 10637, 14345, 16220,
GDK_KEY_Greek_iota, 0x0390,
GDK_KEY_Greek_upsilon, 0x03B0,
GDK_KEY_space, 0x0060,
@@ -127,7 +127,6 @@ GDK_KEY_Greek_iota, 0x1F76,
GDK_KEY_Greek_omicron, 0x1F78,
GDK_KEY_Greek_upsilon, 0x1F7A,
GDK_KEY_Greek_omega, 0x1F7C,
-GDK_KEY_dead_grave, 0x0060,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x1FD2,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x1FE2,
GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0A,
@@ -210,7 +209,7 @@ GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_E, 0x1E14,
GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_O, 0x1E50,
GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_e, 0x1E15,
GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_o, 0x1E51,
-GDK_KEY_space, 0x0027,
+GDK_KEY_space, 0x00B4,
GDK_KEY_V, 0x01D7,
GDK_KEY_v, 0x01D8,
GDK_KEY_nobreakspace, 0x0301,
@@ -241,7 +240,6 @@ GDK_KEY_Greek_iota, 0x03AF,
GDK_KEY_Greek_omicron, 0x03CC,
GDK_KEY_Greek_upsilon, 0x03CD,
GDK_KEY_Greek_omega, 0x03CE,
-GDK_KEY_dead_acute, 0x00B4,
GDK_KEY_dead_diaeresis, GDK_KEY_space, 0x0385,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x0390,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x03B0,
@@ -496,7 +494,6 @@ GDK_KEY_Greek_omega, 0x1FF6,
0x1F61, 0x1F67,
0x1F68, 0x1F6E,
0x1F69, 0x1F6F,
-GDK_KEY_dead_tilde, 0x007E,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x1FD7,
GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x1FE7,
GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0E,
@@ -575,7 +572,6 @@ GDK_KEY_Greek_UPSILON, 0x1FE9,
GDK_KEY_Greek_alpha, 0x1FB1,
GDK_KEY_Greek_iota, 0x1FD1,
GDK_KEY_Greek_upsilon, 0x1FE1,
-GDK_KEY_dead_macron, 0x00AF,
GDK_KEY_dead_greek, GDK_KEY_A, 0x1FB9,
GDK_KEY_dead_greek, GDK_KEY_I, 0x1FD9,
GDK_KEY_dead_greek, GDK_KEY_U, 0x1FE9,
@@ -624,7 +620,6 @@ GDK_KEY_Greek_UPSILON, 0x1FE8,
GDK_KEY_Greek_alpha, 0x1FB0,
GDK_KEY_Greek_iota, 0x1FD0,
GDK_KEY_Greek_upsilon, 0x1FE0,
-GDK_KEY_dead_breve, 0x02D8,
GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_A, 0x1EB6,
GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_a, 0x1EB7,
GDK_KEY_Multi_key, GDK_KEY_comma, GDK_KEY_E, 0x1E1C,
@@ -645,7 +640,6 @@ GDK_KEY_Amacron, 0x01E0,
GDK_KEY_Omacron, 0x0230,
GDK_KEY_amacron, 0x01E1,
GDK_KEY_omacron, 0x0231,
-GDK_KEY_dead_abovedot, 0x02D9,
GDK_KEY_dead_stroke, GDK_KEY_j, 0x025F,
GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_S, 0x1E68,
GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_s, 0x1E69,
@@ -699,7 +693,6 @@ GDK_KEY_Greek_IOTA, 0x03AA,
GDK_KEY_Greek_UPSILON, 0x03AB,
GDK_KEY_Greek_iota, 0x03CA,
GDK_KEY_Greek_upsilon, 0x03CB,
-GDK_KEY_dead_diaeresis, 0x00A8,
GDK_KEY_dead_acute, GDK_KEY_space, 0x0385,
GDK_KEY_dead_acute, GDK_KEY_Greek_iota, 0x0390,
GDK_KEY_dead_acute, GDK_KEY_Greek_upsilon, 0x03B0,
@@ -714,12 +707,10 @@ GDK_KEY_space, 0x00B0,
GDK_KEY_nobreakspace, 0x030A,
GDK_KEY_Aacute, 0x01FA,
GDK_KEY_aacute, 0x01FB,
-GDK_KEY_dead_abovering, 0x00B0,
GDK_KEY_space, 0x02DD,
GDK_KEY_nobreakspace, 0x030B,
GDK_KEY_Cyrillic_u, 0x04F3,
GDK_KEY_Cyrillic_U, 0x04F2,
-GDK_KEY_dead_doubleacute, 0x02DD,
GDK_KEY_space, 0x02C7,
GDK_KEY_parenleft, 0x208D,
GDK_KEY_parenright, 0x208E,
@@ -740,7 +731,6 @@ GDK_KEY_V, 0x01D9,
GDK_KEY_v, 0x01DA,
GDK_KEY_nobreakspace, 0x030C,
0x01F2, 0x01C5,
-GDK_KEY_dead_caron, 0x02C7,
GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_U, 0x01D9,
GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_u, 0x01DA,
GDK_KEY_space, 0x00B8,
@@ -748,14 +738,12 @@ GDK_KEY_nobreakspace, 0x0327,
GDK_KEY_cent, 0x20B5,
GDK_KEY_Cacute, 0x1E08,
GDK_KEY_cacute, 0x1E09,
-GDK_KEY_dead_cedilla, 0x00B8,
GDK_KEY_dead_currency, GDK_KEY_C, 0x20B5,
GDK_KEY_dead_currency, GDK_KEY_c, 0x20B5,
GDK_KEY_space, 0x02DB,
GDK_KEY_nobreakspace, 0x0328,
GDK_KEY_Omacron, 0x01EC,
GDK_KEY_omacron, 0x01ED,
-GDK_KEY_dead_ogonek, 0x02DB,
GDK_KEY_space, 0x037A,
GDK_KEY_Greek_alphaaccent, 0x1FB4,
GDK_KEY_Greek_etaaccent, 0x1FC4,
@@ -766,7 +754,6 @@ GDK_KEY_Greek_OMEGA, 0x1FFC,
GDK_KEY_Greek_alpha, 0x1FB3,
GDK_KEY_Greek_eta, 0x1FC3,
GDK_KEY_Greek_omega, 0x1FF3,
-GDK_KEY_dead_iota, 0x037A,
GDK_KEY_dead_grave, GDK_KEY_Greek_alpha, 0x1FB2,
GDK_KEY_dead_grave, GDK_KEY_Greek_eta, 0x1FC2,
GDK_KEY_dead_grave, GDK_KEY_Greek_omega, 0x1FF2,
@@ -1361,6 +1348,7 @@ GDK_KEY_exclam, GDK_KEY_L, 0x1E36,
GDK_KEY_exclam, GDK_KEY_M, 0x1E42,
GDK_KEY_exclam, GDK_KEY_N, 0x1E46,
GDK_KEY_exclam, GDK_KEY_O, 0x1ECC,
+GDK_KEY_exclam, GDK_KEY_P, 0x00B6,
GDK_KEY_exclam, GDK_KEY_R, 0x1E5A,
GDK_KEY_exclam, GDK_KEY_S, 0x1E62,
GDK_KEY_exclam, GDK_KEY_T, 0x1E6C,
@@ -1381,6 +1369,7 @@ GDK_KEY_exclam, GDK_KEY_l, 0x1E37,
GDK_KEY_exclam, GDK_KEY_m, 0x1E43,
GDK_KEY_exclam, GDK_KEY_n, 0x1E47,
GDK_KEY_exclam, GDK_KEY_o, 0x1ECD,
+GDK_KEY_exclam, GDK_KEY_p, 0x00B6,
GDK_KEY_exclam, GDK_KEY_r, 0x1E5B,
GDK_KEY_exclam, GDK_KEY_s, 0x1E63,
GDK_KEY_exclam, GDK_KEY_t, 0x1E6D,
@@ -1576,6 +1565,12 @@ GDK_KEY_apostrophe, 0x2395, 0x235E,
GDK_KEY_parenleft, GDK_KEY_space, 0x02D8,
GDK_KEY_parenleft, GDK_KEY_parenleft, 0x005B,
GDK_KEY_parenleft, GDK_KEY_minus, 0x007B,
+GDK_KEY_parenleft, GDK_KEY_A, 0x0102,
+GDK_KEY_parenleft, GDK_KEY_G, 0x011E,
+GDK_KEY_parenleft, GDK_KEY_a, 0x0103,
+GDK_KEY_parenleft, GDK_KEY_c, 0x00A9,
+GDK_KEY_parenleft, GDK_KEY_g, 0x011F,
+GDK_KEY_parenleft, GDK_KEY_r, 0x00AE,
GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F09,
GDK_KEY_parenleft, GDK_KEY_Greek_EPSILON, 0x1F19,
GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F29,
@@ -1664,12 +1659,13 @@ GDK_KEY_minus, GDK_KEY_comma, 0x00AC,
GDK_KEY_minus, GDK_KEY_slash, 0x233F,
GDK_KEY_minus, GDK_KEY_colon, 0x00F7,
GDK_KEY_minus, GDK_KEY_greater, 0x2192,
-GDK_KEY_minus, GDK_KEY_A, 0x0100,
+GDK_KEY_minus, GDK_KEY_A, 0x00C3,
GDK_KEY_minus, GDK_KEY_D, 0x0110,
GDK_KEY_minus, GDK_KEY_E, 0x0112,
GDK_KEY_minus, GDK_KEY_I, 0x012A,
GDK_KEY_minus, GDK_KEY_L, 0x00A3,
-GDK_KEY_minus, GDK_KEY_O, 0x014C,
+GDK_KEY_minus, GDK_KEY_N, 0x00D1,
+GDK_KEY_minus, GDK_KEY_O, 0x00D5,
GDK_KEY_minus, GDK_KEY_U, 0x016A,
GDK_KEY_minus, GDK_KEY_Y, 0x00A5,
GDK_KEY_minus, GDK_KEY_backslash, 0x2340,
@@ -1679,6 +1675,7 @@ GDK_KEY_minus, GDK_KEY_d, 0x0111,
GDK_KEY_minus, GDK_KEY_e, 0x0113,
GDK_KEY_minus, GDK_KEY_i, 0x012B,
GDK_KEY_minus, GDK_KEY_l, 0x00A3,
+GDK_KEY_minus, GDK_KEY_n, 0x00F1,
GDK_KEY_minus, GDK_KEY_o, 0x014D,
GDK_KEY_minus, GDK_KEY_u, 0x016B,
GDK_KEY_minus, GDK_KEY_y, 0x00A5,
@@ -1752,6 +1749,7 @@ GDK_KEY_slash, GDK_KEY_I, 0x0197,
GDK_KEY_slash, GDK_KEY_L, 0x0141,
GDK_KEY_slash, GDK_KEY_O, 0x00D8,
GDK_KEY_slash, GDK_KEY_T, 0x0166,
+GDK_KEY_slash, GDK_KEY_U, 0x00B5,
GDK_KEY_slash, GDK_KEY_Z, 0x01B5,
GDK_KEY_slash, GDK_KEY_asciicircum, 0x007C,
GDK_KEY_slash, GDK_KEY_b, 0x0180,
@@ -1780,6 +1778,13 @@ GDK_KEY_slash, 0x2194, 0x21AE,
GDK_KEY_slash, 0x2395, 0x2341,
GDK_KEY_0, GDK_KEY_asterisk, 0x00B0,
GDK_KEY_0, GDK_KEY_3, 0x2189,
+GDK_KEY_0, GDK_KEY_C, 0x00A9,
+GDK_KEY_0, GDK_KEY_S, 0x00A7,
+GDK_KEY_0, GDK_KEY_X, 0x00A4,
+GDK_KEY_0, GDK_KEY_asciicircum, 0x00B0,
+GDK_KEY_0, GDK_KEY_c, 0x00A9,
+GDK_KEY_0, GDK_KEY_s, 0x00A7,
+GDK_KEY_0, GDK_KEY_x, 0x00A4,
GDK_KEY_0, GDK_KEY_asciitilde, 0x236C,
GDK_KEY_1, GDK_KEY_2, 0x00BD,
GDK_KEY_1, GDK_KEY_3, 0x2153,
@@ -1789,14 +1794,20 @@ GDK_KEY_1, GDK_KEY_6, 0x2159,
GDK_KEY_1, GDK_KEY_7, 0x2150,
GDK_KEY_1, GDK_KEY_8, 0x215B,
GDK_KEY_1, GDK_KEY_9, 0x2151,
+GDK_KEY_1, GDK_KEY_S, 0x00B9,
GDK_KEY_1, GDK_KEY_asciicircum, 0x00B9,
+GDK_KEY_1, GDK_KEY_s, 0x00B9,
GDK_KEY_2, GDK_KEY_3, 0x2154,
GDK_KEY_2, GDK_KEY_5, 0x2156,
+GDK_KEY_2, GDK_KEY_S, 0x00B2,
GDK_KEY_2, GDK_KEY_asciicircum, 0x00B2,
+GDK_KEY_2, GDK_KEY_s, 0x00B2,
GDK_KEY_3, GDK_KEY_4, 0x00BE,
GDK_KEY_3, GDK_KEY_5, 0x2157,
GDK_KEY_3, GDK_KEY_8, 0x215C,
+GDK_KEY_3, GDK_KEY_S, 0x00B3,
GDK_KEY_3, GDK_KEY_asciicircum, 0x00B3,
+GDK_KEY_3, GDK_KEY_s, 0x00B3,
GDK_KEY_4, GDK_KEY_5, 0x2158,
GDK_KEY_5, GDK_KEY_6, 0x215A,
GDK_KEY_5, GDK_KEY_8, 0x215D,
@@ -1859,6 +1870,8 @@ GDK_KEY_equal, GDK_KEY_E, 0x20AC,
GDK_KEY_equal, GDK_KEY_L, 0x20A4,
GDK_KEY_equal, GDK_KEY_N, 0x20A6,
GDK_KEY_equal, GDK_KEY_O, 0x0150,
+GDK_KEY_equal, GDK_KEY_P, 0x20BD,
+GDK_KEY_equal, GDK_KEY_R, 0x20B9,
GDK_KEY_equal, GDK_KEY_U, 0x0170,
GDK_KEY_equal, GDK_KEY_W, 0x20A9,
GDK_KEY_equal, GDK_KEY_Y, 0x00A5,
@@ -1866,14 +1879,19 @@ GDK_KEY_equal, GDK_KEY_underscore, 0x2261,
GDK_KEY_equal, GDK_KEY_c, 0x20AC,
GDK_KEY_equal, GDK_KEY_d, 0x20AB,
GDK_KEY_equal, GDK_KEY_e, 0x20AC,
+GDK_KEY_equal, GDK_KEY_l, 0x00A3,
GDK_KEY_equal, GDK_KEY_o, 0x0151,
+GDK_KEY_equal, GDK_KEY_p, 0x20BD,
+GDK_KEY_equal, GDK_KEY_r, 0x20B9,
GDK_KEY_equal, GDK_KEY_u, 0x0171,
GDK_KEY_equal, GDK_KEY_y, 0x00A5,
GDK_KEY_equal, 0x0338, 0x2260,
GDK_KEY_equal, GDK_KEY_Cyrillic_u, 0x04F3,
+GDK_KEY_equal, GDK_KEY_Cyrillic_ze, 0x20BD,
GDK_KEY_equal, GDK_KEY_Cyrillic_IE, 0x20AC,
GDK_KEY_equal, GDK_KEY_Cyrillic_ES, 0x20AC,
GDK_KEY_equal, GDK_KEY_Cyrillic_U, 0x04F2,
+GDK_KEY_equal, GDK_KEY_Cyrillic_ZE, 0x20BD,
GDK_KEY_equal, 0x2395, 0x2338,
GDK_KEY_greater, GDK_KEY_space, 0x005E,
GDK_KEY_greater, GDK_KEY_quotedbl, 0x201D,
@@ -1923,14 +1941,14 @@ GDK_KEY_A, GDK_KEY_apostrophe, 0x00C1,
GDK_KEY_A, GDK_KEY_parenleft, 0x0102,
GDK_KEY_A, GDK_KEY_asterisk, 0x00C5,
GDK_KEY_A, GDK_KEY_comma, 0x0104,
-GDK_KEY_A, GDK_KEY_minus, 0x0100,
+GDK_KEY_A, GDK_KEY_minus, 0x00C3,
GDK_KEY_A, GDK_KEY_semicolon, 0x0104,
GDK_KEY_A, GDK_KEY_greater, 0x00C2,
GDK_KEY_A, GDK_KEY_A, 0x00C5,
GDK_KEY_A, GDK_KEY_E, 0x00C6,
GDK_KEY_A, GDK_KEY_T, 0x0040,
GDK_KEY_A, GDK_KEY_asciicircum, 0x00C2,
-GDK_KEY_A, GDK_KEY_underscore, 0x0100,
+GDK_KEY_A, GDK_KEY_underscore, 0x00AA,
GDK_KEY_A, GDK_KEY_grave, 0x00C0,
GDK_KEY_A, GDK_KEY_asciitilde, 0x00C3,
GDK_KEY_A, GDK_KEY_diaeresis, 0x00C4,
@@ -1940,6 +1958,7 @@ GDK_KEY_C, GDK_KEY_apostrophe, 0x0106,
GDK_KEY_C, GDK_KEY_comma, 0x00C7,
GDK_KEY_C, GDK_KEY_period, 0x010A,
GDK_KEY_C, GDK_KEY_slash, 0x20A1,
+GDK_KEY_C, GDK_KEY_0, 0x00A9,
GDK_KEY_C, GDK_KEY_less, 0x010C,
GDK_KEY_C, GDK_KEY_equal, 0x20AC,
GDK_KEY_C, GDK_KEY_E, 0x20A0,
@@ -1973,7 +1992,9 @@ GDK_KEY_F, GDK_KEY_r, 0x20A3,
GDK_KEY_G, GDK_KEY_parenleft, 0x011E,
GDK_KEY_G, GDK_KEY_comma, 0x0122,
GDK_KEY_G, GDK_KEY_period, 0x0120,
+GDK_KEY_G, GDK_KEY_T, 0x003E,
GDK_KEY_G, GDK_KEY_U, 0x011E,
+GDK_KEY_G, GDK_KEY_u, 0x011E,
GDK_KEY_G, GDK_KEY_breve, 0x011E,
GDK_KEY_H, GDK_KEY_comma, 0x1E28,
GDK_KEY_I, GDK_KEY_quotedbl, 0x00CF,
@@ -1997,11 +2018,13 @@ GDK_KEY_L, GDK_KEY_comma, 0x013B,
GDK_KEY_L, GDK_KEY_minus, 0x00A3,
GDK_KEY_L, GDK_KEY_slash, 0x0141,
GDK_KEY_L, GDK_KEY_less, 0x013D,
-GDK_KEY_L, GDK_KEY_equal, 0x20A4,
+GDK_KEY_L, GDK_KEY_equal, 0x00A3,
+GDK_KEY_L, GDK_KEY_T, 0x003C,
GDK_KEY_L, GDK_KEY_V, 0x007C,
GDK_KEY_M, GDK_KEY_period, 0x1E40,
GDK_KEY_N, GDK_KEY_apostrophe, 0x0143,
GDK_KEY_N, GDK_KEY_comma, 0x0145,
+GDK_KEY_N, GDK_KEY_minus, 0x00D1,
GDK_KEY_N, GDK_KEY_less, 0x0147,
GDK_KEY_N, GDK_KEY_equal, 0x20A6,
GDK_KEY_N, GDK_KEY_G, 0x014A,
@@ -2011,7 +2034,7 @@ GDK_KEY_N, GDK_KEY_asciitilde, 0x00D1,
GDK_KEY_O, GDK_KEY_quotedbl, 0x00D6,
GDK_KEY_O, GDK_KEY_apostrophe, 0x00D3,
GDK_KEY_O, GDK_KEY_comma, 0x01EA,
-GDK_KEY_O, GDK_KEY_minus, 0x014C,
+GDK_KEY_O, GDK_KEY_minus, 0x00D5,
GDK_KEY_O, GDK_KEY_slash, 0x00D8,
GDK_KEY_O, GDK_KEY_semicolon, 0x01EA,
GDK_KEY_O, GDK_KEY_greater, 0x00D4,
@@ -2022,7 +2045,7 @@ GDK_KEY_O, GDK_KEY_R, 0x00AE,
GDK_KEY_O, GDK_KEY_S, 0x00A7,
GDK_KEY_O, GDK_KEY_X, 0x00A4,
GDK_KEY_O, GDK_KEY_asciicircum, 0x00D4,
-GDK_KEY_O, GDK_KEY_underscore, 0x014C,
+GDK_KEY_O, GDK_KEY_underscore, 0x00BA,
GDK_KEY_O, GDK_KEY_grave, 0x00D2,
GDK_KEY_O, GDK_KEY_c, 0x00A9,
GDK_KEY_O, GDK_KEY_r, 0x00AE,
@@ -2032,23 +2055,31 @@ GDK_KEY_O, GDK_KEY_diaeresis, 0x00D6,
GDK_KEY_O, GDK_KEY_acute, 0x00D3,
GDK_KEY_P, GDK_KEY_exclam, 0x00B6,
GDK_KEY_P, GDK_KEY_period, 0x1E56,
+GDK_KEY_P, GDK_KEY_equal, 0x20BD,
GDK_KEY_P, GDK_KEY_P, 0x00B6,
GDK_KEY_P, GDK_KEY_t, 0x20A7,
GDK_KEY_R, GDK_KEY_apostrophe, 0x0154,
GDK_KEY_R, GDK_KEY_comma, 0x0156,
GDK_KEY_R, GDK_KEY_less, 0x0158,
+GDK_KEY_R, GDK_KEY_equal, 0x20B9,
GDK_KEY_R, GDK_KEY_O, 0x00AE,
+GDK_KEY_R, GDK_KEY_o, 0x00AE,
GDK_KEY_R, GDK_KEY_s, 0x20A8,
GDK_KEY_S, GDK_KEY_exclam, 0x00A7,
GDK_KEY_S, GDK_KEY_apostrophe, 0x015A,
GDK_KEY_S, GDK_KEY_comma, 0x015E,
GDK_KEY_S, GDK_KEY_period, 0x1E60,
+GDK_KEY_S, GDK_KEY_0, 0x00A7,
+GDK_KEY_S, GDK_KEY_1, 0x00B9,
+GDK_KEY_S, GDK_KEY_2, 0x00B2,
+GDK_KEY_S, GDK_KEY_3, 0x00B3,
GDK_KEY_S, GDK_KEY_semicolon, 0x0218,
GDK_KEY_S, GDK_KEY_less, 0x0160,
GDK_KEY_S, GDK_KEY_M, 0x2120,
GDK_KEY_S, GDK_KEY_O, 0x00A7,
GDK_KEY_S, GDK_KEY_S, 0x1E9E,
GDK_KEY_S, GDK_KEY_m, 0x2120,
+GDK_KEY_S, GDK_KEY_cedilla, 0x015E,
GDK_KEY_T, GDK_KEY_comma, 0x0162,
GDK_KEY_T, GDK_KEY_minus, 0x0166,
GDK_KEY_T, GDK_KEY_period, 0x1E6A,
@@ -2063,6 +2094,7 @@ GDK_KEY_U, GDK_KEY_apostrophe, 0x00DA,
GDK_KEY_U, GDK_KEY_asterisk, 0x016E,
GDK_KEY_U, GDK_KEY_comma, 0x0172,
GDK_KEY_U, GDK_KEY_minus, 0x016A,
+GDK_KEY_U, GDK_KEY_slash, 0x00B5,
GDK_KEY_U, GDK_KEY_semicolon, 0x0172,
GDK_KEY_U, GDK_KEY_greater, 0x00DB,
GDK_KEY_U, GDK_KEY_A, 0x0102,
@@ -2106,6 +2138,7 @@ GDK_KEY_U, 0x1EA1, 0x1EB7,
GDK_KEY_V, GDK_KEY_L, 0x007C,
GDK_KEY_W, GDK_KEY_equal, 0x20A9,
GDK_KEY_W, GDK_KEY_asciicircum, 0x0174,
+GDK_KEY_X, GDK_KEY_0, 0x00A4,
GDK_KEY_X, GDK_KEY_O, 0x00A4,
GDK_KEY_X, GDK_KEY_o, 0x00A4,
GDK_KEY_Y, GDK_KEY_quotedbl, 0x0178,
@@ -2154,6 +2187,7 @@ GDK_KEY_asciicircum, GDK_KEY_U, 0x00DB,
GDK_KEY_asciicircum, GDK_KEY_W, 0x0174,
GDK_KEY_asciicircum, GDK_KEY_Y, 0x0176,
GDK_KEY_asciicircum, GDK_KEY_Z, 0x1E90,
+GDK_KEY_asciicircum, GDK_KEY_underscore, 0x00AF,
GDK_KEY_asciicircum, GDK_KEY_a, 0x00E2,
GDK_KEY_asciicircum, GDK_KEY_c, 0x0109,
GDK_KEY_asciicircum, GDK_KEY_e, 0x00EA,
@@ -2167,6 +2201,7 @@ GDK_KEY_asciicircum, GDK_KEY_u, 0x00FB,
GDK_KEY_asciicircum, GDK_KEY_w, 0x0175,
GDK_KEY_asciicircum, GDK_KEY_y, 0x0177,
GDK_KEY_asciicircum, GDK_KEY_z, 0x1E91,
+GDK_KEY_asciicircum, GDK_KEY_bar, 0x2191,
GDK_KEY_asciicircum, 0x1EA0, 0x1EAC,
GDK_KEY_asciicircum, 0x1EA1, 0x1EAD,
GDK_KEY_asciicircum, 0x1EB8, 0x1EC6,
@@ -2377,7 +2412,7 @@ GDK_KEY_a, GDK_KEY_minus, 0x0101,
GDK_KEY_a, GDK_KEY_semicolon, 0x0105,
GDK_KEY_a, GDK_KEY_greater, 0x00E2,
GDK_KEY_a, GDK_KEY_asciicircum, 0x00E2,
-GDK_KEY_a, GDK_KEY_underscore, 0x0101,
+GDK_KEY_a, GDK_KEY_underscore, 0x00AA,
GDK_KEY_a, GDK_KEY_grave, 0x00E0,
GDK_KEY_a, GDK_KEY_a, 0x00E5,
GDK_KEY_a, GDK_KEY_e, 0x00E6,
@@ -2421,6 +2456,7 @@ GDK_KEY_c, GDK_KEY_apostrophe, 0x0107,
GDK_KEY_c, GDK_KEY_comma, 0x00E7,
GDK_KEY_c, GDK_KEY_period, 0x010B,
GDK_KEY_c, GDK_KEY_slash, 0x00A2,
+GDK_KEY_c, GDK_KEY_0, 0x00A9,
GDK_KEY_c, GDK_KEY_less, 0x010D,
GDK_KEY_c, GDK_KEY_equal, 0x20AC,
GDK_KEY_c, GDK_KEY_A, 0x01CD,
@@ -2491,6 +2527,8 @@ GDK_KEY_g, GDK_KEY_parenleft, 0x011F,
GDK_KEY_g, GDK_KEY_comma, 0x0123,
GDK_KEY_g, GDK_KEY_period, 0x0121,
GDK_KEY_g, GDK_KEY_U, 0x011F,
+GDK_KEY_g, GDK_KEY_t, 0x003E,
+GDK_KEY_g, GDK_KEY_u, 0x011F,
GDK_KEY_g, GDK_KEY_breve, 0x011F,
GDK_KEY_h, GDK_KEY_comma, 0x1E29,
GDK_KEY_i, GDK_KEY_quotedbl, 0x00EF,
@@ -2514,12 +2552,15 @@ GDK_KEY_l, GDK_KEY_comma, 0x013C,
GDK_KEY_l, GDK_KEY_minus, 0x00A3,
GDK_KEY_l, GDK_KEY_slash, 0x0142,
GDK_KEY_l, GDK_KEY_less, 0x013E,
+GDK_KEY_l, GDK_KEY_equal, 0x00A3,
+GDK_KEY_l, GDK_KEY_t, 0x003C,
GDK_KEY_l, GDK_KEY_v, 0x007C,
GDK_KEY_m, GDK_KEY_period, 0x1E41,
GDK_KEY_m, GDK_KEY_slash, 0x20A5,
GDK_KEY_m, GDK_KEY_u, 0x00B5,
GDK_KEY_n, GDK_KEY_apostrophe, 0x0144,
GDK_KEY_n, GDK_KEY_comma, 0x0146,
+GDK_KEY_n, GDK_KEY_minus, 0x00F1,
GDK_KEY_n, GDK_KEY_less, 0x0148,
GDK_KEY_n, GDK_KEY_g, 0x014B,
GDK_KEY_n, GDK_KEY_asciitilde, 0x00F1,
@@ -2536,7 +2577,7 @@ GDK_KEY_o, GDK_KEY_R, 0x00AE,
GDK_KEY_o, GDK_KEY_U, 0x016E,
GDK_KEY_o, GDK_KEY_X, 0x00A4,
GDK_KEY_o, GDK_KEY_asciicircum, 0x00F4,
-GDK_KEY_o, GDK_KEY_underscore, 0x014D,
+GDK_KEY_o, GDK_KEY_underscore, 0x00BA,
GDK_KEY_o, GDK_KEY_grave, 0x00F2,
GDK_KEY_o, GDK_KEY_a, 0x00E5,
GDK_KEY_o, GDK_KEY_c, 0x00A9,
@@ -2553,13 +2594,19 @@ GDK_KEY_o, GDK_KEY_diaeresis, 0x00F6,
GDK_KEY_o, GDK_KEY_acute, 0x00F3,
GDK_KEY_p, GDK_KEY_exclam, 0x00B6,
GDK_KEY_p, GDK_KEY_period, 0x1E57,
+GDK_KEY_p, GDK_KEY_equal, 0x20BD,
GDK_KEY_r, GDK_KEY_apostrophe, 0x0155,
GDK_KEY_r, GDK_KEY_comma, 0x0157,
GDK_KEY_r, GDK_KEY_less, 0x0159,
+GDK_KEY_r, GDK_KEY_equal, 0x20B9,
GDK_KEY_s, GDK_KEY_exclam, 0x00A7,
GDK_KEY_s, GDK_KEY_apostrophe, 0x015B,
GDK_KEY_s, GDK_KEY_comma, 0x015F,
GDK_KEY_s, GDK_KEY_period, 0x1E61,
+GDK_KEY_s, GDK_KEY_0, 0x00A7,
+GDK_KEY_s, GDK_KEY_1, 0x00B9,
+GDK_KEY_s, GDK_KEY_2, 0x00B2,
+GDK_KEY_s, GDK_KEY_3, 0x00B3,
GDK_KEY_s, GDK_KEY_semicolon, 0x0219,
GDK_KEY_s, GDK_KEY_less, 0x0161,
GDK_KEY_s, GDK_KEY_M, 0x2120,
@@ -2585,20 +2632,59 @@ GDK_KEY_u, GDK_KEY_slash, 0x00B5,
GDK_KEY_u, GDK_KEY_semicolon, 0x0173,
GDK_KEY_u, GDK_KEY_greater, 0x00FB,
GDK_KEY_u, GDK_KEY_A, 0x0102,
+GDK_KEY_u, GDK_KEY_E, 0x0114,
+GDK_KEY_u, GDK_KEY_G, 0x011E,
+GDK_KEY_u, GDK_KEY_I, 0x012C,
+GDK_KEY_u, GDK_KEY_O, 0x014E,
GDK_KEY_u, GDK_KEY_U, 0x016C,
GDK_KEY_u, GDK_KEY_asciicircum, 0x00FB,
GDK_KEY_u, GDK_KEY_underscore, 0x016B,
GDK_KEY_u, GDK_KEY_grave, 0x00F9,
GDK_KEY_u, GDK_KEY_a, 0x0103,
+GDK_KEY_u, GDK_KEY_e, 0x0115,
+GDK_KEY_u, GDK_KEY_g, 0x011F,
+GDK_KEY_u, GDK_KEY_i, 0x012D,
+GDK_KEY_u, GDK_KEY_o, 0x014F,
GDK_KEY_u, GDK_KEY_u, 0x016D,
GDK_KEY_u, GDK_KEY_asciitilde, 0x0169,
GDK_KEY_u, GDK_KEY_diaeresis, 0x00FC,
GDK_KEY_u, GDK_KEY_acute, 0x00FA,
GDK_KEY_v, GDK_KEY_slash, 0x221A,
+GDK_KEY_v, GDK_KEY_A, 0x01CD,
+GDK_KEY_v, GDK_KEY_C, 0x010C,
+GDK_KEY_v, GDK_KEY_D, 0x010E,
+GDK_KEY_v, GDK_KEY_E, 0x011A,
+GDK_KEY_v, GDK_KEY_G, 0x01E6,
+GDK_KEY_v, GDK_KEY_H, 0x021E,
+GDK_KEY_v, GDK_KEY_I, 0x01CF,
+GDK_KEY_v, GDK_KEY_K, 0x01E8,
+GDK_KEY_v, GDK_KEY_N, 0x0147,
+GDK_KEY_v, GDK_KEY_O, 0x01D1,
+GDK_KEY_v, GDK_KEY_R, 0x0158,
+GDK_KEY_v, GDK_KEY_S, 0x0160,
+GDK_KEY_v, GDK_KEY_T, 0x0164,
+GDK_KEY_v, GDK_KEY_U, 0x01D3,
GDK_KEY_v, GDK_KEY_Z, 0x017D,
+GDK_KEY_v, GDK_KEY_a, 0x01CE,
+GDK_KEY_v, GDK_KEY_c, 0x010D,
+GDK_KEY_v, GDK_KEY_d, 0x010F,
+GDK_KEY_v, GDK_KEY_e, 0x011B,
+GDK_KEY_v, GDK_KEY_g, 0x01E7,
+GDK_KEY_v, GDK_KEY_h, 0x021F,
+GDK_KEY_v, GDK_KEY_i, 0x01D0,
+GDK_KEY_v, GDK_KEY_j, 0x01F0,
+GDK_KEY_v, GDK_KEY_k, 0x01E9,
GDK_KEY_v, GDK_KEY_l, 0x007C,
+GDK_KEY_v, GDK_KEY_n, 0x0148,
+GDK_KEY_v, GDK_KEY_o, 0x01D2,
+GDK_KEY_v, GDK_KEY_r, 0x0159,
+GDK_KEY_v, GDK_KEY_s, 0x0161,
+GDK_KEY_v, GDK_KEY_t, 0x0165,
+GDK_KEY_v, GDK_KEY_u, 0x01D4,
GDK_KEY_v, GDK_KEY_z, 0x017E,
+GDK_KEY_v, GDK_KEY_bar, 0x2193,
GDK_KEY_w, GDK_KEY_asciicircum, 0x0175,
+GDK_KEY_x, GDK_KEY_0, 0x00A4,
GDK_KEY_x, GDK_KEY_O, 0x00A4,
GDK_KEY_x, GDK_KEY_o, 0x00A4,
GDK_KEY_x, GDK_KEY_x, 0x00D7,
@@ -2614,7 +2700,9 @@ GDK_KEY_z, GDK_KEY_period, 0x017C,
GDK_KEY_z, GDK_KEY_less, 0x017E,
GDK_KEY_braceleft, GDK_KEY_braceright, 0x2205,
GDK_KEY_bar, GDK_KEY_C, 0x00A2,
+GDK_KEY_bar, GDK_KEY_asciicircum, 0x2191,
GDK_KEY_bar, GDK_KEY_c, 0x00A2,
+GDK_KEY_bar, GDK_KEY_v, 0x2193,
GDK_KEY_bar, GDK_KEY_asciitilde, 0x236D,
GDK_KEY_bar, 0x2190, 0x2345,
GDK_KEY_bar, 0x2192, 0x2346,
@@ -2642,6 +2730,7 @@ GDK_KEY_asciitilde, GDK_KEY_u, 0x0169,
GDK_KEY_asciitilde, GDK_KEY_v, 0x1E7D,
GDK_KEY_asciitilde, GDK_KEY_y, 0x1EF9,
GDK_KEY_asciitilde, GDK_KEY_bar, 0x236D,
+GDK_KEY_asciitilde, GDK_KEY_asciitilde, 0x2248,
GDK_KEY_asciitilde, GDK_KEY_diaeresis, 0x2368,
GDK_KEY_asciitilde, GDK_KEY_Acircumflex, 0x1EAA,
GDK_KEY_asciitilde, GDK_KEY_Ecircumflex, 0x1EC4,
@@ -2927,10 +3016,12 @@ GDK_KEY_breve, GDK_KEY_g, 0x011F,
0x0654, 0x06D5, 0x06C0,
0x0655, GDK_KEY_Arabic_alef, 0x0625,
GDK_KEY_Cyrillic_pe, GDK_KEY_Cyrillic_a, 0x00A7,
+GDK_KEY_Cyrillic_ze, GDK_KEY_equal, 0x20BD,
GDK_KEY_Cyrillic_IE, GDK_KEY_equal, 0x20AC,
GDK_KEY_Cyrillic_EN, GDK_KEY_Cyrillic_o, 0x2116,
GDK_KEY_Cyrillic_EN, GDK_KEY_Cyrillic_O, 0x2116,
GDK_KEY_Cyrillic_ES, GDK_KEY_equal, 0x20AC,
+GDK_KEY_Cyrillic_ZE, GDK_KEY_equal, 0x20BD,
GDK_KEY_Greek_ALPHA, GDK_KEY_apostrophe, 0x0386,
GDK_KEY_Greek_EPSILON, GDK_KEY_apostrophe, 0x0388,
GDK_KEY_Greek_ETA, GDK_KEY_apostrophe, 0x0389,
@@ -2944,6 +3035,7 @@ GDK_KEY_Greek_alpha, GDK_KEY_apostrophe, 0x03AC,
GDK_KEY_Greek_epsilon, GDK_KEY_apostrophe, 0x03AD,
GDK_KEY_Greek_eta, GDK_KEY_apostrophe, 0x03AE,
GDK_KEY_Greek_iota, GDK_KEY_quotedbl, 0x03CA,
+GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x03AF,
GDK_KEY_Greek_iota, GDK_KEY_Greek_alphaaccent, 0x1FB4,
GDK_KEY_Greek_iota, GDK_KEY_Greek_etaaccent, 0x1FC4,
GDK_KEY_Greek_iota, GDK_KEY_Greek_omegaaccent, 0x1FF4,
@@ -3477,6 +3569,9 @@ GDK_KEY_exclam, GDK_KEY_dead_horn, GDK_KEY_O, 0x1EE2,
GDK_KEY_exclam, GDK_KEY_dead_horn, GDK_KEY_U, 0x1EF0,
GDK_KEY_exclam, GDK_KEY_dead_horn, GDK_KEY_o, 0x1EE3,
GDK_KEY_exclam, GDK_KEY_dead_horn, GDK_KEY_u, 0x1EF1,
+GDK_KEY_quotedbl, GDK_KEY_apostrophe, GDK_KEY_space, 0x0385,
+GDK_KEY_quotedbl, GDK_KEY_apostrophe, GDK_KEY_Greek_iota, 0x0390,
+GDK_KEY_quotedbl, GDK_KEY_apostrophe, GDK_KEY_Greek_upsilon, 0x03B0,
GDK_KEY_quotedbl, GDK_KEY_underscore, GDK_KEY_U, 0x1E7A,
GDK_KEY_quotedbl, GDK_KEY_underscore, GDK_KEY_u, 0x1E7B,
GDK_KEY_quotedbl, GDK_KEY_asciitilde, GDK_KEY_O, 0x1E4E,