Fix layout switch keys' label of no language subtype keyboard

This change moves the following string from resources to
KeyboardTextsSet.
- label_to_alpha_key
- label_to_symbols_key
- label_to_symbols_with_microphone_key

Bug: 7697799
Change-Id: Icf9b8848de4c70f792e336f2ae274dab12be79ee
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index a842dc8..2affdeb 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -147,13 +147,6 @@
     <string name="label_done_key">Done</string>
     <!-- Label for soft enter key when it performs SEND action.  Must be short to fit on key! [CHAR LIMIT=5] -->
     <string name="label_send_key">Send</string>
-    <!-- Label for "switch to alphabetic" key.  Must be short to fit on key! [CHAR LIMIT=3] -->
-    <string name="label_to_alpha_key">ABC</string>
-    <!-- Label for "switch to symbols" key.  Must be short to fit on key! [CHAR LIMIT=4] -->
-    <string name="label_to_symbol_key">\?123</string>
-    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-         part because it'll be appended by the code. Must be short to fit on key! [CHAR LIMIT=3] -->
-    <string name="label_to_symbol_with_microphone_key">123</string>
     <!-- Label for "Pause" key of phone number keyboard.  Must be short to fit on key! [CHAR LIMIT=5] -->
     <string name="label_pause_key">Pause</string>
     <!-- Label for "Wait" key of phone number keyboard.  Must be short to fit on key! [CHAR LIMIT=5]-->
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index 9d05643..6fefb80 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -97,9 +97,6 @@
         "label_done_key",
         "label_previous_key",
         // Other labels.
-        "label_to_alpha_key",
-        "label_to_symbol_key",
-        "label_to_symbol_with_microphone_key",
         "label_pause_key",
         "label_wait_key",
     };
@@ -147,92 +144,95 @@
         /* 39 */ "keylabel_for_south_slavic_row3_8",
         /* 40 */ "more_keys_for_cyrillic_ie",
         /* 41 */ "more_keys_for_cyrillic_i",
-        /* 42 */ "more_keys_for_single_quote",
-        /* 43 */ "more_keys_for_double_quote",
-        /* 44 */ "more_keys_for_tablet_double_quote",
-        /* 45 */ "more_keys_for_currency_dollar",
-        /* 46 */ "keylabel_for_currency_generic",
-        /* 47 */ "more_keys_for_currency_generic",
-        /* 48 */ "more_keys_for_punctuation",
-        /* 49 */ "more_keys_for_star",
-        /* 50 */ "more_keys_for_bullet",
-        /* 51 */ "more_keys_for_plus",
-        /* 52 */ "more_keys_for_left_parenthesis",
-        /* 53 */ "more_keys_for_right_parenthesis",
-        /* 54 */ "more_keys_for_less_than",
-        /* 55 */ "more_keys_for_greater_than",
-        /* 56 */ "more_keys_for_arabic_diacritics",
-        /* 57 */ "keyhintlabel_for_arabic_diacritics",
-        /* 58 */ "keylabel_for_symbols_1",
-        /* 59 */ "keylabel_for_symbols_2",
-        /* 60 */ "keylabel_for_symbols_3",
-        /* 61 */ "keylabel_for_symbols_4",
-        /* 62 */ "keylabel_for_symbols_5",
-        /* 63 */ "keylabel_for_symbols_6",
-        /* 64 */ "keylabel_for_symbols_7",
-        /* 65 */ "keylabel_for_symbols_8",
-        /* 66 */ "keylabel_for_symbols_9",
-        /* 67 */ "keylabel_for_symbols_0",
-        /* 68 */ "additional_more_keys_for_symbols_1",
-        /* 69 */ "additional_more_keys_for_symbols_2",
-        /* 70 */ "additional_more_keys_for_symbols_3",
-        /* 71 */ "additional_more_keys_for_symbols_4",
-        /* 72 */ "additional_more_keys_for_symbols_5",
-        /* 73 */ "additional_more_keys_for_symbols_6",
-        /* 74 */ "additional_more_keys_for_symbols_7",
-        /* 75 */ "additional_more_keys_for_symbols_8",
-        /* 76 */ "additional_more_keys_for_symbols_9",
-        /* 77 */ "additional_more_keys_for_symbols_0",
-        /* 78 */ "more_keys_for_symbols_1",
-        /* 79 */ "more_keys_for_symbols_2",
-        /* 80 */ "more_keys_for_symbols_3",
-        /* 81 */ "more_keys_for_symbols_4",
-        /* 82 */ "more_keys_for_symbols_5",
-        /* 83 */ "more_keys_for_symbols_6",
-        /* 84 */ "more_keys_for_symbols_7",
-        /* 85 */ "more_keys_for_symbols_8",
-        /* 86 */ "more_keys_for_symbols_9",
-        /* 87 */ "more_keys_for_symbols_0",
-        /* 88 */ "keylabel_for_comma",
-        /* 89 */ "more_keys_for_comma",
-        /* 90 */ "keylabel_for_symbols_question",
-        /* 91 */ "keylabel_for_symbols_semicolon",
-        /* 92 */ "keylabel_for_symbols_percent",
-        /* 93 */ "more_keys_for_symbols_exclamation",
-        /* 94 */ "more_keys_for_symbols_question",
-        /* 95 */ "more_keys_for_symbols_semicolon",
-        /* 96 */ "more_keys_for_symbols_percent",
-        /* 97 */ "keylabel_for_tablet_comma",
-        /* 98 */ "keyhintlabel_for_tablet_comma",
-        /* 99 */ "more_keys_for_tablet_comma",
-        /* 100 */ "keyhintlabel_for_tablet_period",
-        /* 101 */ "more_keys_for_tablet_period",
-        /* 102 */ "keylabel_for_apostrophe",
-        /* 103 */ "keyhintlabel_for_apostrophe",
-        /* 104 */ "more_keys_for_apostrophe",
-        /* 105 */ "more_keys_for_q",
-        /* 106 */ "more_keys_for_x",
-        /* 107 */ "keylabel_for_q",
-        /* 108 */ "keylabel_for_w",
-        /* 109 */ "keylabel_for_y",
-        /* 110 */ "keylabel_for_x",
-        /* 111 */ "keylabel_for_spanish_row2_10",
-        /* 112 */ "more_keys_for_am_pm",
-        /* 113 */ "settings_as_more_key",
-        /* 114 */ "shortcut_as_more_key",
-        /* 115 */ "action_next_as_more_key",
-        /* 116 */ "action_previous_as_more_key",
-        /* 117 */ "label_to_more_symbol_key",
-        /* 118 */ "label_to_more_symbol_for_tablet_key",
-        /* 119 */ "label_tab_key",
-        /* 120 */ "label_to_phone_numeric_key",
-        /* 121 */ "label_to_phone_symbols_key",
-        /* 122 */ "label_time_am",
-        /* 123 */ "label_time_pm",
-        /* 124 */ "label_to_symbol_key_pcqwerty",
-        /* 125 */ "keylabel_for_popular_domain",
-        /* 126 */ "more_keys_for_popular_domain",
-        /* 127 */ "more_keys_for_smiley",
+        /* 42 */ "label_to_alpha_key",
+        /* 43 */ "more_keys_for_single_quote",
+        /* 44 */ "more_keys_for_double_quote",
+        /* 45 */ "more_keys_for_tablet_double_quote",
+        /* 46 */ "more_keys_for_currency_dollar",
+        /* 47 */ "keylabel_for_currency_generic",
+        /* 48 */ "more_keys_for_currency_generic",
+        /* 49 */ "more_keys_for_punctuation",
+        /* 50 */ "more_keys_for_star",
+        /* 51 */ "more_keys_for_bullet",
+        /* 52 */ "more_keys_for_plus",
+        /* 53 */ "more_keys_for_left_parenthesis",
+        /* 54 */ "more_keys_for_right_parenthesis",
+        /* 55 */ "more_keys_for_less_than",
+        /* 56 */ "more_keys_for_greater_than",
+        /* 57 */ "more_keys_for_arabic_diacritics",
+        /* 58 */ "keyhintlabel_for_arabic_diacritics",
+        /* 59 */ "keylabel_for_symbols_1",
+        /* 60 */ "keylabel_for_symbols_2",
+        /* 61 */ "keylabel_for_symbols_3",
+        /* 62 */ "keylabel_for_symbols_4",
+        /* 63 */ "keylabel_for_symbols_5",
+        /* 64 */ "keylabel_for_symbols_6",
+        /* 65 */ "keylabel_for_symbols_7",
+        /* 66 */ "keylabel_for_symbols_8",
+        /* 67 */ "keylabel_for_symbols_9",
+        /* 68 */ "keylabel_for_symbols_0",
+        /* 69 */ "label_to_symbol_key",
+        /* 70 */ "label_to_symbol_with_microphone_key",
+        /* 71 */ "additional_more_keys_for_symbols_1",
+        /* 72 */ "additional_more_keys_for_symbols_2",
+        /* 73 */ "additional_more_keys_for_symbols_3",
+        /* 74 */ "additional_more_keys_for_symbols_4",
+        /* 75 */ "additional_more_keys_for_symbols_5",
+        /* 76 */ "additional_more_keys_for_symbols_6",
+        /* 77 */ "additional_more_keys_for_symbols_7",
+        /* 78 */ "additional_more_keys_for_symbols_8",
+        /* 79 */ "additional_more_keys_for_symbols_9",
+        /* 80 */ "additional_more_keys_for_symbols_0",
+        /* 81 */ "more_keys_for_symbols_1",
+        /* 82 */ "more_keys_for_symbols_2",
+        /* 83 */ "more_keys_for_symbols_3",
+        /* 84 */ "more_keys_for_symbols_4",
+        /* 85 */ "more_keys_for_symbols_5",
+        /* 86 */ "more_keys_for_symbols_6",
+        /* 87 */ "more_keys_for_symbols_7",
+        /* 88 */ "more_keys_for_symbols_8",
+        /* 89 */ "more_keys_for_symbols_9",
+        /* 90 */ "more_keys_for_symbols_0",
+        /* 91 */ "keylabel_for_comma",
+        /* 92 */ "more_keys_for_comma",
+        /* 93 */ "keylabel_for_symbols_question",
+        /* 94 */ "keylabel_for_symbols_semicolon",
+        /* 95 */ "keylabel_for_symbols_percent",
+        /* 96 */ "more_keys_for_symbols_exclamation",
+        /* 97 */ "more_keys_for_symbols_question",
+        /* 98 */ "more_keys_for_symbols_semicolon",
+        /* 99 */ "more_keys_for_symbols_percent",
+        /* 100 */ "keylabel_for_tablet_comma",
+        /* 101 */ "keyhintlabel_for_tablet_comma",
+        /* 102 */ "more_keys_for_tablet_comma",
+        /* 103 */ "keyhintlabel_for_tablet_period",
+        /* 104 */ "more_keys_for_tablet_period",
+        /* 105 */ "keylabel_for_apostrophe",
+        /* 106 */ "keyhintlabel_for_apostrophe",
+        /* 107 */ "more_keys_for_apostrophe",
+        /* 108 */ "more_keys_for_q",
+        /* 109 */ "more_keys_for_x",
+        /* 110 */ "keylabel_for_q",
+        /* 111 */ "keylabel_for_w",
+        /* 112 */ "keylabel_for_y",
+        /* 113 */ "keylabel_for_x",
+        /* 114 */ "keylabel_for_spanish_row2_10",
+        /* 115 */ "more_keys_for_am_pm",
+        /* 116 */ "settings_as_more_key",
+        /* 117 */ "shortcut_as_more_key",
+        /* 118 */ "action_next_as_more_key",
+        /* 119 */ "action_previous_as_more_key",
+        /* 120 */ "label_to_more_symbol_key",
+        /* 121 */ "label_to_more_symbol_for_tablet_key",
+        /* 122 */ "label_tab_key",
+        /* 123 */ "label_to_phone_numeric_key",
+        /* 124 */ "label_to_phone_symbols_key",
+        /* 125 */ "label_time_am",
+        /* 126 */ "label_time_pm",
+        /* 127 */ "label_to_symbol_key_pcqwerty",
+        /* 128 */ "keylabel_for_popular_domain",
+        /* 129 */ "more_keys_for_popular_domain",
+        /* 130 */ "more_keys_for_smiley",
     };
 
     private static final String EMPTY = "";
@@ -245,38 +245,40 @@
         EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
         EMPTY, EMPTY, EMPTY,
         /* ~41 */
-        /* 42 */ "!fixedColumnOrder!4,\u2018,\u2019,\u201A,\u201B",
+        // Label for "switch to alphabetic" key.
+        /* 42 */ "ABC",
+        /* 43 */ "!fixedColumnOrder!4,\u2018,\u2019,\u201A,\u201B",
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK.
         // <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;</string>
-        /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB",
+        /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB",
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK.
         // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-        /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B",
+        /* 45 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B",
         // U+00A2: "¢" CENT SIGN
         // U+00A3: "£" POUND SIGN
         // U+20AC: "€" EURO SIGN
         // U+00A5: "¥" YEN SIGN
         // U+20B1: "₱" PESO SIGN
-        /* 45 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
-        /* 46 */ "$",
-        /* 47 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1",
-        /* 48 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\\,,?,@,&,\\%,+,;,/,(,)",
+        /* 46 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
+        /* 47 */ "$",
+        /* 48 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1",
+        /* 49 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\\,,?,@,&,\\%,+,;,/,(,)",
         // U+2020: "†" DAGGER
         // U+2021: "‡" DOUBLE DAGGER
         // U+2605: "★" BLACK STAR
-        /* 49 */ "\u2020,\u2021,\u2605",
+        /* 50 */ "\u2020,\u2021,\u2605",
         // U+266A: "♪" EIGHTH NOTE
         // U+2665: "♥" BLACK HEART SUIT
         // U+2660: "♠" BLACK SPADE SUIT
         // U+2666: "♦" BLACK DIAMOND SUIT
         // U+2663: "♣" BLACK CLUB SUIT
-        /* 50 */ "\u266A,\u2665,\u2660,\u2666,\u2663",
+        /* 51 */ "\u266A,\u2665,\u2660,\u2666,\u2663",
         // U+00B1: "±" PLUS-MINUS SIGN
-        /* 51 */ "\u00B1",
+        /* 52 */ "\u00B1",
         // The all letters need to be mirrored are found at
         // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
-        /* 52 */ "!fixedColumnOrder!3,<,{,[",
-        /* 53 */ "!fixedColumnOrder!3,>,},]",
+        /* 53 */ "!fixedColumnOrder!3,<,{,[",
+        /* 54 */ "!fixedColumnOrder!3,>,},]",
         // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
         // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
         // U+2264: "≤" LESS-THAN OR EQUAL TO
@@ -292,103 +294,108 @@
         // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
         // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
         // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-        /* 54 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB",
-        /* 55 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB",
-        /* 56 */ EMPTY,
+        /* 55 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB",
+        /* 56 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB",
         /* 57 */ EMPTY,
-        /* 58 */ "1",
-        /* 59 */ "2",
-        /* 60 */ "3",
-        /* 61 */ "4",
-        /* 62 */ "5",
-        /* 63 */ "6",
-        /* 64 */ "7",
-        /* 65 */ "8",
-        /* 66 */ "9",
-        /* 67 */ "0",
-        /* 68~ */
+        /* 58 */ EMPTY,
+        /* 59 */ "1",
+        /* 60 */ "2",
+        /* 61 */ "3",
+        /* 62 */ "4",
+        /* 63 */ "5",
+        /* 64 */ "6",
+        /* 65 */ "7",
+        /* 66 */ "8",
+        /* 67 */ "9",
+        /* 68 */ "0",
+        // Label for "switch to symbols" key.
+        /* 69 */ "?123",
+        // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
+        // part because it'll be appended by the code.
+        /* 70 */ "123",
+        /* 71~ */
         EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        /* ~77 */
+        /* ~80 */
         // U+00B9: "¹" SUPERSCRIPT ONE
         // U+00BD: "½" VULGAR FRACTION ONE HALF
         // U+2153: "⅓" VULGAR FRACTION ONE THIRD
         // U+00BC: "¼" VULGAR FRACTION ONE QUARTER
         // U+215B: "⅛" VULGAR FRACTION ONE EIGHTH
-        /* 78 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B",
+        /* 81 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B",
         // U+00B2: "²" SUPERSCRIPT TWO
         // U+2154: "⅔" VULGAR FRACTION TWO THIRDS
-        /* 79 */ "\u00B2,\u2154",
+        /* 82 */ "\u00B2,\u2154",
         // U+00B3: "³" SUPERSCRIPT THREE
         // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
         // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
-        /* 80 */ "\u00B3,\u00BE,\u215C",
+        /* 83 */ "\u00B3,\u00BE,\u215C",
         // U+2074: "⁴" SUPERSCRIPT FOUR
-        /* 81 */ "\u2074",
+        /* 84 */ "\u2074",
         // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
-        /* 82 */ "\u215D",
-        /* 83 */ EMPTY,
-        // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
-        /* 84 */ "\u215E",
-        /* 85 */ EMPTY,
+        /* 85 */ "\u215D",
         /* 86 */ EMPTY,
+        // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
+        /* 87 */ "\u215E",
+        /* 88 */ EMPTY,
+        /* 89 */ EMPTY,
         // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
         // U+2205: "∅" EMPTY SET
-        /* 87 */ "\u207F,\u2205",
-        /* 88 */ ",",
-        /* 89 */ EMPTY,
-        /* 90 */ "?",
-        /* 91 */ ";",
-        /* 92 */ "%",
+        /* 90 */ "\u207F,\u2205",
+        /* 91 */ ",",
+        /* 92 */ EMPTY,
+        /* 93 */ "?",
+        /* 94 */ ";",
+        /* 95 */ "%",
         // U+00A1: "¡" INVERTED EXCLAMATION MARK
-        /* 93 */ "\u00A1",
+        /* 96 */ "\u00A1",
         // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 94 */ "\u00BF",
-        /* 95 */ EMPTY,
+        /* 97 */ "\u00BF",
+        /* 98 */ EMPTY,
         // U+2030: "‰" PER MILLE SIGN
-        /* 96 */ "\u2030",
-        /* 97 */ ",",
-        /* 98 */ "!",
-        /* 99 */ "!",
-        /* 100 */ "?",
-        /* 101 */ "?",
-        /* 102 */ "\'",
-        /* 103 */ "\"",
-        /* 104 */ "\"",
-        /* 105 */ EMPTY,
-        /* 106 */ EMPTY,
-        /* 107 */ "q",
-        /* 108 */ "w",
-        /* 109 */ "y",
-        /* 110 */ "x",
+        /* 99 */ "\u2030",
+        /* 100 */ ",",
+        /* 101 */ "!",
+        /* 102 */ "!",
+        /* 103 */ "?",
+        /* 104 */ "?",
+        /* 105 */ "\'",
+        /* 106 */ "\"",
+        /* 107 */ "\"",
+        /* 108 */ EMPTY,
+        /* 109 */ EMPTY,
+        /* 110 */ "q",
+        /* 111 */ "w",
+        /* 112 */ "y",
+        /* 113 */ "x",
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* 111 */ "\u00F1",
-        /* 112 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm",
-        /* 113 */ "!icon/settings_key|!code/key_settings",
-        /* 114 */ "!icon/shortcut_key|!code/key_shortcut",
-        /* 115 */ "!hasLabels!,!text/label_next_key|!code/key_action_next",
-        /* 116 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous",
+        /* 114 */ "\u00F1",
+        /* 115 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm",
+        /* 116 */ "!icon/settings_key|!code/key_settings",
+        /* 117 */ "!icon/shortcut_key|!code/key_shortcut",
+        /* 118 */ "!hasLabels!,!text/label_next_key|!code/key_action_next",
+        /* 119 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous",
         // Label for "switch to more symbol" modifier key.  Must be short to fit on key!
-        /* 117 */ "= \\ <",
+        /* 120 */ "= \\ <",
         // Label for "switch to more symbol" modifier key on tablets.  Must be short to fit on key!
-        /* 118 */ "~ \\ {",
+        /* 121 */ "~ \\ {",
         // Label for "Tab" key.  Must be short to fit on key!
-        /* 119 */ "Tab",
+        /* 122 */ "Tab",
         // Label for "switch to phone numeric" key.  Must be short to fit on key!
-        /* 120 */ "123",
+        /* 123 */ "123",
         // Label for "switch to phone symbols" key.  Must be short to fit on key!
         // U+FF0A: "*" FULLWIDTH ASTERISK
         // U+FF03: "#" FULLWIDTH NUMBER SIGN
-        /* 121 */ "\uFF0A\uFF03",
+        /* 124 */ "\uFF0A\uFF03",
         // Key label for "ante meridiem"
-        /* 122 */ "AM",
+        /* 125 */ "AM",
         // Key label for "post meridiem"
-        /* 123 */ "PM",
+        /* 126 */ "PM",
         // Label for "switch to symbols" key on PC QWERTY layout
-        /* 124 */ "Sym",
-        /* 125 */ ".com",
+        /* 127 */ "Sym",
+        /* 128 */ ".com",
         // popular web domains for the locale - most popular, displayed on the keyboard
-        /* 126 */ "!hasLabels!,.net,.org,.gov,.edu",
-        /* 127 */ "!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ ",
+        /* 129 */ "!hasLabels!,.net,.org,.gov,.edu",
+        /* 130 */ "!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ ",
     };
 
     /* Language af: Afrikaans */
@@ -449,39 +456,46 @@
         /* 0~ */
         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,
-        /* ~42 */
+        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~41 */
+        // Label for "switch to alphabetic" key.
+        // U+0623: "ا" ARABIC LETTER ALEF
+        // U+200C: ZERO WIDTH NON-JOINER
+        // U+0628: "ب" ARABIC LETTER BEH
+        // U+062C: "پ" ARABIC LETTER PEH
+        /* 42 */ "\u0623\u200C\u0628\u200C\u062C",
+        /* 43 */ null,
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
         // <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
-        /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB",
+        /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB",
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
         // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-        /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B",
+        /* 45 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B",
         // U+00A2: "¢" CENT SIGN
         // U+00A3: "£" POUND SIGN
         // U+20AC: "€" EURO SIGN
         // U+00A5: "¥" YEN SIGN
         // U+20B1: "₱" PESO SIGN
         // U+FDFC: "﷼" RIAL SIGN
-        /* 45 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1,\uFDFC",
-        /* 46 */ null,
+        /* 46 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1,\uFDFC",
         /* 47 */ null,
+        /* 48 */ null,
         // U+061F: "؟" ARABIC QUESTION MARK
         // U+060C: "،" ARABIC COMMA
         // U+061B: "؛" ARABIC SEMICOLON
-        /* 48 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(,)",
+        /* 49 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(,)",
         // U+2605: "★" BLACK STAR
         // U+066D: "٭" ARABIC FIVE POINTED STAR
-        /* 49 */ "\u2605,\u066D",
+        /* 50 */ "\u2605,\u066D",
         // U+266A: "♪" EIGHTH NOTE
-        /* 50 */ "\u266A",
-        /* 51 */ null,
+        /* 51 */ "\u266A",
+        /* 52 */ null,
         // The all letters need to be mirrored are found at
         // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
         // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
         // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS
-        /* 52 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
-        /* 53 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[",
+        /* 53 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
+        /* 54 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[",
         // U+2264: "≤" LESS-THAN OR EQUAL TO
         // U+2265: "≥" GREATER-THAN EQUAL TO
         // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
@@ -497,8 +511,8 @@
         // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
         // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
         // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-        /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
-        /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
+        /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
+        /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
         // U+0655: "ٕ" ARABIC HAMZA BELOW
         // U+0654: "ٔ" ARABIC HAMZA ABOVE
         // U+0652: "ْ" ARABIC SUKUN
@@ -514,64 +528,70 @@
         // U+064E: "َ" ARABIC FATHA
         // U+0640: "ـ" ARABIC TATWEEL
         // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
-        /* 56 */ "!fixedColumnOrder!7,\u0655,\u0654,\u0652,\u064D,\u064C,\u064B,\u0651,\u0656,\u0670,\u0653,\u0650,\u064F,\u064E,\u0640\u0640\u0640|\u0640",
-        /* 57 */ "\u0651",
+        /* 57 */ "!fixedColumnOrder!7,\u0655,\u0654,\u0652,\u064D,\u064C,\u064B,\u0651,\u0656,\u0670,\u0653,\u0650,\u064F,\u064E,\u0640\u0640\u0640|\u0640",
+        /* 58 */ "\u0651",
         // U+0661: "١" ARABIC-INDIC DIGIT ONE
-        /* 58 */ "\u0661",
+        /* 59 */ "\u0661",
         // U+0662: "٢" ARABIC-INDIC DIGIT TWO
-        /* 59 */ "\u0662",
+        /* 60 */ "\u0662",
         // U+0663: "٣" ARABIC-INDIC DIGIT THREE
-        /* 60 */ "\u0663",
+        /* 61 */ "\u0663",
         // U+0664: "٤" ARABIC-INDIC DIGIT FOUR
-        /* 61 */ "\u0664",
+        /* 62 */ "\u0664",
         // U+0665: "٥" ARABIC-INDIC DIGIT FIVE
-        /* 62 */ "\u0665",
+        /* 63 */ "\u0665",
         // U+0666: "٦" ARABIC-INDIC DIGIT SIX
-        /* 63 */ "\u0666",
+        /* 64 */ "\u0666",
         // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN
-        /* 64 */ "\u0667",
+        /* 65 */ "\u0667",
         // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT
-        /* 65 */ "\u0668",
+        /* 66 */ "\u0668",
         // U+0669: "٩" ARABIC-INDIC DIGIT NINE
-        /* 66 */ "\u0669",
+        /* 67 */ "\u0669",
         // U+0660: "٠" ARABIC-INDIC DIGIT ZERO
-        /* 67 */ "\u0660",
-        /* 68 */ "1",
-        /* 69 */ "2",
-        /* 70 */ "3",
-        /* 71 */ "4",
-        /* 72 */ "5",
-        /* 73 */ "6",
-        /* 74 */ "7",
-        /* 75 */ "8",
-        /* 76 */ "9",
+        /* 68 */ "\u0660",
+        // Label for "switch to symbols" key.
+        // U+061F: "؟" ARABIC QUESTION MARK
+        /* 69 */ "\u0663\u0662\u0661\u061F",
+        // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
+        // part because it'll be appended by the code.
+        /* 70 */ "\u0663\u0662\u0661",
+        /* 71 */ "1",
+        /* 72 */ "2",
+        /* 73 */ "3",
+        /* 74 */ "4",
+        /* 75 */ "5",
+        /* 76 */ "6",
+        /* 77 */ "7",
+        /* 78 */ "8",
+        /* 79 */ "9",
         // U+066B: "٫" ARABIC DECIMAL SEPARATOR
         // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
-        /* 77 */ "0,\u066B,\u066C",
-        /* 78~ */
+        /* 80 */ "0,\u066B,\u066C",
+        /* 81~ */
         null, null, null, null, null, null, null, null, null, null,
-        /* ~87 */
+        /* ~90 */
         // U+060C: "،" ARABIC COMMA
-        /* 88 */ "\u060C",
-        /* 89 */ "\\,",
-        /* 90 */ "\u061F",
-        /* 91 */ "\u061B",
+        /* 91 */ "\u060C",
+        /* 92 */ "\\,",
+        /* 93 */ "\u061F",
+        /* 94 */ "\u061B",
         // U+066A: "٪" ARABIC PERCENT SIGN
-        /* 92 */ "\u066A",
-        /* 93 */ null,
-        /* 94 */ "?",
-        /* 95 */ ";",
+        /* 95 */ "\u066A",
+        /* 96 */ null,
+        /* 97 */ "?",
+        /* 98 */ ";",
         // U+2030: "‰" PER MILLE SIGN
-        /* 96 */ "\\%,\u2030",
-        /* 97~ */
+        /* 99 */ "\\%,\u2030",
+        /* 100~ */
         null, null, null, null, null,
-        /* ~101 */
+        /* ~104 */
         // U+060C: "،" ARABIC COMMA
         // U+061B: "؛" ARABIC SEMICOLON
         // U+061F: "؟" ARABIC QUESTION MARK
-        /* 102 */ "\u060C",
-        /* 103 */ "\u061F",
-        /* 104 */ "\u061F,\u061B,!,:,-,/,\',\"",
+        /* 105 */ "\u060C",
+        /* 106 */ "\u061F",
+        /* 107 */ "\u061F,\u061B,!,:,-,/,\',\"",
     };
 
     /* Language be: Belarusian */
@@ -600,6 +620,26 @@
         /* ~39 */
         // U+0451: "ё" CYRILLIC SMALL LETTER IO
         /* 40 */ "\u0451",
+        /* 41 */ null,
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* 42 */ "\u0410\u0411\u0412",
+    };
+
+    /* Language bg: Bulgarian */
+    private static final String[] LANGUAGE_bg = {
+        /* 0~ */
+        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,
+        /* ~41 */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* 42 */ "\u0410\u0411\u0412",
     };
 
     /* Language ca: Catalan */
@@ -835,6 +875,20 @@
         /* 6 */ "\u00F1,\u0144",
     };
 
+    /* Language el: Greek */
+    private static final String[] LANGUAGE_el = {
+        /* 0~ */
+        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,
+        /* ~41 */
+        // Label for "switch to alphabetic" key.
+        // U+0391: "Α" GREEK CAPITAL LETTER ALPHA
+        // U+0392: "Β" GREEK CAPITAL LETTER BETA
+        // U+0393: "Γ" GREEK CAPITAL LETTER GAMMA
+        /* 42 */ "\u0391\u0392\u0393",
+    };
+
     /* Language en: English */
     private static final String[] LANGUAGE_en = {
         // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
@@ -1003,20 +1057,20 @@
         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,
-        /* ~104 */
-        /* 105 */ "q",
-        /* 106 */ "x",
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~107 */
+        /* 108 */ "q",
+        /* 109 */ "x",
         // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
-        /* 107 */ "\u015D",
+        /* 110 */ "\u015D",
         // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX
-        /* 108 */ "\u011D",
+        /* 111 */ "\u011D",
         // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE
-        /* 109 */ "\u016D",
+        /* 112 */ "\u016D",
         // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
-        /* 110 */ "\u0109",
+        /* 113 */ "\u0109",
         // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
-        /* 111 */ "\u0135",
+        /* 114 */ "\u0135",
     };
 
     /* Language es: Spanish */
@@ -1074,25 +1128,25 @@
         /* 8~ */
         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,
-        /* ~47 */
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~48 */
         // U+00A1: "¡" INVERTED EXCLAMATION MARK
         // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 48 */ "!fixedColumnOrder!9,\u00A1,\",\',#,-,:,!,\\,,?,\u00BF,@,&,\\%,+,;,/,(,)",
-        /* 49~ */
+        /* 49 */ "!fixedColumnOrder!9,\u00A1,\",\',#,-,:,!,\\,,?,\u00BF,@,&,\\%,+,;,/,(,)",
+        /* 50~ */
         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,
-        /* ~98 */
+        null, null, null, null, null, null, null,
+        /* ~101 */
         // U+00A1: "¡" INVERTED EXCLAMATION MARK
-        /* 99 */ "!,\u00A1",
-        /* 100 */ null,
+        /* 102 */ "!,\u00A1",
+        /* 103 */ null,
         // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 101 */ "?,\u00BF",
-        /* 102 */ "\"",
-        /* 103 */ "\'",
-        /* 104 */ "\'",
+        /* 104 */ "?,\u00BF",
+        /* 105 */ "\"",
+        /* 106 */ "\'",
+        /* 107 */ "\'",
     };
 
     /* Language et: Estonian */
@@ -1200,15 +1254,22 @@
         /* 0~ */
         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,
-        /* ~42 */
+        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~41 */
+        // Label for "switch to alphabetic" key.
+        // U+0627: "ا" ARABIC LETTER ALEF
+        // U+200C: ZERO WIDTH NON-JOINER
+        // U+0628: "ب" ARABIC LETTER BEH
+        // U+067E: "پ" ARABIC LETTER PEH
+        /* 42 */ "\u0627\u200C\u0628\u200C\u067E",
+        /* 43 */ null,
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
         // <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
-        /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\",\'",
+        /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\",\'",
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
         // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-        /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B",
-        /* 45 */ null,
+        /* 45 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B",
+        /* 46 */ null,
         // U+FDFC: "﷼" RIAL SIGN
         // U+060B: "؋" AFGHANI SIGN
         // U+00A2: "¢" CENT SIGN
@@ -1216,24 +1277,24 @@
         // U+20AC: "€" EURO SIGN
         // U+00A5: "¥" YEN SIGN
         // U+20B1: "₱" PESO SIGN
-        /* 46 */ "\uFDFC",
-        /* 47 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1,\u060B",
+        /* 47 */ "\uFDFC",
+        /* 48 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1,\u060B",
         // U+061F: "؟" ARABIC QUESTION MARK
         // U+060C: "،" ARABIC COMMA
         // U+061B: "؛" ARABIC SEMICOLON
-        /* 48 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(,)",
+        /* 49 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(,)",
         // U+2605: "★" BLACK STAR
         // U+066D: "٭" ARABIC FIVE POINTED STAR
-        /* 49 */ "\u2605,\u066D",
+        /* 50 */ "\u2605,\u066D",
         // U+266A: "♪" EIGHTH NOTE
-        /* 50 */ "\u266A",
-        /* 51 */ null,
+        /* 51 */ "\u266A",
+        /* 52 */ null,
         // The all letters need to be mirrored are found at
         // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
         // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
         // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS
-        /* 52 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
-        /* 53 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[",
+        /* 53 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
+        /* 54 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[",
         // U+2264: "≤" LESS-THAN OR EQUAL TO
         // U+2265: "≥" GREATER-THAN EQUAL TO
         // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
@@ -1249,8 +1310,8 @@
         // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
         // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
         // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-        /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,<|>",
-        /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,>|<",
+        /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,<|>",
+        /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,>|<",
         // U+0655: "ٕ" ARABIC HAMZA BELOW
         // U+0652: "ْ" ARABIC SUKUN
         // U+0651: "ّ" ARABIC SHADDA
@@ -1266,68 +1327,74 @@
         // U+064E: "َ" ARABIC FATHA
         // U+0640: "ـ" ARABIC TATWEEL
         // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
-        /* 56 */ "!fixedColumnOrder!7,\u0655,\u0652,\u0651,\u064C,\u064D,\u064B,\u0654,\u0656,\u0670,\u0653,\u064F,\u0650,\u064E,\u0640\u0640\u0640|\u0640",
-        /* 57 */ "\u064B",
+        /* 57 */ "!fixedColumnOrder!7,\u0655,\u0652,\u0651,\u064C,\u064D,\u064B,\u0654,\u0656,\u0670,\u0653,\u064F,\u0650,\u064E,\u0640\u0640\u0640|\u0640",
+        /* 58 */ "\u064B",
         // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
-        /* 58 */ "\u06F1",
+        /* 59 */ "\u06F1",
         // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
-        /* 59 */ "\u06F2",
+        /* 60 */ "\u06F2",
         // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE
-        /* 60 */ "\u06F3",
+        /* 61 */ "\u06F3",
         // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR
-        /* 61 */ "\u06F4",
+        /* 62 */ "\u06F4",
         // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE
-        /* 62 */ "\u06F5",
+        /* 63 */ "\u06F5",
         // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX
-        /* 63 */ "\u06F6",
+        /* 64 */ "\u06F6",
         // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN
-        /* 64 */ "\u06F7",
+        /* 65 */ "\u06F7",
         // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT
-        /* 65 */ "\u06F8",
+        /* 66 */ "\u06F8",
         // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE
-        /* 66 */ "\u06F9",
+        /* 67 */ "\u06F9",
         // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO
-        /* 67 */ "\u06F0",
-        /* 68 */ "1",
-        /* 69 */ "2",
-        /* 70 */ "3",
-        /* 71 */ "4",
-        /* 72 */ "5",
-        /* 73 */ "6",
-        /* 74 */ "7",
-        /* 75 */ "8",
-        /* 76 */ "9",
+        /* 68 */ "\u06F0",
+        // Label for "switch to symbols" key.
+        // U+061F: "؟" ARABIC QUESTION MARK
+        /* 69 */ "\u06F3\u06F2\u06F1\u061F",
+        // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
+        // part because it'll be appended by the code.
+        /* 70 */ "\u06F3\u06F2\u06F1",
+        /* 71 */ "1",
+        /* 72 */ "2",
+        /* 73 */ "3",
+        /* 74 */ "4",
+        /* 75 */ "5",
+        /* 76 */ "6",
+        /* 77 */ "7",
+        /* 78 */ "8",
+        /* 79 */ "9",
         // U+066B: "٫" ARABIC DECIMAL SEPARATOR
         // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
-        /* 77 */ "0,\u066B,\u066C",
-        /* 78~ */
+        /* 80 */ "0,\u066B,\u066C",
+        /* 81~ */
         null, null, null, null, null, null, null, null, null, null,
-        /* ~87 */
+        /* ~90 */
         // U+060C: "،" ARABIC COMMA
-        /* 88 */ "\u060C",
-        /* 89 */ "\\,",
-        /* 90 */ "\u061F",
-        /* 91 */ "\u061B",
+        /* 91 */ "\u060C",
+        /* 92 */ "\\,",
+        /* 93 */ "\u061F",
+        /* 94 */ "\u061B",
         // U+066A: "٪" ARABIC PERCENT SIGN
-        /* 92 */ "\u066A",
-        /* 93 */ null,
-        /* 94 */ "?",
-        /* 95 */ ";",
+        /* 95 */ "\u066A",
+        /* 96 */ null,
+        /* 97 */ "?",
+        /* 98 */ ";",
         // U+2030: "‰" PER MILLE SIGN
-        /* 96 */ "\\%,\u2030",
+        /* 99 */ "\\%,\u2030",
         // U+060C: "،" ARABIC COMMA
         // U+061B: "؛" ARABIC SEMICOLON
         // U+061F: "؟" ARABIC QUESTION MARK
         // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
         // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-        /* 97 */ "\u060C",
-        /* 98 */ "!",
-        /* 99 */ "!,\\,",
-        /* 100 */ "\u061F",
-        /* 101 */ "\u061F,?",
-        /* 102 */ "\u060C",
+        /* 100 */ "\u060C",
+        /* 101 */ "!",
+        /* 102 */ "!,\\,",
         /* 103 */ "\u061F",
-        /* 104 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB",
+        /* 104 */ "\u061F,?",
+        /* 105 */ "\u060C",
+        /* 106 */ "\u061F",
+        /* 107 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB",
     };
 
     /* Language fi: Finnish */
@@ -1435,44 +1502,56 @@
         /* 0~ */
         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,
-        /* ~45 */
+        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~41 */
+        // Label for "switch to alphabetic" key.
+        // U+0915: "क" DEVANAGARI LETTER KA
+        // U+0916: "ख" DEVANAGARI LETTER KHA
+        // U+0917: "ग" DEVANAGARI LETTER GA
+        /* 42 */ "\u0915\u0916\u0917",
+        /* 43~ */
+        null, null, null, null,
+        /* ~46 */
         // U+20B9: "₹" INDIAN RUPEE SIGN
-        /* 46 */ "\u20B9",
-        /* 47~ */
+        /* 47 */ "\u20B9",
+        /* 48~ */
         null, null, null, null, null, null, null, null, null, null, null,
-        /* ~57 */
+        /* ~58 */
         // U+0967: "१" DEVANAGARI DIGIT ONE
-        /* 58 */ "\u0967",
+        /* 59 */ "\u0967",
         // U+0968: "२" DEVANAGARI DIGIT TWO
-        /* 59 */ "\u0968",
+        /* 60 */ "\u0968",
         // U+0969: "३" DEVANAGARI DIGIT THREE
-        /* 60 */ "\u0969",
+        /* 61 */ "\u0969",
         // U+096A: "४" DEVANAGARI DIGIT FOUR
-        /* 61 */ "\u096A",
+        /* 62 */ "\u096A",
         // U+096B: "५" DEVANAGARI DIGIT FIVE
-        /* 62 */ "\u096B",
+        /* 63 */ "\u096B",
         // U+096C: "६" DEVANAGARI DIGIT SIX
-        /* 63 */ "\u096C",
+        /* 64 */ "\u096C",
         // U+096D: "७" DEVANAGARI DIGIT SEVEN
-        /* 64 */ "\u096D",
+        /* 65 */ "\u096D",
         // U+096E: "८" DEVANAGARI DIGIT EIGHT
-        /* 65 */ "\u096E",
+        /* 66 */ "\u096E",
         // U+096F: "९" DEVANAGARI DIGIT NINE
-        /* 66 */ "\u096F",
+        /* 67 */ "\u096F",
         // U+0966: "०" DEVANAGARI DIGIT ZERO
-        /* 67 */ "\u0966",
-        /* 68 */ "1",
-        /* 69 */ "2",
-        /* 70 */ "3",
-        /* 71 */ "4",
-        /* 72 */ "5",
-        /* 73 */ "6",
-        /* 74 */ "7",
-        /* 75 */ "8",
-        /* 76 */ "9",
-        /* 77 */ "0",
+        /* 68 */ "\u0966",
+        // Label for "switch to symbols" key.
+        /* 69 */ "?\u0967\u0968\u0969",
+        // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
+        // part because it'll be appended by the code.
+        /* 70 */ "\u0967\u0968\u0969",
+        /* 71 */ "1",
+        /* 72 */ "2",
+        /* 73 */ "3",
+        /* 74 */ "4",
+        /* 75 */ "5",
+        /* 76 */ "6",
+        /* 77 */ "7",
+        /* 78 */ "8",
+        /* 79 */ "9",
+        /* 80 */ "0",
     };
 
     /* Language hr: Croatian */
@@ -1660,29 +1739,35 @@
         /* 0~ */
         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,
-        /* ~42 */
+        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~41 */
+        // Label for "switch to alphabetic" key.
+        // U+05D0: "א" HEBREW LETTER ALEF
+        // U+05D1: "ב" HEBREW LETTER BET
+        // U+05D2: "ג" HEBREW LETTER GIMEL
+        /* 42 */ "\u05D0\u05D1\u05D2",
+        /* 43 */ null,
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
         // <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
-        /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB",
+        /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB",
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
         // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-        /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B",
-        /* 45 */ null,
+        /* 45 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B",
+        /* 46 */ null,
         // U+20AA: "₪" NEW SHEQEL SIGN
-        /* 46 */ "\u20AA",
-        /* 47 */ null,
+        /* 47 */ "\u20AA",
         /* 48 */ null,
+        /* 49 */ null,
         // U+2605: "★" BLACK STAR
-        /* 49 */ "\u2605",
-        /* 50 */ null,
+        /* 50 */ "\u2605",
+        /* 51 */ null,
         // U+00B1: "±" PLUS-MINUS SIGN
         // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
-        /* 51 */ "\u00B1,\uFB29",
+        /* 52 */ "\u00B1,\uFB29",
         // The all letters need to be mirrored are found at
         // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
-        /* 52 */ "!fixedColumnOrder!3,<|>,{|},[|]",
-        /* 53 */ "!fixedColumnOrder!3,>|<,}|{,]|[",
+        /* 53 */ "!fixedColumnOrder!3,<|>,{|},[|]",
+        /* 54 */ "!fixedColumnOrder!3,>|<,}|{,]|[",
         // U+2264: "≤" LESS-THAN OR EQUAL TO
         // U+2265: "≥" GREATER-THAN EQUAL TO
         // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
@@ -1698,8 +1783,22 @@
         // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
         // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
         // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-        /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
-        /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
+        /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
+        /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
+    };
+
+    /* Language ka: Georgian */
+    private static final String[] LANGUAGE_ka = {
+        /* 0~ */
+        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,
+        /* ~41 */
+        // Label for "switch to alphabetic" key.
+        // U+10D0: "ა" GEORGIAN LETTER AN
+        // U+10D1: "ბ" GEORGIAN LETTER BAN
+        // U+10D2: "გ" GEORGIAN LETTER GAN
+        /* 42 */ "\u10D0\u10D1\u10D2",
     };
 
     /* Language ky: Kirghiz */
@@ -1733,6 +1832,12 @@
         /* ~39 */
         // U+0451: "ё" CYRILLIC SMALL LETTER IO
         /* 40 */ "\u0451",
+        /* 41 */ null,
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* 42 */ "\u0410\u0411\u0412",
     };
 
     /* Language lt: Lithuanian */
@@ -1933,7 +2038,12 @@
         /* 40 */ "\u0450",
         // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
         /* 41 */ "\u045D",
-        /* 42 */ null,
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* 42 */ "\u0410\u0411\u0412",
+        /* 43 */ null,
         // U+2018: "‘" LEFT SINGLE QUOTATION MARK
         // U+2019: "’" RIGHT SINGLE QUOTATION MARK
         // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
@@ -1944,10 +2054,10 @@
         // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK.
         // <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201E;,&#x201C;,&#x201D;,&#x201F;,&#x00AB;,&#x00BB;</string>
-        /* 43 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB",
+        /* 44 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB",
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK.
         // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-        /* 44 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B",
+        /* 45 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B",
     };
 
     /* Language mn: Mongolian */
@@ -1955,11 +2065,18 @@
         /* 0~ */
         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,
-        /* ~45 */
+        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~41 */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* 42 */ "\u0410\u0411\u0412",
+        /* 43~ */
+        null, null, null, null,
+        /* ~46 */
         // U+20AE: "₮" TUGRIK SIGN
-        /* 46 */ "\u20AE",
+        /* 47 */ "\u20AE",
     };
 
     /* Language nb: Norwegian Bokmål */
@@ -2239,6 +2356,12 @@
         /* ~39 */
         // U+0451: "ё" CYRILLIC SMALL LETTER IO
         /* 40 */ "\u0451",
+        /* 41 */ null,
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* 42 */ "\u0410\u0411\u0412",
     };
 
     /* Language sk: Slovak */
@@ -2388,8 +2511,13 @@
         /* 40 */ "\u0450",
         // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
         /* 41 */ "\u045D",
-        /* 42 */ null,
         // END: More keys definitions for Serbian (Cyrillic)
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* 42 */ "\u0410\u0411\u0412",
+        /* 43 */ null,
         // U+2018: "‘" LEFT SINGLE QUOTATION MARK
         // U+2019: "’" RIGHT SINGLE QUOTATION MARK
         // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
@@ -2400,10 +2528,10 @@
         // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK.
         // <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201E;,&#x201C;,&#x201D;,&#x201F;,&#x00AB;,&#x00BB;</string>
-        /* 43 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB",
+        /* 44 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB",
         // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK.
         // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
-        /* 44 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B",
+        /* 45 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B",
     };
 
     /* Language sv: Swedish */
@@ -2504,11 +2632,18 @@
         /* 0~ */
         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,
-        /* ~45 */
+        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~41 */
+        // Label for "switch to alphabetic" key.
+        // U+0E01: "ก" THAI CHARACTER KO KAI
+        // U+0E02: "ข" THAI CHARACTER KHO KHAI
+        // U+0E04: "ค" THAI CHARACTER KHO KHWAI
+        /* 42 */ "\u0E01\u0E02\u0E04",
+        /* 43~ */
+        null, null, null, null,
+        /* ~46 */
         // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
-        /* 46 */ "\u0E3F",
+        /* 47 */ "\u0E3F",
     };
 
     /* Language tl: Tagalog */
@@ -2636,10 +2771,18 @@
         // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
         /* 35 */ "\u044A",
         /* 36~ */
-        null, null, null, null, null, null, null, null, null, null,
-        /* ~45 */
+        null, null, null, null, null, null,
+        /* ~41 */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* 42 */ "\u0410\u0411\u0412",
+        /* 43~ */
+        null, null, null, null,
+        /* ~46 */
         // U+20B4: "₴" HRYVNIA SIGN
-        /* 46 */ "\u20B4",
+        /* 47 */ "\u20B4",
     };
 
     /* Language vi: Vietnamese */
@@ -2724,10 +2867,10 @@
         /* 10~ */
         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,
-        /* ~45 */
+        null, null, null, null, null, null, null,
+        /* ~46 */
         // U+20AB: "₫" DONG SIGN
-        /* 46 */ "\u20AB",
+        /* 47 */ "\u20AB",
     };
 
     /* Language zu: Zulu */
@@ -2905,10 +3048,12 @@
         "af", LANGUAGE_af, /* Afrikaans */
         "ar", LANGUAGE_ar, /* Arabic */
         "be", LANGUAGE_be, /* Belarusian */
+        "bg", LANGUAGE_bg, /* Bulgarian */
         "ca", LANGUAGE_ca, /* Catalan */
         "cs", LANGUAGE_cs, /* Czech */
         "da", LANGUAGE_da, /* Danish */
         "de", LANGUAGE_de, /* German */
+        "el", LANGUAGE_el, /* Greek */
         "en", LANGUAGE_en, /* English */
         "eo", LANGUAGE_eo, /* Esperanto */
         "es", LANGUAGE_es, /* Spanish */
@@ -2922,6 +3067,7 @@
         "is", LANGUAGE_is, /* Icelandic */
         "it", LANGUAGE_it, /* Italian */
         "iw", LANGUAGE_iw, /* Hebrew */
+        "ka", LANGUAGE_ka, /* Georgian */
         "ky", LANGUAGE_ky, /* Kirghiz */
         "lt", LANGUAGE_lt, /* Lithuanian */
         "lv", LANGUAGE_lv, /* Latvian */
diff --git a/tools/maketext/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl b/tools/maketext/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl
index 00637af..a134923 100644
--- a/tools/maketext/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl
+++ b/tools/maketext/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl
@@ -97,9 +97,6 @@
         "label_done_key",
         "label_previous_key",
         // Other labels.
-        "label_to_alpha_key",
-        "label_to_symbol_key",
-        "label_to_symbol_with_microphone_key",
         "label_pause_key",
         "label_wait_key",
     };
diff --git a/tools/maketext/res/values-ar/donottranslate-more-keys.xml b/tools/maketext/res/values-ar/donottranslate-more-keys.xml
index 8028bb2..c404bed 100644
--- a/tools/maketext/res/values-ar/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-ar/donottranslate-more-keys.xml
@@ -18,6 +18,12 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0623: "ا" ARABIC LETTER ALEF
+         U+200C: ZERO WIDTH NON-JOINER
+         U+0628: "ب" ARABIC LETTER BEH
+         U+062C: "پ" ARABIC LETTER PEH -->
+    <string name="label_to_alpha_key">&#x0623;&#x200C;&#x0628;&#x200C;&#x062C;</string>
     <!-- U+0661: "١" ARABIC-INDIC DIGIT ONE -->
     <string name="keylabel_for_symbols_1">&#x0661;</string>
     <!-- U+0662: "٢" ARABIC-INDIC DIGIT TWO -->
@@ -38,6 +44,12 @@
     <string name="keylabel_for_symbols_9">&#x0669;</string>
     <!-- U+0660: "٠" ARABIC-INDIC DIGIT ZERO -->
     <string name="keylabel_for_symbols_0">&#x0660;</string>
+    <!-- Label for "switch to symbols" key.
+         U+061F: "؟" ARABIC QUESTION MARK -->
+    <string name="label_to_symbol_key">&#x0663;&#x0662;&#x0661;&#x061F;</string>
+    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
+         part because it'll be appended by the code. -->
+    <string name="label_to_symbol_with_microphone_key">&#x0663;&#x0662;&#x0661;</string>
     <string name="additional_more_keys_for_symbols_1">1</string>
     <string name="additional_more_keys_for_symbols_2">2</string>
     <string name="additional_more_keys_for_symbols_3">3</string>
diff --git a/tools/maketext/res/values-be/donottranslate-more-keys.xml b/tools/maketext/res/values-be/donottranslate-more-keys.xml
index a2056e9..c8f2167 100644
--- a/tools/maketext/res/values-be/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-be/donottranslate-more-keys.xml
@@ -32,4 +32,9 @@
     <string name="more_keys_for_cyrillic_ie">&#x0451;</string>
     <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
     <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+    <!-- Label for "switch to alphabetic" key.
+         U+0410: "А" CYRILLIC CAPITAL LETTER A
+         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
+    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
 </resources>
diff --git a/tools/maketext/res/values-bg/donottranslate-more-keys.xml b/tools/maketext/res/values-bg/donottranslate-more-keys.xml
new file mode 100644
index 0000000..e7570df
--- /dev/null
+++ b/tools/maketext/res/values-bg/donottranslate-more-keys.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0410: "А" CYRILLIC CAPITAL LETTER A
+         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
+    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
+</resources>
diff --git a/tools/maketext/res/values-el/donottranslate-more-keys.xml b/tools/maketext/res/values-el/donottranslate-more-keys.xml
new file mode 100644
index 0000000..964dba0
--- /dev/null
+++ b/tools/maketext/res/values-el/donottranslate-more-keys.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0391: "Α" GREEK CAPITAL LETTER ALPHA
+         U+0392: "Β" GREEK CAPITAL LETTER BETA
+         U+0393: "Γ" GREEK CAPITAL LETTER GAMMA -->
+    <string name="label_to_alpha_key">&#x0391;&#x0392;&#x0393;</string>
+</resources>
diff --git a/tools/maketext/res/values-fa/donottranslate-more-keys.xml b/tools/maketext/res/values-fa/donottranslate-more-keys.xml
index 544426c..47f21cc 100644
--- a/tools/maketext/res/values-fa/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-fa/donottranslate-more-keys.xml
@@ -18,6 +18,12 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0627: "ا" ARABIC LETTER ALEF
+         U+200C: ZERO WIDTH NON-JOINER
+         U+0628: "ب" ARABIC LETTER BEH
+         U+067E: "پ" ARABIC LETTER PEH -->
+    <string name="label_to_alpha_key">&#x0627;&#x200C;&#x0628;&#x200C;&#x067E;</string>
     <!-- U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE -->
     <string name="keylabel_for_symbols_1">&#x06F1;</string>
     <!-- U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO -->
@@ -38,6 +44,12 @@
     <string name="keylabel_for_symbols_9">&#x06F9;</string>
     <!-- U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO -->
     <string name="keylabel_for_symbols_0">&#x06F0;</string>
+    <!-- Label for "switch to symbols" key.
+         U+061F: "؟" ARABIC QUESTION MARK -->
+    <string name="label_to_symbol_key">&#x06F3;&#x06F2;&#x06F1;&#x061F;</string>
+    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
+         part because it'll be appended by the code. -->
+    <string name="label_to_symbol_with_microphone_key">&#x06F3;&#x06F2;&#x06F1;</string>
     <string name="additional_more_keys_for_symbols_1">1</string>
     <string name="additional_more_keys_for_symbols_2">2</string>
     <string name="additional_more_keys_for_symbols_3">3</string>
diff --git a/tools/maketext/res/values-hi/donottranslate-more-keys.xml b/tools/maketext/res/values-hi/donottranslate-more-keys.xml
index 00fd5bf..98ad2cb 100644
--- a/tools/maketext/res/values-hi/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-hi/donottranslate-more-keys.xml
@@ -18,6 +18,11 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0915: "क" DEVANAGARI LETTER KA
+         U+0916: "ख" DEVANAGARI LETTER KHA
+         U+0917: "ग" DEVANAGARI LETTER GA -->
+    <string name="label_to_alpha_key">&#x0915;&#x0916;&#x0917;</string>
     <!-- U+0967: "१" DEVANAGARI DIGIT ONE -->
     <string name="keylabel_for_symbols_1">&#x0967;</string>
     <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
@@ -38,6 +43,11 @@
     <string name="keylabel_for_symbols_9">&#x096F;</string>
     <!-- U+0966: "०" DEVANAGARI DIGIT ZERO -->
     <string name="keylabel_for_symbols_0">&#x0966;</string>
+    <!-- Label for "switch to symbols" key. -->
+    <string name="label_to_symbol_key">\?&#x0967;&#x0968;&#x0969;</string>
+    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
+         part because it'll be appended by the code. -->
+    <string name="label_to_symbol_with_microphone_key">&#x0967;&#x0968;&#x0969;</string>
     <string name="additional_more_keys_for_symbols_1">1</string>
     <string name="additional_more_keys_for_symbols_2">2</string>
     <string name="additional_more_keys_for_symbols_3">3</string>
diff --git a/tools/maketext/res/values-iw/donottranslate-more-keys.xml b/tools/maketext/res/values-iw/donottranslate-more-keys.xml
index 4e7ad48..20b4c6a 100644
--- a/tools/maketext/res/values-iw/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-iw/donottranslate-more-keys.xml
@@ -18,6 +18,11 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+05D0: "א" HEBREW LETTER ALEF
+         U+05D1: "ב" HEBREW LETTER BET
+         U+05D2: "ג" HEBREW LETTER GIMEL -->
+    <string name="label_to_alpha_key">&#x05D0;&#x05D1;&#x05D2;</string>
     <!-- U+2605: "★" BLACK STAR -->
     <string name="more_keys_for_star">&#x2605;</string>
     <!-- U+00B1: "±" PLUS-MINUS SIGN
diff --git a/tools/maketext/res/values-ka/donottranslate-more-keys.xml b/tools/maketext/res/values-ka/donottranslate-more-keys.xml
new file mode 100644
index 0000000..c516c59
--- /dev/null
+++ b/tools/maketext/res/values-ka/donottranslate-more-keys.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+10D0: "ა" GEORGIAN LETTER AN
+         U+10D1: "ბ" GEORGIAN LETTER BAN
+         U+10D2: "გ" GEORGIAN LETTER GAN -->
+    <string name="label_to_alpha_key">&#x10D0;&#x10D1;&#x10D2;</string>
+</resources>
diff --git a/tools/maketext/res/values-ky/donottranslate-more-keys.xml b/tools/maketext/res/values-ky/donottranslate-more-keys.xml
index a11ecf9..8d8c5fb 100644
--- a/tools/maketext/res/values-ky/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-ky/donottranslate-more-keys.xml
@@ -38,4 +38,9 @@
     <string name="more_keys_for_cyrillic_o">&#x04E9;</string>
     <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
     <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+    <!-- Label for "switch to alphabetic" key.
+         U+0410: "А" CYRILLIC CAPITAL LETTER A
+         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
+    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
 </resources>
diff --git a/tools/maketext/res/values-mk/donottranslate-more-keys.xml b/tools/maketext/res/values-mk/donottranslate-more-keys.xml
index d0cccf6..d0fa1e4 100644
--- a/tools/maketext/res/values-mk/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-mk/donottranslate-more-keys.xml
@@ -30,6 +30,11 @@
     <string name="more_keys_for_cyrillic_ie">&#x0450;</string>
     <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
     <string name="more_keys_for_cyrillic_i">&#x045D;</string>
+    <!-- Label for "switch to alphabetic" key.
+         U+0410: "А" CYRILLIC CAPITAL LETTER A
+         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
+    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
     <!-- U+2018: "‘" LEFT SINGLE QUOTATION MARK
          U+2019: "’" RIGHT SINGLE QUOTATION MARK
          U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
diff --git a/tools/maketext/res/values-mn/donottranslate-more-keys.xml b/tools/maketext/res/values-mn/donottranslate-more-keys.xml
index c6736e4..fd1853e 100644
--- a/tools/maketext/res/values-mn/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-mn/donottranslate-more-keys.xml
@@ -18,6 +18,11 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0410: "А" CYRILLIC CAPITAL LETTER A
+         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
+    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
     <!-- U+20AE: "₮" TUGRIK SIGN -->
     <string name="keylabel_for_currency_generic">&#x20AE;</string>
 </resources>
diff --git a/tools/maketext/res/values-ru/donottranslate-more-keys.xml b/tools/maketext/res/values-ru/donottranslate-more-keys.xml
index 82bed78..bb47fec 100644
--- a/tools/maketext/res/values-ru/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-ru/donottranslate-more-keys.xml
@@ -32,4 +32,9 @@
     <string name="more_keys_for_cyrillic_ie">&#x0451;</string>
     <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
     <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+    <!-- Label for "switch to alphabetic" key.
+         U+0410: "А" CYRILLIC CAPITAL LETTER A
+         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
+    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
 </resources>
diff --git a/tools/maketext/res/values-sr/donottranslate-more-keys.xml b/tools/maketext/res/values-sr/donottranslate-more-keys.xml
index dcf0e85..c41ca95 100644
--- a/tools/maketext/res/values-sr/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-sr/donottranslate-more-keys.xml
@@ -49,6 +49,11 @@
     <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
     <string name="more_keys_for_cyrillic_i">&#x045D;</string>
     <!-- END: More keys definitions for Serbian (Cyrillic) -->
+    <!-- Label for "switch to alphabetic" key.
+         U+0410: "А" CYRILLIC CAPITAL LETTER A
+         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
+    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
     <!-- U+2018: "‘" LEFT SINGLE QUOTATION MARK
          U+2019: "’" RIGHT SINGLE QUOTATION MARK
          U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
diff --git a/tools/maketext/res/values-th/donottranslate-more-keys.xml b/tools/maketext/res/values-th/donottranslate-more-keys.xml
index 1f2a820..6350d4b 100644
--- a/tools/maketext/res/values-th/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-th/donottranslate-more-keys.xml
@@ -18,6 +18,11 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0E01: "ก" THAI CHARACTER KO KAI
+         U+0E02: "ข" THAI CHARACTER KHO KHAI
+         U+0E04: "ค" THAI CHARACTER KHO KHWAI -->
+    <string name="label_to_alpha_key">&#x0E01;&#x0E02;&#x0E04;</string>
     <!-- U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT -->
     <string name="keylabel_for_currency_generic">&#x0E3F;</string>
 </resources>
diff --git a/tools/maketext/res/values-uk/donottranslate-more-keys.xml b/tools/maketext/res/values-uk/donottranslate-more-keys.xml
index 6df9c0a..09e246b 100644
--- a/tools/maketext/res/values-uk/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-uk/donottranslate-more-keys.xml
@@ -36,4 +36,9 @@
     <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
     <!-- U+20B4: "₴" HRYVNIA SIGN -->
     <string name="keylabel_for_currency_generic">&#x20B4;</string>
+    <!-- Label for "switch to alphabetic" key.
+         U+0410: "А" CYRILLIC CAPITAL LETTER A
+         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
+    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
 </resources>
diff --git a/tools/maketext/res/values/donottranslate-more-keys.xml b/tools/maketext/res/values/donottranslate-more-keys.xml
index 4d8ad10..a5be348 100644
--- a/tools/maketext/res/values/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values/donottranslate-more-keys.xml
@@ -60,6 +60,8 @@
     <string name="keylabel_for_south_slavic_row3_8"></string>
     <string name="more_keys_for_cyrillic_ie"></string>
     <string name="more_keys_for_cyrillic_i"></string>
+    <!-- Label for "switch to alphabetic" key. -->
+    <string name="label_to_alpha_key">ABC</string>
     <string name="more_keys_for_single_quote">!fixedColumnOrder!4,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
     <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
     <!-- <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;</string> -->
@@ -121,6 +123,11 @@
     <string name="keylabel_for_symbols_8">8</string>
     <string name="keylabel_for_symbols_9">9</string>
     <string name="keylabel_for_symbols_0">0</string>
+    <!-- Label for "switch to symbols" key. -->
+    <string name="label_to_symbol_key">\?123</string>
+    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
+         part because it'll be appended by the code. -->
+    <string name="label_to_symbol_with_microphone_key">123</string>
     <string name="additional_more_keys_for_symbols_1"></string>
     <string name="additional_more_keys_for_symbols_2"></string>
     <string name="additional_more_keys_for_symbols_3"></string>