diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_holo.9.png
new file mode 100644
index 000000000..c23ff1878
Binary files /dev/null and b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_holo.9.png differ
diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_off_holo.9.png
new file mode 100644
index 000000000..e29de9a7f
Binary files /dev/null and b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_off_holo.9.png differ
diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_on_holo.9.png
new file mode 100644
index 000000000..d46c03aa4
Binary files /dev/null and b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_on_holo.9.png differ
diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_holo.9.png
new file mode 100644
index 000000000..45ca3a7fc
Binary files /dev/null and b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_holo.9.png differ
diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_off_holo.9.png
new file mode 100644
index 000000000..da039f3df
Binary files /dev/null and b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_off_holo.9.png differ
diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_on_holo.9.png
new file mode 100644
index 000000000..315ab17c0
Binary files /dev/null and b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_on_holo.9.png differ
diff --git a/java/res/drawable-xlarge/btn_keyboard_key_gingerbread.xml b/java/res/drawable-xlarge/btn_keyboard_key_gingerbread.xml
new file mode 100644
index 000000000..3dab8430f
--- /dev/null
+++ b/java/res/drawable-xlarge/btn_keyboard_key_gingerbread.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/res/drawable-xlarge/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_light_normal_holo.9.png
new file mode 100644
index 000000000..a1c80a2ed
Binary files /dev/null and b/java/res/drawable-xlarge/btn_keyboard_key_light_normal_holo.9.png differ
diff --git a/java/res/drawable-xlarge/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_light_pressed_holo.9.png
new file mode 100644
index 000000000..90babfc87
Binary files /dev/null and b/java/res/drawable-xlarge/btn_keyboard_key_light_pressed_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_0_holo.9.png b/java/res/drawable-xlarge/key_hint_0_holo.9.png
new file mode 100644
index 000000000..33b6b40f3
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_0_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_1_holo.9.png b/java/res/drawable-xlarge/key_hint_1_holo.9.png
new file mode 100644
index 000000000..df47e7b7c
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_1_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_2_holo.9.png b/java/res/drawable-xlarge/key_hint_2_holo.9.png
new file mode 100644
index 000000000..bea76f3f2
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_2_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_3_holo.9.png b/java/res/drawable-xlarge/key_hint_3_holo.9.png
new file mode 100644
index 000000000..8f8f89d50
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_3_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_4_holo.9.png b/java/res/drawable-xlarge/key_hint_4_holo.9.png
new file mode 100644
index 000000000..feaa88ae1
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_4_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_5_holo.9.png b/java/res/drawable-xlarge/key_hint_5_holo.9.png
new file mode 100644
index 000000000..b3635e01e
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_5_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_6_holo.9.png b/java/res/drawable-xlarge/key_hint_6_holo.9.png
new file mode 100644
index 000000000..1345980e4
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_6_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_7_holo.9.png b/java/res/drawable-xlarge/key_hint_7_holo.9.png
new file mode 100644
index 000000000..437301012
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_7_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_8_holo.9.png b/java/res/drawable-xlarge/key_hint_8_holo.9.png
new file mode 100644
index 000000000..1bde6d10a
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_8_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_9_holo.9.png b/java/res/drawable-xlarge/key_hint_9_holo.9.png
new file mode 100644
index 000000000..61d6f5518
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_9_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_at_holo.9.png b/java/res/drawable-xlarge/key_hint_at_holo.9.png
new file mode 100644
index 000000000..f422a84d6
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_at_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_colon_holo.9.png b/java/res/drawable-xlarge/key_hint_colon_holo.9.png
new file mode 100644
index 000000000..7c769bd97
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_colon_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_comma_holo.9.png b/java/res/drawable-xlarge/key_hint_comma_holo.9.png
new file mode 100644
index 000000000..a9689adf5
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_comma_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_dash_holo.9.png b/java/res/drawable-xlarge/key_hint_dash_holo.9.png
new file mode 100644
index 000000000..2402994f0
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_dash_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_equal_holo.9.png b/java/res/drawable-xlarge/key_hint_equal_holo.9.png
new file mode 100644
index 000000000..89e508418
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_equal_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_exclamation_holo.9.png b/java/res/drawable-xlarge/key_hint_exclamation_holo.9.png
new file mode 100644
index 000000000..f34953818
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_exclamation_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_larger_holo.9.png b/java/res/drawable-xlarge/key_hint_larger_holo.9.png
new file mode 100644
index 000000000..2d734369a
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_larger_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_parenclose_holo.9.png b/java/res/drawable-xlarge/key_hint_parenclose_holo.9.png
new file mode 100644
index 000000000..48f9f8065
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_parenclose_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_parenopen_holo.9.png b/java/res/drawable-xlarge/key_hint_parenopen_holo.9.png
new file mode 100644
index 000000000..f05ae2075
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_parenopen_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_period_holo.9.png b/java/res/drawable-xlarge/key_hint_period_holo.9.png
new file mode 100644
index 000000000..ec330fb6e
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_period_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_plus_holo.9.png b/java/res/drawable-xlarge/key_hint_plus_holo.9.png
new file mode 100644
index 000000000..770bf5dbe
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_plus_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_question_holo.9.png b/java/res/drawable-xlarge/key_hint_question_holo.9.png
new file mode 100644
index 000000000..f24bb1c09
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_question_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_quote_holo.9.png b/java/res/drawable-xlarge/key_hint_quote_holo.9.png
new file mode 100644
index 000000000..ceee67ddc
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_quote_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_semicolon_holo.9.png b/java/res/drawable-xlarge/key_hint_semicolon_holo.9.png
new file mode 100644
index 000000000..e8d6b0223
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_semicolon_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_simplequote_holo.9.png b/java/res/drawable-xlarge/key_hint_simplequote_holo.9.png
new file mode 100644
index 000000000..7cafbb0d4
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_simplequote_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_slash_holo.9.png b/java/res/drawable-xlarge/key_hint_slash_holo.9.png
new file mode 100644
index 000000000..676d56698
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_slash_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_smaller_holo.9.png b/java/res/drawable-xlarge/key_hint_smaller_holo.9.png
new file mode 100644
index 000000000..97cf26edc
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_smaller_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_star_holo.9.png b/java/res/drawable-xlarge/key_hint_star_holo.9.png
new file mode 100644
index 000000000..b10aa89bd
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_star_holo.9.png differ
diff --git a/java/res/drawable-xlarge/key_hint_underline_holo.9.png b/java/res/drawable-xlarge/key_hint_underline_holo.9.png
new file mode 100644
index 000000000..38abfcb01
Binary files /dev/null and b/java/res/drawable-xlarge/key_hint_underline_holo.9.png differ
diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml
index d2cd6c7d1..4614f720a 100644
--- a/java/res/values-xlarge/dimens.xml
+++ b/java/res/values-xlarge/dimens.xml
@@ -21,7 +21,8 @@
0.450in
- 0.0in
+ 0.03in
+ 0.03in
0.450in
0.10in
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 2fa47ae52..765262d56 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -22,6 +22,7 @@
0.290in
0.035in
+ 0.000in
0.325in
0.06in
diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml
index 66771c287..f1f9904e3 100644
--- a/java/res/xml-da/kbd_qwerty.xml
+++ b/java/res/xml-da/kbd_qwerty.xml
@@ -27,7 +27,7 @@
diff --git a/java/res/xml-da/kbd_qwerty_black.xml b/java/res/xml-da/kbd_qwerty_black.xml
index d89204ae6..b7ebc66de 100644
--- a/java/res/xml-da/kbd_qwerty_black.xml
+++ b/java/res/xml-da/kbd_qwerty_black.xml
@@ -27,7 +27,7 @@
diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml
index 30d8de0cf..0832cbc92 100644
--- a/java/res/xml-de/kbd_qwerty.xml
+++ b/java/res/xml-de/kbd_qwerty.xml
@@ -21,7 +21,7 @@
@@ -82,11 +82,12 @@
latin:keyEdgeFlags="right" />
+
@@ -82,11 +82,12 @@
latin:keyEdgeFlags="right" />
+
diff --git a/java/res/xml-fr/kbd_qwerty_black.xml b/java/res/xml-fr/kbd_qwerty_black.xml
index be2befbe8..b46ce9cb9 100644
--- a/java/res/xml-fr/kbd_qwerty_black.xml
+++ b/java/res/xml-fr/kbd_qwerty_black.xml
@@ -21,7 +21,7 @@
diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml
index 7f66eef56..fd94a1202 100644
--- a/java/res/xml-iw/kbd_qwerty.xml
+++ b/java/res/xml-iw/kbd_qwerty.xml
@@ -21,16 +21,17 @@
+
@@ -46,13 +47,14 @@
latin:keyLabel="ם" />
+
@@ -81,9 +83,10 @@
latin:keyEdgeFlags="right" />
+
diff --git a/java/res/xml-iw/kbd_qwerty_black.xml b/java/res/xml-iw/kbd_qwerty_black.xml
index 80ade2020..1c1c1e37f 100644
--- a/java/res/xml-iw/kbd_qwerty_black.xml
+++ b/java/res/xml-iw/kbd_qwerty_black.xml
@@ -21,16 +21,17 @@
+
@@ -46,12 +47,13 @@
latin:keyLabel="ם" />
+
@@ -80,9 +82,10 @@
latin:keyEdgeFlags="right" />
+
diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml
index 96a86b013..32512daaa 100644
--- a/java/res/xml-nb/kbd_qwerty.xml
+++ b/java/res/xml-nb/kbd_qwerty.xml
@@ -27,7 +27,7 @@
diff --git a/java/res/xml-nb/kbd_qwerty_black.xml b/java/res/xml-nb/kbd_qwerty_black.xml
index 4adeb4801..982a3de65 100644
--- a/java/res/xml-nb/kbd_qwerty_black.xml
+++ b/java/res/xml-nb/kbd_qwerty_black.xml
@@ -27,7 +27,7 @@
diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml
index 57114a8ea..80a9ddd4f 100644
--- a/java/res/xml-ru/kbd_qwerty.xml
+++ b/java/res/xml-ru/kbd_qwerty.xml
@@ -20,8 +20,8 @@
diff --git a/java/res/xml-ru/kbd_qwerty_black.xml b/java/res/xml-ru/kbd_qwerty_black.xml
index 8f2f599c3..2635541e8 100644
--- a/java/res/xml-ru/kbd_qwerty_black.xml
+++ b/java/res/xml-ru/kbd_qwerty_black.xml
@@ -21,7 +21,7 @@
diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml
index 1a657055a..c9a4e449c 100644
--- a/java/res/xml-sr/kbd_qwerty.xml
+++ b/java/res/xml-sr/kbd_qwerty.xml
@@ -22,7 +22,7 @@
diff --git a/java/res/xml-sr/kbd_qwerty_black.xml b/java/res/xml-sr/kbd_qwerty_black.xml
index e4b09c717..f760c5eb1 100644
--- a/java/res/xml-sr/kbd_qwerty_black.xml
+++ b/java/res/xml-sr/kbd_qwerty_black.xml
@@ -22,7 +22,7 @@
diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml
index 8819159e8..ae7002463 100644
--- a/java/res/xml-sv/kbd_qwerty.xml
+++ b/java/res/xml-sv/kbd_qwerty.xml
@@ -29,7 +29,7 @@
diff --git a/java/res/xml-sv/kbd_qwerty_black.xml b/java/res/xml-sv/kbd_qwerty_black.xml
index 2532fca8c..463b60bd9 100644
--- a/java/res/xml-sv/kbd_qwerty_black.xml
+++ b/java/res/xml-sv/kbd_qwerty_black.xml
@@ -29,7 +29,7 @@
diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-xlarge/kbd_phone.xml
index 977bbf2df..107731f3b 100644
--- a/java/res/xml-xlarge/kbd_phone.xml
+++ b/java/res/xml-xlarge/kbd_phone.xml
@@ -21,8 +21,8 @@
@@ -35,29 +35,35 @@
latin:keyEdgeFlags="left" />
+
+ latin:keyLabel=" - " />
+
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_num2"
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_num3"
+ latin:keyWidth="10.5%p " />
+
@@ -72,29 +78,35 @@
latin:keyEdgeFlags="left" />
+
+ latin:keyLabel=" , " />
+
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_num5"
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_num6"
+ latin:keyWidth="10.5%p " />
+
@@ -103,47 +115,57 @@
and ')'. -->
+
+ latin:keyLabel=" ( " />
+
+ latin:keyWidth="10.5%p " />
-
+ latin:keyIcon="@drawable/sym_keyboard_num8"
+ latin:keyWidth="10.5%p " />
-
+ latin:keyIcon="@drawable/sym_keyboard_num9"
+ latin:keyWidth="10.5%p " />
+
+
+
+ latin:keyWidth="15.0%p" />
+
+ latin:keyWidth="10.5%p " />
-
+ latin:keyIcon="@drawable/sym_keyboard_num0"
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_numpound"
+ latin:keyWidth="10.5%p " />
+
diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-xlarge/kbd_phone_symbols.xml
index 6fbf3a902..a7dcd325a 100644
--- a/java/res/xml-xlarge/kbd_phone_symbols.xml
+++ b/java/res/xml-xlarge/kbd_phone_symbols.xml
@@ -21,8 +21,8 @@
@@ -33,10 +33,11 @@
latin:keyWidth="15.0%p"
latin:isModifier="true"
latin:keyEdgeFlags="left" />
+
+ latin:keyLabel="@string/label_pause_key" />
+
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_num2"
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_num3"
+ latin:keyWidth="10.5%p " />
+
@@ -73,10 +79,11 @@
latin:isModifier="true"
latin:isSticky="true"
latin:keyEdgeFlags="left" />
+
+ latin:keyLabel="@string/label_wait_key" />
+
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_num5"
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_num6"
+ latin:keyWidth="10.5%p " />
+
@@ -109,50 +121,60 @@
char 'N', '(' and ')'. -->
+
+ latin:keyLabel=" N " />
+
+ latin:keyWidth="10.5%p " />
-
+ latin:keyIcon="@drawable/sym_keyboard_num8"
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_num9"
+ latin:keyWidth="10.5%p " />
+
+
+ latin:keyWidth="22.5%p" />
+
+ latin:keyWidth="10.5%p " />
-
+ latin:keyIcon="@drawable/sym_keyboard_num0"
+ latin:keyWidth="10.5%p " />
+ latin:keyIcon="@drawable/sym_keyboard_numpound"
+ latin:keyWidth="10.5%p " />
+
diff --git a/java/res/xml-xlarge/kbd_popup_template.xml b/java/res/xml-xlarge/kbd_popup_template.xml
index 382d90afc..55ebda5e4 100644
--- a/java/res/xml-xlarge/kbd_popup_template.xml
+++ b/java/res/xml-xlarge/kbd_popup_template.xml
@@ -20,7 +20,7 @@
diff --git a/java/res/xml-xlarge/kbd_qwerty.xml b/java/res/xml-xlarge/kbd_qwerty.xml
index b72503414..9485ca7b3 100644
--- a/java/res/xml-xlarge/kbd_qwerty.xml
+++ b/java/res/xml-xlarge/kbd_qwerty.xml
@@ -21,7 +21,7 @@
@@ -30,62 +30,63 @@
+
+ latin:popupCharacters="<" />
+
+ latin:keyOutputText=".com"
+ latin:keyWidth="15.0%p" />
+
+ latin:keyOutputText=".com"
+ latin:keyWidth="15.0%p" />
+
+ latin:keyWidth="15.0%p" />
+
+ latin:popupCharacters="<" />
@@ -30,6 +30,7 @@
-
+
@@ -30,6 +30,7 @@
-
+
diff --git a/java/res/xml/kbd_phone_black.xml b/java/res/xml/kbd_phone_black.xml
index 6ade277d9..86759d676 100644
--- a/java/res/xml/kbd_phone_black.xml
+++ b/java/res/xml/kbd_phone_black.xml
@@ -21,7 +21,7 @@
diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index 5062d4707..1c691d2a5 100644
--- a/java/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
@@ -21,7 +21,7 @@
diff --git a/java/res/xml/kbd_phone_symbols_black.xml b/java/res/xml/kbd_phone_symbols_black.xml
index 2a6932a9e..3e46c5307 100644
--- a/java/res/xml/kbd_phone_symbols_black.xml
+++ b/java/res/xml/kbd_phone_symbols_black.xml
@@ -21,7 +21,7 @@
diff --git a/java/res/xml/kbd_popup_template.xml b/java/res/xml/kbd_popup_template.xml
index f1aa86f39..004d490d6 100644
--- a/java/res/xml/kbd_popup_template.xml
+++ b/java/res/xml/kbd_popup_template.xml
@@ -20,7 +20,7 @@
diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index 21a7ccb78..517b4fe5c 100644
--- a/java/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -21,7 +21,7 @@
@@ -82,11 +82,12 @@
latin:keyEdgeFlags="right" />
+
@@ -82,11 +82,12 @@
latin:keyEdgeFlags="right" />
+
diff --git a/java/res/xml/kbd_symbols_black.xml b/java/res/xml/kbd_symbols_black.xml
index dedd2da08..b6a069c25 100644
--- a/java/res/xml/kbd_symbols_black.xml
+++ b/java/res/xml/kbd_symbols_black.xml
@@ -21,7 +21,7 @@
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index 52afa38e3..d83706b5c 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -21,7 +21,7 @@
diff --git a/java/res/xml/kbd_symbols_shift_black.xml b/java/res/xml/kbd_symbols_shift_black.xml
index c1bd4e395..e5f8abf6e 100644
--- a/java/res/xml/kbd_symbols_shift_black.xml
+++ b/java/res/xml/kbd_symbols_shift_black.xml
@@ -21,7 +21,7 @@
diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboard.java b/java/src/com/android/inputmethod/latin/BaseKeyboard.java
index bad1544e5..fc35ccc5d 100644
--- a/java/src/com/android/inputmethod/latin/BaseKeyboard.java
+++ b/java/src/com/android/inputmethod/latin/BaseKeyboard.java
@@ -61,6 +61,7 @@ public class BaseKeyboard {
private static final String TAG_KEYBOARD = "Keyboard";
private static final String TAG_ROW = "Row";
private static final String TAG_KEY = "Key";
+ private static final String TAG_SPACER = "Spacer";
private static final String TAG_INCLUDE = "include";
private static final String TAG_MERGE = "merge";
@@ -273,8 +274,8 @@ public class BaseKeyboard {
public Key(Row parent) {
keyboard = parent.parent;
height = parent.defaultHeight;
- width = parent.defaultWidth;
gap = parent.defaultHorizontalGap;
+ width = parent.defaultWidth - gap;
edgeFlags = parent.rowEdgeFlags;
}
@@ -290,21 +291,21 @@ public class BaseKeyboard {
public Key(Resources res, Row parent, int x, int y, XmlResourceParser parser) {
this(parent);
- this.x = x;
- this.y = y;
-
TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.BaseKeyboard);
-
- width = getDimensionOrFraction(a, R.styleable.BaseKeyboard_keyWidth,
- keyboard.mDisplayWidth, parent.defaultWidth);
height = getDimensionOrFraction(a, R.styleable.BaseKeyboard_keyHeight,
keyboard.mDisplayHeight, parent.defaultHeight);
gap = getDimensionOrFraction(a, R.styleable.BaseKeyboard_horizontalGap,
keyboard.mDisplayWidth, parent.defaultHorizontalGap);
+ width = getDimensionOrFraction(a, R.styleable.BaseKeyboard_keyWidth,
+ keyboard.mDisplayWidth, parent.defaultWidth) - gap;
a.recycle();
a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.BaseKeyboard_Key);
- this.x += gap;
+
+ // Horizontal gap is divided equally to both sides of the key.
+ this.x = x + gap / 2;
+ this.y = y;
+
TypedValue codesValue = new TypedValue();
a.getValue(R.styleable.BaseKeyboard_Key_codes, codesValue);
if (codesValue.type == TypedValue.TYPE_INT_DEC
@@ -731,6 +732,10 @@ public class BaseKeyboard {
mTotalHeight = mCurrentY - defaultVerticalGap;
}
+ public void setSpacer(int gap) {
+ mCurrentX += gap;
+ }
+
public int getMaxRowWidth() {
return mMaxRowWidth;
}
@@ -774,6 +779,8 @@ public class BaseKeyboard {
mKeys.add(key);
if (key.codes[0] == KEYCODE_SHIFT)
mShiftKeys.add(key);
+ } else if (TAG_SPACER.equals(tag)) {
+ parseSpacerAttribute(res, parser, state);
} else if (TAG_KEYBOARD.equals(tag)) {
parseKeyboardAttributes(res, parser);
} else if (TAG_INCLUDE.equals(tag)) {
@@ -791,6 +798,8 @@ public class BaseKeyboard {
state.endKey(key);
} else if (TAG_ROW.equals(tag)) {
state.endRow();
+ } else if (TAG_SPACER.equals(tag)) {
+ ;
} else if (TAG_KEYBOARD.equals(tag)) {
state.endKeyboard(mDefaultVerticalGap);
} else if (TAG_INCLUDE.equals(tag)) {
@@ -804,6 +813,15 @@ public class BaseKeyboard {
}
}
+ private void parseSpacerAttribute(Resources res, XmlResourceParser parser,
+ KeyboardParseState state) {
+ TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.BaseKeyboard);
+ int gap = getDimensionOrFraction(a,
+ R.styleable.BaseKeyboard_horizontalGap, mDisplayWidth, 0);
+ a.recycle();
+ state.setSpacer(gap);
+ }
+
private void parseInclude(Resources res, XmlResourceParser parent, KeyboardParseState state)
throws XmlPullParserException, IOException {
final TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parent),
@@ -848,19 +866,14 @@ public class BaseKeyboard {
private void parseKeyboardAttributes(Resources res, XmlResourceParser parser) {
TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.BaseKeyboard);
-
mDefaultWidth = getDimensionOrFraction(a,
- R.styleable.BaseKeyboard_keyWidth,
- mDisplayWidth, mDisplayWidth / 10);
+ R.styleable.BaseKeyboard_keyWidth, mDisplayWidth, mDisplayWidth / 10);
mDefaultHeight = getDimensionOrFraction(a,
- R.styleable.BaseKeyboard_keyHeight,
- mDisplayHeight, 50);
+ R.styleable.BaseKeyboard_keyHeight, mDisplayHeight, 50);
mDefaultHorizontalGap = getDimensionOrFraction(a,
- R.styleable.BaseKeyboard_horizontalGap,
- mDisplayWidth, 0);
+ R.styleable.BaseKeyboard_horizontalGap, mDisplayWidth, 0);
mDefaultVerticalGap = getDimensionOrFraction(a,
- R.styleable.BaseKeyboard_verticalGap,
- mDisplayHeight, 0);
+ R.styleable.BaseKeyboard_verticalGap, mDisplayHeight, 0);
mProximityThreshold = (int) (mDefaultWidth * SEARCH_DISTANCE);
mProximityThreshold = mProximityThreshold * mProximityThreshold;
a.recycle();