diff --git a/java/res/values-fa/donottranslate-more-keys.xml b/java/res/values-fa/donottranslate-more-keys.xml
index 3e13c795a..1fb1846d9 100644
--- a/java/res/values-fa/donottranslate-more-keys.xml
+++ b/java/res/values-fa/donottranslate-more-keys.xml
@@ -38,26 +38,26 @@
"!fixedColumnOrder!8,\",\',-,:,!,؟,،,؛,ِ,َ,ٍ,ً,ٖ,ٰ,ٕ,ٔ,ُ,ٌ,ّ,ْ,ٓ,ـــ|ـ,/"
ً
-
- ١
-
- ٢
-
- ٣
-
- ٤
-
- ٥
-
- ٦
-
- ٧
-
- ٨
-
- ٩
-
- ٠
+
+ ۱
+
+ ۲
+
+ ۳
+
+ ۴
+
+ ۵
+
+ ۶
+
+ ۷
+
+ ۸
+
+ ۹
+
+ ۰
1
2
3
@@ -84,9 +84,11 @@
- ،
- "."
- ؟
+ "،"
+ "!"
+ "!,\\,"
+ "؟"
+ "؟,\?"
ً
"؟,؛,!,:,-,/,\',\""
- "ّ,ْ,ٌ,ٓ,ُ,ِ,َ,ً,ـــ|ـ,ٍ,ٔ,ٖ,ٕ,ٰ"
+ "ّ,ْ,ٌ,ٓ,ُ,ِ,َ,ً,ـــ|ـ,ٍ,ٔ,ٖ,ٕ,_,ٰ"
♪
‰
+ ,
+ !
+ !
+ \?
+ \?
\'
-
\"
diff --git a/java/res/xml-fa/keyboard_set.xml b/java/res/xml-fa/keyboard_set.xml
index 9bd105093..cb62b0dae 100644
--- a/java/res/xml-fa/keyboard_set.xml
+++ b/java/res/xml-fa/keyboard_set.xml
@@ -23,7 +23,7 @@
latin:keyboardLocale="fa" >
+ latin:elementKeyboard="@xml/kbd_farsi" />
diff --git a/java/res/xml/keys_comma_period.xml b/java/res/xml-sw600dp/keys_comma_period.xml
similarity index 77%
rename from java/res/xml/keys_comma_period.xml
rename to java/res/xml-sw600dp/keys_comma_period.xml
index 6db02b61d..f5f307be6 100644
--- a/java/res/xml/keys_comma_period.xml
+++ b/java/res/xml-sw600dp/keys_comma_period.xml
@@ -32,14 +32,14 @@
diff --git a/java/res/xml-sw600dp/rowkeys_farsi1.xml b/java/res/xml-sw600dp/rowkeys_farsi1.xml
new file mode 100644
index 000000000..ab260a460
--- /dev/null
+++ b/java/res/xml-sw600dp/rowkeys_farsi1.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/res/xml-sw600dp/rowkeys_farsi2.xml b/java/res/xml-sw600dp/rowkeys_farsi2.xml
new file mode 100644
index 000000000..98e0f2186
--- /dev/null
+++ b/java/res/xml-sw600dp/rowkeys_farsi2.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/res/xml-sw600dp/rowkeys_farsi3.xml b/java/res/xml-sw600dp/rowkeys_farsi3.xml
new file mode 100644
index 000000000..c80c14a55
--- /dev/null
+++ b/java/res/xml-sw600dp/rowkeys_farsi3.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/res/xml-sw600dp/rows_farsi.xml b/java/res/xml-sw600dp/rows_farsi.xml
new file mode 100644
index 000000000..75800420a
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_farsi.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/res/xml-sw768dp/row_qwerty4.xml b/java/res/xml-sw768dp/row_qwerty4.xml
index 0aa04f8f7..90da21ba3 100644
--- a/java/res/xml-sw768dp/row_qwerty4.xml
+++ b/java/res/xml-sw768dp/row_qwerty4.xml
@@ -87,11 +87,7 @@
+ latin:keyStyle="zwnjKeyStyle" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/res/xml/kbd_farsi.xml b/java/res/xml/kbd_farsi.xml
new file mode 100644
index 000000000..1af4e61ca
--- /dev/null
+++ b/java/res/xml/kbd_farsi.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
diff --git a/java/res/xml/key_styles_currency.xml b/java/res/xml/key_styles_currency.xml
index 6ddeb4c60..bd1d959e4 100644
--- a/java/res/xml/key_styles_currency.xml
+++ b/java/res/xml/key_styles_currency.xml
@@ -101,6 +101,32 @@
latin:styleName="moreCurrency4KeyStyle"
latin:keyLabel="¢" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/res/xml/rowkeys_farsi2.xml b/java/res/xml/rowkeys_farsi2.xml
new file mode 100644
index 000000000..77279c60f
--- /dev/null
+++ b/java/res/xml/rowkeys_farsi2.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/res/xml/rowkeys_farsi3.xml b/java/res/xml/rowkeys_farsi3.xml
new file mode 100644
index 000000000..8db56e340
--- /dev/null
+++ b/java/res/xml/rowkeys_farsi3.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/res/xml/rows_farsi.xml b/java/res/xml/rows_farsi.xml
new file mode 100644
index 000000000..cc0c526b3
--- /dev/null
+++ b/java/res/xml/rows_farsi.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+