Support fixed order more keys

Change-Id: I979f54e8b54243da4d23cfbe08198d2aa495f870
diff --git a/java/res/values-ar/donottranslate-more-keys.xml b/java/res/values-ar/donottranslate-more-keys.xml
index bb36af2..7d69d28 100644
--- a/java/res/values-ar/donottranslate-more-keys.xml
+++ b/java/res/values-ar/donottranslate-more-keys.xml
@@ -18,27 +18,25 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- U+060C: "،" ARABIC COMMA
-         U+061B: "؛" ARABIC SEMICOLON
-         U+061F: "؟" ARABIC QUESTION MARK -->
+    <!-- U+061F: "؟" ARABIC QUESTION MARK
+         U+060C: "،" ARABIC COMMA
+         U+061B: "؛" ARABIC SEMICOLON -->
     <!-- U+0650: "ِ" ARABIC KASRA
          U+064E: "َ" ARABIC FATHA
-         U+064B: "ً" ARABIC FATHATAN
-         U+0640: "ـ" ARABIC TATWEEL
          U+064D: "ٍ" ARABIC KASRATAN
-         U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+         U+064B: "ً" ARABIC FATHATAN
          U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
-         U+0654: "ٔ" ARABIC HAMZA ABOVE
-         U+0655: "ٕ" ARABIC HAMZA BELOW -->
-    <!-- U+0651: "ّ" ARABIC SHADDA
-         U+0652: "ْ" ARABIC SUKUN
+         U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+         U+0655: "ٕ" ARABIC HAMZA BELOW
+         U+0654: "ٔ" ARABIC HAMZA ABOVE -->
+    <!-- U+064F: "ُ" ARABIC DAMMA
          U+064C: "ٌ" ARABIC DAMMATAN
+         U+0651: "ّ" ARABIC SHADDA
+         U+0652: "ْ" ARABIC SUKUN
          U+0653: "ٓ" ARABIC MADDAH ABOVE
-         U+064F: "ُ" ARABIC DAMMA -->
+         U+0640: "ـ" ARABIC TATWEEL -->
     <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
-    <!-- TODO: Will introduce "grouping marks" to the more characters specification. -->
-    <string name="more_keys_for_punctuation">"&#x060C;,&#x061B;,&#x061F;,!,:,-,/,\',\",&#x0640;&#x0640;&#x0640;|&#x0640;,&#x064E;,&#x0650;,&#x064B;,&#x064D;,&#x0670;,&#x0656;,&#x0655;,&#x0654;,&#x0653;,&#x0652;,&#x0651;,&#x064C;,&#x064F;"</string>
-    <integer name="more_keys_keyboard_column_for_punctuation">9</integer>
+    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',-,:,!,&#x061F;,&#x060C;,&#x061B;,&#x0650;,&#x064E;,&#x064D;,&#x064B;,&#x0656;,&#x0670;,&#x0655;,&#x0654;,&#x064F;,&#x064C;,&#x0651;,&#x0652;,&#x0653;,&#x0640;&#x0640;&#x0640;|&#x0640;,/"</string>
     <string name="keyhintlabel_for_punctuation">&#x064B;</string>
     <!-- U+0661: "١" ARABIC-INDIC DIGIT ONE -->
     <string name="keylabel_for_symbols_1">&#x0661;</string>
@@ -79,7 +77,8 @@
     <!-- U+066A: "٪" ARABIC PERCENT SIGN -->
     <string name="keylabel_for_symbols_percent">&#x066A;</string>
     <string name="more_keys_for_comma">,</string>
-    <string name="more_keys_for_f1">,</string>
+    <!-- U+060C: "،" ARABIC COMMA -->
+    <string name="more_keys_for_f1">&#x060C;</string>
     <string name="more_keys_for_f1_settings">\\,,\@icon/settingsKey|\@integer/key_settings</string>
     <string name="more_keys_for_f1_navigate">\\,,\@icon/tabKey|\@integer/key_tab</string>
     <string name="more_keys_for_symbols_question">\?</string>
@@ -125,8 +124,8 @@
          U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS -->
     <!-- TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS -->
     <!-- TODO: DroidSansArabic lacks the glyph of U+FD3F ORNATE RIGHT PARENTHESIS -->
-    <string name="more_keys_for_left_parenthesis">[|],{|},&lt;|&gt;,&#xFD3E;|&#xFD3F;</string>
-    <string name="more_keys_for_right_parenthesis">]|[,}|{,&gt;|&lt;,&#xFD3F;|&#xFD3E;</string>
+    <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,&lt;|&gt;,{|},[|]</string>
+    <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,&gt;|&lt;,}|{,]|[</string>
     <!-- U+003E: ">" GREATER-THAN SIGN -->
     <integer name="keycode_for_less_than">0x003E</integer>
     <!-- U+003C: "<" LESS-THAN SIGN -->
@@ -146,8 +145,8 @@
          U+201D: "”" RIGHT DOUBLE QUOTATION MARK
          U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
          U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
-    <string name="more_keys_for_less_than">&#x2264;|&#x2265;,&#x00AB;|&#x00BB;,&#x2039;|&#x203A;</string>
-    <string name="more_keys_for_greater_than">&#x2265;|&#x2264;,&#x00BB;|&#x00AB;,&#x203A;|&#x2039;</string>
+    <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&#x00AB;|&#x00BB;</string>
+    <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&#x00BB;|&#x00AB;</string>
     <!-- U+005D: "]" RIGHT SQUARE BRACKET -->
     <integer name="keycode_for_left_square_bracket">0x005D</integer>
     <!-- U+005B: "[" LEFT SQUARE BRACKET -->
@@ -157,11 +156,9 @@
     <!-- U+007B: "{" LEFT CURLY BRACKET -->
     <integer name="keycode_for_right_curly_bracket">0x007B</integer>
     <!-- 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;</string> -->
-    <!-- The 4-more keys will be displayed in order of "3,1,2,4". -->
-    <string name="more_keys_for_double_quote">&#x201D;,&#x00AB;|&#x00BB;,&#x201C;,&#x00BB;|&#x00AB;</string>
+    <!-- <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string> -->
+    <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
     <!-- 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">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
-    <!-- The 8-more keys with maxMoreKeysColumn=4 will be displayed in order of "3,1,2,4|7,5,6,8". -->
-    <string name="more_keys_for_tablet_double_quote">&#x201D;,&#x00AB;|&#x00BB;,&#x201C;,&#x00BB;|&#x00AB;,&#x2019;,&#x201A;,&#x2018;,&#x201B;</string>
+    <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
+    <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
 </resources>
diff --git a/java/res/values-es/donottranslate-more-keys.xml b/java/res/values-es/donottranslate-more-keys.xml
index ec8b6e4..4833d69 100644
--- a/java/res/values-es/donottranslate-more-keys.xml
+++ b/java/res/values-es/donottranslate-more-keys.xml
@@ -67,7 +67,7 @@
          U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
          U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
     <string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x010D;</string>
-    <!-- U+00BF: "¿" INVERTED QUESTION MARK
-         U+00A1: "¡" INVERTED EXCLAMATION MARK -->
-    <string name="more_keys_for_punctuation">"\\,,\?,!,&#x00BF;,&#x00A1;,:,-,\',\",),(,/,;,+,&amp;,\@"</string>
+    <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK
+         U+00BF: "¿" INVERTED QUESTION MARK -->
+    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',-,&#x00A1;,!,&#x00BF;,\\,,\?,\@,&amp;,+,;,:,/,(,)"</string>
 </resources>
diff --git a/java/res/values-iw/donottranslate-more-keys.xml b/java/res/values-iw/donottranslate-more-keys.xml
index 865aac6..c5431b6 100644
--- a/java/res/values-iw/donottranslate-more-keys.xml
+++ b/java/res/values-iw/donottranslate-more-keys.xml
@@ -29,8 +29,8 @@
     <integer name="keycode_for_left_parenthesis">0x0029</integer>
     <!-- U+0028: "(" LEFT PARENTHESIS -->
     <integer name="keycode_for_right_parenthesis">0x0028</integer>
-    <string name="more_keys_for_left_parenthesis">[|],{|},&lt;|&gt;</string>
-    <string name="more_keys_for_right_parenthesis">]|[,}|{,&gt;|&lt;</string>
+    <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,&lt;|&gt;,{|},[|]</string>
+    <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,&gt;|&lt;,}|{,]|[</string>
     <!-- U+003E: ">" GREATER-THAN SIGN -->
     <integer name="keycode_for_less_than">0x003E</integer>
     <!-- U+003C: "<" LESS-THAN SIGN -->
@@ -50,8 +50,8 @@
          U+201D: "”" RIGHT DOUBLE QUOTATION MARK
          U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
          U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
-    <string name="more_keys_for_less_than">&#x2264;|&#x2265;,&#x00AB;|&#x00BB;,&#x2039;|&#x203A;</string>
-    <string name="more_keys_for_greater_than">&#x2265;|&#x2264;,&#x00BB;|&#x00AB;,&#x203A;|&#x2039;</string>
+    <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&#x00AB;|&#x00BB;</string>
+    <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&#x00BB;|&#x00AB;</string>
     <!-- U+005D: "]" RIGHT SQUARE BRACKET -->
     <integer name="keycode_for_left_square_bracket">0x005D</integer>
     <!-- U+005B: "[" LEFT SQUARE BRACKET -->
@@ -60,12 +60,10 @@
     <integer name="keycode_for_left_curly_bracket">0x007D</integer>
     <!-- U+007B: "{" LEFT CURLY BRACKET -->
     <integer name="keycode_for_right_curly_bracket">0x007B</integer>
-    <!-- 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;</string> -->
-    <!-- The 4-more keys will be displayed in order of "3,1,2,4". -->
-    <string name="more_keys_for_double_quote">&#x201D;,&#x00AB;|&#x00BB;,&#x201C;,&#x00BB;|&#x00AB;</string>
-    <!-- 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">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
-    <!-- The 8-more keys with maxMoreKeysColumn=4 will be displayed in order of "3,1,2,4|7,5,6,8". -->
-    <string name="more_keys_for_tablet_double_quote">&#x201D;,&#x00AB;|&#x00BB;,&#x201C;,&#x00BB;|&#x00AB;,&#x2019;,&#x201A;,&#x2018;,&#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">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string> -->
+    <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
+    <!-- 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> -->
+    <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
 </resources>
diff --git a/java/res/values/donottranslate-more-keys.xml b/java/res/values/donottranslate-more-keys.xml
index c04e6d0..5b68f85 100644
--- a/java/res/values/donottranslate-more-keys.xml
+++ b/java/res/values/donottranslate-more-keys.xml
@@ -64,9 +64,8 @@
     <string name="more_keys_for_currency_euro">&#x00A2;,&#x00A3;,$,&#x00A5;,&#x20B1;</string>
     <string name="more_keys_for_currency_pound">&#x00A2;,$,&#x20AC;,&#x00A5;,&#x20B1;</string>
     <string name="more_keys_for_currency_general">&#x00A2;,$,&#x20AC;,&#x00A3;,&#x00A5;,&#x20B1;</string>
-    <string name="more_keys_for_smiley">":-)|:-) ,:-(|:-( ,;-)|;-) ,:-P|:-P ,=-O|=-O ,:-*|:-* ,:O|:O ,B-)|B-) ,:-$|:-$ ,:-!|:-! ,:-[|:-[ ,O:-)|O:-) ,:-\\\\|:-\\\\ ,:\'(|:\'( ,:-D|:-D "</string>
-    <string name="more_keys_for_punctuation">"\\,,\?,!,:,-,\',\",(,),/,;,+,&amp;,\@"</string>
-    <integer name="more_keys_keyboard_column_for_punctuation">7</integer>
+    <string name="more_keys_for_smiley">"!fixedColumnOrder!5,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ "</string>
+    <string name="more_keys_for_punctuation">"!fixedColumnOrder!7,\",\',-,:,!,\\,,\?,\@,&amp;,+,;,/,(,)"</string>
     <string name="keyhintlabel_for_punctuation"></string>
     <string name="keylabel_for_popular_domain">".com"</string>
     <!-- popular web domains for the locale - most popular, displayed on the keyboard -->
@@ -154,18 +153,18 @@
     <integer name="keycode_for_left_parenthesis">0x0028</integer>
     <!-- U+0029: ")" RIGHT PARENTHESIS -->
     <integer name="keycode_for_right_parenthesis">0x0029</integer>
-    <string name="more_keys_for_left_parenthesis">[,{,&lt;</string>
-    <string name="more_keys_for_right_parenthesis">],},&gt;</string>
+    <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,&lt;,{,[</string>
+    <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,&gt;,},]</string>
     <!-- U+003C: "<" LESS-THAN SIGN -->
     <integer name="keycode_for_less_than">0x003C</integer>
     <!-- U+003E: ">" GREATER-THAN SIGN -->
     <integer name="keycode_for_greater_than">0x003E</integer>
-    <!-- U+2264: "≤" LESS-THAN OR EQUAL TO
+    <!-- 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
-         U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-         U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
          The following characters don't need BIDI mirroring.
          U+2018: "‘" LEFT SINGLE QUOTATION MARK
          U+2019: "’" RIGHT SINGLE QUOTATION MARK
@@ -175,8 +174,8 @@
          U+201D: "”" RIGHT DOUBLE QUOTATION MARK
          U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
          U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
-    <string name="more_keys_for_less_than">&#x2264;,&#x00AB;,&#x2039;</string>
-    <string name="more_keys_for_greater_than">&#x2265;,&#x00BB;,&#x203A;</string>
+    <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;,&#x2264;,&#x00AB;</string>
+    <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;,&#x2265;,&#x00BB;</string>
     <!-- U+005B: "[" LEFT SQUARE BRACKET -->
     <integer name="keycode_for_left_square_bracket">0x005B</integer>
     <!-- U+005D: "]" RIGHT SQUARE BRACKET -->
@@ -185,14 +184,11 @@
     <integer name="keycode_for_left_curly_bracket">0x007B</integer>
     <!-- U+007D: "}" RIGHT CURLY BRACKET -->
     <integer name="keycode_for_right_curly_bracket">0x007D</integer>
-    <!-- The 4-more keys will be displayed in order of "3,1,2,4". -->
-    <string name="more_keys_for_single_quote">&#x2019;,&#x201A;,&#x2018;,&#x201B;</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">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;</string> -->
-    <!-- The 4-more keys will be displayed in order of "3,1,2,4". -->
-    <string name="more_keys_for_double_quote">&#x201D;,&#x00AB;,&#x201C;,&#x00BB;</string>
+    <!-- <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;</string> -->
+    <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;</string>
     <!-- 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">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
-    <!-- The 8-more keys with maxMoreKeysColumn=4 will be displayed in order of "3,1,2,4|7,5,6,8". -->
-    <string name="more_keys_for_tablet_double_quote">&#x201D;,&#x00AB;,&#x201C;,&#x00BB;,&#x2019;,&#x201A;,&#x2018;,&#x201B;</string>
+    <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
+    <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
 </resources>
diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml
index e524aa3..70fc289 100644
--- a/java/res/xml-sw600dp/key_styles_common.xml
+++ b/java/res/xml-sw600dp/key_styles_common.xml
@@ -104,8 +104,7 @@
         latin:keyLabel=":-)"
         latin:keyOutputText=":-) "
         latin:keyLabelFlags="hasPopupHint|preserveCase"
-        latin:moreKeys="@string/more_keys_for_smiley"
-        latin:maxMoreKeysColumn="5" />
+        latin:moreKeys="@string/more_keys_for_smiley" />
     <key-style
         latin:styleName="shortcutKeyStyle"
         latin:code="@integer/key_shortcut"
diff --git a/java/res/xml-sw600dp/rows_symbols.xml b/java/res/xml-sw600dp/rows_symbols.xml
index 448e3bb..61a5644 100644
--- a/java/res/xml-sw600dp/rows_symbols.xml
+++ b/java/res/xml-sw600dp/rows_symbols.xml
@@ -160,8 +160,7 @@
             latin:keyWidth="39.750%p" />
         <Key
             latin:keyLabel="&quot;"
-            latin:moreKeys="@string/more_keys_for_tablet_double_quote"
-            latin:maxMoreKeysColumn="4" />
+            latin:moreKeys="@string/more_keys_for_tablet_double_quote" />
         <Key
             latin:keyLabel="_" />
         <Spacer
diff --git a/java/res/xml-sw768dp/key_styles_common.xml b/java/res/xml-sw768dp/key_styles_common.xml
index 07bdd7b..9da0d1f 100644
--- a/java/res/xml-sw768dp/key_styles_common.xml
+++ b/java/res/xml-sw768dp/key_styles_common.xml
@@ -86,8 +86,7 @@
         latin:keyLabel=":-)"
         latin:keyOutputText=":-) "
         latin:keyLabelFlags="hasPopupHint|preserveCase"
-        latin:moreKeys="@string/more_keys_for_smiley"
-        latin:maxMoreKeysColumn="5" />
+        latin:moreKeys="@string/more_keys_for_smiley" />
     <key-style
         latin:styleName="shortcutKeyStyle"
         latin:code="@integer/key_shortcut"
diff --git a/java/res/xml-sw768dp/rows_symbols.xml b/java/res/xml-sw768dp/rows_symbols.xml
index d82f20b..a327684 100644
--- a/java/res/xml-sw768dp/rows_symbols.xml
+++ b/java/res/xml-sw768dp/rows_symbols.xml
@@ -175,8 +175,7 @@
             latin:keyWidth="37.500%p" />
         <Key
             latin:keyLabel="&quot;"
-            latin:moreKeys="@string/more_keys_for_tablet_double_quote"
-            latin:maxMoreKeysColumn="4" />
+            latin:moreKeys="@string/more_keys_for_tablet_double_quote" />
         <Key
             latin:keyLabel="_" />
         <switch>
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index 0e31bcb..4d0ad29 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -188,6 +188,5 @@
         latin:keyHintLabel="@string/keyhintlabel_for_punctuation"
         latin:keyLabelFlags="hasPopupHint|preserveCase"
         latin:moreKeys="@string/more_keys_for_punctuation"
-        latin:maxMoreKeysColumn="@integer/more_keys_keyboard_column_for_punctuation"
         latin:backgroundType="functional" />
 </merge>
diff --git a/java/res/xml/key_styles_enter_phone.xml b/java/res/xml/key_styles_enter_phone.xml
index 6af81fb..af34cb8 100644
--- a/java/res/xml/key_styles_enter_phone.xml
+++ b/java/res/xml/key_styles_enter_phone.xml
@@ -55,7 +55,6 @@
                 latin:keyOutputText=":-) "
                 latin:keyLabelFlags="hasPopupHint"
                 latin:moreKeys="@string/more_keys_for_smiley"
-                latin:maxMoreKeysColumn="5"
                 latin:backgroundType="functional" />
         </case>
         <case
diff --git a/java/res/xml/rows_azerty.xml b/java/res/xml/rows_azerty.xml
index 6f607cb..bd3ff6f 100644
--- a/java/res/xml/rows_azerty.xml
+++ b/java/res/xml/rows_azerty.xml
@@ -130,13 +130,9 @@
         <Key
             latin:keyLabel="n"
             latin:moreKeys="@string/more_keys_for_n" />
-        <!-- TODO: Introduce a flag, such as strinctMoreKeysOrder, to control moreKeys display
-             order more precisely. -->
-        <!-- This key is close enough to right edge, so that the 4-more keys will be displayed in
-             order of "4,3,1,2". See @string/more_keys_for_single_quote -->
         <Key
             latin:keyLabel="\'"
-            latin:moreKeys="&#x2018;,&#x2019;,&#x201B;,&#x201A;" />
+            latin:moreKeys="@string/more_keys_for_single_quote" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight"
diff --git a/java/res/xml/rows_symbols.xml b/java/res/xml/rows_symbols.xml
index 05699e0..27f75b5 100644
--- a/java/res/xml/rows_symbols.xml
+++ b/java/res/xml/rows_symbols.xml
@@ -109,8 +109,7 @@
             latin:moreKeys="&#x00A1;" />
         <Key
             latin:keyLabel="&quot;"
-            latin:moreKeys="@string/more_keys_for_double_quote"
-            latin:maxMoreKeysColumn="4" />
+            latin:moreKeys="@string/more_keys_for_double_quote" />
         <Key
             latin:keyLabel="\'"
             latin:moreKeys="@string/more_keys_for_single_quote" />