Fix Persian keyboard having correct code points

Bug: 6679850
Change-Id: Iaa33f48ffb5634de31e039574fb58185c6c078e8
diff --git a/java/res/xml/keys_less_greater.xml b/java/res/xml/keys_less_greater.xml
index 4584e5c..bc9ecdf 100644
--- a/java/res/xml/keys_less_greater.xml
+++ b/java/res/xml/keys_less_greater.xml
@@ -21,12 +21,30 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <Key
-        latin:keyLabel="&lt;"
-        latin:code="!code/key_less_than"
-        latin:moreKeys="!text/more_keys_for_less_than" />
-    <Key
-        latin:keyLabel="&gt;"
-        latin:code="!code/key_greater_than"
-        latin:moreKeys="!text/more_keys_for_greater_than" />
+    <switch>
+        <case
+            latin:languageCode="fa"
+        >
+            <!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                 U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+            <Key
+                latin:keyLabel="&#x00AB;"
+                latin:code="0x00BB"
+                latin:moreKeys="!text/more_keys_for_less_than" />
+            <Key
+                latin:keyLabel="&#x00BB;"
+                latin:code="0x00AB"
+                latin:moreKeys="!text/more_keys_for_greater_than" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel="&lt;"
+                latin:code="!code/key_less_than"
+                latin:moreKeys="!text/more_keys_for_less_than" />
+            <Key
+                latin:keyLabel="&gt;"
+                latin:code="!code/key_greater_than"
+                latin:moreKeys="!text/more_keys_for_greater_than" />
+        </default>
+    </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_farsi1.xml b/java/res/xml/rowkeys_farsi1.xml
index 81618af7..840b048 100644
--- a/java/res/xml/rowkeys_farsi1.xml
+++ b/java/res/xml/rowkeys_farsi1.xml
@@ -27,32 +27,32 @@
     <Key
         latin:keyLabel="&#x0635;"
         latin:moreKeys="&#x0636;,%"
-        latin:keyHintLabel="1"
-        latin:additionalMoreKeys="1,&#x06F1;" />
+        latin:keyHintLabel="&#x06F1;"
+        latin:additionalMoreKeys="&#x06F1;,1" />
     <!-- U+0642: "ق" ARABIC LETTER QAF
          U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO -->
     <Key
         latin:keyLabel="&#x0642;"
-        latin:keyHintLabel="2"
-        latin:additionalMoreKeys="2,&#x06F2;" />
+        latin:keyHintLabel="&#x06F2;"
+        latin:additionalMoreKeys="&#x06F2;,2" />
     <!-- U+0641: "ف" ARABIC LETTER FEH
          U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE -->
     <Key
         latin:keyLabel="&#x0641;"
-        latin:keyHintLabel="3"
-        latin:additionalMoreKeys="3,&#x06F3;" />
+        latin:keyHintLabel="&#x06F3;"
+        latin:additionalMoreKeys="&#x06F3;,3" />
     <!-- U+063A: "غ" ARABIC LETTER GHAIN
          U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR -->
     <Key
         latin:keyLabel="&#x063A;"
-        latin:keyHintLabel="4"
-        latin:additionalMoreKeys="4,&#x06F4;" />
+        latin:keyHintLabel="&#x06F4;"
+        latin:additionalMoreKeys="&#x06F4;,4" />
     <!-- U+0639: "ع" ARABIC LETTER AIN
          U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE -->
     <Key
         latin:keyLabel="&#x0639;"
-        latin:keyHintLabel="5"
-        latin:additionalMoreKeys="5,&#x06F5;" />
+        latin:keyHintLabel="&#x06F5;"
+        latin:additionalMoreKeys="&#x06F5;,5" />
     <!-- U+0647: "ه" ARABIC LETTER HEH
          U+FEEB: "ﻫ" ARABIC LETTER HEH INITIAL FORM
          U+0647/U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER
@@ -62,30 +62,30 @@
     <Key
         latin:keyLabel="&#x0647;"
         latin:moreKeys="&#xFEEB;|&#x0647;&#x200D;,&#x0647;&#x0654;,&#x0629;,%"
-        latin:keyHintLabel="6"
-        latin:additionalMoreKeys="6,&#x06F6;" />
+        latin:keyHintLabel="&#x06F6;"
+        latin:additionalMoreKeys="&#x06F6;,6" />
     <!-- U+062E: "خ" ARABIC LETTER KHAH
          U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN -->
     <Key
         latin:keyLabel="&#x062E;"
-        latin:keyHintLabel="7"
-        latin:additionalMoreKeys="7,&#x06F7;" />
+        latin:keyHintLabel="&#x06F7;"
+        latin:additionalMoreKeys="&#x06F7;,7" />
     <!-- U+062D: "ح" ARABIC LETTER HAH
          U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT -->
     <Key
         latin:keyLabel="&#x062D;"
-        latin:keyHintLabel="8"
-        latin:additionalMoreKeys="8,&#x06F8;" />
+        latin:keyHintLabel="&#x06F8;"
+        latin:additionalMoreKeys="&#x06F8;,8" />
     <!-- U+062C: "ج" ARABIC LETTER JEEM
          U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE -->
     <Key
         latin:keyLabel="&#x062C;"
-        latin:keyHintLabel="9"
-        latin:additionalMoreKeys="9,&#x06F9;" />
+        latin:keyHintLabel="&#x06F9;"
+        latin:additionalMoreKeys="&#x06F9;,9" />
     <!-- U+0686: "چ" ARABIC LETTER TCHEH
          U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO -->
     <Key
         latin:keyLabel="&#x0686;"
-        latin:keyHintLabel="0"
-        latin:additionalMoreKeys="0,&#x06F0;" />
+        latin:keyHintLabel="&#x06F0;"
+        latin:additionalMoreKeys="&#x06F0;,0" />
 </merge>
diff --git a/java/res/xml/rowkeys_farsi2.xml b/java/res/xml/rowkeys_farsi2.xml
index 77279c6..2154893 100644
--- a/java/res/xml/rowkeys_farsi2.xml
+++ b/java/res/xml/rowkeys_farsi2.xml
@@ -31,10 +31,12 @@
         latin:moreKeys="&#x0636;" />
     <!-- U+06CC: "ی" ARABIC LETTER FARSI YEH
          U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE
-         U+064A: "ي" ARABIC LETTER YEH -->
+         U+064A: "ي" ARABIC LETTER YEH
+         U+FBE8: "ﯨ" ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+         U+0649: "ى" ARABIC LETTER ALEF MAKSURA -->
     <Key
         latin:keyLabel="&#x06CC;"
-        latin:moreKeys="&#x0626;,&#x064A;" />
+        latin:moreKeys="&#x0626;,&#x064A;,&#xFBE8;|&#x0649;" />
     <!-- U+0628: "ب" ARABIC LETTER BEH -->
     <Key
         latin:keyLabel="&#x0628;" />
@@ -44,19 +46,18 @@
     <!-- U+0627: "ا" ARABIC LETTER ALEF
          U+0621: "ء" ARABIC LETTER HAMZA
          U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE
-         U+0672: "ٲ" ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+         U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
          U+0671: "ٱ" ARABIC LETTER ALEF WASLA
-         U+0673: "ٳ" ARABIC LETTER ALEF WITH WAVY HAMZA BELOW-->
-    <!-- TODO: DroidSansArabic lacks the glyph of U+0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE -->
-    <!-- TODO: DroidSansArabic lacks the glyph of U+0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW -->
+         U+0625: "إ" ARABIC LETTER ALEF WITH HAMZA BELOW -->
     <Key
         latin:keyLabel="&#x0627;"
-        latin:moreKeys="&#x0621;,&#x0622;,&#x0672;,&#x0671;,&#x0673;" />
+        latin:moreKeys="&#x0621;,&#x0622;,&#x0623;,&#x0671;,&#x0625;" />
     <!-- U+062A: "ت" ARABIC LETTER TEH
-         U+062B: "ﺙ" ARABIC LETTER THEH -->
+         U+062B: "ﺙ" ARABIC LETTER THEH
+         U+0629: "ة": ARABIC LETTER TEH MARBUTA -->
     <Key
         latin:keyLabel="&#x062A;"
-        latin:moreKeys="&#x062B;" />
+        latin:moreKeys="&#x062B;,&#x0629;" />
     <!-- U+0646: "ن" ARABIC LETTER NOON -->
     <Key
         latin:keyLabel="&#x0646;" />
diff --git a/java/res/xml/rowkeys_farsi3.xml b/java/res/xml/rowkeys_farsi3.xml
index 44710e0..29c3513 100644
--- a/java/res/xml/rowkeys_farsi3.xml
+++ b/java/res/xml/rowkeys_farsi3.xml
@@ -44,11 +44,10 @@
     <Key
         latin:keyLabel="&#x067E;" />
     <!-- U+0648: "و" ARABIC LETTER WAW
-         U+0676: "ٶ" ARABIC LETTER HIGH HAMZA WAW -->
-    <!-- TODO: DroidSansArabic lacks the glyph of U+0676 ARABIC LETTER HIGH HAMZA WAW -->
+         U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE -->
     <Key
         latin:keyLabel="&#x0648;"
-        latin:moreKeys="&#x0676;" />
+        latin:moreKeys="&#x0624;" />
     <!-- U+06AF: "گ" ARABIC LETTER GAF -->
     <Key
         latin:keyLabel="&#x06AF;" />
diff --git a/java/res/xml/rowkeys_symbols2.xml b/java/res/xml/rowkeys_symbols2.xml
index 34b9aa2..425e204 100644
--- a/java/res/xml/rowkeys_symbols2.xml
+++ b/java/res/xml/rowkeys_symbols2.xml
@@ -21,10 +21,28 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <Key
-        latin:keyLabel="\@" />
-    <Key
-        latin:keyLabel="\#" />
+    <switch>
+        <case
+            latin:languageCode="fa"
+        >
+            <!-- U+066C: "٬" ARABIC THOUSANDS SEPARATOR
+                 U+066B: "٫" ARABIC DECIMAL SEPARATOR -->
+            <Key
+                latin:keyLabel="&#x066C;"
+                latin:keyHintLabel="\@"
+                latin:moreKeys="\@" />
+            <Key
+                latin:keyLabel="&#x066B;"
+                latin:keyHintLabel="#"
+                latin:moreKeys="#" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel="\@" />
+            <Key
+                latin:keyLabel="#" />
+        </default>
+    </switch>
     <Key
         latin:keyStyle="currencyKeyStyle" />
     <Key
diff --git a/java/res/xml/rowkeys_symbols3.xml b/java/res/xml/rowkeys_symbols3.xml
index 2b2d9a4..c89716b 100644
--- a/java/res/xml/rowkeys_symbols3.xml
+++ b/java/res/xml/rowkeys_symbols3.xml
@@ -24,12 +24,30 @@
     <Key
         latin:keyLabel="!text/keylabel_for_symbols_exclamation"
         latin:moreKeys="!text/more_keys_for_symbols_exclamation" />
-    <Key
-        latin:keyLabel="&quot;"
-        latin:moreKeys="!text/more_keys_for_double_quote" />
-    <Key
-        latin:keyLabel="\'"
-        latin:moreKeys="!text/more_keys_for_single_quote" />
+    <switch>
+        <case
+            latin:languageCode="fa"
+        >
+            <!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                 U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+            <Key
+                latin:keyLabel="&#x00AB;"
+                latin:code="0x00BB"
+                latin:moreKeys="!text/more_keys_for_double_quote" />
+            <Key
+                latin:keyLabel="&#x00BB;"
+                latin:code="0x00AB"
+                latin:moreKeys="!text/more_keys_for_single_quote" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel="&quot;"
+                latin:moreKeys="!text/more_keys_for_double_quote" />
+            <Key
+                latin:keyLabel="\'"
+                latin:moreKeys="!text/more_keys_for_single_quote" />
+        </default>
+    </switch>
     <Key
         latin:keyLabel=":" />
     <Key