From 8ea51a2760958cc19954878b8c38b9e5e068a5d1 Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Wed, 17 Sep 2014 15:08:54 +0900
Subject: [PATCH] Fix Turkish/Azerbaijani keyboard to add more accented letters

Bug: 16807005
Change-Id: Ifd0ab3aeb8207cdecacf8cfe5b1d58c07690142f
---
 .../keyboard/internal/KeyboardTextsTable.java | 926 +++++++++---------
 .../layout/tests/TestsAzerbaijaniAZ.java      |  54 +-
 .../keyboard/layout/tests/TestsTurkish.java   |  48 +-
 .../layout/tests/TurkicCustomizer.java        |  85 ++
 .../donottranslate-more-keys.xml              |  18 +-
 .../values-tr/donottranslate-more-keys.xml    |  16 +-
 6 files changed, 588 insertions(+), 559 deletions(-)
 create mode 100644 tests/src/com/android/inputmethod/keyboard/layout/tests/TurkicCustomizer.java

diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index aae134ec65..3c33320ead 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -85,19 +85,19 @@ public final class KeyboardTextsTable {
     //  /* index:histogram */ "name",
         /*   0:32 */ "morekeys_a",
         /*   1:32 */ "morekeys_o",
-        /*   2:30 */ "morekeys_u",
-        /*   3:30 */ "keylabel_to_alpha",
-        /*   4:29 */ "morekeys_e",
+        /*   2:30 */ "morekeys_e",
+        /*   3:30 */ "morekeys_u",
+        /*   4:30 */ "keylabel_to_alpha",
         /*   5:28 */ "morekeys_i",
-        /*   6:23 */ "morekeys_c",
-        /*   7:23 */ "double_quotes",
-        /*   8:22 */ "morekeys_n",
+        /*   6:24 */ "morekeys_n",
+        /*   7:23 */ "morekeys_c",
+        /*   8:23 */ "double_quotes",
         /*   9:22 */ "single_quotes",
         /*  10:20 */ "morekeys_s",
         /*  11:18 */ "keyspec_currency",
-        /*  12:14 */ "morekeys_y",
-        /*  13:13 */ "morekeys_d",
-        /*  14:12 */ "morekeys_z",
+        /*  12:16 */ "morekeys_y",
+        /*  13:14 */ "morekeys_z",
+        /*  14:13 */ "morekeys_d",
         /*  15:10 */ "morekeys_t",
         /*  16:10 */ "morekeys_l",
         /*  17: 9 */ "morekeys_g",
@@ -258,15 +258,14 @@ public final class KeyboardTextsTable {
     /* Default texts */
     private static final String[] TEXTS_DEFAULT = {
         /* morekeys_a ~ */
-        EMPTY, EMPTY, EMPTY,
+        EMPTY, EMPTY, EMPTY, EMPTY,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         /* keylabel_to_alpha */ "ABC",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         EMPTY, EMPTY, EMPTY,
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_lqm_rqm",
-        /* morekeys_n */ EMPTY,
         /* single_quotes */ "!text/single_lqm_rqm",
         /* morekeys_s */ EMPTY,
         /* keyspec_currency */ "$",
@@ -488,13 +487,6 @@ public final class KeyboardTextsTable {
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F3,\u00F4,\u00F6,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -503,6 +495,13 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -511,13 +510,11 @@ public final class KeyboardTextsTable {
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
         /* morekeys_i */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133",
-        /* morekeys_c */ null,
-        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes ~ */
-        null, null, null,
+        /* morekeys_c ~ */
+        null, null, null, null, null,
         /* ~ keyspec_currency */
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
@@ -527,7 +524,7 @@ public final class KeyboardTextsTable {
     /* Locale ar: Arabic */
     private static final String[] TEXTS_ar = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0623: "Ø£" ARABIC LETTER ALEF WITH HAMZA ABOVE
@@ -535,9 +532,9 @@ public final class KeyboardTextsTable {
         // U+0628: "ب" ARABIC LETTER BEH
         // U+062C: "ج" ARABIC LETTER JEEM
         /* keylabel_to_alpha */ "\u0623\u200C\u0628\u200C\u062C",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_cyrillic_soft_sign */
         // U+0661: "Ù¡" ARABIC-INDIC DIGIT ONE
         /* keyspec_symbols_1 */ "\u0661",
@@ -659,7 +656,9 @@ public final class KeyboardTextsTable {
     /* Locale az_AZ: Azerbaijani (Azerbaijan) */
     private static final String[] TEXTS_az_AZ = {
         // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-        /* morekeys_a */ "\u00E2",
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+        /* morekeys_a */ "\u00E2,\u00E4,\u00E1",
         // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
         // U+0153: "Å“" LATIN SMALL LIGATURE OE
@@ -669,6 +668,9 @@ public final class KeyboardTextsTable {
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D",
+        // U+0259: "É™" LATIN SMALL LETTER SCHWA
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        /* morekeys_e */ "\u0259,\u00E9",
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
         // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
@@ -676,8 +678,6 @@ public final class KeyboardTextsTable {
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
         /* keylabel_to_alpha */ null,
-        // U+0259: "É™" LATIN SMALL LETTER SCHWA
-        /* morekeys_e */ "\u0259",
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -686,20 +686,27 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* morekeys_n */ "\u0148,\u00F1",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u00E7,\u0107,\u010D",
-        /* double_quotes ~ */
-        null, null, null,
-        /* ~ single_quotes */
+        /* double_quotes */ null,
+        /* single_quotes */ null,
         // U+015F: "ÅŸ" LATIN SMALL LETTER S WITH CEDILLA
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u015F,\u00DF,\u015B,\u0161",
-        /* keyspec_currency ~ */
-        null, null, null, null, null, null,
+        /* keyspec_currency */ null,
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        /* morekeys_y */ "\u00FD",
+        // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+        /* morekeys_z */ "\u017E",
+        /* morekeys_d ~ */
+        null, null, null,
         /* ~ morekeys_l */
         // U+011F: "ÄŸ" LATIN SMALL LETTER G WITH BREVE
         /* morekeys_g */ "\u011F",
@@ -708,18 +715,17 @@ public final class KeyboardTextsTable {
     /* Locale be_BY: Belarusian (Belarus) */
     private static final String[] TEXTS_be_BY = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "Ð’" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null,
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s ~ */
         null, null, null, null, null, null, null, null, null, null, null, null,
@@ -744,14 +750,14 @@ public final class KeyboardTextsTable {
     /* Locale bg: Bulgarian */
     private static final String[] TEXTS_bg = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "Ð’" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null,
         /* ~ morekeys_c */
         // single_quotes of Bulgarian is default single_quotes_right_left.
@@ -761,15 +767,15 @@ public final class KeyboardTextsTable {
     /* Locale bn_IN: Bengali (India) */
     private static final String[] TEXTS_bn_IN = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0995: "क" BENGALI LETTER KA
         // U+0996: "ख" BENGALI LETTER KHA
         // U+0997: "ग" BENGALI LETTER GA
         /* keylabel_to_alpha */ "\u0995\u0996\u0997",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keyspec_currency */ "\u20B9",
@@ -798,13 +804,6 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00BA: "º" MASCULINE ORDINAL INDICATOR
         /* morekeys_o */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
@@ -813,6 +812,13 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E8,\u00E9,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -820,16 +826,15 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u00E7,\u0107,\u010D",
-        /* double_quotes */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes ~ */
-        null, null, null, null, null, null, null,
+        /* double_quotes ~ */
+        null, null, null, null, null, null, null, null,
         /* ~ morekeys_t */
         // U+00B7: "·" MIDDLE DOT
         // U+0142: "Å‚" LATIN SMALL LETTER L WITH STROKE
@@ -871,14 +876,6 @@ public final class KeyboardTextsTable {
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
@@ -888,6 +885,14 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -895,15 +900,15 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
+        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u0148,\u00F1,\u0144",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* morekeys_c */ "\u010D,\u00E7,\u0107",
         /* double_quotes */ "!text/double_9qm_lqm",
-        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        /* morekeys_n */ "\u0148,\u00F1,\u0144",
         /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -913,12 +918,12 @@ public final class KeyboardTextsTable {
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* morekeys_d */ "\u010F",
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         /* morekeys_z */ "\u017E,\u017A,\u017C",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u010F",
         // U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON
         /* morekeys_t */ "\u0165",
         /* morekeys_l */ null,
@@ -945,6 +950,9 @@ public final class KeyboardTextsTable {
         // U+0153: "Å“" LATIN SMALL LIGATURE OE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F3,\u00F4,\u00F2,\u00F5,\u0153,\u014D",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        /* morekeys_e */ "\u00E9,\u00EB",
         // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
@@ -952,17 +960,14 @@ public final class KeyboardTextsTable {
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
         /* keylabel_to_alpha */ null,
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        /* morekeys_e */ "\u00E9,\u00EB",
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         /* morekeys_i */ "\u00ED,\u00EF",
-        /* morekeys_c */ null,
-        /* double_quotes */ "!text/double_9qm_lqm",
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
         /* single_quotes */ "!text/single_9qm_lqm",
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
@@ -972,9 +977,9 @@ public final class KeyboardTextsTable {
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
+        /* morekeys_z */ null,
         // U+00F0: "ð" LATIN SMALL LETTER ETH
         /* morekeys_d */ "\u00F0",
-        /* morekeys_z */ null,
         /* morekeys_t */ null,
         // U+0142: "Å‚" LATIN SMALL LETTER L WITH STROKE
         /* morekeys_l */ "\u0142",
@@ -1020,6 +1025,12 @@ public final class KeyboardTextsTable {
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F6,%,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u00F8,\u014D",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117",
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
         // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
@@ -1027,18 +1038,12 @@ public final class KeyboardTextsTable {
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         /* morekeys_u */ "\u00FC,%,\u00FB,\u00F9,\u00FA,\u016B",
         /* keylabel_to_alpha */ null,
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
-        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117",
         /* morekeys_i */ null,
-        /* morekeys_c */ null,
-        /* double_quotes */ "!text/double_9qm_lqm",
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
         /* single_quotes */ "!text/single_9qm_lqm",
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
@@ -1071,7 +1076,7 @@ public final class KeyboardTextsTable {
     /* Locale el: Greek */
     private static final String[] TEXTS_el = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0391: "Α" GREEK CAPITAL LETTER ALPHA
@@ -1100,6 +1105,12 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
         /* morekeys_o */ "\u00F3,\u00F4,\u00F6,\u00F2,\u0153,\u00F8,\u014D,\u00F5",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0113",
         // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
@@ -1107,23 +1118,17 @@ public final class KeyboardTextsTable {
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
         /* keylabel_to_alpha */ null,
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
-        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0113",
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* morekeys_n */ "\u00F1",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* morekeys_c */ "\u00E7",
         /* double_quotes */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* morekeys_n */ "\u00F1",
         /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* morekeys_s */ "\u00DF",
@@ -1154,6 +1159,15 @@ public final class KeyboardTextsTable {
         // U+0151: "Å‘" LATIN SMALL LETTER O WITH DOUBLE ACUTE
         // U+00BA: "º" MASCULINE ORDINAL INDICATOR
         /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D,\u0151,\u00BA",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
+        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
+        /* morekeys_e */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
         // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
@@ -1166,15 +1180,6 @@ public final class KeyboardTextsTable {
         // U+00B5: "µ" MICRO SIGN
         /* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B,\u0169,\u0171,\u0173,\u00B5",
         /* keylabel_to_alpha */ null,
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
-        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
-        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
-        /* morekeys_e */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -1185,12 +1190,6 @@ public final class KeyboardTextsTable {
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
         /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133",
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+010B: "Ä‹" LATIN SMALL LETTER C WITH DOT ABOVE
-        /* morekeys_c */ "\u0107,\u010D,\u00E7,\u010B",
-        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
         // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
@@ -1198,6 +1197,12 @@ public final class KeyboardTextsTable {
         // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
         // U+014B: "Å‹" LATIN SMALL LETTER ENG
         /* morekeys_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+010B: "Ä‹" LATIN SMALL LETTER C WITH DOT ABOVE
+        /* morekeys_c */ "\u0107,\u010D,\u00E7,\u010B",
+        /* double_quotes */ null,
         /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
@@ -1211,14 +1216,14 @@ public final class KeyboardTextsTable {
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         // U+00FE: "þ" LATIN SMALL LETTER THORN
         /* morekeys_y */ "y,\u00FD,\u0177,\u00FF,\u00FE",
-        // U+00F0: "ð" LATIN SMALL LETTER ETH
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        // U+0111: "Ä‘" LATIN SMALL LETTER D WITH STROKE
-        /* morekeys_d */ "\u00F0,\u010F,\u0111",
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         /* morekeys_z */ "\u017A,\u017C,\u017E",
+        // U+00F0: "ð" LATIN SMALL LETTER ETH
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        // U+0111: "Ä‘" LATIN SMALL LETTER D WITH STROKE
+        /* morekeys_d */ "\u00F0,\u010F,\u0111",
         // U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON
         // U+021B: "È›" LATIN SMALL LETTER T WITH COMMA BELOW
         // U+0163: "Å£" LATIN SMALL LETTER T WITH CEDILLA
@@ -1300,13 +1305,6 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00BA: "º" MASCULINE ORDINAL INDICATOR
         /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
@@ -1315,6 +1313,13 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -1322,18 +1327,18 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u00E7,\u0107,\u010D",
-        /* double_quotes */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes ~ */
+        /* double_quotes ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null,
         /* ~ morekeys_nordic_row2_11 */
         // U+00A1: "¡" INVERTED EXCLAMATION MARK
         // U+00BF: "¿" INVERTED QUESTION MARK
@@ -1361,6 +1366,15 @@ public final class KeyboardTextsTable {
         // U+0151: "Å‘" LATIN SMALL LETTER O WITH DOUBLE ACUTE
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         /* morekeys_o */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8",
+        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
+        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
+        /* morekeys_e */ "\u0113,\u00E8,\u0117,\u00E9,\u00EA,\u00EB,\u0119,\u011B",
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
@@ -1371,15 +1385,6 @@ public final class KeyboardTextsTable {
         // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
         /* morekeys_u */ "\u00FC,\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u016F,\u0171",
         /* keylabel_to_alpha */ null,
-        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
-        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
-        /* morekeys_e */ "\u0113,\u00E8,\u0117,\u00E9,\u00EA,\u00EB,\u0119,\u011B",
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
@@ -1388,15 +1393,15 @@ public final class KeyboardTextsTable {
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         /* morekeys_i */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131",
+        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u0146,\u00F1,\u0144",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* morekeys_c */ "\u010D,\u00E7,\u0107",
         /* double_quotes */ "!text/double_9qm_lqm",
-        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        /* morekeys_n */ "\u0146,\u00F1,\u0144",
         /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -1407,12 +1412,12 @@ public final class KeyboardTextsTable {
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* morekeys_d */ "\u010F",
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         /* morekeys_z */ "\u017E,\u017C,\u017A",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u010F",
         // U+0163: "Å£" LATIN SMALL LETTER T WITH CEDILLA
         // U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON
         /* morekeys_t */ "\u0163,\u0165",
@@ -1466,13 +1471,6 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00BA: "º" MASCULINE ORDINAL INDICATOR
         /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
@@ -1481,6 +1479,13 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -1488,20 +1493,19 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u00E7,\u0107,\u010D",
-        /* double_quotes */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        /* morekeys_n */ "\u00F1,\u0144",
     };
 
     /* Locale fa: Persian */
     private static final String[] TEXTS_fa = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0627: "ا" ARABIC LETTER ALEF
@@ -1509,8 +1513,8 @@ public final class KeyboardTextsTable {
         // U+0628: "ب" ARABIC LETTER BEH
         // U+067E: "Ù¾" ARABIC LETTER PEH
         /* keylabel_to_alpha */ "\u0627\u200C\u0628\u200C\u067E",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+FDFC: "ï·¼" RIAL SIGN
         /* keyspec_currency */ "\uFDFC",
@@ -1659,24 +1663,24 @@ public final class KeyboardTextsTable {
         // U+0153: "Å“" LATIN SMALL LIGATURE OE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F8,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D",
+        /* morekeys_e */ null,
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         /* morekeys_u */ "\u00FC",
         /* keylabel_to_alpha ~ */
-        null, null, null, null, null, null, null,
+        null, null, null, null, null, null,
         /* ~ single_quotes */
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
         /* morekeys_s */ "\u0161,\u00DF,\u015B",
-        /* keyspec_currency ~ */
-        null, null, null,
-        /* ~ morekeys_d */
+        /* keyspec_currency */ null,
+        /* morekeys_y */ null,
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         /* morekeys_z */ "\u017E,\u017A,\u017C",
-        /* morekeys_t ~ */
-        null, null, null, null, null, null, null, null,
+        /* morekeys_d ~ */
+        null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_cyrillic_ie */
         // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
         /* keyspec_nordic_row1_11 */ "\u00E5",
@@ -1716,13 +1720,6 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00BA: "º" MASCULINE ORDINAL INDICATOR
         /* morekeys_o */ "\u00F4,\u0153,%,\u00F6,\u00F2,\u00F3,\u00F5,\u00F8,\u014D,\u00BA",
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -1731,6 +1728,13 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,%,\u0119,\u0117,\u0113",
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -1738,16 +1742,17 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+        /* morekeys_n */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u00E7,%,\u0107,\u010D",
         /* double_quotes ~ */
-        null, null, null, null, null,
+        null, null, null, null,
         /* ~ keyspec_currency */
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "%,\u00FF",
-        /* morekeys_d ~ */
+        /* morekeys_z ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -1789,13 +1794,6 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00BA: "º" MASCULINE ORDINAL INDICATOR
         /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
@@ -1804,6 +1802,13 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -1811,28 +1816,27 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u00E7,\u0107,\u010D",
-        /* double_quotes */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        /* morekeys_n */ "\u00F1,\u0144",
     };
 
     /* Locale hi: Hindi */
     private static final String[] TEXTS_hi = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0915: "क" DEVANAGARI LETTER KA
         // U+0916: "ख" DEVANAGARI LETTER KHA
         // U+0917: "ग" DEVANAGARI LETTER GA
         /* keylabel_to_alpha */ "\u0915\u0916\u0917",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keyspec_currency */ "\u20B9",
@@ -1888,14 +1892,14 @@ public final class KeyboardTextsTable {
         /* morekeys_a ~ */
         null, null, null, null, null, null,
         /* ~ morekeys_i */
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* morekeys_c */ "\u010D,\u0107,\u00E7",
         /* double_quotes */ "!text/double_9qm_rqm",
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        /* morekeys_n */ "\u00F1,\u0144",
         /* single_quotes */ "!text/single_9qm_rqm",
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
@@ -1903,12 +1907,12 @@ public final class KeyboardTextsTable {
         /* morekeys_s */ "\u0161,\u015B,\u00DF",
         /* keyspec_currency */ null,
         /* morekeys_y */ null,
-        // U+0111: "Ä‘" LATIN SMALL LETTER D WITH STROKE
-        /* morekeys_d */ "\u0111",
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         /* morekeys_z */ "\u017E,\u017A,\u017C",
+        // U+0111: "Ä‘" LATIN SMALL LETTER D WITH STROKE
+        /* morekeys_d */ "\u0111",
         /* morekeys_t ~ */
         null, null, null,
         /* ~ morekeys_g */
@@ -1937,14 +1941,6 @@ public final class KeyboardTextsTable {
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F3,\u00F6,\u0151,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u00FC,\u0171,\u00FB,\u00F9,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -1953,6 +1949,14 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u0171,\u00FB,\u00F9,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -1960,9 +1964,9 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
+        /* morekeys_n */ null,
         /* morekeys_c */ null,
         /* double_quotes */ "!text/double_9qm_rqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_rqm",
         /* morekeys_s ~ */
         null, null, null, null, null, null, null, null,
@@ -1974,18 +1978,18 @@ public final class KeyboardTextsTable {
     /* Locale hy_AM: Armenian (Armenia) */
     private static final String[] TEXTS_hy_AM = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0531: "Ô±" ARMENIAN CAPITAL LETTER AYB
         // U+0532: "Ô²" ARMENIAN CAPITAL LETTER BEN
         // U+0533: "Ô³" ARMENIAN CAPITAL LETTER GIM
         /* keylabel_to_alpha */ "\u0531\u0532\u0533",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null,
+        null, null, null, null,
         /* ~ morekeys_nordic_row2_11 */
         // U+055E: "Õž" ARMENIAN QUESTION MARK
         // U+055C: "՜" ARMENIAN EXCLAMATION MARK
@@ -2052,13 +2056,6 @@ public final class KeyboardTextsTable {
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
@@ -2067,6 +2064,13 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u00EB,\u00E8,\u00EA,\u0119,\u0117,\u0113",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
@@ -2074,18 +2078,18 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B",
+        /* morekeys_n */ null,
         /* morekeys_c */ null,
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s */ null,
         /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
+        /* morekeys_z */ null,
         // U+00F0: "ð" LATIN SMALL LETTER ETH
         /* morekeys_d */ "\u00F0",
-        /* morekeys_z */ null,
         // U+00FE: "þ" LATIN SMALL LETTER THORN
         /* morekeys_t */ "\u00FE",
     };
@@ -2112,13 +2116,6 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00BA: "º" MASCULINE ORDINAL INDICATOR
         /* morekeys_o */ "\u00F2,\u00F3,\u00F4,\u00F6,\u00F5,\u0153,\u00F8,\u014D,\u00BA",
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -2127,6 +2124,13 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
@@ -2134,7 +2138,7 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u012F,\u012B",
-        /* morekeys_c ~ */
+        /* morekeys_n ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2157,18 +2161,17 @@ public final class KeyboardTextsTable {
     /* Locale iw: Hebrew */
     private static final String[] TEXTS_iw = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+05D0: "א" HEBREW LETTER ALEF
         // U+05D1: "ב" HEBREW LETTER BET
         // U+05D2: "×’" HEBREW LETTER GIMEL
         /* keylabel_to_alpha */ "\u05D0\u05D1\u05D2",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null,
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_rqm_9qm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_rqm_9qm",
         /* morekeys_s */ null,
         // U+20AA: "₪" NEW SHEQEL SIGN
@@ -2216,34 +2219,33 @@ public final class KeyboardTextsTable {
     /* Locale ka_GE: Georgian (Georgia) */
     private static final String[] TEXTS_ka_GE = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+10D0: "ა" GEORGIAN LETTER AN
         // U+10D1: "ბ" GEORGIAN LETTER BAN
         // U+10D2: "გ" GEORGIAN LETTER GAN
         /* keylabel_to_alpha */ "\u10D0\u10D1\u10D2",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null,
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
     };
 
     /* Locale kk: Kazakh */
     private static final String[] TEXTS_kk = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "Ð’" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null,
+        null, null,
         /* ~ morekeys_k */
         // U+0451: "Ñ‘" CYRILLIC SMALL LETTER IO
         /* morekeys_cyrillic_ie */ "\u0451",
@@ -2292,14 +2294,14 @@ public final class KeyboardTextsTable {
     /* Locale km_KH: Khmer (Cambodia) */
     private static final String[] TEXTS_km_KH = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+1780: "ក" KHMER LETTER KA
         // U+1781: "ខ" KHMER LETTER KHA
         // U+1782: "áž‚" KHMER LETTER KO
         /* keylabel_to_alpha */ "\u1780\u1781\u1782",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2307,7 +2309,7 @@ public final class KeyboardTextsTable {
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_cyrillic_a */
         // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
         /* morekeys_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
@@ -2316,15 +2318,15 @@ public final class KeyboardTextsTable {
     /* Locale kn_IN: Kannada (India) */
     private static final String[] TEXTS_kn_IN = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0C85: "ಅ" KANNADA LETTER A
         // U+0C86: "ಆ" KANNADA LETTER AA
         // U+0C87: "ಇ" KANNADA LETTER I
         /* keylabel_to_alpha */ "\u0C85\u0C86\u0C87",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keyspec_currency */ "\u20B9",
@@ -2333,16 +2335,16 @@ public final class KeyboardTextsTable {
     /* Locale ky: Kirghiz */
     private static final String[] TEXTS_ky = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "Ð’" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null,
+        null, null,
         /* ~ morekeys_k */
         // U+0451: "Ñ‘" CYRILLIC SMALL LETTER IO
         /* morekeys_cyrillic_ie */ "\u0451",
@@ -2377,15 +2379,15 @@ public final class KeyboardTextsTable {
     /* Locale lo_LA: Lao (Laos) */
     private static final String[] TEXTS_lo_LA = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0E81: "ກ" LAO LETTER KO
         // U+0E82: "ຂ" LAO LETTER KHO SUNG
         // U+0E84: "ຄ" LAO LETTER KHO TAM
         /* keylabel_to_alpha */ "\u0E81\u0E82\u0E84",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+20AD: "â‚­" KIP SIGN
         /* keyspec_currency */ "\u20AD",
@@ -2412,6 +2414,15 @@ public final class KeyboardTextsTable {
         // U+0151: "Å‘" LATIN SMALL LETTER O WITH DOUBLE ACUTE
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         /* morekeys_o */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8",
+        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
+        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
+        /* morekeys_e */ "\u0117,\u0119,\u0113,\u00E8,\u00E9,\u00EA,\u00EB,\u011B",
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
@@ -2423,15 +2434,6 @@ public final class KeyboardTextsTable {
         // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
         /* morekeys_u */ "\u016B,\u0173,\u00FC,\u016B,\u00F9,\u00FA,\u00FB,\u016F,\u0171",
         /* keylabel_to_alpha */ null,
-        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
-        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
-        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
-        /* morekeys_e */ "\u0117,\u0119,\u0113,\u00E8,\u00E9,\u00EA,\u00EB,\u011B",
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -2440,15 +2442,15 @@ public final class KeyboardTextsTable {
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         /* morekeys_i */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
+        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u0146,\u00F1,\u0144",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* morekeys_c */ "\u010D,\u00E7,\u0107",
         /* double_quotes */ "!text/double_9qm_lqm",
-        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        /* morekeys_n */ "\u0146,\u00F1,\u0144",
         /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2459,12 +2461,12 @@ public final class KeyboardTextsTable {
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* morekeys_d */ "\u010F",
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         /* morekeys_z */ "\u017E,\u017C,\u017A",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u010F",
         // U+0163: "Å£" LATIN SMALL LETTER T WITH CEDILLA
         // U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON
         /* morekeys_t */ "\u0163,\u0165",
@@ -2507,6 +2509,15 @@ public final class KeyboardTextsTable {
         // U+0151: "Å‘" LATIN SMALL LETTER O WITH DOUBLE ACUTE
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         /* morekeys_o */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u0153,\u0151,\u00F8",
+        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
+        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
+        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
+        /* morekeys_e */ "\u0113,\u0117,\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u011B",
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
         // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
@@ -2517,15 +2528,6 @@ public final class KeyboardTextsTable {
         // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
         /* morekeys_u */ "\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u00FC,\u016F,\u0171",
         /* keylabel_to_alpha */ null,
-        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
-        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
-        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
-        /* morekeys_e */ "\u0113,\u0117,\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u011B",
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -2534,15 +2536,15 @@ public final class KeyboardTextsTable {
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         /* morekeys_i */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
+        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u0146,\u00F1,\u0144",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* morekeys_c */ "\u010D,\u00E7,\u0107",
         /* double_quotes */ "!text/double_9qm_lqm",
-        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        /* morekeys_n */ "\u0146,\u00F1,\u0144",
         /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2553,12 +2555,12 @@ public final class KeyboardTextsTable {
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* morekeys_d */ "\u010F",
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         /* morekeys_z */ "\u017E,\u017C,\u017A",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u010F",
         // U+0163: "Å£" LATIN SMALL LETTER T WITH CEDILLA
         // U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON
         /* morekeys_t */ "\u0163,\u0165",
@@ -2583,18 +2585,17 @@ public final class KeyboardTextsTable {
     /* Locale mk: Macedonian */
     private static final String[] TEXTS_mk = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "Ð’" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null,
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s ~ */
         null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2623,13 +2624,13 @@ public final class KeyboardTextsTable {
     /* Locale ml_IN: Malayalam (India) */
     private static final String[] TEXTS_ml_IN = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0D05: "à´…" MALAYALAM LETTER A
         /* keylabel_to_alpha */ "\u0D05",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keyspec_currency */ "\u20B9",
@@ -2638,15 +2639,15 @@ public final class KeyboardTextsTable {
     /* Locale mn_MN: Mongolian (Mongolia) */
     private static final String[] TEXTS_mn_MN = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "Ð’" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+20AE: "â‚®" TUGRIK SIGN
         /* keyspec_currency */ "\u20AE",
@@ -2655,15 +2656,15 @@ public final class KeyboardTextsTable {
     /* Locale mr_IN: Marathi (India) */
     private static final String[] TEXTS_mr_IN = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0915: "क" DEVANAGARI LETTER KA
         // U+0916: "ख" DEVANAGARI LETTER KHA
         // U+0917: "ग" DEVANAGARI LETTER GA
         /* keylabel_to_alpha */ "\u0915\u0916\u0917",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keyspec_currency */ "\u20B9",
@@ -2708,18 +2709,18 @@ public final class KeyboardTextsTable {
     /* Locale my_MM: Burmese (Myanmar) */
     private static final String[] TEXTS_my_MM = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+1000: "က" MYANMAR LETTER KA
         // U+1001: "ခ" MYANMAR LETTER KHA
         // U+1002: "ဂ" MYANMAR LETTER GA
         /* keylabel_to_alpha */ "\u1000\u1001\u1002",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null,
+        null, null, null, null,
         /* ~ morekeys_nordic_row2_11 */
         /* morekeys_punctuation */ "!autoColumnOrder!9,\u104A,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&",
         // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
@@ -2760,13 +2761,6 @@ public final class KeyboardTextsTable {
         // U+0153: "Å“" LATIN SMALL LIGATURE OE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F4,\u00F2,\u00F3,\u00F6,\u00F5,\u0153,\u014D",
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -2775,10 +2769,16 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
-        /* morekeys_i */ null,
-        /* morekeys_c */ null,
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
+        /* keylabel_to_alpha ~ */
+        null, null, null, null,
+        /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_rqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_rqm",
         /* morekeys_s ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2802,15 +2802,15 @@ public final class KeyboardTextsTable {
     /* Locale ne_NP: Nepali (Nepal) */
     private static final String[] TEXTS_ne_NP = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0915: "क" DEVANAGARI LETTER KA
         // U+0916: "ख" DEVANAGARI LETTER KHA
         // U+0917: "ग" DEVANAGARI LETTER GA
         /* keylabel_to_alpha */ "\u0915\u0916\u0917",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
         /* keyspec_currency */ "\u0930\u0941.",
@@ -2872,13 +2872,6 @@ public final class KeyboardTextsTable {
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -2887,6 +2880,13 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u00EB,\u00EA,\u00E8,\u0119,\u0117,\u0113",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -2895,11 +2895,11 @@ public final class KeyboardTextsTable {
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
         /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133",
-        /* morekeys_c */ null,
-        /* double_quotes */ "!text/double_9qm_rqm",
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_rqm",
         /* single_quotes */ "!text/single_9qm_rqm",
         /* morekeys_s */ null,
         /* keyspec_currency */ null,
@@ -2928,8 +2928,6 @@ public final class KeyboardTextsTable {
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        /* morekeys_u */ null,
-        /* keylabel_to_alpha */ null,
         // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
@@ -2938,27 +2936,29 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113",
-        /* morekeys_i */ null,
+        /* morekeys_u ~ */
+        null, null, null,
+        /* ~ morekeys_i */
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* morekeys_n */ "\u0144,\u00F1",
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u0107,\u00E7,\u010D",
         /* double_quotes */ "!text/double_9qm_rqm",
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* morekeys_n */ "\u0144,\u00F1",
         /* single_quotes */ "!text/single_9qm_rqm",
         // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u015B,\u00DF,\u0161",
-        /* keyspec_currency ~ */
-        null, null, null,
-        /* ~ morekeys_d */
+        /* keyspec_currency */ null,
+        /* morekeys_y */ null,
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         /* morekeys_z */ "\u017C,\u017A,\u017E",
+        /* morekeys_d */ null,
         /* morekeys_t */ null,
         // U+0142: "Å‚" LATIN SMALL LETTER L WITH STROKE
         /* morekeys_l */ "\u0142",
@@ -2985,13 +2985,6 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00BA: "º" MASCULINE ORDINAL INDICATOR
         /* morekeys_o */ "\u00F3,\u00F5,\u00F4,\u00F2,\u00F6,\u0153,\u00F8,\u014D,\u00BA",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
@@ -3000,6 +2993,13 @@ public final class KeyboardTextsTable {
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
         /* morekeys_e */ "\u00E9,\u00EA,\u00E8,\u0119,\u0117,\u0113,\u00EB",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -3007,6 +3007,7 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B",
+        /* morekeys_n */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
@@ -3040,7 +3041,7 @@ public final class KeyboardTextsTable {
         /* morekeys_a */ "\u0103,\u00E2,\u00E3,\u00E0,\u00E1,\u00E4,\u00E6,\u00E5,\u0101",
         /* morekeys_o ~ */
         null, null, null, null,
-        /* ~ morekeys_e */
+        /* ~ keylabel_to_alpha */
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -3048,9 +3049,9 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+        /* morekeys_n */ null,
         /* morekeys_c */ null,
         /* double_quotes */ "!text/double_9qm_rqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_rqm",
         // U+0219: "È™" LATIN SMALL LETTER S WITH COMMA BELOW
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -3059,7 +3060,7 @@ public final class KeyboardTextsTable {
         /* morekeys_s */ "\u0219,\u00DF,\u015B,\u0161",
         /* keyspec_currency ~ */
         null, null, null, null,
-        /* ~ morekeys_z */
+        /* ~ morekeys_d */
         // U+021B: "È›" LATIN SMALL LETTER T WITH COMMA BELOW
         /* morekeys_t */ "\u021B",
     };
@@ -3067,18 +3068,17 @@ public final class KeyboardTextsTable {
     /* Locale ru: Russian */
     private static final String[] TEXTS_ru = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "Ð’" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null,
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s ~ */
         null, null, null, null, null, null, null, null, null, null, null, null,
@@ -3103,14 +3103,14 @@ public final class KeyboardTextsTable {
     /* Locale si_LK: Sinhalese (Sri Lanka) */
     private static final String[] TEXTS_si_LK = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0D85: "අ" SINHALA LETTER AYANNA
         // U+0D86: "ආ" SINHALA LETTER AAYANNA
         /* keylabel_to_alpha */ "\u0D85,\u0D86",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+0DBB/U+0DD4: "රු" SINHALA LETTER RAYANNA/SINHALA VOWEL SIGN KETTI PAA-PILLA
         /* keyspec_currency */ "\u0DBB\u0DD4",
@@ -3137,6 +3137,15 @@ public final class KeyboardTextsTable {
         // U+0151: "Å‘" LATIN SMALL LETTER O WITH DOUBLE ACUTE
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         /* morekeys_o */ "\u00F4,\u00F3,\u00F6,\u00F2,\u00F5,\u0153,\u0151,\u00F8",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
+        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
+        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
+        /* morekeys_e */ "\u00E9,\u011B,\u0113,\u0117,\u00E8,\u00EA,\u00EB,\u0119",
         // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
@@ -3147,15 +3156,6 @@ public final class KeyboardTextsTable {
         // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
         /* morekeys_u */ "\u00FA,\u016F,\u00FC,\u016B,\u0173,\u00F9,\u00FB,\u0171",
         /* keylabel_to_alpha */ null,
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
-        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
-        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
-        /* morekeys_e */ "\u00E9,\u011B,\u0113,\u0117,\u00E8,\u00EA,\u00EB,\u0119",
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
@@ -3164,16 +3164,16 @@ public final class KeyboardTextsTable {
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         /* morekeys_i */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131",
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        /* morekeys_c */ "\u010D,\u00E7,\u0107",
-        /* double_quotes */ "!text/double_9qm_lqm",
         // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
         // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u0148,\u0146,\u00F1,\u0144",
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        /* morekeys_c */ "\u010D,\u00E7,\u0107",
+        /* double_quotes */ "!text/double_9qm_lqm",
         /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -3184,12 +3184,12 @@ public final class KeyboardTextsTable {
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* morekeys_d */ "\u010F",
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         /* morekeys_z */ "\u017E,\u017C,\u017A",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u010F",
         // U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON
         // U+0163: "Å£" LATIN SMALL LETTER T WITH CEDILLA
         /* morekeys_t */ "\u0165,\u0163",
@@ -3214,22 +3214,21 @@ public final class KeyboardTextsTable {
     /* Locale sl: Slovenian */
     private static final String[] TEXTS_sl = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null,
-        /* ~ morekeys_i */
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* morekeys_c */ "\u010D,\u0107",
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u0161",
         /* keyspec_currency */ null,
         /* morekeys_y */ null,
-        // U+0111: "Ä‘" LATIN SMALL LETTER D WITH STROKE
-        /* morekeys_d */ "\u0111",
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         /* morekeys_z */ "\u017E",
+        // U+0111: "Ä‘" LATIN SMALL LETTER D WITH STROKE
+        /* morekeys_d */ "\u0111",
         /* morekeys_t ~ */
         null, null, null,
         /* ~ morekeys_g */
@@ -3240,7 +3239,7 @@ public final class KeyboardTextsTable {
     /* Locale sr: Serbian */
     private static final String[] TEXTS_sr = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // END: More keys definitions for Serbian (Cyrillic)
         // Label for "switch to alphabetic" key.
@@ -3248,11 +3247,10 @@ public final class KeyboardTextsTable {
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "Ð’" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null,
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s ~ */
         null, null, null, null, null, null, null, null,
@@ -3314,6 +3312,12 @@ public final class KeyboardTextsTable {
         // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F3,\u00F2,\u00F4,\u00F5,\u014D",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119",
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
@@ -3321,26 +3325,20 @@ public final class KeyboardTextsTable {
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         /* morekeys_u */ "\u00FC,\u00FA,\u00F9,\u00FB,\u016B",
         /* keylabel_to_alpha */ null,
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
-        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119",
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         /* morekeys_i */ "\u00ED,\u00EC,\u00EE,\u00EF",
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+        /* morekeys_n */ "\u0144,\u00F1,\u0148",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u00E7,\u0107,\u010D",
         /* double_quotes */ null,
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
-        /* morekeys_n */ "\u0144,\u00F1,\u0148",
         /* single_quotes */ null,
         // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
@@ -3351,13 +3349,13 @@ public final class KeyboardTextsTable {
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
-        // U+00F0: "ð" LATIN SMALL LETTER ETH
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* morekeys_d */ "\u00F0,\u010F",
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         /* morekeys_z */ "\u017A,\u017E,\u017C",
+        // U+00F0: "ð" LATIN SMALL LETTER ETH
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u00F0,\u010F",
         // U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON
         // U+00FE: "þ" LATIN SMALL LETTER THORN
         /* morekeys_t */ "\u0165,\u00FE",
@@ -3408,6 +3406,12 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
         /* morekeys_o */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5",
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
+        /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113",
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
@@ -3415,23 +3419,17 @@ public final class KeyboardTextsTable {
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         /* morekeys_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B",
         /* keylabel_to_alpha */ null,
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
-        /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113",
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         /* morekeys_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* morekeys_n */ "\u00F1",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* morekeys_c */ "\u00E7",
         /* double_quotes */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* morekeys_n */ "\u00F1",
         /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* morekeys_s */ "\u00DF",
@@ -3444,15 +3442,15 @@ public final class KeyboardTextsTable {
     /* Locale ta_IN: Tamil (India) */
     private static final String[] TEXTS_ta_IN = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0BA4: "த" TAMIL LETTER TA
         // U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I
         // U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA
         /* keylabel_to_alpha */ "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+0BF9: "௹" TAMIL RUPEE SIGN
         /* keyspec_currency */ "\u0BF9",
@@ -3461,15 +3459,15 @@ public final class KeyboardTextsTable {
     /* Locale ta_LK: Tamil (Sri Lanka) */
     private static final String[] TEXTS_ta_LK = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0BA4: "த" TAMIL LETTER TA
         // U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I
         // U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA
         /* keylabel_to_alpha */ "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+0DBB/U+0DD4: "රු" SINHALA LETTER RAYANNA/SINHALA VOWEL SIGN KETTI PAA-PILLA
         /* keyspec_currency */ "\u0DBB\u0DD4",
@@ -3478,7 +3476,7 @@ public final class KeyboardTextsTable {
     /* Locale ta_SG: Tamil (Singapore) */
     private static final String[] TEXTS_ta_SG = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0BA4: "த" TAMIL LETTER TA
@@ -3490,15 +3488,15 @@ public final class KeyboardTextsTable {
     /* Locale te_IN: Telugu (India) */
     private static final String[] TEXTS_te_IN = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0C05: "à°…" TELUGU LETTER A
         // U+0C06: "à°†" TELUGU LETTER AA
         // U+0C07: "à°‡" TELUGU LETTER I
         /* keylabel_to_alpha */ "\u0C05\u0C06\u0C07",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keyspec_currency */ "\u20B9",
@@ -3507,15 +3505,15 @@ public final class KeyboardTextsTable {
     /* Locale th: Thai */
     private static final String[] TEXTS_th = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0E01: "ก" THAI CHARACTER KO KAI
         // U+0E02: "ข" THAI CHARACTER KHO KHAI
         // U+0E04: "ค" THAI CHARACTER KHO KHWAI
         /* keylabel_to_alpha */ "\u0E01\u0E02\u0E04",
-        /* morekeys_e ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_i ~ */
+        null, null, null, null, null, null,
         /* ~ morekeys_s */
         // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
         /* keyspec_currency */ "\u0E3F",
@@ -3544,13 +3542,6 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00BA: "º" MASCULINE ORDINAL INDICATOR
         /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
-        /* keylabel_to_alpha */ null,
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
@@ -3559,6 +3550,13 @@ public final class KeyboardTextsTable {
         // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
         // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
         /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        /* keylabel_to_alpha */ null,
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -3566,20 +3564,21 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u00E7,\u0107,\u010D",
-        /* double_quotes */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-        /* morekeys_n */ "\u00F1,\u0144",
     };
 
     /* Locale tr: Turkish */
     private static final String[] TEXTS_tr = {
         // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-        /* morekeys_a */ "\u00E2",
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+        /* morekeys_a */ "\u00E2,\u00E4,\u00E1",
         // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
         // U+0153: "Å“" LATIN SMALL LIGATURE OE
@@ -3589,6 +3588,9 @@ public final class KeyboardTextsTable {
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         /* morekeys_o */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D",
+        // U+0259: "É™" LATIN SMALL LETTER SCHWA
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        /* morekeys_e */ "\u0259,\u00E9",
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
         // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
@@ -3596,7 +3598,6 @@ public final class KeyboardTextsTable {
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
         /* keylabel_to_alpha */ null,
-        /* morekeys_e */ null,
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -3605,20 +3606,27 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         /* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* morekeys_n */ "\u0148,\u00F1",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u00E7,\u0107,\u010D",
-        /* double_quotes ~ */
-        null, null, null,
-        /* ~ single_quotes */
+        /* double_quotes */ null,
+        /* single_quotes */ null,
         // U+015F: "ÅŸ" LATIN SMALL LETTER S WITH CEDILLA
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u015F,\u00DF,\u015B,\u0161",
-        /* keyspec_currency ~ */
-        null, null, null, null, null, null,
+        /* keyspec_currency */ null,
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        /* morekeys_y */ "\u00FD",
+        // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+        /* morekeys_z */ "\u017E",
+        /* morekeys_d ~ */
+        null, null, null,
         /* ~ morekeys_l */
         // U+011F: "ÄŸ" LATIN SMALL LETTER G WITH BREVE
         /* morekeys_g */ "\u011F",
@@ -3627,18 +3635,17 @@ public final class KeyboardTextsTable {
     /* Locale uk: Ukrainian */
     private static final String[] TEXTS_uk = {
         /* morekeys_a ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_u */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "Ð’" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_e ~ */
+        /* morekeys_i ~ */
         null, null, null,
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s */ null,
         // U+20B4: "â‚´" HRYVNIA SIGN
@@ -3708,6 +3715,18 @@ public final class KeyboardTextsTable {
         // U+1EE1: "ỡ" LATIN SMALL LETTER O WITH HORN AND TILDE
         // U+1EE3: "ợ" LATIN SMALL LETTER O WITH HORN AND DOT BELOW
         /* morekeys_o */ "\u00F2,\u00F3,\u1ECF,\u00F5,\u1ECD,\u00F4,\u1ED3,\u1ED1,\u1ED5,\u1ED7,\u1ED9,\u01A1,\u1EDD,\u1EDB,\u1EDF,\u1EE1,\u1EE3",
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+1EBB: "ẻ" LATIN SMALL LETTER E WITH HOOK ABOVE
+        // U+1EBD: "ẽ" LATIN SMALL LETTER E WITH TILDE
+        // U+1EB9: "ẹ" LATIN SMALL LETTER E WITH DOT BELOW
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+1EC1: "ề" LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+        // U+1EBF: "ế" LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+        // U+1EC3: "ể" LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+        // U+1EC5: "á»…" LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+        // U+1EC7: "ệ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+        /* morekeys_e */ "\u00E8,\u00E9,\u1EBB,\u1EBD,\u1EB9,\u00EA,\u1EC1,\u1EBF,\u1EC3,\u1EC5,\u1EC7",
         // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
         // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+1EE7: "ủ" LATIN SMALL LETTER U WITH HOOK ABOVE
@@ -3721,25 +3740,13 @@ public final class KeyboardTextsTable {
         // U+1EF1: "á»±" LATIN SMALL LETTER U WITH HORN AND DOT BELOW
         /* morekeys_u */ "\u00F9,\u00FA,\u1EE7,\u0169,\u1EE5,\u01B0,\u1EEB,\u1EE9,\u1EED,\u1EEF,\u1EF1",
         /* keylabel_to_alpha */ null,
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+1EBB: "ẻ" LATIN SMALL LETTER E WITH HOOK ABOVE
-        // U+1EBD: "ẽ" LATIN SMALL LETTER E WITH TILDE
-        // U+1EB9: "ẹ" LATIN SMALL LETTER E WITH DOT BELOW
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+1EC1: "ề" LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-        // U+1EBF: "ế" LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-        // U+1EC3: "ể" LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-        // U+1EC5: "á»…" LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-        // U+1EC7: "ệ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-        /* morekeys_e */ "\u00E8,\u00E9,\u1EBB,\u1EBD,\u1EB9,\u00EA,\u1EC1,\u1EBF,\u1EC3,\u1EC5,\u1EC7",
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+1EC9: "ỉ" LATIN SMALL LETTER I WITH HOOK ABOVE
         // U+0129: "Ä©" LATIN SMALL LETTER I WITH TILDE
         // U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW
         /* morekeys_i */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB",
-        /* morekeys_c ~ */
+        /* morekeys_n ~ */
         null, null, null, null, null,
         /* ~ morekeys_s */
         // U+20AB: "â‚«" DONG SIGN
@@ -3750,6 +3757,7 @@ public final class KeyboardTextsTable {
         // U+1EF9: "ỹ" LATIN SMALL LETTER Y WITH TILDE
         // U+1EF5: "ỵ" LATIN SMALL LETTER Y WITH DOT BELOW
         /* morekeys_y */ "\u1EF3,\u00FD,\u1EF7,\u1EF9,\u1EF5",
+        /* morekeys_z */ null,
         // U+0111: "Ä‘" LATIN SMALL LETTER D WITH STROKE
         /* morekeys_d */ "\u0111",
     };
@@ -3775,6 +3783,12 @@ public final class KeyboardTextsTable {
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
         /* morekeys_o */ "\u00F3,\u00F4,\u00F6,\u00F2,\u0153,\u00F8,\u014D,\u00F5",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0113",
         // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
@@ -3782,23 +3796,17 @@ public final class KeyboardTextsTable {
         // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
         /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
         /* keylabel_to_alpha */ null,
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
-        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0113",
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* morekeys_n */ "\u00F1",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* morekeys_c */ "\u00E7",
         /* double_quotes */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* morekeys_n */ "\u00F1",
         /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* morekeys_s */ "\u00DF",
@@ -3830,6 +3838,16 @@ public final class KeyboardTextsTable {
         // U+0153: "Å“" LATIN SMALL LIGATURE OE
         // U+00BA: "º" MASCULINE ORDINAL INDICATOR
         /* morekeys_o */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u00F8,\u014D,\u014F,\u0151,\u0153,\u00BA",
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
+        // U+0115: "Ä•" LATIN SMALL LETTER E WITH BREVE
+        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
+        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
+        /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113,\u0115,\u0117,\u0119,\u011B",
         // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
         // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
@@ -3842,16 +3860,6 @@ public final class KeyboardTextsTable {
         // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
         /* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u0169,\u016B,\u016D,\u016F,\u0171,\u0173",
         /* keylabel_to_alpha */ null,
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
-        // U+0115: "Ä•" LATIN SMALL LETTER E WITH BREVE
-        // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
-        // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
-        // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
-        /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113,\u0115,\u0117,\u0119,\u011B",
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
@@ -3863,13 +3871,6 @@ public final class KeyboardTextsTable {
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
         /* morekeys_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133",
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
-        // U+010B: "Ä‹" LATIN SMALL LETTER C WITH DOT ABOVE
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        /* morekeys_c */ "\u00E7,\u0107,\u0109,\u010B,\u010D",
-        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
         // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
@@ -3877,6 +3878,13 @@ public final class KeyboardTextsTable {
         // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
         // U+014B: "Å‹" LATIN SMALL LETTER ENG
         /* morekeys_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
+        // U+010B: "Ä‹" LATIN SMALL LETTER C WITH DOT ABOVE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,\u0107,\u0109,\u010B,\u010D",
+        /* double_quotes */ null,
         /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
@@ -3891,14 +3899,14 @@ public final class KeyboardTextsTable {
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
         /* morekeys_y */ "\u00FD,\u0177,\u00FF,\u0133",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        // U+0111: "Ä‘" LATIN SMALL LETTER D WITH STROKE
-        // U+00F0: "ð" LATIN SMALL LETTER ETH
-        /* morekeys_d */ "\u010F,\u0111,\u00F0",
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         /* morekeys_z */ "\u017A,\u017C,\u017E",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        // U+0111: "Ä‘" LATIN SMALL LETTER D WITH STROKE
+        // U+00F0: "ð" LATIN SMALL LETTER ETH
+        /* morekeys_d */ "\u010F,\u0111,\u00F0",
         // U+00FE: "þ" LATIN SMALL LETTER THORN
         // U+0163: "Å£" LATIN SMALL LETTER T WITH CEDILLA
         // U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON
@@ -3947,24 +3955,24 @@ public final class KeyboardTextsTable {
         "DEFAULT", TEXTS_DEFAULT, /* 168/168 DEFAULT */
         "af"     , TEXTS_af,    /*   7/ 13 Afrikaans */
         "ar"     , TEXTS_ar,    /*  55/110 Arabic */
-        "az_AZ"  , TEXTS_az_AZ, /*   8/ 18 Azerbaijani (Azerbaijan) */
+        "az_AZ"  , TEXTS_az_AZ, /*  11/ 18 Azerbaijani (Azerbaijan) */
         "be_BY"  , TEXTS_be_BY, /*   9/ 32 Belarusian (Belarus) */
-        "bg"     , TEXTS_bg,    /*   2/  8 Bulgarian */
+        "bg"     , TEXTS_bg,    /*   2/  9 Bulgarian */
         "bn_IN"  , TEXTS_bn_IN, /*   2/ 12 Bengali (India) */
         "ca"     , TEXTS_ca,    /*  11/ 96 Catalan */
         "cs"     , TEXTS_cs,    /*  17/ 21 Czech */
         "da"     , TEXTS_da,    /*  19/ 54 Danish */
         "de"     , TEXTS_de,    /*  16/ 62 German */
-        "el"     , TEXTS_el,    /*   1/  4 Greek */
+        "el"     , TEXTS_el,    /*   1/  5 Greek */
         "en"     , TEXTS_en,    /*   8/ 11 English */
         "eo"     , TEXTS_eo,    /*  26/118 Esperanto */
         "es"     , TEXTS_es,    /*   8/ 55 Spanish */
         "et_EE"  , TEXTS_et_EE, /*  22/ 27 Estonian (Estonia) */
-        "eu_ES"  , TEXTS_eu_ES, /*   7/  9 Basque (Spain) */
+        "eu_ES"  , TEXTS_eu_ES, /*   7/  8 Basque (Spain) */
         "fa"     , TEXTS_fa,    /*  58/125 Persian */
         "fi"     , TEXTS_fi,    /*  10/ 54 Finnish */
         "fr"     , TEXTS_fr,    /*  13/ 62 French */
-        "gl_ES"  , TEXTS_gl_ES, /*   7/  9 Gallegan (Spain) */
+        "gl_ES"  , TEXTS_gl_ES, /*   7/  8 Gallegan (Spain) */
         "hi"     , TEXTS_hi,    /*  23/ 53 Hindi */
         "hi_ZZ"  , TEXTS_hi_ZZ, /*   1/ 12 Hindi (ZZ) */
         "hr"     , TEXTS_hr,    /*   9/ 20 Croatian */
@@ -3990,7 +3998,7 @@ public final class KeyboardTextsTable {
         "ne_NP"  , TEXTS_ne_NP, /*  23/ 53 Nepali (Nepal) */
         "nl"     , TEXTS_nl,    /*   9/ 13 Dutch */
         "pl"     , TEXTS_pl,    /*  10/ 17 Polish */
-        "pt"     , TEXTS_pt,    /*   6/  7 Portuguese */
+        "pt"     , TEXTS_pt,    /*   6/  8 Portuguese */
         "rm"     , TEXTS_rm,    /*   1/  2 Raeto-Romance */
         "ro"     , TEXTS_ro,    /*   6/ 16 Romanian */
         "ru"     , TEXTS_ru,    /*   9/ 32 Russian */
@@ -4002,13 +4010,13 @@ public final class KeyboardTextsTable {
         "sw"     , TEXTS_sw,    /*   9/ 18 Swahili */
         "ta_IN"  , TEXTS_ta_IN, /*   2/ 12 Tamil (India) */
         "ta_LK"  , TEXTS_ta_LK, /*   2/ 12 Tamil (Sri Lanka) */
-        "ta_SG"  , TEXTS_ta_SG, /*   1/  4 Tamil (Singapore) */
+        "ta_SG"  , TEXTS_ta_SG, /*   1/  5 Tamil (Singapore) */
         "te_IN"  , TEXTS_te_IN, /*   2/ 12 Telugu (India) */
         "th"     , TEXTS_th,    /*   2/ 12 Thai */
-        "tl"     , TEXTS_tl,    /*   7/  9 Tagalog */
-        "tr"     , TEXTS_tr,    /*   7/ 18 Turkish */
+        "tl"     , TEXTS_tl,    /*   7/  8 Tagalog */
+        "tr"     , TEXTS_tr,    /*  11/ 18 Turkish */
         "uk"     , TEXTS_uk,    /*  11/ 88 Ukrainian */
-        "vi"     , TEXTS_vi,    /*   8/ 14 Vietnamese */
+        "vi"     , TEXTS_vi,    /*   8/ 15 Vietnamese */
         "zu"     , TEXTS_zu,    /*   8/ 11 Zulu */
         "zz"     , TEXTS_zz,    /*  19/112 Alphabet */
     };
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsAzerbaijaniAZ.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsAzerbaijaniAZ.java
index f5317e269f..8e0e2bbbd6 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsAzerbaijaniAZ.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsAzerbaijaniAZ.java
@@ -19,9 +19,7 @@ package com.android.inputmethod.keyboard.layout.tests;
 import android.test.suitebuilder.annotation.SmallTest;
 
 import com.android.inputmethod.keyboard.layout.LayoutBase;
-import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
 import com.android.inputmethod.keyboard.layout.Qwerty;
-import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
 
 import java.util.Locale;
 
@@ -31,58 +29,8 @@ import java.util.Locale;
 @SmallTest
 public final class TestsAzerbaijaniAZ extends LayoutTestsBase {
     private static final Locale LOCALE = new Locale("az", "AZ");
-    private static final LayoutBase LAYOUT = new Qwerty(new AzerbaijaniAZCustomizer(LOCALE));
+    private static final LayoutBase LAYOUT = new Qwerty(new TurkicCustomizer(LOCALE));
 
     @Override
     LayoutBase getLayout() { return LAYOUT; }
-
-    private static final class AzerbaijaniAZCustomizer extends LayoutCustomizer {
-        public AzerbaijaniAZCustomizer(final Locale locale) { super(locale); }
-
-        @Override
-        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
-            return builder
-                    // U+0259: "É™" LATIN SMALL LETTER SCHWA
-                    .setMoreKeysOf("e", "\u0259")
-                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-                    // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-                    // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-                    // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-                    // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-                    .setMoreKeysOf("u", "\u00FC", "\u00FB", "\u00F9", "\u00FA", "\u016B")
-                    // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
-                    // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
-                    // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-                    // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-                    // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
-                    // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
-                    // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
-                    .setMoreKeysOf("i",
-                            "\u0131", "\u00EE", "\u00EF", "\u00EC", "\u00ED", "\u012F", "\u012B")
-                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
-                    // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
-                    // U+0153: "Å“" LATIN SMALL LIGATURE OE
-                    // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-                    // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
-                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
-                    // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-                    .setMoreKeysOf("o",
-                            "\u00F6", "\u00F4", "\u0153", "\u00F2", "\u00F3", "\u00F5", "\u00F8",
-                            "\u014D")
-                    // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-                    .setMoreKeysOf("a", "\u00E2")
-                    // U+015F: "ÅŸ" LATIN SMALL LETTER S WITH CEDILLA
-                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-                    // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
-                    // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
-                    .setMoreKeysOf("s", "\u015F", "\u00DF", "\u015B", "\u0161")
-                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-                    .setMoreKeysOf("c", "\u00E7", "\u0107", "\u010D")
-                    // U+011F: "ÄŸ" LATIN SMALL LETTER G WITH BREVE
-                    .setMoreKeysOf("g", "\u011F");
-        }
-    }
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTurkish.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTurkish.java
index b35f8850a4..bf427cdb0b 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTurkish.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTurkish.java
@@ -37,50 +37,16 @@ public final class TestsTurkish extends LayoutTestsBase {
     LayoutBase getLayout() { return LAYOUT; }
 
     private static class TurkishCustomizer extends EuroCustomizer {
-        public TurkishCustomizer(final Locale locale) { super(locale); }
+        private final TurkicCustomizer mTurkicCustomizer;
+
+        public TurkishCustomizer(final Locale locale) {
+            super(locale);
+            mTurkicCustomizer = new TurkicCustomizer(locale);
+        }
 
         @Override
         public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
-            return builder
-                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-                    // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-                    // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-                    // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-                    // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-                    .setMoreKeysOf("u", "\u00FC", "\u00FB", "\u00F9", "\u00FA", "\u016B")
-                    // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
-                    // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
-                    // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-                    // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-                    // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
-                    // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
-                    // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
-                    .setMoreKeysOf("i",
-                            "\u0131", "\u00EE", "\u00EF", "\u00EC", "\u00ED", "\u012F", "\u012B")
-                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
-                    // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
-                    // U+0153: "Å“" LATIN SMALL LIGATURE OE
-                    // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-                    // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
-                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
-                    // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-                    .setMoreKeysOf("o",
-                            "\u00F6", "\u00F4", "\u0153", "\u00F2", "\u00F3", "\u00F5", "\u00F8",
-                            "\u014D")
-                    // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-                    .setMoreKeysOf("a", "\u00E2")
-                    // U+015F: "ÅŸ" LATIN SMALL LETTER S WITH CEDILLA
-                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-                    // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
-                    // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
-                    .setMoreKeysOf("s", "\u015F", "\u00DF", "\u015B", "\u0161")
-                    // U+011F: "ÄŸ" LATIN SMALL LETTER G WITH BREVE
-                    .setMoreKeysOf("g", "\u011F")
-                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-                    .setMoreKeysOf("c", "\u00E7", "\u0107", "\u010D");
+            return mTurkicCustomizer.setAccentedLetters(builder);
         }
     }
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TurkicCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TurkicCustomizer.java
new file mode 100644
index 0000000000..1a98f6ccfc
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TurkicCustomizer.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * Turkic languages layout customizer.
+ */
+class TurkicCustomizer extends LayoutCustomizer {
+    public TurkicCustomizer(final Locale locale) { super(locale); }
+
+    @Override
+    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+        return builder
+                // U+0259: "É™" LATIN SMALL LETTER SCHWA
+                // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+                .setMoreKeysOf("e", "\u0259", "\u00E9")
+                // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                .setMoreKeysOf("y", "\u00FD")
+                // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+                // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+                // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+                // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+                // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+                .setMoreKeysOf("u", "\u00FC", "\u00FB", "\u00F9", "\u00FA", "\u016B")
+                // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+                // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+                // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+                // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+                // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+                // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+                // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
+                .setMoreKeysOf("i",
+                        "\u0131", "\u00EE", "\u00EF", "\u00EC", "\u00ED", "\u012F", "\u012B")
+                // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                // U+0153: "Å“" LATIN SMALL LIGATURE OE
+                // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+                .setMoreKeysOf("o",
+                        "\u00F6", "\u00F4", "\u0153", "\u00F2", "\u00F3", "\u00F5", "\u00F8",
+                        "\u014D")
+                // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                .setMoreKeysOf("a", "\u00E2", "\u00E4", "\u00E1")
+                // U+015F: "ÅŸ" LATIN SMALL LETTER S WITH CEDILLA
+                // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
+                // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
+                .setMoreKeysOf("s", "\u015F", "\u00DF", "\u015B", "\u0161")
+                // U+011F: "ÄŸ" LATIN SMALL LETTER G WITH BREVE
+                .setMoreKeysOf("g", "\u011F")
+                // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+                .setMoreKeysOf("z", "\u017E")
+                // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                .setMoreKeysOf("c", "\u00E7", "\u0107", "\u010D")
+                // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+                // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                .setMoreKeysOf("n", "\u0148", "\u00F1");
+    }
+}
\ No newline at end of file
diff --git a/tools/make-keyboard-text/res/values-az-rAZ/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-az-rAZ/donottranslate-more-keys.xml
index 54aa570b64..a68de67cc2 100644
--- a/tools/make-keyboard-text/res/values-az-rAZ/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-az-rAZ/donottranslate-more-keys.xml
@@ -18,10 +18,13 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX -->
-    <string name="morekeys_a">&#x00E2;</string>
-    <!-- U+0259: "É™" LATIN SMALL LETTER SCHWA -->
-    <string name="morekeys_e">&#x0259;</string>
+    <!-- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE -->
+    <string name="morekeys_a">&#x00E2;,&#x00E4;,&#x00E1;</string>
+    <!-- U+0259: "É™" LATIN SMALL LETTER SCHWA
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE -->
+    <string name="morekeys_e">&#x0259;,&#x00E9;</string>
     <!-- U+0131: "ı" LATIN SMALL LETTER DOTLESS I
          U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
          U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -52,8 +55,15 @@
     <string name="morekeys_s">&#x015F;,&#x00DF;,&#x015B;,&#x0161;</string>
     <!-- U+011F: "ÄŸ" LATIN SMALL LETTER G WITH BREVE -->
     <string name="morekeys_g">&#x011F;</string>
+    <!-- U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+         U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
+    <string name="morekeys_n">&#x0148;,&#x00F1;</string>
     <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
          U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
          U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
     <string name="morekeys_c">&#x00E7;,&#x0107;,&#x010D;</string>
+    <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE -->
+    <string name="morekeys_y">&#x00FD;</string>
+    <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON -->
+    <string name="morekeys_z">&#x017E;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-tr/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-tr/donottranslate-more-keys.xml
index db1108ff6f..2398430e17 100644
--- a/tools/make-keyboard-text/res/values-tr/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-tr/donottranslate-more-keys.xml
@@ -18,8 +18,13 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX -->
-    <string name="morekeys_a">&#x00E2;</string>
+    <!-- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE -->
+    <string name="morekeys_a">&#x00E2;,&#x00E4;,&#x00E1;</string>
+    <!-- U+0259: "É™" LATIN SMALL LETTER SCHWA
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE -->
+    <string name="morekeys_e">&#x0259;,&#x00E9;</string>
     <!-- U+0131: "ı" LATIN SMALL LETTER DOTLESS I
          U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
          U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -50,8 +55,15 @@
     <string name="morekeys_s">&#x015F;,&#x00DF;,&#x015B;,&#x0161;</string>
     <!-- U+011F: "ÄŸ" LATIN SMALL LETTER G WITH BREVE -->
     <string name="morekeys_g">&#x011F;</string>
+    <!-- U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+         U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
+    <string name="morekeys_n">&#x0148;,&#x00F1;</string>
     <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
          U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
          U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
     <string name="morekeys_c">&#x00E7;,&#x0107;,&#x010D;</string>
+    <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE -->
+    <string name="morekeys_y">&#x00FD;</string>
+    <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON -->
+    <string name="morekeys_z">&#x017E;</string>
 </resources>
-- 
GitLab