Update Arabic keyboard

Bug: 4161983
Change-Id: Ie163cd17c87773bf2ca37fff7cff79611fff644f
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index bd6736a..388e293 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -51,7 +51,7 @@
         latin:parentStyle="functionalKeyStyle"
         latin:isSticky="true" />
     <switch>
-        <case latin:languageCode="iw">
+        <case latin:languageCode="ar|iw">
             <key-style
                 latin:styleName="deleteKeyStyle"
                 latin:code="@integer/key_delete"
diff --git a/java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml b/java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml
index 402bb92..50d4d4b 100644
--- a/java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml
+++ b/java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml
@@ -39,10 +39,10 @@
         </case>
         <default>
             <Key
-                latin:keyLabel="\'"
+                latin:keyLabel="@string/keylabel_for_apostrophe"
                 latin:keyLabelOption="hasUppercaseLetter"
-                latin:keyHintLabel="&quot;"
-                latin:popupCharacters="&quot;" />
+                latin:keyHintLabel="@string/keyhintlabel_for_apostrophe"
+                latin:popupCharacters="@string/alternates_for_apostrophe" />
         </default>
     </switch>
     <switch>
@@ -54,10 +54,10 @@
         </case>
         <default>
             <Key
-                latin:keyLabel="-"
+                latin:keyLabel="@string/keylabel_for_dash"
                 latin:keyLabelOption="hasUppercaseLetter"
-                latin:keyHintLabel="_"
-                latin:popupCharacters="_" />
+                latin:keyHintLabel="@string/keyhintlabel_for_dash"
+                latin:popupCharacters="@string/alternates_for_dash" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_rows_arabic.xml b/java/res/xml-sw600dp/kbd_rows_arabic.xml
index f1a4755..4c19094 100644
--- a/java/res/xml-sw600dp/kbd_rows_arabic.xml
+++ b/java/res/xml-sw600dp/kbd_rows_arabic.xml
@@ -18,9 +18,6 @@
 */
 -->
 
-<!-- This file for Arabic layout is an alpha version. It allows to enter   -->
-<!-- some right-to-left text, but it has gone through no study whatsoever, -->
-<!-- and needs to be run through UX.                                       -->
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
@@ -40,21 +37,23 @@
             latin:keyLabel="ق" />
         <Key
             latin:keyLabel="ف"
-            latin:popupCharacters="ف,ڤ" />
+            latin:popupCharacters="ڤ" />
         <Key
             latin:keyLabel="غ" />
         <Key
             latin:keyLabel="ع" />
+        <!-- \ufeeb: ARABIC LETTER HEH INITIAL FORM
+             \u0647\u0640: ARABIC LETTER HEH + ARABIC TATWEEL -->
         <Key
             latin:keyLabel="ه"
-            latin:popupCharacters="ه,هـ" />
+            latin:popupCharacters="\ufeeb|\u0647\u0640" />
         <Key
             latin:keyLabel="خ" />
         <Key
             latin:keyLabel="ح" />
         <Key
             latin:keyLabel="ج"
-            latin:popupCharacters="ج,چ" />
+            latin:popupCharacters="چ" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
@@ -73,13 +72,25 @@
             latin:keyLabel="ي" />
         <Key
             latin:keyLabel="ب"
-            latin:popupCharacters="ب,پ" />
+            latin:popupCharacters="پ" />
+        <!-- \ufefb: ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+             \u0644: ARABIC LETTER LAM
+             \u0627: ARABIC LETTER ALEF
+             \ufef7: ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+             \u0623: ARABIC LETTER ALEF WITH HAMZA ABOVE
+             \ufef9: ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+             \u0625: ARABIC LETTER ALEF WITH HAMZA BELOW
+             \ufef5: ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+             \u0622: ARABIC LETTER ALEF WITH MADDA ABOVE -->
         <Key
             latin:keyLabel="ل"
-            latin:popupCharacters="ل,لا" />
+            latin:popupCharacters="\ufefb|\u0644\u0627,\ufef7|\u0644\u0623,\ufef9|\u0644\u0625,\ufef5|\u0644\u0622" />
+        <!-- \u0623: ARABIC LETTER ALEF WITH HAMZA ABOVE
+             \u0625: ARABIC LETTER ALEF WITH HAMZA BELOW
+             \u0622: ARABIC LETTER ALEF WITH MADDA ABOVE -->
         <Key
             latin:keyLabel="ا"
-            latin:popupCharacters="ا,أ,إ,آ" />
+            latin:popupCharacters="\u0623,\u0625,\u0622" />
         <Key
             latin:keyLabel="ت" />
         <Key
@@ -88,7 +99,7 @@
             latin:keyLabel="م" />
         <Key
             latin:keyLabel="ك"
-            latin:popupCharacters="ك,گ" />
+            latin:popupCharacters="گ" />
         <Key
             latin:keyLabel="ط" />
         <Key
@@ -98,12 +109,43 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="7.65%p"
+        latin:keyWidth="8.0%p"
     >
-        <Key
-            latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="8.0%p"
-            latin:keyEdgeFlags="left" />
+    <!-- kbd_row3_smiley -->
+        <switch>
+            <case
+                latin:mode="email"
+            >
+                <Key
+                    latin:keyLabel="\@"
+                    latin:keyEdgeFlags="left" />
+            </case>
+            <case
+                latin:mode="url"
+            >
+                <Key
+                    latin:keyLabel="-"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLabel="_"
+                    latin:popupCharacters="_"
+                    latin:keyEdgeFlags="left" />
+            </case>
+            <case
+                latin:imeAction="actionSearch"
+            >
+                <Key
+                    latin:keyLabel=":"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLabel="+"
+                    latin:popupCharacters="+"
+                    latin:keyEdgeFlags="left" />
+            </case>
+            <default>
+                <Key
+                    latin:keyStyle="smileyKeyStyle"
+                    latin:keyEdgeFlags="left" />
+            </default>
+        </switch>
         <Key
             latin:keyLabel="ئ" />
         <Key
@@ -122,13 +164,12 @@
             latin:keyLabel="و" />
         <Key
             latin:keyLabel="ز"
-            latin:popupCharacters="ز,ژ" />
+            latin:popupCharacters="ژ" />
         <Key
             latin:keyLabel="ظ" />
         <Key
             latin:keyLabel="د" />
-        <include
-            latin:keyboardLayout="@xml/kbd_row3_smiley" />
-        </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 19aeab6..dea08dd 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -30,32 +30,36 @@
         latin:keyWidth="9.0%p"
     >
         <Key
-            latin:keyLabel="1"
-            latin:popupCharacters="¹,½,⅓,¼,⅛" />
+            latin:keyLabel="@string/keylabel_for_symbols_1"
+            latin:popupCharacters="@string/alternates_for_symbols_1"
+            latin:keyEdgeFlags="left" />
         <Key
-            latin:keyLabel="2"
-            latin:popupCharacters="²,⅔" />
+            latin:keyLabel="@string/keylabel_for_symbols_2"
+            latin:popupCharacters="@string/alternates_for_symbols_2" />
         <Key
-            latin:keyLabel="3"
-            latin:popupCharacters="³,¾,⅜" />
+            latin:keyLabel="@string/keylabel_for_symbols_3"
+            latin:popupCharacters="@string/alternates_for_symbols_3" />
         <Key
-            latin:keyLabel="4"
-            latin:popupCharacters="⁴" />
+            latin:keyLabel="@string/keylabel_for_symbols_4"
+            latin:popupCharacters="@string/alternates_for_symbols_4" />
         <Key
-            latin:keyLabel="5"
-            latin:popupCharacters="⅝" />
+            latin:keyLabel="@string/keylabel_for_symbols_5"
+            latin:popupCharacters="@string/alternates_for_symbols_5" />
         <Key
-            latin:keyLabel="6" />
+            latin:keyLabel="@string/keylabel_for_symbols_6"
+            latin:popupCharacters="@string/alternates_for_symbols_6" />
         <Key
-            latin:keyLabel="7"
-            latin:popupCharacters="⅞" />
+            latin:keyLabel="@string/keylabel_for_symbols_7"
+            latin:popupCharacters="@string/alternates_for_symbols_7" />
         <Key
-            latin:keyLabel="8" />
+            latin:keyLabel="@string/keylabel_for_symbols_8"
+            latin:popupCharacters="@string/alternates_for_symbols_8" />
         <Key
-            latin:keyLabel="9" />
+            latin:keyLabel="@string/keylabel_for_symbols_9"
+            latin:popupCharacters="@string/alternates_for_symbols_9" />
         <Key
-            latin:keyLabel="0"
-            latin:popupCharacters="ⁿ,∅" />
+            latin:keyLabel="@string/keylabel_for_symbols_0"
+            latin:popupCharacters="@string/alternates_for_symbols_0" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
@@ -126,17 +130,19 @@
             </default>
         </switch>
         <Key
-            latin:keyLabel=";" />
+            latin:keyLabel="@string/keylabel_for_symbols_semicolon"
+            latin:popupCharacters="@string/alternates_for_symbols_semicolon" />
         <Key
-            latin:keyLabel="," />
+            latin:keyLabel="@string/keylabel_for_symbols_comma"
+            latin:popupCharacters="@string/alternates_for_symbols_comma" />
         <Key
             latin:keyLabel="." />
         <Key
             latin:keyLabel="!"
             latin:popupCharacters="¡" />
         <Key
-            latin:keyLabel="\?"
-            latin:popupCharacters="¿" />
+            latin:keyLabel="@string/keylabel_for_symbols_question"
+            latin:popupCharacters="@string/alternates_for_symbols_question" />
         <Key
             latin:keyLabel="/"
             latin:keyWidth="fillRight" />