From f98abe4400eccf6478b6569d67564e5b8cfc60b1 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 1 Apr 2021 15:15:47 -0400 Subject: [PATCH 1/2] Revert Compose sequence changes This was breaking muscle memory of people with the us intl keyboard layout, for important keys such as '. The unfortunate side-effect is that our handling of is a bit hampered by sequences that don't fit the pattern. But such is life. Fixes: #3807 --- gtk/compose/gtk-compose-lookaside.txt | 4 -- gtk/compose/gtk-compose-remove.txt | 14 ----- gtk/gtkimcontextsimpleseqs.h | 73 ++++++++++++++++----------- 3 files changed, 43 insertions(+), 48 deletions(-) delete mode 100644 gtk/compose/gtk-compose-remove.txt diff --git a/gtk/compose/gtk-compose-lookaside.txt b/gtk/compose/gtk-compose-lookaside.txt index c846cc8121..3f3b23c69c 100644 --- a/gtk/compose/gtk-compose-lookaside.txt +++ b/gtk/compose/gtk-compose-lookaside.txt @@ -403,7 +403,3 @@ : "ό" U03CC : "ύ" U03CD : "ώ" U03CE - -# This sequence matches our handling of dead keys better. -# We remove the xorg sequence that maps this to ' - : "´" acute # ACUTE ACCENT diff --git a/gtk/compose/gtk-compose-remove.txt b/gtk/compose/gtk-compose-remove.txt deleted file mode 100644 index 620df9e9ce..0000000000 --- a/gtk/compose/gtk-compose-remove.txt +++ /dev/null @@ -1,14 +0,0 @@ - : "~" asciitilde # TILDE - : "'" apostrophe # APOSTROPHE - : "´" acute # ACUTE ACCENT - : "`" grave # GRAVE ACCENT - : "°" degree # DEGREE SIGN - : "¯" macron # MACRON - : "˘" breve # BREVE - : "˙" abovedot # DOT ABOVE - : "¨" diaeresis # DIAERESIS - : "˝" U2dd # DOUBLE ACUTE ACCENT - : "ˇ" caron # CARON - : "¸" cedilla # CEDILLA - : "˛" ogonek # OGONEK - : "ͺ" U37a # GREEK YPOGEGRAMMENI diff --git a/gtk/gtkimcontextsimpleseqs.h b/gtk/gtkimcontextsimpleseqs.h index 901d1c4af6..99a2dd4289 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, 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_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, 10663, 14371, 16246, GDK_KEY_Greek_iota, 0x0390, GDK_KEY_Greek_upsilon, 0x03B0, GDK_KEY_space, 0x0060, @@ -127,6 +127,7 @@ 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, @@ -209,7 +210,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, 0x00B4, +GDK_KEY_space, 0x0027, GDK_KEY_V, 0x01D7, GDK_KEY_v, 0x01D8, GDK_KEY_nobreakspace, 0x0301, @@ -240,6 +241,7 @@ 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, @@ -494,6 +496,7 @@ 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, @@ -572,6 +575,7 @@ 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, @@ -620,6 +624,7 @@ 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, @@ -640,6 +645,7 @@ 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, @@ -693,6 +699,7 @@ 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, @@ -707,10 +714,12 @@ 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, @@ -731,6 +740,7 @@ 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, @@ -738,12 +748,14 @@ 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, @@ -754,6 +766,7 @@ 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, -- GitLab From 7f4522a3f1502fe9f439fb6c0b985de38be88145 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 1 Apr 2021 15:18:20 -0400 Subject: [PATCH 2/2] Add more compose tests Test the sequences whose demise made people unhappy. --- testsuite/gtk/composetable.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/testsuite/gtk/composetable.c b/testsuite/gtk/composetable.c index da28cda6d1..6f5f67c5a8 100644 --- a/testsuite/gtk/composetable.c +++ b/testsuite/gtk/composetable.c @@ -212,6 +212,7 @@ compose_table_match_compact (void) gunichar ch; buffer[0] = GDK_KEY_Multi_key; + buffer[1] = 0; ret = gtk_compose_table_compact_check (&table, buffer, 1, &finish, &match, &ch); g_assert_true (ret); @@ -222,6 +223,7 @@ compose_table_match_compact (void) buffer[0] = GDK_KEY_a; buffer[1] = GDK_KEY_b; buffer[2] = GDK_KEY_c; + buffer[3] = 0; ret = gtk_compose_table_compact_check (&table, buffer, 3, &finish, &match, &ch); g_assert_false (ret); @@ -233,12 +235,33 @@ compose_table_match_compact (void) buffer[1] = GDK_KEY_parenleft; buffer[2] = GDK_KEY_j; buffer[3] = GDK_KEY_parenright; + buffer[4] = 0; ret = gtk_compose_table_compact_check (&table, buffer, 4, &finish, &match, &ch); g_assert_true (ret); g_assert_true (finish); g_assert_true (match); g_assert_true (ch == 0x24d9); /* CIRCLED LATIN SMALL LETTER J */ + + buffer[0] = GDK_KEY_dead_acute; + buffer[1] = GDK_KEY_space; + buffer[2] = 0; + + ret = gtk_compose_table_compact_check (&table, buffer, 2, &finish, &match, &ch); + g_assert_true (ret); + g_assert_true (finish); + g_assert_true (match); + g_assert_true (ch == 0x27); + + buffer[0] = GDK_KEY_dead_acute; + buffer[1] = GDK_KEY_dead_acute; + buffer[2] = 0; + + ret = gtk_compose_table_compact_check (&table, buffer, 2, &finish, &match, &ch); + g_assert_true (ret); + g_assert_true (finish); + g_assert_true (match); + g_assert_true (ch == 0xb4); } static void -- GitLab