Merge "Add language switch key to symbols and symbols shifted layout"
diff --git a/java/res/xml-sw600dp/key_space.xml b/java/res/xml-sw600dp/key_space.xml
index 4e1e15b..4670142 100644
--- a/java/res/xml-sw600dp/key_space.xml
+++ b/java/res/xml-sw600dp/key_space.xml
@@ -21,6 +21,9 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
+    <Spacer
+        latin:keyWidth="0dp"
+        latin:keyXPos="30.750%p" />
     <switch>
         <case
             latin:languageCode="fa"
diff --git a/java/res/xml-sw600dp/row_symbols4.xml b/java/res/xml-sw600dp/row_symbols4.xml
index baa090c..9b6daab 100644
--- a/java/res/xml-sw600dp/row_symbols4.xml
+++ b/java/res/xml-sw600dp/row_symbols4.xml
@@ -19,7 +19,7 @@
 -->
 
 <merge
-        xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Row
         latin:keyWidth="8.9%p"
@@ -31,10 +31,8 @@
             latin:keyStyle="tabKeyStyle" />
         <Key
             latin:keyLabel="\@" />
-        <Key
-            latin:keyStyle="spaceKeyStyle"
-            latin:keyXPos="30.750%p"
-            latin:keyWidth="39.750%p" />
+        <include
+            latin:keyboardLayout="@xml/key_space" />
         <Key
             latin:keyLabel="&quot;"
             latin:moreKeys="!text/more_keys_for_tablet_double_quote" />
diff --git a/java/res/xml-sw600dp/row_symbols_shift4.xml b/java/res/xml-sw600dp/row_symbols_shift4.xml
index 4381bce..7823561 100644
--- a/java/res/xml-sw600dp/row_symbols_shift4.xml
+++ b/java/res/xml-sw600dp/row_symbols_shift4.xml
@@ -19,7 +19,7 @@
 -->
 
 <merge
-        xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Row
         latin:keyWidth="8.9%p"
@@ -29,10 +29,8 @@
             latin:keyWidth="13.0%p" />
         <Key
             latin:keyStyle="tabKeyStyle" />
-        <Key
-            latin:keyStyle="spaceKeyStyle"
-            latin:keyXPos="30.750%p"
-            latin:keyWidth="39.750%p" />
+        <include
+            latin:keyboardLayout="@xml/key_space" />
         <Spacer
             latin:keyXPos="-10.00%p"
             latin:keyWidth="0%p" />
diff --git a/java/res/xml-sw768dp/key_space.xml b/java/res/xml-sw768dp/key_space.xml
index 115bcb6..f4d0480 100644
--- a/java/res/xml-sw768dp/key_space.xml
+++ b/java/res/xml-sw768dp/key_space.xml
@@ -21,13 +21,15 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
+    <Spacer
+        latin:keyWidth="0dp"
+        latin:keyXPos="31.250%p" />
     <switch>
         <case
             latin:languageCode="fa"
         >
             <Key
                 latin:keyStyle="spaceKeyStyle"
-                latin:keyXPos="31.250%p"
                 latin:keyWidth="29.453%p" />
             <!-- U+200C: "" ZERO WIDTH NON-JOINER
                  U+200D: "" ZERO WIDTH JOINER -->
@@ -37,7 +39,6 @@
         <default>
             <Key
                 latin:keyStyle="spaceKeyStyle"
-                latin:keyXPos="31.250%p"
                 latin:keyWidth="37.500%p" />
         </default>
     </switch>
diff --git a/java/res/xml-sw768dp/row_symbols4.xml b/java/res/xml-sw768dp/row_symbols4.xml
index ecb1259..29845aa 100644
--- a/java/res/xml-sw768dp/row_symbols4.xml
+++ b/java/res/xml-sw768dp/row_symbols4.xml
@@ -19,7 +19,7 @@
 -->
 
 <merge
-        xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Row
         latin:keyWidth="8.047%p"
@@ -31,10 +31,8 @@
             latin:keyXPos="15.157%p" />
         <Key
             latin:keyLabel="\@" />
-        <Key
-            latin:keyStyle="spaceKeyStyle"
-            latin:keyXPos="31.250%p"
-            latin:keyWidth="37.500%p" />
+        <include
+            latin:keyboardLayout="@xml/key_space" />
         <Key
             latin:keyLabel="&quot;"
             latin:moreKeys="!text/more_keys_for_tablet_double_quote" />
diff --git a/java/res/xml-sw768dp/row_symbols_shift4.xml b/java/res/xml-sw768dp/row_symbols_shift4.xml
index 8e0071f..6828fdb 100644
--- a/java/res/xml-sw768dp/row_symbols_shift4.xml
+++ b/java/res/xml-sw768dp/row_symbols_shift4.xml
@@ -19,17 +19,15 @@
 -->
 
 <merge
-        xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Row
         latin:keyWidth="8.047%p"
     >
         <include
             latin:keyboardLayout="@xml/key_settings" />
-        <Key
-            latin:keyStyle="spaceKeyStyle"
-            latin:keyXPos="31.250%p"
-            latin:keyWidth="37.500%p" />
+        <include
+            latin:keyboardLayout="@xml/key_space" />
         <switch>
             <case
                 latin:shortcutKeyEnabled="true"
diff --git a/java/res/xml/key_space.xml b/java/res/xml/key_space.xml
index 02ee42f..c47407d 100644
--- a/java/res/xml/key_space.xml
+++ b/java/res/xml/key_space.xml
@@ -21,6 +21,9 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
+    <Spacer
+        latin:keyWidth="0dp"
+        latin:keyXPos="25%p" />
     <switch>
         <case
             latin:languageCode="fa"
diff --git a/java/res/xml/row_symbols4.xml b/java/res/xml/row_symbols4.xml
index 3ff8846..a92d55a 100644
--- a/java/res/xml/row_symbols4.xml
+++ b/java/res/xml/row_symbols4.xml
@@ -43,9 +43,8 @@
                     latin:keyStyle="f1MoreKeysStyle" />
             </default>
         </switch>
-        <Key
-            latin:keyStyle="spaceKeyStyle"
-            latin:keyWidth="50%p" />
+        <include
+            latin:keyboardLayout="@xml/key_space" />
         <Key
             latin:keyStyle="punctuationKeyStyle" />
         <Key
diff --git a/java/res/xml/row_symbols_shift4.xml b/java/res/xml/row_symbols_shift4.xml
index 28b6ab8..6608b77 100644
--- a/java/res/xml/row_symbols_shift4.xml
+++ b/java/res/xml/row_symbols_shift4.xml
@@ -35,9 +35,8 @@
         <Key
             latin:keyLabel="&#x201E;"
             latin:backgroundType="functional" />
-        <Key
-            latin:keyStyle="spaceKeyStyle"
-            latin:keyWidth="50%p" />
+        <include
+            latin:keyboardLayout="@xml/key_space" />
         <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
         <Key
             latin:keyLabel="&#x2026;"
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index dcbdc27..28855f5 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -313,8 +313,11 @@
 
         public void onAddKey(Key newKey) {
             final Key key = (mKeysCache != null) ? mKeysCache.get(newKey) : newKey;
-            mKeys.add(key);
-            updateHistogram(key);
+            final boolean zeroWidthSpacer = key.isSpacer() && key.mWidth == 0;
+            if (!zeroWidthSpacer) {
+                mKeys.add(key);
+                updateHistogram(key);
+            }
             if (key.mCode == Keyboard.CODE_SHIFT) {
                 mShiftKeys.add(key);
             }