Support Persian Keyboard

This is a first trial implementation based on Arabic layout.

Bug: 5456620
Change-Id: Ifa21d7fbd408853a44678623c13b9c078283732c
diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml
index 2fa8b38..b206f0e 100644
--- a/java/res/xml-sw600dp/key_styles_common.xml
+++ b/java/res/xml-sw600dp/key_styles_common.xml
@@ -79,9 +79,12 @@
         latin:code="@integer/key_space"
         latin:keyActionFlags="noKeyPreview" />
     <key-style
-        latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
-        latin:code="@integer/key_space"
-        latin:keyActionFlags="noKeyPreview" />
+        latin:styleName="zwnjKeyStyle"
+        latin:keyLabel="&#x200C;"
+        latin:moreKeys="&#x200D;"
+        latin:keyLabelFlags="hasPopupHint"
+        latin:altCode="@integer/key_space"
+        latin:keyActionFlags="altCodeWhileTyping" />
     <key-style
         latin:styleName="smileyKeyStyle"
         latin:keyLabel=":-)"
diff --git a/java/res/xml-sw600dp/row_qwerty4.xml b/java/res/xml-sw600dp/row_qwerty4.xml
index 3c2f06d..eec35b0 100644
--- a/java/res/xml-sw600dp/row_qwerty4.xml
+++ b/java/res/xml-sw600dp/row_qwerty4.xml
@@ -50,10 +50,24 @@
                     latin:keyStyle="hasShiftedLetterHintStyle" />
             </default>
         </switch>
-        <Key
-            latin:keyStyle="spaceKeyStyle"
-            latin:keyXPos="30.750%p"
-            latin:keyWidth="39.750%p" />
+        <switch>
+            <case
+                latin:languageCode="fa"
+            >
+                <Key
+                    latin:keyStyle="spaceKeyStyle"
+                    latin:keyXPos="30.750%p"
+                    latin:keyWidth="30.850%p" />
+                <Key
+                    latin:keyStyle="zwnjKeyStyle" />
+            </case>
+            <default>
+                <Key
+                    latin:keyStyle="spaceKeyStyle"
+                    latin:keyXPos="30.750%p"
+                    latin:keyWidth="39.750%p" />
+            </default>
+        </switch>
         <switch>
             <case
                 latin:languageCode="iw"
diff --git a/java/res/xml-sw600dp/rows_number_normal.xml b/java/res/xml-sw600dp/rows_number_normal.xml
index 3704c52..be5776b 100644
--- a/java/res/xml-sw600dp/rows_number_normal.xml
+++ b/java/res/xml-sw600dp/rows_number_normal.xml
@@ -143,7 +143,7 @@
             latin:keyStyle="numTabKeyStyle"
             latin:keyWidth="11.00%p" />
         <Key
-            latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+            latin:keyStyle="spaceKeyStyle"
             latin:keyWidth="27.75%p"
             latin:keyXPos="12.75%p" />
         <Key
diff --git a/java/res/xml-sw600dp/rows_phone.xml b/java/res/xml-sw600dp/rows_phone.xml
index 4c896e9..e892693 100644
--- a/java/res/xml-sw600dp/rows_phone.xml
+++ b/java/res/xml-sw600dp/rows_phone.xml
@@ -112,7 +112,7 @@
             latin:keyStyle="numTabKeyStyle"
             latin:keyWidth="11.00%p" />
         <Key
-            latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+            latin:keyStyle="spaceKeyStyle"
             latin:keyWidth="27.75%p"
             latin:keyXPos="12.75%p" />
         <Key