From dc62c711aaa8f875996a8dd36d8a1726b8b2fb74 Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Tue, 3 Jun 2014 19:07:59 +0900
Subject: [PATCH] Reorder keys around the spacebar

This CL reorders keys around the spacebar.
- On phone's symbols and symbols shift layout, the comma key is moved
  to the left of the spacebar to aligned with main layout.
- On tablet's layout, the comma key is moved to the left of the
  spacebar on all layout to aligned with the same layout of
  phone's. Also the comma key has "settings" as more keys.
- In Arabic and Perisan, the comma key of tablet already has some more keys
  This CL remove "/" and add "settings" instead.

Bug: 15281451
Change-Id: I6e0e75e4d4abfb1f356e7499be91424c7c57c58b
---
 java/res/xml-sw600dp/key_comma.xml            | 47 +++++++++++++++++++
 .../{keys_comma_period.xml => key_period.xml} | 11 ++---
 java/res/xml-sw600dp/key_styles_common.xml    |  3 ++
 java/res/xml-sw600dp/row_dvorak4.xml          | 14 +++---
 java/res/xml-sw600dp/row_qwerty4.xml          | 11 +++--
 java/res/xml/key_f1.xml                       |  6 +--
 java/res/xml/key_styles_common.xml            |  6 +--
 ...reater.xml => key_styles_less_greater.xml} | 14 ++++--
 ..._styles_f1.xml => key_styles_settings.xml} |  6 +--
 java/res/xml/keys_comma_period_symbols.xml    | 30 ------------
 java/res/xml/row_dvorak4.xml                  |  2 +-
 java/res/xml/row_symbols4.xml                 | 12 +++--
 java/res/xml/row_symbols_shift4.xml           | 15 ++++--
 .../keyboard/internal/KeyboardTextsTable.java |  4 +-
 .../inputmethod/keyboard/layout/Arabic.java   | 11 +++--
 .../keyboard/layout/ArmenianPhonetic.java     | 12 ++++-
 .../inputmethod/keyboard/layout/Dvorak.java   |  5 +-
 .../inputmethod/keyboard/layout/Farsi.java    | 16 +++----
 .../keyboard/layout/HindiCompact.java         |  2 +-
 .../inputmethod/keyboard/layout/Khmer.java    |  2 +-
 .../inputmethod/keyboard/layout/Lao.java      |  2 +-
 .../keyboard/layout/LayoutBase.java           |  7 +--
 .../inputmethod/keyboard/layout/Myanmar.java  | 14 ++++--
 .../inputmethod/keyboard/layout/Symbols.java  |  2 +-
 .../keyboard/layout/SymbolsShifted.java       |  3 +-
 .../inputmethod/keyboard/layout/Thai.java     |  2 +-
 .../values-ar/donottranslate-more-keys.xml    |  2 +-
 .../values-fa/donottranslate-more-keys.xml    |  2 +-
 28 files changed, 160 insertions(+), 103 deletions(-)
 create mode 100644 java/res/xml-sw600dp/key_comma.xml
 rename java/res/xml-sw600dp/{keys_comma_period.xml => key_period.xml} (81%)
 rename java/res/xml/{keys_less_greater.xml => key_styles_less_greater.xml} (77%)
 rename java/res/xml/{key_styles_f1.xml => key_styles_settings.xml} (86%)
 delete mode 100644 java/res/xml/keys_comma_period_symbols.xml

diff --git a/java/res/xml-sw600dp/key_comma.xml b/java/res/xml-sw600dp/key_comma.xml
new file mode 100644
index 0000000000..67199e2370
--- /dev/null
+++ b/java/res/xml-sw600dp/key_comma.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <!-- The table comma key which may have settings as popup key. -->
+    <!-- Kept as a separate file for cleaner overriding by an overlay.  -->
+    <key-style
+        latin:styleName="baseTabletCommaKeyStyle"
+        latin:keySpec="!text/keyspec_tablet_comma"
+        latin:keyHintLabel="!text/keyhintlabel_tablet_comma"
+        latin:keyLabelFlags="hasPopupHint"
+        latin:parentStyle="hasShiftedLetterHintStyle" />
+    <switch>
+        <case
+            latin:clobberSettingsKey="true"
+        >
+            <Key
+                latin:moreKeys="!text/morekeys_tablet_comma"
+                latin:keyStyle="baseTabletCommaKeyStyle" />
+        </case>
+        <!-- clobberSettingsKey="false" -->
+        <default>
+            <Key
+                latin:moreKeys="!text/morekeys_tablet_comma,!text/keyspec_settings"
+                latin:keyStyle="baseTabletCommaKeyStyle" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/keys_comma_period.xml b/java/res/xml-sw600dp/key_period.xml
similarity index 81%
rename from java/res/xml-sw600dp/keys_comma_period.xml
rename to java/res/xml-sw600dp/key_period.xml
index 23172cf189..d2909d82d8 100644
--- a/java/res/xml-sw600dp/keys_comma_period.xml
+++ b/java/res/xml-sw600dp/key_period.xml
@@ -2,7 +2,7 @@
 <!--
 /*
 **
-** Copyright 2013, The Android Open Source Project
+** Copyright 2014, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -21,13 +21,8 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <Key
-        latin:keySpec="!text/keyspec_tablet_comma"
-        latin:keyHintLabel="!text/keyhintlabel_tablet_comma"
-        latin:keyLabelFlags="hasPopupHint"
-        latin:moreKeys="!text/morekeys_tablet_comma"
-        latin:backgroundType="functional"
-        latin:keyStyle="hasShiftedLetterHintStyle" />
+    <!-- The table period key which may have different label depending on locale -->
+    <!-- Kept as a separate file for cleaner overriding by an overlay.  -->
     <switch>
         <case
             latin:languageCode="hi"
diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml
index c5506b5aba..7de2769015 100644
--- a/java/res/xml-sw600dp/key_styles_common.xml
+++ b/java/res/xml-sw600dp/key_styles_common.xml
@@ -35,6 +35,9 @@
                 latin:keyLabelFlags="hasShiftedLetterHint" />
         </default>
     </switch>
+    <!-- Base key style for the key which may have settings key as more keys. -->
+    <include
+        latin:keyboardLayout="@xml/key_styles_settings" />
     <!-- Functional key styles -->
     <!-- Base style for shift key. A single space is used for dummy label in moreKeys. -->
     <key-style
diff --git a/java/res/xml-sw600dp/row_dvorak4.xml b/java/res/xml-sw600dp/row_dvorak4.xml
index d3709ef6d7..ab2b5603d2 100644
--- a/java/res/xml-sw600dp/row_dvorak4.xml
+++ b/java/res/xml-sw600dp/row_dvorak4.xml
@@ -30,19 +30,19 @@
             latin:keyWidth="10.0%p" />
         <include
             latin:keyboardLayout="@xml/key_settings" />
-        <include
-            latin:keyboardLayout="@xml/key_f1" />
+        <Key
+            latin:keySpec="_"
+            latin:keyHintLabel="-"
+            latin:moreKeys="-"
+            latin:keyStyle="hasShiftedLetterHintStyle" />
         <include
             latin:keyXPos="28.0%p"
             latin:keyboardLayout="@xml/key_space_5kw"
             latin:backgroundType="normal" />
+        <include
+            latin:keyboardLayout="@xml/key_f1" />
         <include
             latin:keyboardLayout="@xml/key_question_exclamation" />
-        <Key
-            latin:keySpec="-"
-            latin:keyHintLabel="_"
-            latin:moreKeys="_"
-            latin:keyStyle="hasShiftedLetterHintStyle" />
         <include
             latin:keyboardLayout="@xml/key_f2" />
     </Row>
diff --git a/java/res/xml-sw600dp/row_qwerty4.xml b/java/res/xml-sw600dp/row_qwerty4.xml
index d931437619..0eb86f2d45 100644
--- a/java/res/xml-sw600dp/row_qwerty4.xml
+++ b/java/res/xml-sw600dp/row_qwerty4.xml
@@ -29,15 +29,18 @@
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyWidth="10.0%p" />
         <include
-            latin:keyboardLayout="@xml/key_settings" />
-        <include
-            latin:keyboardLayout="@xml/key_f1" />
+            latin:keyboardLayout="@xml/key_comma" />
+        <Key
+            latin:keySpec="_" />
+        <!-- Space key. -->
         <include
             latin:keyXPos="28.0%p"
             latin:keyboardLayout="@xml/key_space_5kw"
             latin:backgroundType="normal" />
         <include
-            latin:keyboardLayout="@xml/keys_comma_period" />
+            latin:keyboardLayout="@xml/key_f1" />
+        <include
+            latin:keyboardLayout="@xml/key_period" />
         <include
             latin:keyboardLayout="@xml/key_f2" />
     </Row>
diff --git a/java/res/xml/key_f1.xml b/java/res/xml/key_f1.xml
index 3471c85f59..7bd7385a14 100644
--- a/java/res/xml/key_f1.xml
+++ b/java/res/xml/key_f1.xml
@@ -27,20 +27,20 @@
         >
             <Key
                 latin:keySpec="/"
-                latin:keyStyle="f1MoreKeysStyle" />
+                latin:keyStyle="settingsMoreKeysStyle" />
         </case>
         <case
             latin:mode="email"
         >
             <Key
                 latin:keySpec="\@"
-                latin:keyStyle="f1MoreKeysStyle" />
+                latin:keyStyle="settingsMoreKeysStyle" />
         </case>
         <default>
             <Key
                 latin:keySpec="!text/keyspec_comma"
                 latin:keyLabelFlags="hasPopupHint"
-                latin:keyStyle="f1MoreKeysStyle" />
+                latin:keyStyle="settingsMoreKeysStyle" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index 9d5d52e163..8b3bb2e5cc 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -35,9 +35,9 @@
                 latin:keyLabelFlags="hasShiftedLetterHint" />
         </default>
     </switch>
-    <!-- Base key style for the key which may have settings or tab key as popup key. -->
+    <!-- Base key style for the key which may have settings key as more keys. -->
     <include
-        latin:keyboardLayout="@xml/key_styles_f1" />
+        latin:keyboardLayout="@xml/key_styles_settings" />
     <!-- Functional key styles -->
     <!-- Base style for shift key. A single space is used for dummy label in moreKeys. -->
     <key-style
@@ -104,7 +104,7 @@
         latin:keyIconDisabled="!icon/shortcut_key_disabled"
         latin:keyActionFlags="noKeyPreview|altCodeWhileTyping"
         latin:altCode="!code/key_space"
-        latin:parentStyle="f1MoreKeysStyle" />
+        latin:parentStyle="settingsMoreKeysStyle" />
     <key-style
         latin:styleName="settingsKeyStyle"
         latin:keySpec="!icon/settings_key|!code/key_settings"
diff --git a/java/res/xml/keys_less_greater.xml b/java/res/xml/key_styles_less_greater.xml
similarity index 77%
rename from java/res/xml/keys_less_greater.xml
rename to java/res/xml/key_styles_less_greater.xml
index 778de02a12..db4c7984b2 100644
--- a/java/res/xml/keys_less_greater.xml
+++ b/java/res/xml/key_styles_less_greater.xml
@@ -21,25 +21,31 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
+    <!-- The less and greater keys' style which may have different label depending on locale. -->
+    <!-- Kept as a separate file for cleaner overriding by an overlay.  -->
     <switch>
         <case
             latin:languageCode="fa"
         >
-            <Key
+            <key-style
+                latin:styleName="lessKeyStyle"
                 latin:keySpec="!text/keyspec_left_double_angle_quote"
                 latin:backgroundType="functional"
                 latin:moreKeys="!text/morekeys_less_than" />
-            <Key
+            <key-style
+                latin:styleName="greaterKeyStyle"
                 latin:keySpec="!text/keyspec_right_double_angle_quote"
                 latin:backgroundType="functional"
                 latin:moreKeys="!text/morekeys_greater_than" />
         </case>
         <default>
-            <Key
+            <key-style
+                latin:styleName="lessKeyStyle"
                 latin:keySpec="!text/keyspec_less_than"
                 latin:backgroundType="functional"
                 latin:moreKeys="!text/morekeys_less_than" />
-            <Key
+            <key-style
+                latin:styleName="greaterKeyStyle"
                 latin:keySpec="!text/keyspec_greater_than"
                 latin:backgroundType="functional"
                 latin:moreKeys="!text/morekeys_greater_than" />
diff --git a/java/res/xml/key_styles_f1.xml b/java/res/xml/key_styles_settings.xml
similarity index 86%
rename from java/res/xml/key_styles_f1.xml
rename to java/res/xml/key_styles_settings.xml
index 8a07827faf..956b402359 100644
--- a/java/res/xml/key_styles_f1.xml
+++ b/java/res/xml/key_styles_settings.xml
@@ -21,20 +21,20 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <!-- Base key style for the key which may have settings or tab key as popup key. -->
+    <!-- Base key style for the key which may have settings key as more keys. -->
     <!-- Kept as a separate file for cleaner overriding by an overlay.  -->
     <switch>
         <case
             latin:clobberSettingsKey="true"
         >
             <key-style
-                latin:styleName="f1MoreKeysStyle"
+                latin:styleName="settingsMoreKeysStyle"
                 latin:backgroundType="functional" />
         </case>
         <!-- clobberSettingsKey="false" -->
         <default>
             <key-style
-                latin:styleName="f1MoreKeysStyle"
+                latin:styleName="settingsMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint"
                 latin:moreKeys="!text/keyspec_settings"
                 latin:backgroundType="functional" />
diff --git a/java/res/xml/keys_comma_period_symbols.xml b/java/res/xml/keys_comma_period_symbols.xml
deleted file mode 100644
index 843595c274..0000000000
--- a/java/res/xml/keys_comma_period_symbols.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <Key
-        latin:keySpec="!text/keyspec_comma" />
-    <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
-    <Key
-        latin:keySpec="."
-        latin:moreKeys="&#x2026;" />
-</merge>
diff --git a/java/res/xml/row_dvorak4.xml b/java/res/xml/row_dvorak4.xml
index 279f646276..e7a3ee7361 100644
--- a/java/res/xml/row_dvorak4.xml
+++ b/java/res/xml/row_dvorak4.xml
@@ -30,7 +30,7 @@
         <Key
             latin:keySpec="q"
             latin:backgroundType="normal"
-            latin:keyStyle="f1MoreKeysStyle" />
+            latin:keyStyle="settingsMoreKeysStyle" />
         <include
             latin:keyXPos="25%p"
             latin:keyboardLayout="@xml/key_space_5kw" />
diff --git a/java/res/xml/row_symbols4.xml b/java/res/xml/row_symbols4.xml
index 09f6b628c7..2be03bd6d5 100644
--- a/java/res/xml/row_symbols4.xml
+++ b/java/res/xml/row_symbols4.xml
@@ -20,11 +20,15 @@
 
 <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
     <Key
-        latin:keySpec="_" />
+        latin:keySpec="!text/keyspec_comma" />
     <Key
-        latin:keySpec="/" />
+        latin:keySpec="_" />
     <include
         latin:keyboardLayout="@xml/key_space_symbols" />
-    <include
-        latin:keyboardLayout="@xml/keys_comma_period_symbols" />
+    <Key
+        latin:keySpec="/" />
+    <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
+    <Key
+        latin:keySpec="."
+        latin:moreKeys="&#x2026;" />
 </merge>
diff --git a/java/res/xml/row_symbols_shift4.xml b/java/res/xml/row_symbols_shift4.xml
index f75575bc67..4fc63c2c59 100644
--- a/java/res/xml/row_symbols_shift4.xml
+++ b/java/res/xml/row_symbols_shift4.xml
@@ -18,9 +18,18 @@
 */
 -->
 <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
-
-    <include latin:keyboardLayout="@xml/keys_less_greater" />
+    <include
+        latin:keyboardLayout="@xml/key_styles_less_greater" />
+    <Key
+        latin:keySpec="!text/keyspec_comma" />
+    <Key
+        latin:keyStyle="lessKeyStyle" />
     <include
         latin:keyboardLayout="@xml/key_space_symbols" />
-    <include latin:keyboardLayout="@xml/keys_comma_period_symbols" />
+    <Key
+        latin:keyStyle="greaterKeyStyle" />
+    <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
+    <Key
+        latin:keySpec="."
+        latin:moreKeys="&#x2026;" />
 </merge>
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 40c915c8da..ab25558026 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -602,7 +602,7 @@ public final class KeyboardTextsTable {
         /* keyspec_right_double_angle_quote */ "\u00BB|\u00AB",
         /* keyspec_left_single_angle_quote */ "\u2039|\u203A",
         /* keyspec_right_single_angle_quote */ "\u203A|\u2039",
-        /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'",
+        /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,\",\'",
         // U+0651: "Ù‘" ARABIC SHADDA
         /* keyhintlabel_period */ "\u0651",
         /* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics",
@@ -1551,7 +1551,7 @@ public final class KeyboardTextsTable {
         /* keyspec_right_double_angle_quote */ "\u00BB|\u00AB",
         /* keyspec_left_single_angle_quote */ "\u2039|\u203A",
         /* keyspec_right_single_angle_quote */ "\u203A|\u2039",
-        /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
+        /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
         // U+064B: "Ù‹" ARABIC FATHATAN
         /* keyhintlabel_period */ "\u064B",
         /* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics",
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java b/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
index b0493d3f13..fa818654e4 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
@@ -74,7 +74,12 @@ public final class Arabic extends LayoutBase {
                 // U+060C: "،" ARABIC COMMA
                 return joinKeys(key("\u060C", SETTINGS_KEY));
             }
-            return super.getKeysLeftToSpacebar(isPhone);
+            // U+060C: "،" ARABIC COMMA
+            // U+061F: "ØŸ" ARABIC QUESTION MARK
+            // U+061B: "Ø›" ARABIC SEMICOLON
+            return joinKeys(key("\u060C", joinMoreKeys(
+                    ":", "!", "\u061F", "\u061B", "-", "\"", "'", SETTINGS_KEY)),
+                    "_");
         }
 
         @Override
@@ -85,9 +90,7 @@ public final class Arabic extends LayoutBase {
             // U+060C: "،" ARABIC COMMA
             // U+061F: "ØŸ" ARABIC QUESTION MARK
             // U+061B: "Ø›" ARABIC SEMICOLON
-            return joinKeys(
-                    key("\u060C", joinMoreKeys(":", "!", "\u061F", "\u061B", "-", "/", "\"", "'")),
-                    key(".", getPunctuationMoreKeys(isPhone)));
+            return joinKeys("/", key(".", getPunctuationMoreKeys(isPhone)));
         }
 
         @Override
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java b/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java
index 204bb01f74..eb64b832bc 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java
@@ -55,12 +55,20 @@ public final class ArmenianPhonetic extends LayoutBase {
                     SHIFT_KEY);
         }
 
+        @Override
+        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
+            // U+002C: "," COMMA
+            // U+055D: "՝" ARMENIAN COMMA
+            return isPhone ? joinKeys(key("\u002C", SETTINGS_KEY))
+                    : joinKeys(key("\u055D", SETTINGS_KEY), "_");
+        }
+
         @Override
         public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
             // U+0589: "Ö‰" ARMENIAN FULL STOP
             // U+055D: "՝" ARMENIAN COMMA
             final ExpectedKey fullStopKey = key("\u0589", getPunctuationMoreKeys(isPhone));
-            return isPhone ? joinKeys(fullStopKey) : joinKeys("\u055D", fullStopKey);
+            return isPhone ? joinKeys(fullStopKey) : joinKeys("/", fullStopKey);
         }
 
         @Override
@@ -121,7 +129,7 @@ public final class ArmenianPhonetic extends LayoutBase {
         } else {
             builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
                     .addKeysOnTheRightOfRow(3, ENTER_KEY)
-                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
                     .addKeysOnTheRightOfRow(5, EMOJI_KEY);
         }
         builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java b/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java
index 7ba1d78766..e75cfd0ff7 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java
@@ -51,7 +51,8 @@ public final class Dvorak extends LayoutBase {
 
         @Override
         public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
-            return isPhone ? joinKeys(key("q", SETTINGS_KEY)) : joinKeys(key("/"));
+            return isPhone ? joinKeys(key("q", SETTINGS_KEY)) :
+                joinKeys(SETTINGS_KEY, key("_", moreKey("-")));
         }
 
         @Override
@@ -60,7 +61,7 @@ public final class Dvorak extends LayoutBase {
                     convertToAdditionalMoreKeys(getPunctuationMoreKeys(isPhone));
             return isPhone
                     ? joinKeys(key("z", punctuationMoreKeys))
-                    : joinKeys(key("?", moreKey("!")), key("-", moreKey("_")));
+                    : joinKeys("/", key("?", moreKey("!")));
         }
 
         private static ExpectedAdditionalMoreKey[] convertToAdditionalMoreKeys(
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java b/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
index 16d2f86843..a513740e78 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
@@ -72,7 +72,13 @@ public final class Farsi extends LayoutBase {
                 // U+060C: "،" ARABIC COMMA
                 return joinKeys(key("\u060C", SETTINGS_KEY));
             }
-            return super.getKeysLeftToSpacebar(isPhone);
+            // U+060C: "،" ARABIC COMMA
+            // U+061F: "ØŸ" ARABIC QUESTION MARK
+            // U+061B: "Ø›" ARABIC SEMICOLON
+            return joinKeys(key("\u060C", joinMoreKeys(
+                    ":", "!", "\u061F", "\u061B", "-", RtlSymbols.DOUBLE_ANGLE_QUOTES_LR_RTL,
+                    SETTINGS_KEY)),
+                    "_");
         }
 
         @Override
@@ -80,13 +86,7 @@ public final class Farsi extends LayoutBase {
             if (isPhone) {
                 return super.getKeysRightToSpacebar(isPhone);
             }
-            // U+060C: "،" ARABIC COMMA
-            // U+061F: "ØŸ" ARABIC QUESTION MARK
-            // U+061B: "Ø›" ARABIC SEMICOLON
-            return joinKeys(
-                    key("\u060C", joinMoreKeys(":", "!", "\u061F", "\u061B", "-", "/",
-                            RtlSymbols.DOUBLE_ANGLE_QUOTES_LR_RTL)),
-                    key(".", getPunctuationMoreKeys(isPhone)));
+            return joinKeys("/", key(".", getPunctuationMoreKeys(isPhone)));
         }
 
         @Override
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java b/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java
index cf20149ae9..a7f6823403 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java
@@ -50,7 +50,7 @@ public final class HindiCompact extends LayoutBase {
         public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
             // U+0964: "।" DEVANAGARI DANDA
             final ExpectedKey periodKey = key("\u0964", getPunctuationMoreKeys(isPhone));
-            return isPhone ? joinKeys(periodKey) : joinKeys(",", periodKey);
+            return isPhone ? joinKeys(periodKey) : joinKeys("/", periodKey);
         }
 
         @Override
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java b/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java
index e7f6a65520..143ccf6eb4 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java
@@ -94,7 +94,7 @@ public final class Khmer extends LayoutBase {
         } else {
             builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
                     .addKeysOnTheRightOfRow(3, ENTER_KEY)
-                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
                     .addKeysOnTheRightOfRow(5, EMOJI_KEY);
         }
         builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Lao.java b/tests/src/com/android/inputmethod/keyboard/layout/Lao.java
index 6f2ef216f6..e7be9982ad 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Lao.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Lao.java
@@ -98,7 +98,7 @@ public final class Lao extends LayoutBase {
         } else {
             builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
                     .addKeysOnTheRightOfRow(3, ENTER_KEY)
-                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
                     .addKeysOnTheRightOfRow(5, EMOJI_KEY);
         }
         builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
index e4e95548fe..c5223720c0 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
@@ -161,7 +161,8 @@ public abstract class LayoutBase extends AbstractLayoutBase {
          */
         public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
             // U+002C: "," COMMA
-            return isPhone ? joinKeys(key("\u002C", SETTINGS_KEY)) : joinKeys("/");
+            return isPhone ? joinKeys(key("\u002C", SETTINGS_KEY))
+                    : joinKeys(key("\u002C", SETTINGS_KEY), "_");
         }
 
         /**
@@ -171,7 +172,7 @@ public abstract class LayoutBase extends AbstractLayoutBase {
          */
         public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
             final ExpectedKey periodKey = key(".", getPunctuationMoreKeys(isPhone));
-            return isPhone ? joinKeys(periodKey) : joinKeys(",", periodKey);
+            return isPhone ? joinKeys(periodKey) : joinKeys("/", periodKey);
         }
 
         /**
@@ -296,7 +297,7 @@ public abstract class LayoutBase extends AbstractLayoutBase {
         } else {
             builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
                     .addKeysOnTheRightOfRow(2, ENTER_KEY)
-                    .addKeysOnTheLeftOfRow(4, customizer.getSymbolsKey(), SETTINGS_KEY)
+                    .addKeysOnTheLeftOfRow(4, customizer.getSymbolsKey())
                     .addKeysOnTheRightOfRow(4, EMOJI_KEY);
         }
         builder.addKeysOnTheLeftOfRow(3, (Object[])customizer.getLeftShiftKeys(isPhone))
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java b/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java
index 2d1c901b9f..1b571acc69 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java
@@ -47,13 +47,19 @@ public final class Myanmar extends LayoutBase {
             return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
         }
 
+        @Override
+        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
+            // U+002C: "," COMMA
+            // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+            return isPhone ? joinKeys(key("\u002C", SETTINGS_KEY))
+                    : joinKeys(key("\u104A", moreKey(","), SETTINGS_KEY), "_");
+        }
+
         @Override
         public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
             // U+104B: "။" MYANMAR SIGN SECTION
-            // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
             final ExpectedKey periodKey = key("\u104B", getPunctuationMoreKeys(isPhone));
-            final ExpectedKey commaKey = key("\u104A", moreKey(","));
-            return isPhone ? joinKeys(periodKey) : joinKeys(commaKey, periodKey);
+            return isPhone ? joinKeys(periodKey) : joinKeys("/", periodKey);
         }
 
         @Override
@@ -106,7 +112,7 @@ public final class Myanmar extends LayoutBase {
         } else {
             builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
                     .addKeysOnTheRightOfRow(3, ENTER_KEY)
-                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
                     .addKeysOnTheRightOfRow(5, EMOJI_KEY);
         }
         builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java b/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
index 726fefc683..5f3e4b1969 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
@@ -167,7 +167,7 @@ public class Symbols extends AbstractLayoutBase {
                     // U+00BF: "¿" INVERTED QUESTION MARK
                     key("?", moreKey("\u00BF")))
             .setKeysOfRow(4,
-                    key("_"), key("/"), SPACE_KEY, key(","),
+                    key(","), key("_"), SPACE_KEY, key("/"),
                     // U+2026: "…" HORIZONTAL ELLIPSIS
                     key(".", moreKey("\u2026")))
             .build();
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java b/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java
index f611310aff..3265e10e1a 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java
@@ -117,15 +117,16 @@ public class SymbolsShifted extends AbstractLayoutBase {
                     // U+2105: "â„…" CARE OF
                     "\\", "\u00A9", "\u00AE", "\u2122", "\u2105", "[", "]")
             .setKeysOfRow(4,
+                    ",",
                     // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
                     // U+2264: "≤" LESS-THAN OR EQUAL TO
                     // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
                     key("<", joinMoreKeys("\u2039", "\u2264", "\u00AB")),
+                    SPACE_KEY,
                     // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
                     // U+2265: "≥" GREATER-THAN EQUAL TO
                     // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
                     key(">", joinMoreKeys("\u203A", "\u2265", "\u00BB")),
-                    SPACE_KEY, ",",
                     // U+2026: "…" HORIZONTAL ELLIPSIS
                     key(".", moreKey("\u2026")))
             .build();
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Thai.java b/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
index 253c93b83d..af4abea933 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
@@ -111,7 +111,7 @@ public final class Thai extends LayoutBase {
         } else {
             builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
                     .addKeysOnTheRightOfRow(3, ENTER_KEY)
-                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
                     .addKeysOnTheRightOfRow(5, EMOJI_KEY);
         }
         builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
diff --git a/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
index 4ecb10533a..ab78f45c65 100644
--- a/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
@@ -80,7 +80,7 @@
          U+061B: "Ø›" ARABIC SEMICOLON -->
     <string name="keyspec_tablet_comma">"&#x060C;"</string>
     <string name="keyhintlabel_tablet_comma">"&#x061F;"</string>
-    <string name="morekeys_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,\",\'"</string>
+    <string name="morekeys_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,\",\'"</string>
     <!-- U+266A: "♪" EIGHTH NOTE -->
     <string name="morekeys_bullet">&#x266A;</string>
     <!-- U+2605: "★" BLACK STAR
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 bdbc92afac..58f4555043 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
@@ -82,7 +82,7 @@
          U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
     <string name="keyspec_tablet_comma">"&#x060C;"</string>
     <string name="keyhintlabel_tablet_comma">"&#x061F;"</string>
-    <string name="morekeys_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote"</string>
+    <string name="morekeys_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote"</string>
     <!-- U+FDFC: "ï·¼" RIAL SIGN -->
     <string name="keyspec_currency">&#xFDFC;</string>
     <!-- U+266A: "♪" EIGHTH NOTE -->
-- 
GitLab