Update Arabic keyboard

Bug: 4161983
Change-Id: Ie163cd17c87773bf2ca37fff7cff79611fff644f
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index 00a445e..aa1a005 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -60,7 +60,9 @@
         latin:parentStyle="functionalKeyStyle"
         latin:isSticky="true" />
     <switch>
-        <case latin:languageCode="ar|iw">
+        <case
+            latin:languageCode="ar|iw"
+        >
             <key-style
                 latin:styleName="deleteKeyStyle"
                 latin:code="@integer/key_delete"
@@ -225,4 +227,27 @@
                 latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
+    <switch>
+        <case
+            latin:navigateAction="true"
+        >
+            <key-style
+                latin:styleName="punctuationKeyStyle"
+                latin:keyHintLabel="@string/keyhintlabel_for_punctuation"
+                latin:keyLabelOption="hasPopupHint"
+                latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
+                latin:maxPopupKeyboardColumn="@integer/popup_keyboard_column_for_web_punctuation"
+                latin:parentStyle="tabKeyStyle" />
+        </case>
+        <default>
+            <key-style
+                latin:styleName="punctuationKeyStyle"
+                latin:keyLabel="."
+                latin:keyHintLabel="@string/keyhintlabel_for_punctuation"
+                latin:keyLabelOption="hasPopupHint"
+                latin:popupCharacters="@string/alternates_for_punctuation"
+                latin:maxPopupKeyboardColumn="@integer/popup_keyboard_column_for_punctuation"
+                latin:parentStyle="functionalKeyStyle" />
+        </default>
+    </switch>
 </merge>
diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml
index ff2ef3a..298f0f6 100644
--- a/java/res/xml/kbd_qwerty_row4.xml
+++ b/java/res/xml/kbd_qwerty_row4.xml
@@ -41,27 +41,9 @@
                 <Key
                     latin:keyStyle="spaceKeyStyle"
                     latin:keyWidth="35.83%p" />
-                <switch>
-                    <case
-                        latin:navigateAction="true"
-                    >
-                        <Key
-                            latin:keyStyle="tabKeyStyle"
-                            latin:keyLabelOption="hasPopupHint"
-                            latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
-                            latin:keyWidth="9.2%p"
-                            latin:maxPopupKeyboardColumn="8" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:keyLabel="."
-                            latin:keyLabelOption="hasPopupHint"
-                            latin:popupCharacters="@string/alternates_for_punctuation"
-                            latin:keyWidth="9.2%p"
-                            latin:maxPopupKeyboardColumn="7"
-                            latin:keyStyle="functionalKeyStyle" />
-                    </default>
-                </switch>
+                <Key
+                    latin:keyStyle="punctuationKeyStyle"
+                    latin:keyWidth="9.2%p" />
             </case>
             <!-- latin:hasSettingsKey="false" -->
             <default>
@@ -74,25 +56,8 @@
                 <Key
                     latin:keyStyle="spaceKeyStyle"
                     latin:keyWidth="50%p" />
-                <switch>
-                    <case
-                        latin:navigateAction="true"
-                    >
-                        <Key
-                            latin:keyStyle="tabKeyStyle"
-                            latin:keyLabelOption="hasPopupHint"
-                            latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
-                            latin:maxPopupKeyboardColumn="8" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:keyLabel="."
-                            latin:keyLabelOption="hasPopupHint"
-                            latin:popupCharacters="@string/alternates_for_punctuation"
-                            latin:maxPopupKeyboardColumn="7"
-                            latin:keyStyle="functionalKeyStyle" />
-                    </default>
-                </switch>
+                <Key
+                    latin:keyStyle="punctuationKeyStyle" />
             </default>
         </switch>
         <switch>
diff --git a/java/res/xml/kbd_rows_arabic.xml b/java/res/xml/kbd_rows_arabic.xml
index a548775..07e6274 100644
--- a/java/res/xml/kbd_rows_arabic.xml
+++ b/java/res/xml/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"
 >
@@ -31,28 +28,49 @@
     >
         <Key
             latin:keyLabel="ض"
+            latin:keyHintLabel="1"
+            latin:popupCharacters="1,١"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:keyLabel="ص" />
+            latin:keyLabel="ص"
+            latin:keyHintLabel="2"
+            latin:popupCharacters="2,٢" />
         <Key
-            latin:keyLabel="ق" />
+            latin:keyLabel="ق"
+            latin:keyHintLabel="3"
+            latin:popupCharacters="3,٣" />
+        <!-- \u06a4: ARABIC LETTER VEH -->
         <Key
             latin:keyLabel="ف"
-            latin:popupCharacters="ڤ" />
+            latin:keyHintLabel="4"
+            latin:popupCharacters="\u06a4,4,٤" />
         <Key
-            latin:keyLabel="غ" />
+            latin:keyLabel="غ"
+            latin:keyHintLabel="5"
+            latin:popupCharacters="5,٥" />
         <Key
-            latin:keyLabel="ع" />
+            latin:keyLabel="ع"
+            latin:keyHintLabel="6"
+            latin:popupCharacters="6,٦" />
+        <!-- \ufeeb: ARABIC LETTER HEH INITIAL FORM
+             \u0647\u0640: ARABIC LETTER HEH + ARABIC TATWEEL -->
         <Key
             latin:keyLabel="ه"
-            latin:popupCharacters="هـ" />
+            latin:keyHintLabel="7"
+            latin:popupCharacters="7,٧,\ufeeb|\u0647\u0640" />
         <Key
-            latin:keyLabel="خ" />
+            latin:keyLabel="خ"
+            latin:keyHintLabel="8"
+            latin:popupCharacters="8,٨" />
         <Key
-            latin:keyLabel="ح" />
+            latin:keyLabel="ح"
+            latin:keyHintLabel="9"
+            latin:popupCharacters="9,٩" />
+        <!-- \u0686: ARABIC LETTER TCHEH -->
         <Key
             latin:keyLabel="ج"
-            latin:popupCharacters="چ"
+            latin:keyHintLabel="0"
+            latin:popupCharacters="0,٠,\u0686"
             latin:keyWidth="fillRight"
             latin:keyEdgeFlags="right" />
     </Row>
@@ -64,20 +82,36 @@
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="س" />
+        <!-- \u0626: ARABIC LETTER YEH WITH HAMZA ABOVE
+             \u0649: ARABIC LETTER ALEF MAKSURA -->
         <Key
             latin:keyLabel="ي"
-            latin:popupCharacters="ى,ئ" />
+            latin:popupCharacters="\u0626,\u0649" />
         <Key
             latin:keyLabel="ب"
             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" />
+        <!-- \u0621: ARABIC LETTER HAMZA
+             \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="\u0621,\u0623,\u0625,\u0622" />
         <Key
-            latin:keyLabel="ت" />
+            latin:keyLabel="ت"
+            latin:popupCharacters="ث" />
         <Key
             latin:keyLabel="ن" />
         <Key
@@ -89,10 +123,11 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="9.7%p"
+        latin:keyWidth="10%p"
     >
         <Key
             latin:keyLabel="ظ"
+            latin:keyXPos="5.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="ط" />
@@ -106,17 +141,16 @@
         <Key
             latin:keyLabel="ر" />
         <Key
-            latin:keyLabel="و"
-            latin:popupCharacters="ؤ" />
-        <Key
             latin:keyLabel="ة" />
         <Key
-            latin:keyLabel="ث" />
+            latin:keyLabel="و"
+            latin:popupCharacters="ؤ" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight"
             latin:visualInsetsLeft="1%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </merge>
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index 8e9124f..8f682d9 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -30,33 +30,36 @@
         latin:rowEdgeFlags="top"
     >
         <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"
             latin:keyWidth="fillRight"
             latin:keyEdgeFlags="right" />
     </Row>
@@ -112,17 +115,19 @@
         <Key
             latin:keyLabel=":" />
         <Key
-            latin:keyLabel=";" />
+            latin:keyLabel="@string/keylabel_for_symbols_semicolon"
+            latin:popupCharacters="@string/alternates_for_symbols_semicolon" />
         <Key
             latin:keyLabel="/" />
         <Key
-            latin:keyLabel="\?"
-            latin:popupCharacters="¿" />
+            latin:keyLabel="@string/keylabel_for_symbols_question"
+            latin:popupCharacters="@string/alternates_for_symbols_question" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight"
             latin:visualInsetsLeft="1%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <include latin:keyboardLayout="@xml/kbd_symbols_row4" />
+    <include
+        latin:keyboardLayout="@xml/kbd_symbols_row4" />
 </Keyboard>
diff --git a/java/res/xml/kbd_symbols_f1.xml b/java/res/xml/kbd_symbols_f1.xml
index da5b5fc..3c7346c 100644
--- a/java/res/xml/kbd_symbols_f1.xml
+++ b/java/res/xml/kbd_symbols_f1.xml
@@ -36,7 +36,8 @@
                 <!-- latin:hasVoiceKey="false" -->
                 <default>
                     <Key
-                        latin:keyLabel=","
+                        latin:keyLabel="@string/keylabel_for_symbols_comma"
+                        latin:popupCharacters="@string/alternates_for_symbols_comma"
                         latin:keyWidth="9.2%p"
                         latin:keyStyle="settingsPopupStyle" />
                 </default>
@@ -54,7 +55,8 @@
                 <!-- latin:hasVoiceKey="false" -->
                 <default>
                     <Key
-                        latin:keyLabel=","
+                        latin:keyLabel="@string/keylabel_for_symbols_comma"
+                        latin:popupCharacters="@string/alternates_for_symbols_comma"
                         latin:keyStyle="settingsPopupStyle" />
                 </default>
             </switch>
diff --git a/java/res/xml/kbd_symbols_row4.xml b/java/res/xml/kbd_symbols_row4.xml
index 68b79e8..34c06df 100644
--- a/java/res/xml/kbd_symbols_row4.xml
+++ b/java/res/xml/kbd_symbols_row4.xml
@@ -42,12 +42,8 @@
                     latin:keyStyle="spaceKeyStyle"
                     latin:keyWidth="35.83%p" />
                 <Key
-                    latin:keyLabel="."
-                    latin:keyLabelOption="hasPopupHint"
-                    latin:popupCharacters="@string/alternates_for_punctuation"
-                    latin:keyWidth="9.2%p"
-                    latin:maxPopupKeyboardColumn="7"
-                    latin:keyStyle="functionalKeyStyle" />
+                    latin:keyStyle="punctuationKeyStyle"
+                    latin:keyWidth="9.2%p" />
             </case>
             <!-- latin:hasSettingsKey="false" -->
             <default>
@@ -61,11 +57,7 @@
                     latin:keyStyle="spaceKeyStyle"
                     latin:keyWidth="50%p" />
                 <Key
-                    latin:keyLabel="."
-                    latin:keyLabelOption="hasPopupHint"
-                    latin:popupCharacters="@string/alternates_for_punctuation"
-                    latin:maxPopupKeyboardColumn="7"
-                    latin:keyStyle="functionalKeyStyle" />
+                    latin:keyStyle="punctuationKeyStyle" />
             </default>
         </switch>
         <switch>