diff --git a/java/res/values-ar/donottranslate-altchars.xml b/java/res/values-ar/donottranslate-altchars.xml
new file mode 100644
index 000000000..b4c103dcf
--- /dev/null
+++ b/java/res/values-ar/donottranslate-altchars.xml
@@ -0,0 +1,70 @@
+
+
+
+
+ "\u060c,\u061b,\u061f,!,:,-,/,\',\",\u0651,\u0652,\u064c,\u0640,\u064f,\u064e,\u0650,\u064b,\u064d"
+ ".,\u060c,\u061b,\u061f,!,:,-,/,\',\",\u0651,\u0652,\u064c,\u0640,\u064f,\u064e,\u0650,\u064b,\u064d"
+ 9
+ 10
+ \u064b
+ "١"
+ "٢"
+ "٣"
+ "٤"
+ "٥"
+ "٦"
+ "٧"
+ "٨"
+ "٩"
+ "٠"
+ 1,¹,½,⅓,¼,⅛
+ 2,²,⅔
+ 3,³,¾,⅜
+ 4,⁴
+ 5,⅝
+ 6
+ 7,⅞
+ 8
+ 9
+ 0,ⁿ,∅
+ \u060c
+ \u061f
+ \u061b
+ ,
+ \?,¿
+ ;
+ "،"
+ "."
+ "؟"
+ "\u064b"
+ "\u061f,\u061b,!,:,-,/,\',\""
+ "\u0651,\u0652,\u064c,\u0640,\u064f,\u064e,\u0650,\u064b,\u064d"
+
diff --git a/java/res/values/donottranslate-altchars.xml b/java/res/values/donottranslate-altchars.xml
index 71ed6d2de..9d06d06f7 100644
--- a/java/res/values/donottranslate-altchars.xml
+++ b/java/res/values/donottranslate-altchars.xml
@@ -51,7 +51,42 @@
":-)|:-) ,:-(|:-( ,;-)|;-) ,:-P|:-P ,=-O|=-O ,:-*|:-* ,:O|:O ,B-)|B-) ,:-$|:-$ ,:-!|:-! ,:-[|:-[ ,O:-)|O:-) ,:-\\\\\\\\|:-\\\\\\\\ ,:\'(|:\'( ,:-D|:-D "
"\\,,\?,!,:,-,\',\",(,),/,;,+,&,\@"
".,\\,,\?,!,:,-,\',\",(,),/,;,+,&,\@"
+ 7
+ 8
+
".com"
".net,.org,.gov,.edu"
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 0
+ ¹,½,⅓,¼,⅛
+ ²,⅔
+ ³,¾,⅜
+ ⁴
+ ⅝
+
+ ⅞
+
+
+ ⁿ,∅
+ ,
+ \?
+ ;
+
+ ¿
+
+ \'
+ -
+ \"
+ _
+ \"
+ _
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index bd6736a7b..388e293e6 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" />
-
+
+ latin:keyHintLabel="@string/keyhintlabel_for_apostrophe"
+ latin:popupCharacters="@string/alternates_for_apostrophe" />
@@ -54,10 +54,10 @@
+ latin:keyHintLabel="@string/keyhintlabel_for_dash"
+ latin:popupCharacters="@string/alternates_for_dash" />
diff --git a/java/res/xml-sw600dp/kbd_rows_arabic.xml b/java/res/xml-sw600dp/kbd_rows_arabic.xml
index f1a4755e7..4c1909438 100644
--- a/java/res/xml-sw600dp/kbd_rows_arabic.xml
+++ b/java/res/xml-sw600dp/kbd_rows_arabic.xml
@@ -18,9 +18,6 @@
*/
-->
-
-
-
@@ -40,21 +37,23 @@
latin:keyLabel="ق" />
+ latin:popupCharacters="ڤ" />
+
+ latin:popupCharacters="\ufeeb|\u0647\u0640" />
+ latin:popupCharacters="چ" />
+ latin:popupCharacters="پ" />
+
+ latin:popupCharacters="\ufefb|\u0644\u0627,\ufef7|\u0644\u0623,\ufef9|\u0644\u0625,\ufef5|\u0644\u0622" />
+
+ latin:popupCharacters="\u0623,\u0625,\u0622" />
+ latin:popupCharacters="گ" />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ latin:popupCharacters="ژ" />
-
-
-
+
+
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 19aeab6dc..dea08ddff 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"
>
+ latin:keyLabel="@string/keylabel_for_symbols_1"
+ latin:popupCharacters="@string/alternates_for_symbols_1"
+ latin:keyEdgeFlags="left" />
+ latin:keyLabel="@string/keylabel_for_symbols_2"
+ latin:popupCharacters="@string/alternates_for_symbols_2" />
+ latin:keyLabel="@string/keylabel_for_symbols_3"
+ latin:popupCharacters="@string/alternates_for_symbols_3" />
+ latin:keyLabel="@string/keylabel_for_symbols_4"
+ latin:popupCharacters="@string/alternates_for_symbols_4" />
+ latin:keyLabel="@string/keylabel_for_symbols_5"
+ latin:popupCharacters="@string/alternates_for_symbols_5" />
+ latin:keyLabel="@string/keylabel_for_symbols_6"
+ latin:popupCharacters="@string/alternates_for_symbols_6" />
+ latin:keyLabel="@string/keylabel_for_symbols_7"
+ latin:popupCharacters="@string/alternates_for_symbols_7" />
+ latin:keyLabel="@string/keylabel_for_symbols_8"
+ latin:popupCharacters="@string/alternates_for_symbols_8" />
+ latin:keyLabel="@string/keylabel_for_symbols_9"
+ latin:popupCharacters="@string/alternates_for_symbols_9" />
+ latin:keyLabel="@string/keylabel_for_symbols_0"
+ latin:popupCharacters="@string/alternates_for_symbols_0" />
+ latin:keyLabel="@string/keylabel_for_symbols_semicolon"
+ latin:popupCharacters="@string/alternates_for_symbols_semicolon" />
+ latin:keyLabel="@string/keylabel_for_symbols_comma"
+ latin:popupCharacters="@string/alternates_for_symbols_comma" />
+ latin:keyLabel="@string/keylabel_for_symbols_question"
+ latin:popupCharacters="@string/alternates_for_symbols_question" />
diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index 867a3bbe5..ab8784a05 100644
--- a/java/res/xml-sw768dp/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
@@ -33,7 +33,7 @@
latin:parentStyle="functionalKeyStyle"
latin:isSticky="true" />
-
+
+ latin:keyHintLabel="@string/keyhintlabel_for_apostrophe"
+ latin:popupCharacters="@string/alternates_for_apostrophe" />
@@ -54,10 +54,10 @@
+ latin:keyHintLabel="@string/keyhintlabel_for_dash"
+ latin:popupCharacters="@string/alternates_for_dash" />
diff --git a/java/res/xml-sw768dp/kbd_rows_arabic.xml b/java/res/xml-sw768dp/kbd_rows_arabic.xml
index c1810026b..f3283ae94 100644
--- a/java/res/xml-sw768dp/kbd_rows_arabic.xml
+++ b/java/res/xml-sw768dp/kbd_rows_arabic.xml
@@ -18,9 +18,6 @@
*/
-->
-
-
-
@@ -44,21 +41,23 @@
latin:keyLabel="ق" />
+ latin:popupCharacters="ڤ" />
+
+ latin:popupCharacters="\ufeeb|\u0647\u0640" />
+ latin:popupCharacters="چ" />
+ latin:popupCharacters="پ" />
+
+ latin:popupCharacters="\ufefb|\u0644\u0627,\ufef7|\u0644\u0623,\ufef9|\u0644\u0625,\ufef5|\u0644\u0622" />
+
+ latin:popupCharacters="\u0623,\u0625,\u0622" />
+ latin:popupCharacters="گ" />
-
+ latin:keyLabel="ئ"
+ latin:keyXPos="12.750%p" />
+ latin:popupCharacters="ژ" />
-
+
diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_symbols.xml
index 0e6103ab9..eb77d4d5b 100644
--- a/java/res/xml-sw768dp/kbd_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_symbols.xml
@@ -35,32 +35,35 @@
latin:keyWidth="7.969%p"
latin:keyEdgeFlags="left" />
+ latin:keyLabel="@string/keylabel_for_symbols_1"
+ latin:popupCharacters="@string/alternates_for_symbols_1" />
+ latin:keyLabel="@string/keylabel_for_symbols_2"
+ latin:popupCharacters="@string/alternates_for_symbols_2" />
+ latin:keyLabel="@string/keylabel_for_symbols_3"
+ latin:popupCharacters="@string/alternates_for_symbols_3" />
+ latin:keyLabel="@string/keylabel_for_symbols_4"
+ latin:popupCharacters="@string/alternates_for_symbols_4" />
+ latin:keyLabel="@string/keylabel_for_symbols_5"
+ latin:popupCharacters="@string/alternates_for_symbols_5" />
+ latin:keyLabel="@string/keylabel_for_symbols_6"
+ latin:popupCharacters="@string/alternates_for_symbols_6" />
+ latin:keyLabel="@string/keylabel_for_symbols_7"
+ latin:popupCharacters="@string/alternates_for_symbols_7" />
+ latin:keyLabel="@string/keylabel_for_symbols_8"
+ latin:popupCharacters="@string/alternates_for_symbols_8" />
+ latin:keyLabel="@string/keylabel_for_symbols_9"
+ latin:popupCharacters="@string/alternates_for_symbols_9" />
+ latin:keyLabel="@string/keylabel_for_symbols_0"
+ latin:popupCharacters="@string/alternates_for_symbols_0" />
+ latin:keyLabel="@string/keylabel_for_symbols_semicolon"
+ latin:popupCharacters="@string/alternates_for_symbols_semicolon" />
+ latin:keyLabel="@string/keylabel_for_symbols_comma"
+ latin:popupCharacters="@string/alternates_for_symbols_comma" />
+ latin:keyLabel="@string/keylabel_for_symbols_question"
+ latin:popupCharacters="@string/alternates_for_symbols_question" />
-
+
+
+
+
+
+
+
+
+
diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml
index ff2ef3acd..298f0f61e 100644
--- a/java/res/xml/kbd_qwerty_row4.xml
+++ b/java/res/xml/kbd_qwerty_row4.xml
@@ -41,27 +41,9 @@
-
-
-
-
-
-
-
-
+
@@ -74,25 +56,8 @@
-
-
-
-
-
-
-
-
+
diff --git a/java/res/xml/kbd_rows_arabic.xml b/java/res/xml/kbd_rows_arabic.xml
index a548775a4..07e62741d 100644
--- a/java/res/xml/kbd_rows_arabic.xml
+++ b/java/res/xml/kbd_rows_arabic.xml
@@ -18,9 +18,6 @@
*/
-->
-
-
-
@@ -31,28 +28,49 @@
>
+ latin:keyLabel="ص"
+ latin:keyHintLabel="2"
+ latin:popupCharacters="2,٢" />
+ latin:keyLabel="ق"
+ latin:keyHintLabel="3"
+ latin:popupCharacters="3,٣" />
+
+ latin:keyHintLabel="4"
+ latin:popupCharacters="\u06a4,4,٤" />
+ latin:keyLabel="غ"
+ latin:keyHintLabel="5"
+ latin:popupCharacters="5,٥" />
+ latin:keyLabel="ع"
+ latin:keyHintLabel="6"
+ latin:popupCharacters="6,٦" />
+
+ latin:keyHintLabel="7"
+ latin:popupCharacters="7,٧,\ufeeb|\u0647\u0640" />
+ latin:keyLabel="خ"
+ latin:keyHintLabel="8"
+ latin:popupCharacters="8,٨" />
+ latin:keyLabel="ح"
+ latin:keyHintLabel="9"
+ latin:popupCharacters="9,٩" />
+
@@ -64,20 +82,36 @@
latin:keyEdgeFlags="left" />
+
+ latin:popupCharacters="\u0626,\u0649" />
+
+ latin:popupCharacters="\ufefb|\u0644\u0627,\ufef7|\u0644\u0623,\ufef9|\u0644\u0625,\ufef5|\u0644\u0622" />
+
+ latin:popupCharacters="\u0621,\u0623,\u0625,\u0622" />
+ latin:keyLabel="ت"
+ latin:popupCharacters="ث" />
@@ -105,18 +140,17 @@
latin:popupCharacters="ژ" />
-
+ latin:keyLabel="و"
+ latin:popupCharacters="ؤ" />
-
+
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index 8e9124f74..8f682d932 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -30,33 +30,36 @@
latin:rowEdgeFlags="top"
>
+ latin:keyLabel="@string/keylabel_for_symbols_2"
+ latin:popupCharacters="@string/alternates_for_symbols_2" />
+ latin:keyLabel="@string/keylabel_for_symbols_3"
+ latin:popupCharacters="@string/alternates_for_symbols_3" />
+ latin:keyLabel="@string/keylabel_for_symbols_4"
+ latin:popupCharacters="@string/alternates_for_symbols_4" />
+ latin:keyLabel="@string/keylabel_for_symbols_5"
+ latin:popupCharacters="@string/alternates_for_symbols_5" />
+ latin:keyLabel="@string/keylabel_for_symbols_6"
+ latin:popupCharacters="@string/alternates_for_symbols_6" />
+ latin:keyLabel="@string/keylabel_for_symbols_7"
+ latin:popupCharacters="@string/alternates_for_symbols_7" />
+ latin:keyLabel="@string/keylabel_for_symbols_8"
+ latin:popupCharacters="@string/alternates_for_symbols_8" />
+ latin:keyLabel="@string/keylabel_for_symbols_9"
+ latin:popupCharacters="@string/alternates_for_symbols_9" />
@@ -112,17 +115,19 @@
+ latin:keyLabel="@string/keylabel_for_symbols_semicolon"
+ latin:popupCharacters="@string/alternates_for_symbols_semicolon" />
+ latin:keyLabel="@string/keylabel_for_symbols_question"
+ latin:popupCharacters="@string/alternates_for_symbols_question" />
-
+
diff --git a/java/res/xml/kbd_symbols_f1.xml b/java/res/xml/kbd_symbols_f1.xml
index da5b5fc8d..3c7346c54 100644
--- a/java/res/xml/kbd_symbols_f1.xml
+++ b/java/res/xml/kbd_symbols_f1.xml
@@ -36,7 +36,8 @@
@@ -54,7 +55,8 @@
diff --git a/java/res/xml/kbd_symbols_row4.xml b/java/res/xml/kbd_symbols_row4.xml
index 68b79e84d..34c06df04 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" />
+ latin:keyStyle="punctuationKeyStyle"
+ latin:keyWidth="9.2%p" />
@@ -61,11 +57,7 @@
latin:keyStyle="spaceKeyStyle"
latin:keyWidth="50%p" />
+ latin:keyStyle="punctuationKeyStyle" />
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 955885366..45bf68cdf 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -257,10 +257,13 @@ public class Key {
final CharSequence[] popupCharacters = style.getTextArray(keyAttr,
R.styleable.Keyboard_Key_popupCharacters);
- if (res.getBoolean(R.bool.config_digit_popup_characters_enabled)) {
- mPopupCharacters = popupCharacters;
- } else {
+ // In Arabic symbol layouts, we'd like to keep digits in popup characters regardless of
+ // config_digit_popup_characters_enabled.
+ if (mKeyboard.mId.isAlphabetKeyboard() && !res.getBoolean(
+ R.bool.config_digit_popup_characters_enabled)) {
mPopupCharacters = filterOutDigitPopupCharacters(popupCharacters);
+ } else {
+ mPopupCharacters = popupCharacters;
}
mMaxPopupColumn = style.getInt(keyboardAttr,
R.styleable.Keyboard_Key_maxPopupKeyboardColumn,