diff --git a/java/res/values-sw540dp/config.xml b/java/res/values-sw540dp/config.xml
index ffba0a2ac91f96301da41dc3aaa1d2c37d5da811..09fe7d3bfbf217d19c8f2c08338e6f0b028ce556 100644
--- a/java/res/values-sw540dp/config.xml
+++ b/java/res/values-sw540dp/config.xml
@@ -29,7 +29,7 @@
     <bool name="config_key_selection_by_dragging_finger">false</bool>
     <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
          false -->
-    <bool name="config_show_more_keys_keyboard_at_touched_point">true</bool>
+    <bool name="config_show_more_keys_keyboard_at_touched_point">false</bool>
 
     <!-- Preferable keyboard height in absolute scale: 48.0mm -->
     <!-- This config_default_keyboard_height value should match with keyboard-heights.xml -->
diff --git a/java/res/xml-sw600dp/key_f1.xml b/java/res/xml-sw600dp/key_f1.xml
index ac0053236c05bb9ed72bacc23505b1ae9c0ab83b..530f7d63ba8774e374e16aa652448ac7c2e17926 100644
--- a/java/res/xml-sw600dp/key_f1.xml
+++ b/java/res/xml-sw600dp/key_f1.xml
@@ -22,35 +22,12 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="symbols"
-            latin:mode="url"
-        >
-            <Key
-                latin:keyLabel=":" />
-        </case>
-        <case
-            latin:keyboardLayoutSetElement="symbols"
-        >
-            <Key
-                latin:keyLabel="\@" />
-        </case>
-        <!-- keyboardLayoutSetElement != "symbols" -->
         <case
             latin:mode="email"
         >
             <Key
                 latin:keyLabel="\@" />
         </case>
-        <case
-            latin:mode="url"
-        >
-            <Key
-                latin:keyLabel="/"
-                latin:keyHintLabel=":"
-                latin:moreKeys=":"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-        </case>
         <default>
             <Key
                 latin:keyLabel="/" />
diff --git a/java/res/xml-sw600dp/keys_comma_period.xml b/java/res/xml-sw600dp/keys_comma_period.xml
index c5de9c80ba0c8a9752c0d159a7da278ab12a2c2f..55302aeab3438ae6747c63d140b3ed0be365fd89 100644
--- a/java/res/xml-sw600dp/keys_comma_period.xml
+++ b/java/res/xml-sw600dp/keys_comma_period.xml
@@ -21,38 +21,18 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <switch>
-        <case
-            latin:mode="email|url"
-        >
-            <Key
-                latin:keyLabel=","
-                latin:keyHintLabel="-"
-                latin:moreKeys="-"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-            <Key
-                latin:keyLabel="."
-                latin:keyHintLabel="_"
-                latin:moreKeys="_"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-        </case>
-        <default>
-            <Key
-                latin:keyLabel="!text/keylabel_for_tablet_comma"
-                latin:keyHintLabel="!text/keyhintlabel_for_tablet_comma"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:moreKeys="!text/more_keys_for_tablet_comma"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-            <Key
-                latin:keyLabel="!text/keylabel_for_tablet_period"
-                latin:keyHintLabel="!text/keyhintlabel_for_tablet_period"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:moreKeys="!text/more_keys_for_tablet_period"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-        </default>
-    </switch>
+    <Key
+        latin:keyLabel="!text/keylabel_for_tablet_comma"
+        latin:keyHintLabel="!text/keyhintlabel_for_tablet_comma"
+        latin:keyLabelFlags="hasPopupHint"
+        latin:moreKeys="!text/more_keys_for_tablet_comma"
+        latin:backgroundType="functional"
+        latin:keyStyle="hasShiftedLetterHintStyle" />
+    <Key
+        latin:keyLabel="!text/keylabel_for_tablet_period"
+        latin:keyHintLabel="!text/keyhintlabel_for_tablet_period"
+        latin:keyLabelFlags="hasPopupHint"
+        latin:moreKeys="!text/more_keys_for_tablet_period"
+        latin:backgroundType="functional"
+        latin:keyStyle="hasShiftedLetterHintStyle" />
 </merge>
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index eb756eeabbaccb10f4621c8f6daccd226082c9ae..39d2689315446be6a9393fa6683e844f0afbcb4c 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -162,102 +162,103 @@ public final class KeyboardTextsSet {
         /* 57 */ "keylabel_for_currency",
         /* 58 */ "more_keys_for_currency",
         /* 59 */ "more_keys_for_punctuation",
-        /* 60 */ "more_keys_for_star",
-        /* 61 */ "more_keys_for_bullet",
-        /* 62 */ "more_keys_for_plus",
-        /* 63 */ "more_keys_for_left_parenthesis",
-        /* 64 */ "more_keys_for_right_parenthesis",
-        /* 65 */ "more_keys_for_less_than",
-        /* 66 */ "more_keys_for_greater_than",
-        /* 67 */ "more_keys_for_arabic_diacritics",
-        /* 68 */ "keylabel_for_symbols_1",
-        /* 69 */ "keylabel_for_symbols_2",
-        /* 70 */ "keylabel_for_symbols_3",
-        /* 71 */ "keylabel_for_symbols_4",
-        /* 72 */ "keylabel_for_symbols_5",
-        /* 73 */ "keylabel_for_symbols_6",
-        /* 74 */ "keylabel_for_symbols_7",
-        /* 75 */ "keylabel_for_symbols_8",
-        /* 76 */ "keylabel_for_symbols_9",
-        /* 77 */ "keylabel_for_symbols_0",
-        /* 78 */ "label_to_symbol_key",
-        /* 79 */ "label_to_symbol_with_microphone_key",
-        /* 80 */ "additional_more_keys_for_symbols_1",
-        /* 81 */ "additional_more_keys_for_symbols_2",
-        /* 82 */ "additional_more_keys_for_symbols_3",
-        /* 83 */ "additional_more_keys_for_symbols_4",
-        /* 84 */ "additional_more_keys_for_symbols_5",
-        /* 85 */ "additional_more_keys_for_symbols_6",
-        /* 86 */ "additional_more_keys_for_symbols_7",
-        /* 87 */ "additional_more_keys_for_symbols_8",
-        /* 88 */ "additional_more_keys_for_symbols_9",
-        /* 89 */ "additional_more_keys_for_symbols_0",
-        /* 90 */ "more_keys_for_symbols_1",
-        /* 91 */ "more_keys_for_symbols_2",
-        /* 92 */ "more_keys_for_symbols_3",
-        /* 93 */ "more_keys_for_symbols_4",
-        /* 94 */ "more_keys_for_symbols_5",
-        /* 95 */ "more_keys_for_symbols_6",
-        /* 96 */ "more_keys_for_symbols_7",
-        /* 97 */ "more_keys_for_symbols_8",
-        /* 98 */ "more_keys_for_symbols_9",
-        /* 99 */ "more_keys_for_symbols_0",
-        /* 100 */ "keylabel_for_comma",
-        /* 101 */ "more_keys_for_comma",
-        /* 102 */ "keylabel_for_tablet_comma",
-        /* 103 */ "keyhintlabel_for_tablet_comma",
-        /* 104 */ "more_keys_for_tablet_comma",
-        /* 105 */ "keylabel_for_period",
-        /* 106 */ "keyhintlabel_for_period",
-        /* 107 */ "more_keys_for_period",
-        /* 108 */ "keylabel_for_tablet_period",
-        /* 109 */ "keyhintlabel_for_tablet_period",
-        /* 110 */ "more_keys_for_tablet_period",
-        /* 111 */ "keylabel_for_symbols_question",
-        /* 112 */ "keylabel_for_symbols_semicolon",
-        /* 113 */ "keylabel_for_symbols_percent",
-        /* 114 */ "more_keys_for_exclamation",
-        /* 115 */ "more_keys_for_question",
-        /* 116 */ "more_keys_for_symbols_semicolon",
-        /* 117 */ "more_keys_for_symbols_percent",
-        /* 118 */ "more_keys_for_q",
-        /* 119 */ "more_keys_for_x",
-        /* 120 */ "keylabel_for_q",
-        /* 121 */ "keylabel_for_w",
-        /* 122 */ "keylabel_for_y",
-        /* 123 */ "keylabel_for_x",
-        /* 124 */ "keylabel_for_spanish_row2_10",
-        /* 125 */ "more_keys_for_am_pm",
-        /* 126 */ "settings_as_more_key",
-        /* 127 */ "shortcut_as_more_key",
-        /* 128 */ "action_next_as_more_key",
-        /* 129 */ "action_previous_as_more_key",
-        /* 130 */ "label_to_more_symbol_key",
-        /* 131 */ "label_to_more_symbol_for_tablet_key",
-        /* 132 */ "label_tab_key",
-        /* 133 */ "label_to_phone_numeric_key",
-        /* 134 */ "label_to_phone_symbols_key",
-        /* 135 */ "label_time_am",
-        /* 136 */ "label_time_pm",
-        /* 137 */ "keylabel_for_popular_domain",
-        /* 138 */ "more_keys_for_popular_domain",
-        /* 139 */ "more_keys_for_smiley",
-        /* 140 */ "single_laqm_raqm",
-        /* 141 */ "single_laqm_raqm_rtl",
-        /* 142 */ "single_raqm_laqm",
-        /* 143 */ "double_laqm_raqm",
-        /* 144 */ "double_laqm_raqm_rtl",
-        /* 145 */ "double_raqm_laqm",
-        /* 146 */ "single_lqm_rqm",
-        /* 147 */ "single_9qm_lqm",
-        /* 148 */ "single_9qm_rqm",
-        /* 149 */ "double_lqm_rqm",
-        /* 150 */ "double_9qm_lqm",
-        /* 151 */ "double_9qm_rqm",
-        /* 152 */ "more_keys_for_single_quote",
-        /* 153 */ "more_keys_for_double_quote",
-        /* 154 */ "more_keys_for_tablet_double_quote",
-        /* 155 */ "emoji_key_as_more_key",
+        /* 60 */ "more_keys_for_tablet_punctuation",
+        /* 61 */ "more_keys_for_star",
+        /* 62 */ "more_keys_for_bullet",
+        /* 63 */ "more_keys_for_plus",
+        /* 64 */ "more_keys_for_left_parenthesis",
+        /* 65 */ "more_keys_for_right_parenthesis",
+        /* 66 */ "more_keys_for_less_than",
+        /* 67 */ "more_keys_for_greater_than",
+        /* 68 */ "more_keys_for_arabic_diacritics",
+        /* 69 */ "keylabel_for_symbols_1",
+        /* 70 */ "keylabel_for_symbols_2",
+        /* 71 */ "keylabel_for_symbols_3",
+        /* 72 */ "keylabel_for_symbols_4",
+        /* 73 */ "keylabel_for_symbols_5",
+        /* 74 */ "keylabel_for_symbols_6",
+        /* 75 */ "keylabel_for_symbols_7",
+        /* 76 */ "keylabel_for_symbols_8",
+        /* 77 */ "keylabel_for_symbols_9",
+        /* 78 */ "keylabel_for_symbols_0",
+        /* 79 */ "label_to_symbol_key",
+        /* 80 */ "label_to_symbol_with_microphone_key",
+        /* 81 */ "additional_more_keys_for_symbols_1",
+        /* 82 */ "additional_more_keys_for_symbols_2",
+        /* 83 */ "additional_more_keys_for_symbols_3",
+        /* 84 */ "additional_more_keys_for_symbols_4",
+        /* 85 */ "additional_more_keys_for_symbols_5",
+        /* 86 */ "additional_more_keys_for_symbols_6",
+        /* 87 */ "additional_more_keys_for_symbols_7",
+        /* 88 */ "additional_more_keys_for_symbols_8",
+        /* 89 */ "additional_more_keys_for_symbols_9",
+        /* 90 */ "additional_more_keys_for_symbols_0",
+        /* 91 */ "more_keys_for_symbols_1",
+        /* 92 */ "more_keys_for_symbols_2",
+        /* 93 */ "more_keys_for_symbols_3",
+        /* 94 */ "more_keys_for_symbols_4",
+        /* 95 */ "more_keys_for_symbols_5",
+        /* 96 */ "more_keys_for_symbols_6",
+        /* 97 */ "more_keys_for_symbols_7",
+        /* 98 */ "more_keys_for_symbols_8",
+        /* 99 */ "more_keys_for_symbols_9",
+        /* 100 */ "more_keys_for_symbols_0",
+        /* 101 */ "keylabel_for_comma",
+        /* 102 */ "more_keys_for_comma",
+        /* 103 */ "keylabel_for_tablet_comma",
+        /* 104 */ "keyhintlabel_for_tablet_comma",
+        /* 105 */ "more_keys_for_tablet_comma",
+        /* 106 */ "keylabel_for_period",
+        /* 107 */ "keyhintlabel_for_period",
+        /* 108 */ "more_keys_for_period",
+        /* 109 */ "keylabel_for_tablet_period",
+        /* 110 */ "keyhintlabel_for_tablet_period",
+        /* 111 */ "more_keys_for_tablet_period",
+        /* 112 */ "keylabel_for_symbols_question",
+        /* 113 */ "keylabel_for_symbols_semicolon",
+        /* 114 */ "keylabel_for_symbols_percent",
+        /* 115 */ "more_keys_for_exclamation",
+        /* 116 */ "more_keys_for_question",
+        /* 117 */ "more_keys_for_symbols_semicolon",
+        /* 118 */ "more_keys_for_symbols_percent",
+        /* 119 */ "more_keys_for_q",
+        /* 120 */ "more_keys_for_x",
+        /* 121 */ "keylabel_for_q",
+        /* 122 */ "keylabel_for_w",
+        /* 123 */ "keylabel_for_y",
+        /* 124 */ "keylabel_for_x",
+        /* 125 */ "keylabel_for_spanish_row2_10",
+        /* 126 */ "more_keys_for_am_pm",
+        /* 127 */ "settings_as_more_key",
+        /* 128 */ "shortcut_as_more_key",
+        /* 129 */ "action_next_as_more_key",
+        /* 130 */ "action_previous_as_more_key",
+        /* 131 */ "label_to_more_symbol_key",
+        /* 132 */ "label_to_more_symbol_for_tablet_key",
+        /* 133 */ "label_tab_key",
+        /* 134 */ "label_to_phone_numeric_key",
+        /* 135 */ "label_to_phone_symbols_key",
+        /* 136 */ "label_time_am",
+        /* 137 */ "label_time_pm",
+        /* 138 */ "keylabel_for_popular_domain",
+        /* 139 */ "more_keys_for_popular_domain",
+        /* 140 */ "more_keys_for_smiley",
+        /* 141 */ "single_laqm_raqm",
+        /* 142 */ "single_laqm_raqm_rtl",
+        /* 143 */ "single_raqm_laqm",
+        /* 144 */ "double_laqm_raqm",
+        /* 145 */ "double_laqm_raqm_rtl",
+        /* 146 */ "double_raqm_laqm",
+        /* 147 */ "single_lqm_rqm",
+        /* 148 */ "single_9qm_lqm",
+        /* 149 */ "single_9qm_rqm",
+        /* 150 */ "double_lqm_rqm",
+        /* 151 */ "double_9qm_lqm",
+        /* 152 */ "double_9qm_rqm",
+        /* 153 */ "more_keys_for_single_quote",
+        /* 154 */ "more_keys_for_double_quote",
+        /* 155 */ "more_keys_for_tablet_double_quote",
+        /* 156 */ "emoji_key_as_more_key",
     };
 
     private static final String EMPTY = "";
@@ -285,130 +286,130 @@ public final class KeyboardTextsSet {
         /* 57 */ "$",
         /* 58 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1",
         /* 59 */ "!fixedColumnOrder!8,;,/,(,),#,!,\\,,?,&,\\%,+,\",-,:,',@",
+        /* 60 */ "!fixedColumnOrder!7,;,/,(,),#,',\\,,&,\\%,+,\",-,:,@",
         // U+2020: "†" DAGGER
         // U+2021: "‡" DOUBLE DAGGER
         // U+2605: "★" BLACK STAR
-        /* 60 */ "\u2020,\u2021,\u2605",
+        /* 61 */ "\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
-        /* 61 */ "\u266A,\u2665,\u2660,\u2666,\u2663",
+        /* 62 */ "\u266A,\u2665,\u2660,\u2666,\u2663",
         // U+00B1: "±" PLUS-MINUS SIGN
-        /* 62 */ "\u00B1",
+        /* 63 */ "\u00B1",
         // The all letters need to be mirrored are found at
         // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
-        /* 63 */ "!fixedColumnOrder!3,<,{,[",
-        /* 64 */ "!fixedColumnOrder!3,>,},]",
+        /* 64 */ "!fixedColumnOrder!3,<,{,[",
+        /* 65 */ "!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
         // U+2265: "≥" GREATER-THAN EQUAL TO
         // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
         // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-        /* 65 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB",
-        /* 66 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB",
-        /* 67 */ EMPTY,
-        /* 68 */ "1",
-        /* 69 */ "2",
-        /* 70 */ "3",
-        /* 71 */ "4",
-        /* 72 */ "5",
-        /* 73 */ "6",
-        /* 74 */ "7",
-        /* 75 */ "8",
-        /* 76 */ "9",
-        /* 77 */ "0",
+        /* 66 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB",
+        /* 67 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB",
+        /* 68 */ EMPTY,
+        /* 69 */ "1",
+        /* 70 */ "2",
+        /* 71 */ "3",
+        /* 72 */ "4",
+        /* 73 */ "5",
+        /* 74 */ "6",
+        /* 75 */ "7",
+        /* 76 */ "8",
+        /* 77 */ "9",
+        /* 78 */ "0",
         // Label for "switch to symbols" key.
-        /* 78 */ "?123",
+        /* 79 */ "?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.
-        /* 79 */ "123",
-        /* 80~ */
+        /* 80 */ "123",
+        /* 81~ */
         EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        /* ~89 */
+        /* ~90 */
         // 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
-        /* 90 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B",
+        /* 91 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B",
         // U+00B2: "²" SUPERSCRIPT TWO
         // U+2154: "â…”" VULGAR FRACTION TWO THIRDS
-        /* 91 */ "\u00B2,\u2154",
+        /* 92 */ "\u00B2,\u2154",
         // U+00B3: "³" SUPERSCRIPT THREE
         // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
         // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
-        /* 92 */ "\u00B3,\u00BE,\u215C",
+        /* 93 */ "\u00B3,\u00BE,\u215C",
         // U+2074: "⁴" SUPERSCRIPT FOUR
-        /* 93 */ "\u2074",
+        /* 94 */ "\u2074",
         // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
-        /* 94 */ "\u215D",
-        /* 95 */ EMPTY,
+        /* 95 */ "\u215D",
+        /* 96 */ EMPTY,
         // U+215E: "â…ž" VULGAR FRACTION SEVEN EIGHTHS
-        /* 96 */ "\u215E",
-        /* 97 */ EMPTY,
+        /* 97 */ "\u215E",
         /* 98 */ EMPTY,
+        /* 99 */ EMPTY,
         // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
         // U+2205: "∅" EMPTY SET
-        /* 99 */ "\u207F,\u2205",
+        /* 100 */ "\u207F,\u2205",
         // Comma key
-        /* 100 */ ",",
-        /* 101 */ EMPTY,
-        /* 102 */ ",",
-        /* 103 */ EMPTY,
+        /* 101 */ ",",
+        /* 102 */ EMPTY,
+        /* 103 */ ",",
         /* 104 */ EMPTY,
+        /* 105 */ EMPTY,
         // Period key
-        /* 105 */ ".",
-        /* 106 */ EMPTY,
-        /* 107 */ "!text/more_keys_for_punctuation",
-        /* 108 */ ".",
-        /* 109 */ EMPTY,
-        // U+2026: "…" HORIZONTAL ELLIPSIS
-        /* 110 */ "\u2026",
-        /* 111 */ "?",
-        /* 112 */ ";",
-        /* 113 */ "%",
+        /* 106 */ ".",
+        /* 107 */ EMPTY,
+        /* 108 */ "!text/more_keys_for_punctuation",
+        /* 109 */ ".",
+        /* 110 */ EMPTY,
+        /* 111 */ "!text/more_keys_for_tablet_punctuation",
+        /* 112 */ "?",
+        /* 113 */ ";",
+        /* 114 */ "%",
         // U+00A1: "¡" INVERTED EXCLAMATION MARK
-        /* 114 */ "\u00A1",
+        /* 115 */ "\u00A1",
         // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 115 */ "\u00BF",
-        /* 116 */ EMPTY,
+        /* 116 */ "\u00BF",
+        /* 117 */ EMPTY,
         // U+2030: "‰" PER MILLE SIGN
-        /* 117 */ "\u2030",
-        /* 118 */ EMPTY,
+        /* 118 */ "\u2030",
         /* 119 */ EMPTY,
-        /* 120 */ "q",
-        /* 121 */ "w",
-        /* 122 */ "y",
-        /* 123 */ "x",
-        /* 124 */ EMPTY,
-        /* 125 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm",
-        /* 126 */ "!icon/settings_key|!code/key_settings",
-        /* 127 */ "!icon/shortcut_key|!code/key_shortcut",
-        /* 128 */ "!hasLabels!,!text/label_next_key|!code/key_action_next",
-        /* 129 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous",
+        /* 120 */ EMPTY,
+        /* 121 */ "q",
+        /* 122 */ "w",
+        /* 123 */ "y",
+        /* 124 */ "x",
+        /* 125 */ EMPTY,
+        /* 126 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm",
+        /* 127 */ "!icon/settings_key|!code/key_settings",
+        /* 128 */ "!icon/shortcut_key|!code/key_shortcut",
+        /* 129 */ "!hasLabels!,!text/label_next_key|!code/key_action_next",
+        /* 130 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous",
         // Label for "switch to more symbol" modifier key.  Must be short to fit on key!
-        /* 130 */ "= \\ <",
+        /* 131 */ "= \\ <",
         // Label for "switch to more symbol" modifier key on tablets.  Must be short to fit on key!
-        /* 131 */ "~ [ <",
+        /* 132 */ "~ [ <",
         // Label for "Tab" key.  Must be short to fit on key!
-        /* 132 */ "Tab",
+        /* 133 */ "Tab",
         // Label for "switch to phone numeric" key.  Must be short to fit on key!
-        /* 133 */ "123",
+        /* 134 */ "123",
         // Label for "switch to phone symbols" key.  Must be short to fit on key!
         // U+FF0A: "*" FULLWIDTH ASTERISK
         // U+FF03: "#" FULLWIDTH NUMBER SIGN
-        /* 134 */ "\uFF0A\uFF03",
+        /* 135 */ "\uFF0A\uFF03",
         // Key label for "ante meridiem"
-        /* 135 */ "AM",
+        /* 136 */ "AM",
         // Key label for "post meridiem"
-        /* 136 */ "PM",
-        /* 137 */ ".com",
+        /* 137 */ "PM",
+        /* 138 */ ".com",
         // popular web domains for the locale - most popular, displayed on the keyboard
-        /* 138 */ "!hasLabels!,.net,.org,.gov,.edu",
-        /* 139 */ "!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ ",
+        /* 139 */ "!hasLabels!,.net,.org,.gov,.edu",
+        /* 140 */ "!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ ",
         // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
         // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
         // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
@@ -430,25 +431,25 @@ public final class KeyboardTextsSet {
         // The following each quotation mark pair consist of
         // <opening quotation mark>, <closing quotation mark>
         // and is named after (single|double)_<opening quotation mark>_<closing quotation mark>.
-        /* 140 */ "\u2039,\u203A",
-        /* 141 */ "\u2039|\u203A,\u203A|\u2039",
-        /* 142 */ "\u203A,\u2039",
-        /* 143 */ "\u00AB,\u00BB",
-        /* 144 */ "\u00AB|\u00BB,\u00BB|\u00AB",
-        /* 145 */ "\u00BB,\u00AB",
+        /* 141 */ "\u2039,\u203A",
+        /* 142 */ "\u2039|\u203A,\u203A|\u2039",
+        /* 143 */ "\u203A,\u2039",
+        /* 144 */ "\u00AB,\u00BB",
+        /* 145 */ "\u00AB|\u00BB,\u00BB|\u00AB",
+        /* 146 */ "\u00BB,\u00AB",
         // The following each quotation mark triplet consists of
         // <another quotation mark>, <opening quotation mark>, <closing quotation mark>
         // and is named after (single|double)_<opening quotation mark>_<closing quotation mark>.
-        /* 146 */ "\u201A,\u2018,\u2019",
-        /* 147 */ "\u2019,\u201A,\u2018",
-        /* 148 */ "\u2018,\u201A,\u2019",
-        /* 149 */ "\u201E,\u201C,\u201D",
-        /* 150 */ "\u201D,\u201E,\u201C",
-        /* 151 */ "\u201C,\u201E,\u201D",
-        /* 152 */ "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes",
-        /* 153 */ "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes",
-        /* 154 */ "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes",
-        /* 155 */ "!icon/emoji_key|!code/key_emoji",
+        /* 147 */ "\u201A,\u2018,\u2019",
+        /* 148 */ "\u2019,\u201A,\u2018",
+        /* 149 */ "\u2018,\u201A,\u2019",
+        /* 150 */ "\u201E,\u201C,\u201D",
+        /* 151 */ "\u201D,\u201E,\u201C",
+        /* 152 */ "\u201C,\u201E,\u201D",
+        /* 153 */ "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes",
+        /* 154 */ "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes",
+        /* 155 */ "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes",
+        /* 156 */ "!icon/emoji_key|!code/key_emoji",
     };
 
     /* Language af: Afrikaans */
@@ -526,26 +527,27 @@ public final class KeyboardTextsSet {
         null, null, null,
         /* ~58 */
         /* 59 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(|),)|(",
+        /* 60 */ null,
         // U+2605: "★" BLACK STAR
         // U+066D: "Ù­" ARABIC FIVE POINTED STAR
-        /* 60 */ "\u2605,\u066D",
+        /* 61 */ "\u2605,\u066D",
         // U+266A: "♪" EIGHTH NOTE
-        /* 61 */ "\u266A",
-        /* 62 */ null,
+        /* 62 */ "\u266A",
+        /* 63 */ 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
-        /* 63 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
-        /* 64 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[",
+        /* 64 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
+        /* 65 */ "!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
         // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
         // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
         // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-        /* 65 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
-        /* 66 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
+        /* 66 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
+        /* 67 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
         // U+0655: "Ù•" ARABIC HAMZA BELOW
         // U+0654: "Ù”" ARABIC HAMZA ABOVE
         // U+0652: "Ù’" ARABIC SUKUN
@@ -562,74 +564,74 @@ public final class KeyboardTextsSet {
         // U+0640: "Ù€" ARABIC TATWEEL
         // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
         // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly.
-        /* 67 */ "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064D|\u064D, \u064C|\u064C, \u064B|\u064B, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064F|\u064F, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
+        /* 68 */ "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064D|\u064D, \u064C|\u064C, \u064B|\u064B, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064F|\u064F, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
         // U+0661: "Ù¡" ARABIC-INDIC DIGIT ONE
-        /* 68 */ "\u0661",
+        /* 69 */ "\u0661",
         // U+0662: "Ù¢" ARABIC-INDIC DIGIT TWO
-        /* 69 */ "\u0662",
+        /* 70 */ "\u0662",
         // U+0663: "Ù£" ARABIC-INDIC DIGIT THREE
-        /* 70 */ "\u0663",
+        /* 71 */ "\u0663",
         // U+0664: "Ù¤" ARABIC-INDIC DIGIT FOUR
-        /* 71 */ "\u0664",
+        /* 72 */ "\u0664",
         // U+0665: "Ù¥" ARABIC-INDIC DIGIT FIVE
-        /* 72 */ "\u0665",
+        /* 73 */ "\u0665",
         // U+0666: "Ù¦" ARABIC-INDIC DIGIT SIX
-        /* 73 */ "\u0666",
+        /* 74 */ "\u0666",
         // U+0667: "Ù§" ARABIC-INDIC DIGIT SEVEN
-        /* 74 */ "\u0667",
+        /* 75 */ "\u0667",
         // U+0668: "Ù¨" ARABIC-INDIC DIGIT EIGHT
-        /* 75 */ "\u0668",
+        /* 76 */ "\u0668",
         // U+0669: "Ù©" ARABIC-INDIC DIGIT NINE
-        /* 76 */ "\u0669",
+        /* 77 */ "\u0669",
         // U+0660: "Ù " ARABIC-INDIC DIGIT ZERO
-        /* 77 */ "\u0660",
+        /* 78 */ "\u0660",
         // Label for "switch to symbols" key.
         // U+061F: "ØŸ" ARABIC QUESTION MARK
-        /* 78 */ "\u0663\u0662\u0661\u061F",
+        /* 79 */ "\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.
-        /* 79 */ "\u0663\u0662\u0661",
-        /* 80 */ "1",
-        /* 81 */ "2",
-        /* 82 */ "3",
-        /* 83 */ "4",
-        /* 84 */ "5",
-        /* 85 */ "6",
-        /* 86 */ "7",
-        /* 87 */ "8",
-        /* 88 */ "9",
+        /* 80 */ "\u0663\u0662\u0661",
+        /* 81 */ "1",
+        /* 82 */ "2",
+        /* 83 */ "3",
+        /* 84 */ "4",
+        /* 85 */ "5",
+        /* 86 */ "6",
+        /* 87 */ "7",
+        /* 88 */ "8",
+        /* 89 */ "9",
         // U+066B: "Ù«" ARABIC DECIMAL SEPARATOR
         // U+066C: "Ù¬" ARABIC THOUSANDS SEPARATOR
-        /* 89 */ "0,\u066B,\u066C",
-        /* 90~ */
+        /* 90 */ "0,\u066B,\u066C",
+        /* 91~ */
         null, null, null, null, null, null, null, null, null, null,
-        /* ~99 */
+        /* ~100 */
         // U+060C: "،" ARABIC COMMA
-        /* 100 */ "\u060C",
-        /* 101 */ "\\,",
+        /* 101 */ "\u060C",
+        /* 102 */ "\\,",
         // U+061F: "ØŸ" ARABIC QUESTION MARK
         // U+060C: "،" ARABIC COMMA
         // U+061B: "Ø›" ARABIC SEMICOLON
-        /* 102 */ "\u060C",
-        /* 103 */ "\u061F",
-        /* 104 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'",
-        /* 105 */ null,
+        /* 103 */ "\u060C",
+        /* 104 */ "\u061F",
+        /* 105 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'",
+        /* 106 */ null,
         // U+0651: "Ù‘" ARABIC SHADDA
-        /* 106 */ "\u0651",
-        /* 107 */ "!text/more_keys_for_arabic_diacritics",
-        /* 108 */ null,
-        /* 109 */ "\u0651",
-        /* 110 */ "!text/more_keys_for_arabic_diacritics",
-        /* 111 */ "\u061F",
-        /* 112 */ "\u061B",
+        /* 107 */ "\u0651",
+        /* 108 */ "!text/more_keys_for_arabic_diacritics",
+        /* 109 */ null,
+        /* 110 */ "\u0651",
+        /* 111 */ "!text/more_keys_for_arabic_diacritics",
+        /* 112 */ "\u061F",
+        /* 113 */ "\u061B",
         // U+066A: "Ùª" ARABIC PERCENT SIGN
-        /* 113 */ "\u066A",
-        /* 114 */ null,
+        /* 114 */ "\u066A",
+        /* 115 */ null,
         // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 115 */ "?,\u00BF",
-        /* 116 */ ";",
+        /* 116 */ "?,\u00BF",
+        /* 117 */ ";",
         // U+2030: "‰" PER MILLE SIGN
-        /* 117 */ "\\%,\u2030",
+        /* 118 */ "\\%,\u2030",
     };
 
     /* Language az: Azerbaijani */
@@ -799,19 +801,16 @@ public final class KeyboardTextsSet {
         /* ~58 */
         // U+00B7: "·" MIDDLE DOT
         /* 59 */ "!fixedColumnOrder!9,;,/,(,),#,\u00B7,!,\\,,?,&,\\%,+,\",-,:,',@",
-        /* 60~ */
+        /* 60 */ "!fixedColumnOrder!8,;,/,(,),#,\u00B7,',\\,,&,\\%,+,\",-,:,@",
+        /* 61~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null,
-        /* ~106 */
-        /* 107 */ "?,\u00B7",
-        /* 108~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null,
-        /* ~123 */
+        null, null, null, null,
+        /* ~124 */
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        /* 124 */ "\u00E7",
+        /* 125 */ "\u00E7",
     };
 
     /* Language cs: Czech */
@@ -1210,20 +1209,20 @@ public final class KeyboardTextsSet {
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null,
-        /* ~117 */
-        /* 118 */ "q",
-        /* 119 */ "x",
+        null, null, null, null, null, null, null, null, null,
+        /* ~118 */
+        /* 119 */ "q",
+        /* 120 */ "x",
         // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
-        /* 120 */ "\u015D",
+        /* 121 */ "\u015D",
         // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX
-        /* 121 */ "\u011D",
+        /* 122 */ "\u011D",
         // U+016D: "Å­" LATIN SMALL LETTER U WITH BREVE
-        /* 122 */ "\u016D",
+        /* 123 */ "\u016D",
         // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
-        /* 123 */ "\u0109",
+        /* 124 */ "\u0109",
         // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
-        /* 124 */ "\u0135",
+        /* 125 */ "\u0135",
     };
 
     /* Language es: Spanish */
@@ -1292,10 +1291,10 @@ public final class KeyboardTextsSet {
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null,
-        /* ~123 */
+        null, null, null, null, null,
+        /* ~124 */
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* 124 */ "\u00F1",
+        /* 125 */ "\u00F1",
     };
 
     /* Language et: Estonian */
@@ -1430,26 +1429,27 @@ public final class KeyboardTextsSet {
         // U+060C: "،" ARABIC COMMA
         // U+061B: "Ø›" ARABIC SEMICOLON
         /* 59 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(|),)|(",
+        /* 60 */ null,
         // U+2605: "★" BLACK STAR
         // U+066D: "Ù­" ARABIC FIVE POINTED STAR
-        /* 60 */ "\u2605,\u066D",
+        /* 61 */ "\u2605,\u066D",
         // U+266A: "♪" EIGHTH NOTE
-        /* 61 */ "\u266A",
-        /* 62 */ null,
+        /* 62 */ "\u266A",
+        /* 63 */ 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
-        /* 63 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
-        /* 64 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[",
+        /* 64 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
+        /* 65 */ "!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
         // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
         // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
         // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-        /* 65 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,<|>",
-        /* 66 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,>|<",
+        /* 66 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,<|>",
+        /* 67 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,>|<",
         // U+0655: "Ù•" ARABIC HAMZA BELOW
         // U+0652: "Ù’" ARABIC SUKUN
         // U+0651: "Ù‘" ARABIC SHADDA
@@ -1466,75 +1466,75 @@ public final class KeyboardTextsSet {
         // U+0640: "Ù€" ARABIC TATWEEL
         // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
         // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly.
-        /* 67 */ "!fixedColumnOrder!7, \u0655|\u0655, \u0652|\u0652, \u0651|\u0651, \u064C|\u064C, \u064D|\u064D, \u064B|\u064B, \u0654|\u0654, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u064F|\u064F, \u0650|\u0650, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
+        /* 68 */ "!fixedColumnOrder!7, \u0655|\u0655, \u0652|\u0652, \u0651|\u0651, \u064C|\u064C, \u064D|\u064D, \u064B|\u064B, \u0654|\u0654, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u064F|\u064F, \u0650|\u0650, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
         // U+06F1: "Û±" EXTENDED ARABIC-INDIC DIGIT ONE
-        /* 68 */ "\u06F1",
+        /* 69 */ "\u06F1",
         // U+06F2: "Û²" EXTENDED ARABIC-INDIC DIGIT TWO
-        /* 69 */ "\u06F2",
+        /* 70 */ "\u06F2",
         // U+06F3: "Û³" EXTENDED ARABIC-INDIC DIGIT THREE
-        /* 70 */ "\u06F3",
+        /* 71 */ "\u06F3",
         // U+06F4: "Û´" EXTENDED ARABIC-INDIC DIGIT FOUR
-        /* 71 */ "\u06F4",
+        /* 72 */ "\u06F4",
         // U+06F5: "Ûµ" EXTENDED ARABIC-INDIC DIGIT FIVE
-        /* 72 */ "\u06F5",
+        /* 73 */ "\u06F5",
         // U+06F6: "Û¶" EXTENDED ARABIC-INDIC DIGIT SIX
-        /* 73 */ "\u06F6",
+        /* 74 */ "\u06F6",
         // U+06F7: "Û·" EXTENDED ARABIC-INDIC DIGIT SEVEN
-        /* 74 */ "\u06F7",
+        /* 75 */ "\u06F7",
         // U+06F8: "Û¸" EXTENDED ARABIC-INDIC DIGIT EIGHT
-        /* 75 */ "\u06F8",
+        /* 76 */ "\u06F8",
         // U+06F9: "Û¹" EXTENDED ARABIC-INDIC DIGIT NINE
-        /* 76 */ "\u06F9",
+        /* 77 */ "\u06F9",
         // U+06F0: "Û°" EXTENDED ARABIC-INDIC DIGIT ZERO
-        /* 77 */ "\u06F0",
+        /* 78 */ "\u06F0",
         // Label for "switch to symbols" key.
         // U+061F: "ØŸ" ARABIC QUESTION MARK
-        /* 78 */ "\u06F3\u06F2\u06F1\u061F",
+        /* 79 */ "\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.
-        /* 79 */ "\u06F3\u06F2\u06F1",
-        /* 80 */ "1",
-        /* 81 */ "2",
-        /* 82 */ "3",
-        /* 83 */ "4",
-        /* 84 */ "5",
-        /* 85 */ "6",
-        /* 86 */ "7",
-        /* 87 */ "8",
-        /* 88 */ "9",
+        /* 80 */ "\u06F3\u06F2\u06F1",
+        /* 81 */ "1",
+        /* 82 */ "2",
+        /* 83 */ "3",
+        /* 84 */ "4",
+        /* 85 */ "5",
+        /* 86 */ "6",
+        /* 87 */ "7",
+        /* 88 */ "8",
+        /* 89 */ "9",
         // U+066B: "Ù«" ARABIC DECIMAL SEPARATOR
         // U+066C: "Ù¬" ARABIC THOUSANDS SEPARATOR
-        /* 89 */ "0,\u066B,\u066C",
-        /* 90~ */
+        /* 90 */ "0,\u066B,\u066C",
+        /* 91~ */
         null, null, null, null, null, null, null, null, null, null,
-        /* ~99 */
+        /* ~100 */
         // U+060C: "،" ARABIC COMMA
-        /* 100 */ "\u060C",
-        /* 101 */ "\\,",
+        /* 101 */ "\u060C",
+        /* 102 */ "\\,",
         // 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
-        /* 102 */ "\u060C",
-        /* 103 */ "\u061F",
-        /* 104 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB",
-        /* 105 */ null,
-        /* 106 */ "\u061F",
-        /* 107 */ "\u061F,?",
-        /* 108 */ null,
-        /* 109 */ "\u064B",
-        /* 110 */ "!text/more_keys_for_arabic_diacritics",
-        /* 111 */ "\u061F",
-        /* 112 */ "\u061B",
+        /* 103 */ "\u060C",
+        /* 104 */ "\u061F",
+        /* 105 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB",
+        /* 106 */ null,
+        /* 107 */ "\u061F",
+        /* 108 */ "!text/more_keys_for_arabic_diacritics",
+        /* 109 */ null,
+        /* 110 */ "\u064B",
+        /* 111 */ "!text/more_keys_for_arabic_diacritics",
+        /* 112 */ "\u061F",
+        /* 113 */ "\u061B",
         // U+066A: "Ùª" ARABIC PERCENT SIGN
-        /* 113 */ "\u066A",
-        /* 114 */ null,
+        /* 114 */ "\u066A",
+        /* 115 */ null,
         // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 115 */ "?,\u00BF",
-        /* 116 */ ";",
+        /* 116 */ "?,\u00BF",
+        /* 117 */ ";",
         // U+2030: "‰" PER MILLE SIGN
-        /* 117 */ "\\%,\u2030",
+        /* 118 */ "\\%,\u2030",
     };
 
     /* Language fi: Finnish */
@@ -1673,43 +1673,43 @@ public final class KeyboardTextsSet {
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* 57 */ "\u20B9",
         /* 58~ */
-        null, null, null, null, null, null, null, null, null, null,
-        /* ~67 */
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~68 */
         // U+0967: "१" DEVANAGARI DIGIT ONE
-        /* 68 */ "\u0967",
+        /* 69 */ "\u0967",
         // U+0968: "२" DEVANAGARI DIGIT TWO
-        /* 69 */ "\u0968",
+        /* 70 */ "\u0968",
         // U+0969: "३" DEVANAGARI DIGIT THREE
-        /* 70 */ "\u0969",
+        /* 71 */ "\u0969",
         // U+096A: "४" DEVANAGARI DIGIT FOUR
-        /* 71 */ "\u096A",
+        /* 72 */ "\u096A",
         // U+096B: "५" DEVANAGARI DIGIT FIVE
-        /* 72 */ "\u096B",
+        /* 73 */ "\u096B",
         // U+096C: "६" DEVANAGARI DIGIT SIX
-        /* 73 */ "\u096C",
+        /* 74 */ "\u096C",
         // U+096D: "७" DEVANAGARI DIGIT SEVEN
-        /* 74 */ "\u096D",
+        /* 75 */ "\u096D",
         // U+096E: "८" DEVANAGARI DIGIT EIGHT
-        /* 75 */ "\u096E",
+        /* 76 */ "\u096E",
         // U+096F: "९" DEVANAGARI DIGIT NINE
-        /* 76 */ "\u096F",
+        /* 77 */ "\u096F",
         // U+0966: "०" DEVANAGARI DIGIT ZERO
-        /* 77 */ "\u0966",
+        /* 78 */ "\u0966",
         // Label for "switch to symbols" key.
-        /* 78 */ "?\u0967\u0968\u0969",
+        /* 79 */ "?\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.
-        /* 79 */ "\u0967\u0968\u0969",
-        /* 80 */ "1",
-        /* 81 */ "2",
-        /* 82 */ "3",
-        /* 83 */ "4",
-        /* 84 */ "5",
-        /* 85 */ "6",
-        /* 86 */ "7",
-        /* 87 */ "8",
-        /* 88 */ "9",
-        /* 89 */ "0",
+        /* 80 */ "\u0967\u0968\u0969",
+        /* 81 */ "1",
+        /* 82 */ "2",
+        /* 83 */ "3",
+        /* 84 */ "4",
+        /* 85 */ "5",
+        /* 86 */ "6",
+        /* 87 */ "7",
+        /* 88 */ "8",
+        /* 89 */ "9",
+        /* 90 */ "0",
     };
 
     /* Language hr: Croatian */
@@ -1823,32 +1823,32 @@ public final class KeyboardTextsSet {
         /* 60~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~101 */
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~102 */
         // U+058F: "֏" ARMENIAN DRAM SIGN
         // TODO: Enable this when we have glyph for the following letter
         // <string name="keylabel_for_currency">&#x058F;</string>
         // 
         // U+055D: "՝" ARMENIAN COMMA
-        /* 102 */ "\u055D",
-        /* 103 */ null,
+        /* 103 */ "\u055D",
         /* 104 */ null,
+        /* 105 */ null,
         // U+0589: "Ö‰" ARMENIAN FULL STOP
-        /* 105 */ "\u0589",
-        /* 106 */ null,
+        /* 106 */ "\u0589",
         /* 107 */ null,
-        /* 108 */ "\u0589",
-        /* 109 */ null,
-        /* 110 */ "!text/more_keys_for_punctuation",
-        /* 111~ */
+        /* 108 */ null,
+        /* 109 */ "\u0589",
+        /* 110 */ null,
+        /* 111 */ "!text/more_keys_for_punctuation",
+        /* 112~ */
         null, null, null,
-        /* ~113 */
+        /* ~114 */
         // U+055C: "՜" ARMENIAN EXCLAMATION MARK
         // U+00A1: "¡" INVERTED EXCLAMATION MARK
-        /* 114 */ "\u055C,\u00A1",
+        /* 115 */ "\u055C,\u00A1",
         // U+055E: "Õž" ARMENIAN QUESTION MARK
         // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 115 */ "\u055E,\u00BF",
+        /* 116 */ "\u055E,\u00BF",
     };
 
     /* Language is: Icelandic */
@@ -1994,24 +1994,25 @@ public final class KeyboardTextsSet {
         /* 57 */ "\u20AA",
         /* 58 */ null,
         /* 59 */ "!fixedColumnOrder!8,;,/,(|),)|(,#,!,\\,,?,&,\\%,+,\",-,:,',@",
+        /* 60 */ "!fixedColumnOrder!7,;,/,(|),)|(,#,',\\,,&,\\%,+,\",-,:,@",
         // U+2605: "★" BLACK STAR
-        /* 60 */ "\u2605",
-        /* 61 */ null,
+        /* 61 */ "\u2605",
+        /* 62 */ null,
         // U+00B1: "±" PLUS-MINUS SIGN
         // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
-        /* 62 */ "\u00B1,\uFB29",
+        /* 63 */ "\u00B1,\uFB29",
         // The all letters need to be mirrored are found at
         // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
-        /* 63 */ "!fixedColumnOrder!3,<|>,{|},[|]",
-        /* 64 */ "!fixedColumnOrder!3,>|<,}|{,]|[",
+        /* 64 */ "!fixedColumnOrder!3,<|>,{|},[|]",
+        /* 65 */ "!fixedColumnOrder!3,>|<,}|{,]|[",
         // U+2264: "≤" LESS-THAN OR EQUAL TO
         // U+2265: "≥" GREATER-THAN EQUAL TO
         // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
         // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
         // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
         // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-        /* 65 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
-        /* 66 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
+        /* 66 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
+        /* 67 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
     };
 
     /* Language ka: Georgian */
@@ -2480,43 +2481,43 @@ public final class KeyboardTextsSet {
         // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
         /* 57 */ "\u0930\u0941.",
         /* 58~ */
-        null, null, null, null, null, null, null, null, null, null,
-        /* ~67 */
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~68 */
         // U+0967: "१" DEVANAGARI DIGIT ONE
-        /* 68 */ "\u0967",
+        /* 69 */ "\u0967",
         // U+0968: "२" DEVANAGARI DIGIT TWO
-        /* 69 */ "\u0968",
+        /* 70 */ "\u0968",
         // U+0969: "३" DEVANAGARI DIGIT THREE
-        /* 70 */ "\u0969",
+        /* 71 */ "\u0969",
         // U+096A: "४" DEVANAGARI DIGIT FOUR
-        /* 71 */ "\u096A",
+        /* 72 */ "\u096A",
         // U+096B: "५" DEVANAGARI DIGIT FIVE
-        /* 72 */ "\u096B",
+        /* 73 */ "\u096B",
         // U+096C: "६" DEVANAGARI DIGIT SIX
-        /* 73 */ "\u096C",
+        /* 74 */ "\u096C",
         // U+096D: "७" DEVANAGARI DIGIT SEVEN
-        /* 74 */ "\u096D",
+        /* 75 */ "\u096D",
         // U+096E: "८" DEVANAGARI DIGIT EIGHT
-        /* 75 */ "\u096E",
+        /* 76 */ "\u096E",
         // U+096F: "९" DEVANAGARI DIGIT NINE
-        /* 76 */ "\u096F",
+        /* 77 */ "\u096F",
         // U+0966: "०" DEVANAGARI DIGIT ZERO
-        /* 77 */ "\u0966",
+        /* 78 */ "\u0966",
         // Label for "switch to symbols" key.
-        /* 78 */ "?\u0967\u0968\u0969",
+        /* 79 */ "?\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.
-        /* 79 */ "\u0967\u0968\u0969",
-        /* 80 */ "1",
-        /* 81 */ "2",
-        /* 82 */ "3",
-        /* 83 */ "4",
-        /* 84 */ "5",
-        /* 85 */ "6",
-        /* 86 */ "7",
-        /* 87 */ "8",
-        /* 88 */ "9",
-        /* 89 */ "0",
+        /* 80 */ "\u0967\u0968\u0969",
+        /* 81 */ "1",
+        /* 82 */ "2",
+        /* 83 */ "3",
+        /* 84 */ "4",
+        /* 85 */ "5",
+        /* 86 */ "6",
+        /* 87 */ "7",
+        /* 88 */ "8",
+        /* 89 */ "9",
+        /* 90 */ "0",
     };
 
     /* Language nl: Dutch */
diff --git a/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
index 66393732cc3ca8edb132df54163ac044ab3acc9d..f63e85bd5008d8b4b5e5f9057954630f2fa4e061 100644
--- a/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
@@ -72,7 +72,7 @@
     <string name="more_keys_for_l">l&#x00B7;l,&#x0142;</string>
     <!-- U+00B7: "·" MIDDLE DOT -->
     <string name="more_keys_for_punctuation">"!fixedColumnOrder!9,;,/,(,),#,&#x00B7;,!,\\,,\?,&amp;,\\%,+,\",-,:,',\@"</string>
-    <string name="more_keys_for_period">\?,&#x00B7;</string>
+    <string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!8,;,/,(,),#,&#x00B7;,',\\,,&amp;,\\%,+,\",-,:,\@"</string>
     <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
     <string name="keylabel_for_spanish_row2_10">&#x00E7;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
index dd833f0ebde6dcb99b7a3a398f9f301e4d55f7ce..5bcfe7fc944187701fb22aa7c6d6366f2fcac120 100644
--- a/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
@@ -88,7 +88,6 @@
     <string name="keyhintlabel_for_tablet_comma">"&#x061F;"</string>
     <string name="more_keys_for_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;"</string>
     <string name="keyhintlabel_for_period">"&#x061F;"</string>
-    <string name="more_keys_for_period">"&#x061F;,\?"</string>
     <!-- U+FDFC: "ï·¼" RIAL SIGN -->
     <string name="keylabel_for_currency">&#xFDFC;</string>
     <!-- U+061F: "ØŸ" ARABIC QUESTION MARK
diff --git a/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
index b2d1f7d9b65cf558e1d0ea8737a1a2601db08b2c..e231a398e954d84fdf8162592e930953e62dd322 100644
--- a/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
@@ -29,6 +29,7 @@
          U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN -->
     <string name="more_keys_for_plus">&#x00B1;,&#xFB29;</string>
     <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,(|),)|(,#,!,\\,,\?,&amp;,\\%,+,\",-,:,',\@"</string>
+    <string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!7,;,/,(|),)|(,#,',\\,,&amp;,\\%,+,\",-,:,\@"</string>
     <!-- The all letters need to be mirrored are found at
          http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
     <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,&lt;|&gt;,{|},[|]</string>
diff --git a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
index ebe2fdf952d8956608d4d4e064cedd552067701e..c1f3e4ceaccf6844db1161905c9300af03d38cb9 100644
--- a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
@@ -84,6 +84,7 @@
     <string name="keylabel_for_currency">$</string>
     <string name="more_keys_for_currency">$,&#x00A2;,&#x20AC;,&#x00A3;,&#x00A5;,&#x20B1;</string>
     <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,(,),#,!,\\,,\?,&amp;,\\%,+,\",-,:,',\@"</string>
+    <string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!7,;,/,(,),#,',\\,,&amp;,\\%,+,\",-,:,\@"</string>
     <!-- U+2020: "†" DAGGER
          U+2021: "‡" DOUBLE DAGGER
          U+2605: "★" BLACK STAR -->
@@ -171,8 +172,7 @@
     <string name="more_keys_for_period">!text/more_keys_for_punctuation</string>
     <string name="keylabel_for_tablet_period">.</string>
     <string name="keyhintlabel_for_tablet_period"></string>
-    <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
-    <string name="more_keys_for_tablet_period">&#x2026;</string>
+    <string name="more_keys_for_tablet_period">!text/more_keys_for_tablet_punctuation</string>
     <string name="keylabel_for_symbols_question">\?</string>
     <string name="keylabel_for_symbols_semicolon">;</string>
     <string name="keylabel_for_symbols_percent">%</string>