Merge "Import revised translations.  DO NOT MERGE" into honeycomb-mr2
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png
index 762a257..27d9923 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png
index 8d6acac..943f9e4 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
index 141d2d6..33263b9 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_tab.png b/java/res/drawable-hdpi/sym_keyboard_tab.png
index 51d17d9..3d1c5c0 100644
--- a/java/res/drawable-hdpi/sym_keyboard_tab.png
+++ b/java/res/drawable-hdpi/sym_keyboard_tab.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/hint_popup_holo.9.png b/java/res/drawable-land-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000..3cd20d3
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png
index 286cf84..3d6a76f 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw600dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 0000000..544ed7f
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-hdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000..2ffc6ea
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/key_hint_num0_holo.9.png b/java/res/drawable-sw600dp-hdpi/key_hint_num0_holo.9.png
new file mode 100644
index 0000000..25df0ef
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/key_hint_num0_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/key_hint_num1_holo.9.png b/java/res/drawable-sw600dp-hdpi/key_hint_num1_holo.9.png
new file mode 100644
index 0000000..12df78e
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/key_hint_num1_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/key_hint_num2_holo.9.png b/java/res/drawable-sw600dp-hdpi/key_hint_num2_holo.9.png
new file mode 100644
index 0000000..03fcd07
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/key_hint_num2_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/key_hint_num3_holo.9.png b/java/res/drawable-sw600dp-hdpi/key_hint_num3_holo.9.png
new file mode 100644
index 0000000..41c007b
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/key_hint_num3_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/key_hint_num4_holo.9.png b/java/res/drawable-sw600dp-hdpi/key_hint_num4_holo.9.png
new file mode 100644
index 0000000..2e7d7b3
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/key_hint_num4_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/key_hint_num5_holo.9.png b/java/res/drawable-sw600dp-hdpi/key_hint_num5_holo.9.png
new file mode 100644
index 0000000..28c470a
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/key_hint_num5_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/key_hint_num6_holo.9.png b/java/res/drawable-sw600dp-hdpi/key_hint_num6_holo.9.png
new file mode 100644
index 0000000..33b6535
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/key_hint_num6_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/key_hint_num7_holo.9.png b/java/res/drawable-sw600dp-hdpi/key_hint_num7_holo.9.png
new file mode 100644
index 0000000..6365e45
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/key_hint_num7_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/key_hint_num8_holo.9.png b/java/res/drawable-sw600dp-hdpi/key_hint_num8_holo.9.png
new file mode 100644
index 0000000..59b4426
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/key_hint_num8_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/key_hint_num9_holo.9.png b/java/res/drawable-sw600dp-hdpi/key_hint_num9_holo.9.png
new file mode 100644
index 0000000..426c4e5
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/key_hint_num9_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 0000000..39219a5
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 0000000..e5cc5b7
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/sym_keyboard_numsymbol_holo.png b/java/res/drawable-sw600dp-hdpi/sym_keyboard_numsymbol_holo.png
new file mode 100644
index 0000000..398eaea
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/sym_keyboard_numsymbol_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/sym_keyboard_tab_holo.png b/java/res/drawable-sw600dp-hdpi/sym_keyboard_tab_holo.png
new file mode 100644
index 0000000..1780f68
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/sym_keyboard_tab_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-land-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-land-hdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000..2ffc6ea
--- /dev/null
+++ b/java/res/drawable-sw600dp-land-hdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.png
index c409cea..f5d15b7 100644
--- a/java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.png
+++ b/java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-land-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-land-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000..bc37fa8
--- /dev/null
+++ b/java/res/drawable-sw600dp-land-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png
index d2f5f3b..ffa7386 100644
--- a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.png
index 2ffc6ea..f5d15b7 100644
--- a/java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_num0_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_num0_holo.9.png
index 271264e..d9a1626 100644
--- a/java/res/drawable-sw600dp-mdpi/key_hint_num0_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_num0_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_num1_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_num1_holo.9.png
index eaf3742..ac6c729 100644
--- a/java/res/drawable-sw600dp-mdpi/key_hint_num1_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_num1_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_num2_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_num2_holo.9.png
index 8a16571..fc28774 100644
--- a/java/res/drawable-sw600dp-mdpi/key_hint_num2_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_num2_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_num3_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_num3_holo.9.png
index 34b5011..890af26 100644
--- a/java/res/drawable-sw600dp-mdpi/key_hint_num3_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_num3_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_num4_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_num4_holo.9.png
index d4cc250..72a5703 100644
--- a/java/res/drawable-sw600dp-mdpi/key_hint_num4_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_num4_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_num5_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_num5_holo.9.png
index 6a054b4..03c117d 100644
--- a/java/res/drawable-sw600dp-mdpi/key_hint_num5_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_num5_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_num6_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_num6_holo.9.png
index 66e9140..b07bef3 100644
--- a/java/res/drawable-sw600dp-mdpi/key_hint_num6_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_num6_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_num7_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_num7_holo.9.png
index 5eae24f..3ae17e1 100644
--- a/java/res/drawable-sw600dp-mdpi/key_hint_num7_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_num7_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_num8_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_num8_holo.9.png
index ea7f512..e2c6763 100644
--- a/java/res/drawable-sw600dp-mdpi/key_hint_num8_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_num8_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_num9_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_num9_holo.9.png
index 0bf85de..ec03b2c 100644
--- a/java/res/drawable-sw600dp-mdpi/key_hint_num9_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_num9_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_background_holo.9.png
index 286cf84..5f15217 100644
--- a/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_background_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_more_background_holo.9.png
index e3f5be8..77a806c 100644
--- a/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_more_background_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_numsymbol_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numsymbol_holo.png
new file mode 100644
index 0000000..7315384
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numsymbol_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_tab_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_tab_holo.png
new file mode 100644
index 0000000..5acd12c
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_tab_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw600dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 0000000..8b5d1b0
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000..bc37fa8
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/key_hint_num0_holo.9.png b/java/res/drawable-sw600dp-xhdpi/key_hint_num0_holo.9.png
new file mode 100644
index 0000000..3a9232b
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/key_hint_num0_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/key_hint_num1_holo.9.png b/java/res/drawable-sw600dp-xhdpi/key_hint_num1_holo.9.png
new file mode 100644
index 0000000..1b2d80e
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/key_hint_num1_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/key_hint_num2_holo.9.png b/java/res/drawable-sw600dp-xhdpi/key_hint_num2_holo.9.png
new file mode 100644
index 0000000..b80d173
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/key_hint_num2_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/key_hint_num3_holo.9.png b/java/res/drawable-sw600dp-xhdpi/key_hint_num3_holo.9.png
new file mode 100644
index 0000000..2d7214e
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/key_hint_num3_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/key_hint_num4_holo.9.png b/java/res/drawable-sw600dp-xhdpi/key_hint_num4_holo.9.png
new file mode 100644
index 0000000..2abdb37
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/key_hint_num4_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/key_hint_num5_holo.9.png b/java/res/drawable-sw600dp-xhdpi/key_hint_num5_holo.9.png
new file mode 100644
index 0000000..af9b842
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/key_hint_num5_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/key_hint_num6_holo.9.png b/java/res/drawable-sw600dp-xhdpi/key_hint_num6_holo.9.png
new file mode 100644
index 0000000..8594839
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/key_hint_num6_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/key_hint_num7_holo.9.png b/java/res/drawable-sw600dp-xhdpi/key_hint_num7_holo.9.png
new file mode 100644
index 0000000..5727b06
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/key_hint_num7_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/key_hint_num8_holo.9.png b/java/res/drawable-sw600dp-xhdpi/key_hint_num8_holo.9.png
new file mode 100644
index 0000000..2628c10
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/key_hint_num8_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/key_hint_num9_holo.9.png b/java/res/drawable-sw600dp-xhdpi/key_hint_num9_holo.9.png
new file mode 100644
index 0000000..cd8476f
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/key_hint_num9_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 0000000..8d43a4b
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 0000000..e973c7e
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/sym_keyboard_numsymbol_holo.png b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_numsymbol_holo.png
new file mode 100644
index 0000000..c7a8b28
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_numsymbol_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/sym_keyboard_tab_holo.png b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_tab_holo.png
new file mode 100644
index 0000000..fd9f8cc
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_tab_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw768dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 0000000..544ed7f
--- /dev/null
+++ b/java/res/drawable-sw768dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-hdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000..2ffc6ea
--- /dev/null
+++ b/java/res/drawable-sw768dp-hdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 0000000..099a508
--- /dev/null
+++ b/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 0000000..c21240f
--- /dev/null
+++ b/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-land-hdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000..2b93014
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-hdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-land-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000..3cd20d3
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png
index d2f5f3b..ffa7386 100644
--- a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png
+++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw768dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 0000000..8b5d1b0
--- /dev/null
+++ b/java/res/drawable-sw768dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000..bc37fa8
--- /dev/null
+++ b/java/res/drawable-sw768dp-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 0000000..38c84e8
--- /dev/null
+++ b/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 0000000..f66e545
--- /dev/null
+++ b/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 0000000..3ed9b1e
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/hint_popup_holo.9.png b/java/res/drawable-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000..bc37fa8
--- /dev/null
+++ b/java/res/drawable-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background.9.png
new file mode 100644
index 0000000..16c7610
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 0000000..943f9e4
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background.9.png
new file mode 100644
index 0000000..e020e34
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 0000000..f66e545
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index 5adb6f3..ee30d98 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -31,8 +31,8 @@
     <!-- key_height x 1.0 -->
     <dimen name="key_preview_height">13.0mm</dimen>
 
-    <dimen name="key_letter_size">28dip</dimen>
-    <dimen name="key_label_text_size">20dip</dimen>
+    <dimen name="key_letter_size">25dip</dimen>
+    <dimen name="key_label_text_size">18dip</dimen>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
     <dimen name="candidate_strip_padding">40.0mm</dimen>
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml
index fe5aee3..4f6d684 100644
--- a/java/res/values-sw600dp/config.xml
+++ b/java/res/values-sw600dp/config.xml
@@ -21,6 +21,7 @@
 <resources>
     <bool name="config_enable_show_settings_key_option">true</bool>
     <bool name="config_enable_show_subtype_settings">false</bool>
+    <!-- TODO: Set this false after layout debug -->
     <bool name="config_enable_show_voice_key_option">true</bool>
     <bool name="config_enable_show_popup_on_keypress_option">false</bool>
     <bool name="config_enable_show_recorrection_option">false</bool>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 47d5e0f..3d623d9 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -37,8 +37,8 @@
     <!-- popup_key_height x -1.0 -->
     <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
 
-    <dimen name="key_letter_size">26dip</dimen>
-    <dimen name="key_label_text_size">16dip</dimen>
+    <dimen name="key_letter_size">24dip</dimen>
+    <dimen name="key_label_text_size">14dip</dimen>
     <dimen name="key_preview_text_size_large">24dip</dimen>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index f0da274..fb4d97b 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -167,6 +167,8 @@
             <enum name="im" value="3" />
             <enum name="web" value="4" />
             <enum name="phone" value="5" />
+            <enum name="number" value="6" />
+            <enum name="webEmail" value="7" />
         </attr>
         <attr name="passwordInput" format="boolean" />
         <attr name="hasSettingsKey" format="string" />
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index c2ca3e1..6be6a2c 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -45,14 +45,28 @@
             <key-style
                 latin:styleName="settingsPopupStyle"
                 latin:parentStyle="functionalKeyStyle" />
-        </case>
+            <key-style
+                latin:styleName="webTabKeyStyle"
+                latin:code="@integer/key_tab"
+                latin:keyIcon="@drawable/sym_keyboard_tab_holo"
+                latin:iconPreview="@drawable/sym_keyboard_tab_holo"
+                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
+                latin:parentStyle="functionalKeyStyle" />
+          </case>
         <!-- latin:hasSettingsKey="false" -->
         <default>
             <key-style
                 latin:styleName="settingsPopupStyle"
-                latin:keyHintIcon="@drawable/hint_popup"
+                latin:keyHintIcon="@drawable/hint_popup_holo"
                 latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
                 latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="webTabKeyStyle"
+                latin:code="@integer/key_tab"
+                latin:keyIcon="@drawable/sym_keyboard_tab_holo"
+                latin:iconPreview="@drawable/sym_keyboard_tab_holo"
+                latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
     <!-- Functional key styles -->
@@ -75,29 +89,27 @@
                 latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
                 latin:parentStyle="functionalKeyStyle"
                 latin:isRepeatable="true" />
-            <switch>
-                <!-- When this qwerty keyboard has no voice key but voice key is enabled, then
-                     symbol keyboard will have mic key. That means we should use "?123mic" key
-                     here. -->
-                <case
-                    latin:voiceKeyEnabled="true"
-                    latin:hasVoiceKey="false"
-                >
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyIcon="@drawable/sym_keyboard_123_mic"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <default>
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyLabel="@string/label_to_symbol_key"
-                        latin:parentStyle="functionalKeyStyle" />
-                </default>
-            </switch>
+            <key-style
+                latin:styleName="returnKeyStyle"
+                latin:code="@integer/key_return"
+                latin:keyIcon="@drawable/sym_keyboard_return_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="spaceKeyStyle"
+                latin:code="@integer/key_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            <key-style
+                latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
+                latin:code="@integer/key_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            <key-style
+                latin:styleName="smileyKeyStyle"
+                latin:keyLabel=":-)"
+                latin:keyOutputText=":-) "
+                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:popupCharacters="@string/alternates_for_smiley"
+                latin:maxPopupKeyboardColumn="5" />
             <key-style
                 latin:styleName="settingsKeyStyle"
                 latin:code="@integer/key_settings"
@@ -105,30 +117,11 @@
                 latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
                 latin:parentStyle="functionalKeyStyle" />
             <key-style
-                latin:styleName="spaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:keyIcon="@drawable/sym_keyboard_space_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="tabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_keyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
                 latin:styleName="micKeyStyle"
                 latin:code="@integer/key_voice"
-                latin:keyIcon="@drawable/sym_keyboard_mic"
+                latin:keyIcon="@drawable/sym_keyboard_voice_holo"
                 latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
                 latin:parentStyle="settingsPopupStyle" />
-            <!-- Note: This key style is not for functional tab key. This is used for the tab key
-                 which is laid out as normal letter key. -->
-            <key-style
-                latin:styleName="nonSpecialBackgroundTabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_keyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
         </case>
         <case
             latin:colorScheme="black"
@@ -148,29 +141,27 @@
                 latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
                 latin:parentStyle="functionalKeyStyle"
                 latin:isRepeatable="true" />
-            <switch>
-                <!-- When this qwerty keyboard has no voice key but voice key is enabled, then
-                     symbol keyboard will have mic key. That means we should use "?123mic" key
-                     here. -->
-                <case
-                    latin:voiceKeyEnabled="true"
-                    latin:hasVoiceKey="false"
-                >
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyIcon="@drawable/sym_bkeyboard_123_mic"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <default>
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyLabel="@string/label_to_symbol_key"
-                        latin:parentStyle="functionalKeyStyle" />
-                </default>
-            </switch>
+            <key-style
+                latin:styleName="returnKeyStyle"
+                latin:code="@integer/key_return"
+                latin:keyIcon="@drawable/sym_bkeyboard_return"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="spaceKeyStyle"
+                latin:code="@integer/key_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            <key-style
+                latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
+                latin:code="@integer/key_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            <key-style
+                latin:styleName="smileyKeyStyle"
+                latin:keyLabel=":-)"
+                latin:keyOutputText=":-) "
+                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:popupCharacters="@string/alternates_for_smiley"
+                latin:maxPopupKeyboardColumn="5" />
             <key-style
                 latin:styleName="settingsKeyStyle"
                 latin:code="@integer/key_settings"
@@ -178,140 +169,39 @@
                 latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
                 latin:parentStyle="functionalKeyStyle" />
             <key-style
-                latin:styleName="spaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:keyIcon="@drawable/sym_bkeyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="tabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_bkeyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
                 latin:styleName="micKeyStyle"
                 latin:code="@integer/key_voice"
                 latin:keyIcon="@drawable/sym_bkeyboard_mic"
                 latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
                 latin:parentStyle="settingsPopupStyle" />
-            <!-- Note: This key style is not for functional tab key. This is used for the tab key
-                 which is laid out as normal letter key. -->
-            <key-style
-                latin:styleName="nonSpecialBackgroundTabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_bkeyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
         </case>
     </switch>
-    <!-- Return key style -->
-    <switch>
-        <case
-            latin:imeAction="actionGo"
-        >
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyLabel="@string/label_go_key"
-                latin:parentStyle="functionalKeyStyle" />
-        </case>
-        <case
-            latin:imeAction="actionNext"
-        >
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyLabel="@string/label_next_key"
-                latin:parentStyle="functionalKeyStyle" />
-        </case>
-        <case
-            latin:imeAction="actionDone"
-        >
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyLabel="@string/label_done_key"
-                latin:parentStyle="functionalKeyStyle" />
-        </case>
-        <case
-            latin:imeAction="actionSend"
-        >
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyLabel="@string/label_send_key"
-                latin:parentStyle="functionalKeyStyle" />
-        </case>
-        <case
-            latin:imeAction="actionSearch"
-        >
-            <switch>
-                <case
-                    latin:colorScheme="white"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_keyboard_search"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_search"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <case
-                    latin:colorScheme="black"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_bkeyboard_search"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_search"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-            </switch>
-        </case>
-        <default>
-            <switch>
-                <case
-                    latin:colorScheme="white"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_keyboard_return"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <case
-                    latin:colorScheme="black"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_bkeyboard_return"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-            </switch>
-        </default>
-    </switch>
+    <key-style
+        latin:styleName="toSymbolKeyStyle"
+        latin:code="@integer/key_switch_alpha_symbol"
+        latin:keyLabel="@string/label_to_symbol_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle" />
     <key-style
         latin:styleName="toAlphaKeyStyle"
         latin:code="@integer/key_switch_alpha_symbol"
         latin:keyLabel="@string/label_to_alpha_key"
+        latin:keyLabelOption="fontNormal"
         latin:parentStyle="functionalKeyStyle" />
     <key-style
-        latin:styleName="altKeyStyle"
+        latin:styleName="moreKeyStyle"
         latin:code="@integer/key_shift"
-        latin:keyLabel="@string/label_alt_key"
+        latin:keyLabel="@string/label_more_key"
+        latin:keyLabelOption="fontNormal"
         latin:parentStyle="functionalKeyStyle"
         latin:isSticky="true" />
     <key-style
-        latin:styleName="smileyKeyStyle"
-        latin:keyLabel=":-)"
-        latin:keyOutputText=":-) "
+        latin:styleName="comKeyStyle"
+        latin:keyLabel="@string/keylabel_for_popular_domain"
+        latin:keyLabelOption="fontNormal"
+        latin:keyOutputText="@string/keylabel_for_popular_domain"
         latin:keyHintIcon="@drawable/hint_popup_holo"
-        latin:popupCharacters="@string/alternates_for_smiley"
-        latin:maxPopupKeyboardColumn="5"
-        latin:parentStyle="functionalKeyStyle" />
+        latin:popupCharacters="@string/alternates_for_popular_domain" />
     <switch>
         <case
             latin:passwordInput="true"
@@ -319,20 +209,12 @@
             <key-style
                 latin:styleName="nonPasswordSymbolKeyStyle"
                 latin:enabled="false" />
-            <key-style
-                latin:styleName="nonPasswordFunctionalKeyStyle"
-                latin:enabled="false"
-                latin:parentStyle="functionalKeyStyle" />
         </case>
         <!-- latin:passwordInput="false" -->
         <default>
             <key-style
                 latin:styleName="nonPasswordSymbolKeyStyle"
                 latin:enabled="true" />
-            <key-style
-                latin:styleName="nonPasswordFunctionalKeyStyle"
-                latin:enabled="true"
-                latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml
index c8641ed..4af621d 100644
--- a/java/res/xml-sw600dp/kbd_number.xml
+++ b/java/res/xml-sw600dp/kbd_number.xml
@@ -23,7 +23,7 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="26.67%p"
+    latin:keyWidth="13.7%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -37,116 +37,182 @@
         <case
             latin:passwordInput="true"
         >
-            <Row
-                latin:rowEdgeFlags="top"
-            >
+            <!-- This row is intentionally not marked as a top row -->
+            <Row>
+                <Spacer
+                    latin:horizontalGap="29.5%p" />
                 <Key
-                    latin:keyStyle="num1KeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="num1KeyStyle" />
                 <Key
                     latin:keyStyle="num2KeyStyle" />
                 <Key
                     latin:keyStyle="num3KeyStyle" />
                 <Spacer
-                    latin:horizontalGap="20%p" />
+                    latin:horizontalGap="20.3%p" />
+                <Key
+                    latin:keyStyle="deleteKeyStyle"
+                    latin:keyWidth="9.2%p"
+                    latin:keyEdgeFlags="right" />
             </Row>
             <Row>
+                <Spacer
+                    latin:horizontalGap="29.5%p" />
                 <Key
-                    latin:keyStyle="num4KeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="num4KeyStyle" />
                 <Key
                     latin:keyStyle="num5KeyStyle" />
                 <Key
                     latin:keyStyle="num6KeyStyle" />
                 <Spacer
-                    latin:horizontalGap="20%p" />
+                    latin:horizontalGap="14.8%p" />
+                <Key
+                    latin:keyStyle="returnKeyStyle"
+                    latin:keyWidth="14.6%p"
+                    latin:keyEdgeFlags="right" />
             </Row>
             <Row>
+                <Spacer
+                    latin:horizontalGap="29.5%p" />
                 <Key
-                    latin:keyStyle="num7KeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="num7KeyStyle" />
                 <Key
                     latin:keyStyle="num8KeyStyle" />
                 <Key
                     latin:keyStyle="num9KeyStyle" />
-                <Key
-                    latin:keyStyle="deleteKeyStyle"
-                    latin:keyWidth="20%p"
-                    latin:keyEdgeFlags="right" />
+                <!-- There is an empty area below the "Enter" key and right of the "9" key. To
+                     ignore the touch event on the area, "9" is intentionally not marked as a right
+                     edge key. -->
             </Row>
-            <Row
-                latin:rowEdgeFlags="bottom"
-            >
+            <!-- This row is intentionally not marked as a bottom row -->
+            <Row>
                 <Spacer
-                    latin:horizontalGap="26.67%p" />
+                    latin:horizontalGap="43.2%p" />
                 <Key
                     latin:keyStyle="num0KeyStyle" />
                 <Spacer
-                    latin:horizontalGap="26.67%p" />
-                <Key
-                    latin:keyStyle="returnKeyStyle"
-                    latin:keyWidth="20%p"
-                    latin:keyEdgeFlags="right" />
+                    latin:horizontalGap="30.2%p" />
+                <include
+                    latin:keyboardLayout="@xml/kbd_settings" />
             </Row>
         </case>
+        <!-- latin:passwordInput="false" -->
         <default>
-            <Row
-                latin:rowEdgeFlags="top"
-            >
+            <!-- This row is intentionally not marked as a top row -->
+            <Row>
+                <Spacer
+                    latin:horizontalGap="10.0%p" />
                 <Key
-                    latin:keyLabel="1"
-                    latin:keyEdgeFlags="left" />
+                    latin:code="45"
+                    latin:keyLabel="-"
+                    latin:keyWidth="9.1%p" />
+                <Key
+                    latin:code="43"
+                    latin:keyLabel="+"
+                    latin:keyWidth="9.1%p" />
+                <Key
+                    latin:code="44"
+                    latin:keyLabel="."
+                    latin:keyWidth="9.1%p" />
+                <Spacer
+                    latin:horizontalGap="4.5%p" />
+                <Key
+                    latin:keyLabel="1" />
                 <Key
                     latin:keyLabel="2" />
                 <Key
                     latin:keyLabel="3" />
+                <Spacer
+                    latin:horizontalGap="8.1%p" />
                 <Key
-                    latin:keyLabel="-"
-                    latin:keyStyle="functionalKeyStyle"
-                    latin:keyWidth="20%p"
+                    latin:keyStyle="deleteKeyStyle"
+                    latin:keyWidth="9.2%p"
                     latin:keyEdgeFlags="right" />
             </Row>
             <Row>
+                <Spacer
+                    latin:horizontalGap="10.0%p" />
+                <Key
+                    latin:code="44"
+                    latin:keyLabel="*"
+                    latin:keyWidth="9.1%p" />
+                <Key
+                    latin:code="46"
+                    latin:keyLabel="/"
+                    latin:keyWidth="9.1%p" />
+                <Key
+                    latin:code="59"
+                    latin:keyLabel=","
+                    latin:keyWidth="9.1%p" />
+                <Spacer
+                    latin:horizontalGap="4.5%p" />
                 <Key
                     latin:keyLabel="4"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="13.7%p" />
                 <Key
                     latin:keyLabel="5" />
                 <Key
                     latin:keyLabel="6" />
+                <Spacer
+                    latin:horizontalGap="2.6%p" />
                 <Key
-                    latin:keyLabel=","
-                    latin:keyStyle="functionalKeyStyle"
-                    latin:keyWidth="20%p"
+                    latin:keyStyle="returnKeyStyle"
+                    latin:keyWidth="14.6%p"
                     latin:keyEdgeFlags="right" />
             </Row>
             <Row>
                 <Key
-                    latin:keyLabel="7"
+                    latin:keyStyle="moreKeyStyle"
+                    latin:keyWidth="10.0%p"
                     latin:keyEdgeFlags="left" />
+                <!-- There is an empty area below the "More" key and left of the "(" key. To
+                     ignore the touch event on the area, "(" is intentionally not marked as a left
+                     edge key. -->
+                <Key
+                    latin:code="40"
+                    latin:keyLabel="("
+                    latin:keyWidth="9.1%p" />
+                <Key
+                    latin:code="41"
+                    latin:keyLabel=")"
+                    latin:keyWidth="9.1%p" />
+                <Key
+                    latin:code="78"
+                    latin:keyLabel="="
+                    latin:keyWidth="9.1%p" />
+                <Spacer
+                    latin:horizontalGap="4.5%p" />
+                <Key
+                    latin:keyLabel="7" />
                 <Key
                     latin:keyLabel="8" />
                 <Key
                     latin:keyLabel="9" />
-                <Key
-                    latin:keyStyle="deleteKeyStyle"
-                    latin:keyWidth="20%p"
-                    latin:keyEdgeFlags="right" />
+                <!-- There is an empty area below the "Enter" key and right of the "9" key. To
+                     ignore the touch event on the area, "9" is intentionally not marked as a right
+                     edge key. -->
             </Row>
-            <Row
-                latin:rowEdgeFlags="bottom"
-            >
+            <!-- This row is intentionally not marked as a bottom row -->
+            <Row>
+                <Spacer
+                    latin:horizontalGap="10.0%p" />
+                <!-- There is an empty area below the "More" key and left of the "space" key. To
+                     ignore the touch event on the area, "space" is intentionally not marked as a
+                     left edge key. -->
                 <Key
-                    latin:keyStyle="numSpaceKeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+                    latin:keyWidth="27.2%p" />
+                <Spacer
+                    latin:horizontalGap="4.5%p" />
+                <Key
+                    latin:keyLabel="*" />
                 <Key
                     latin:keyLabel="0" />
                 <Key
-                    latin:keyLabel="." />
-                <Key
-                    latin:keyStyle="returnKeyStyle"
-                    latin:keyWidth="20%p"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyLabel="#" />
+                <Spacer
+                    latin:horizontalGap="4.3%p" />
+                <include
+                    latin:keyboardLayout="@xml/kbd_settings" />
             </Row>
         </default>
     </switch>
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index 8dd1ab7..f77fc7e 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -23,7 +23,7 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="26.67%p"
+    latin:keyWidth="13.7%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -33,62 +33,110 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_numkey_styles" />
-    <Row
-        latin:rowEdgeFlags="top"
-    >
+    <!-- This row is intentionally not marked as a top row -->
+    <Row>
+        <Spacer
+            latin:horizontalGap="14.5%p" />
         <Key
-            latin:keyStyle="num1KeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:code="45"
+            latin:keyLabel=" - "
+            latin:keyWidth="9.1%p" />
+        <Key
+            latin:code="43"
+            latin:keyLabel=" + "
+            latin:keyWidth="9.1%p" />
+        <Spacer
+            latin:horizontalGap="9.1%p" />
+        <Key
+            latin:keyStyle="num1KeyStyle" />
         <Key
             latin:keyStyle="num2KeyStyle" />
         <Key
             latin:keyStyle="num3KeyStyle" />
+        <Spacer
+            latin:horizontalGap="8.1%p" />
         <Key
-            latin:keyLabel="-"
-            latin:keyStyle="functionalKeyStyle"
-            latin:keyWidth="20%p"
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.2%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
+        <Spacer
+            latin:horizontalGap="14.5%p" />
         <Key
-            latin:keyStyle="num4KeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:code="44"
+            latin:keyLabel=" , "
+            latin:keyWidth="9.1%p" />
+        <Key
+            latin:code="46"
+            latin:keyLabel=" . "
+            latin:keyWidth="9.1%p" />
+        <Spacer
+            latin:horizontalGap="9.1%p" />
+        <Key
+            latin:keyStyle="num4KeyStyle" />
         <Key
             latin:keyStyle="num5KeyStyle" />
         <Key
             latin:keyStyle="num6KeyStyle" />
+        <Spacer
+            latin:horizontalGap="2.6%p" />
         <Key
-            latin:keyLabel="."
-            latin:keyStyle="functionalKeyStyle"
-            latin:keyWidth="20%p"
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="14.6%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
         <Key
-            latin:keyStyle="num7KeyStyle"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
+        <Spacer
+            latin:horizontalGap="4.5%p" />
+        <!-- There is an empty area below the "More" key and left of the "(" key.  To ignore
+             the touch event on the area, "(" is intentionally not marked as a left edge key. -->
+        <Key
+            latin:code="40"
+            latin:keyLabel=" ( "
+            latin:keyWidth="9.1%p" />
+        <Key
+            latin:code="41"
+            latin:keyLabel=" ) "
+            latin:keyWidth="9.1%p" />
+        <Spacer
+            latin:horizontalGap="9.1%p" />
+        <Key
+            latin:keyStyle="num7KeyStyle" />
         <Key
             latin:keyStyle="num8KeyStyle" />
         <Key
             latin:keyStyle="num9KeyStyle" />
+        <!-- There is an empty area below the "Enter" key and right of the "9" key.  To ignore
+             the touch event on the area, "9" is intentionally not marked as a right edge key. -->
+        </Row>
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row>
+        <Spacer
+            latin:horizontalGap="14.5%p" />
+        <!-- There is an empty area below the "More" key and left of the "space" key.  To ignore
+             the touch event on the area, "space" is intentionally not marked as a left edge key. -->
         <Key
-            latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row
-        latin:rowEdgeFlags="bottom"
-    >
+            latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+            latin:keyWidth="18.2%p" />
+        <Spacer
+            latin:horizontalGap="9.1%p" />
         <Key
-            latin:keyStyle="numAltKeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="numStarKeyStyle"
+            latin:keyWidth="13.7%p" />
         <Key
-            latin:keyStyle="num0KeyStyle" />
+            latin:keyStyle="num0KeyStyle"
+            latin:keyWidth="13.7%p" />>
         <Key
-            latin:keyStyle="numSpaceKeyStyle" />
-        <Key
-            latin:keyStyle="returnKeyStyle"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
+            latin:keyStyle="numPoundKeyStyle"
+            latin:keyWidth="13.7%p" />
+        <Spacer
+            latin:horizontalGap="4.3%p" />
+        <include
+            latin:keyboardLayout="@xml/kbd_settings" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml
index d355c8e..63ef412 100644
--- a/java/res/xml-sw600dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -23,7 +23,7 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="26.67%p"
+    latin:keyWidth="13.7%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -33,68 +33,117 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_numkey_styles" />
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="("
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="/" />
-        <Key
-            latin:keyLabel=")" />
-        <Key
-            latin:keyLabel="-"
-            latin:keyStyle="functionalKeyStyle"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
+    <!-- This row is intentionally not marked as a top row -->
     <Row>
+        <Spacer
+            latin:horizontalGap="10.0%p" />
         <Key
-            latin:keyLabel="N"
-            latin:keyEdgeFlags="left" />
-        <!-- Pause is a comma. Check PhoneNumberUtils.java to see if this
-            has changed. -->
+            latin:code="45"
+            latin:keyLabel=" - "
+            latin:keyWidth="9.1%p" />
+        <Key
+            latin:code="43"
+            latin:keyLabel=" + "
+            latin:keyWidth="9.1%p" />
         <Key
             latin:code="44"
-            latin:keyLabel="Pause" />
+            latin:keyLabel="@string/label_pause_key"
+            latin:keyWidth="9.1%p" />
+        <Spacer
+            latin:horizontalGap="4.5%p" />
         <Key
-            latin:keyLabel="," />
+            latin:keyStyle="num1KeyStyle" />
         <Key
-            latin:keyLabel="."
-            latin:keyStyle="functionalKeyStyle"
-            latin:keyWidth="20%p"
+            latin:keyStyle="num2KeyStyle" />
+        <Key
+            latin:keyStyle="num3KeyStyle" />
+        <Spacer
+            latin:horizontalGap="8.1%p" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.2%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row>
+        <Spacer
+            latin:horizontalGap="10.0%p" />
+        <Key
+            latin:code="44"
+            latin:keyLabel=" , "
+            latin:keyWidth="9.1%p" />
+        <Key
+            latin:code="46"
+            latin:keyLabel=" . "
+            latin:keyWidth="9.1%p" />
+        <Key
+            latin:code="59"
+            latin:keyLabel="@string/label_wait_key"
+            latin:keyWidth="9.1%p" />
+        <Spacer
+            latin:horizontalGap="4.5%p" />
+        <Key
+            latin:keyStyle="num4KeyStyle" />
+        <Key
+            latin:keyStyle="num5KeyStyle" />
+        <Key
+            latin:keyStyle="num6KeyStyle" />
+        <Spacer
+            latin:horizontalGap="2.6%p" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="14.6%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
         <Key
-            latin:keyStyle="numStarKeyStyle"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
-        <!-- Wait is a semicolon. -->
+        <!-- There is an empty area below the "More" key and left of the "(" key.  To ignore
+             the touch event on the area, "(" is intentionally not marked as a left edge key. -->
         <Key
-            latin:code="59"
-            latin:keyLabel="Wait" />
+            latin:code="40"
+            latin:keyLabel=" ( "
+            latin:keyWidth="9.1%p" />
+        <Key
+            latin:code="41"
+            latin:keyLabel=" ) "
+            latin:keyWidth="9.1%p" />
+        <Key
+            latin:code="78"
+            latin:keyLabel=" N "
+            latin:keyWidth="9.1%p" />
+        <Spacer
+            latin:horizontalGap="4.5%p" />
+        <Key
+            latin:keyStyle="num7KeyStyle" />
+        <Key
+            latin:keyStyle="num8KeyStyle" />
+        <Key
+            latin:keyStyle="num9KeyStyle" />
+        <!-- There is an empty area below the "Enter" key and right of the "9" key.  To ignore
+             the touch event on the area, "9" is intentionally not marked as a right edge key. -->
+    </Row>
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row>
+        <Spacer
+            latin:horizontalGap="10.0%p" />
+        <!-- There is an empty area below the "More" key and left of the "space" key.  To ignore
+             the touch event on the area, "space" is intentionally not marked as a left edge key. -->
+        <Key
+            latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+            latin:keyWidth="27.2%p" />
+        <Spacer
+            latin:horizontalGap="4.5%p" />
+        <Key
+            latin:keyStyle="numStarKeyStyle" />
+        <Key
+            latin:keyStyle="num0KeyStyle" />
         <Key
             latin:keyStyle="numPoundKeyStyle" />
-        <Key
-            latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row
-        latin:rowEdgeFlags="bottom"
-    >
-        <Key
-            latin:code="@integer/key_switch_alpha_symbol"
-            latin:keyLabel="@string/label_to_numeric_key"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="+" />
-        <Key
-            latin:keyStyle="numSpaceKeyStyle" />
-        <Key
-            latin:keyStyle="returnKeyStyle"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
+        <Spacer
+            latin:horizontalGap="4.3%p" />
+        <include
+            latin:keyboardLayout="@xml/kbd_settings" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row1.xml b/java/res/xml-sw600dp/kbd_qwerty_row1.xml
index 3084eba..d3d5b25 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row1.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row1.xml
@@ -22,7 +22,7 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Row
-        latin:keyWidth="10%p"
+        latin:keyWidth="9.1%p"
         latin:rowEdgeFlags="top"
     >
         <Key
@@ -65,7 +65,10 @@
         <Key
             latin:keyLabel="p"
             latin:keyHintIcon="@drawable/key_hint_num0_holo"
-            latin:popupCharacters="@string/alternates_for_p"
+            latin:popupCharacters="@string/alternates_for_p" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.2%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row2.xml b/java/res/xml-sw600dp/kbd_qwerty_row2.xml
index 07dd66f..aecb4f4 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row2.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row2.xml
@@ -22,10 +22,10 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Row
-        latin:keyWidth="10%p"
+        latin:keyWidth="9.0%p"
     >
         <Spacer
-            latin:horizontalGap="5%p" />
+            latin:horizontalGap="4.5%p" />
         <Key
             latin:keyLabel="a"
             latin:popupCharacters="@string/alternates_for_a"
@@ -50,7 +50,10 @@
             latin:popupCharacters="@string/alternates_for_k" />
         <Key
             latin:keyLabel="l"
-            latin:popupCharacters="@string/alternates_for_l"
+            latin:popupCharacters="@string/alternates_for_l" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="14.6%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row3.xml b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
index c8e78d4..e50f907 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
@@ -22,11 +22,11 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Row
-        latin:keyWidth="10%p"
+        latin:keyWidth="8.9%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="15%p"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="z"
@@ -46,9 +46,33 @@
             latin:popupCharacters="@string/alternates_for_n" />
         <Key
             latin:keyLabel="m" />
+        <switch>
+            <case
+                latin:mode="email"
+            >
+                <Key
+                    latin:keyLabel="," />
+                <Key
+                    latin:keyLabel="." />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel=","
+                    latin:manualTemporaryUpperCaseCode="33"
+                    latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                    latin:popupCharacters="!" />
+                <Key
+                    latin:keyLabel="."
+                    latin:manualTemporaryUpperCaseCode="63"
+                    latin:keyHintIcon="@drawable/key_hint_question_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                    latin:popupCharacters="\?" />
+            </default>
+        </switch>
         <Key
-            latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="15%p"
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="10.1%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
index afe12e8..5736746 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
@@ -21,117 +21,225 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
+    <!-- This row is intentionally not marked as a bottom row -->
     <Row
-        latin:keyWidth="10%p"
-        latin:rowEdgeFlags="bottom"
+        latin:keyWidth="8.9%p"
     >
+        <Key
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="13.0%p"
+            latin:keyEdgeFlags="left" />
         <switch>
             <case
-                latin:hasSettingsKey="false"
+                latin:languageCode="ru"
             >
-                <Key
-                    latin:keyStyle="toSymbolKeyStyle"
-                    latin:keyWidth="20%p"
-                    latin:keyEdgeFlags="left" />
-                <include
-                    latin:keyboardLayout="@xml/kbd_qwerty_f1" />
-                <Key
-                    latin:keyStyle="spaceKeyStyle"
-                    latin:keyWidth="40%p" />
                 <switch>
+                    <!-- TODO: implement logical OR for <case> attribute -->
                     <case
-                        latin:mode="web"
+                        latin:mode="email"
                     >
-                         <Key
-                            latin:keyHintIcon="@drawable/hint_popup"
-                            latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
-                            latin:maxPopupKeyboardColumn="8"
-                            latin:keyStyle="tabKeyStyle" />
+                        <Key
+                            latin:keyStyle="comKeyStyle" />
+                    </case>
+                    <case
+                        latin:mode="url"
+                    >
+                        <Key
+                            latin:keyStyle="comKeyStyle" />
+                    </case>
+                    <case
+                        latin:imeAction="actionSearch"
+                    >
+                        <Key
+                            latin:keyLabel=":"
+                            latin:manualTemporaryUpperCaseCode="43"
+                            latin:keyHintIcon="@drawable/key_hint_plus_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
+                            latin:popupCharacters="+" />
                     </case>
                     <default>
                         <Key
-                            latin:keyLabel="."
-                            latin:keyHintIcon="@drawable/hint_popup"
-                            latin:popupCharacters="@string/alternates_for_punctuation"
-                            latin:maxPopupKeyboardColumn="7"
-                            latin:keyStyle="functionalKeyStyle" />
+                            latin:keyStyle="smileyKeyStyle" />
                     </default>
                 </switch>
                 <switch>
                     <case
-                        latin:mode="im"
+                        latin:mode="email"
                     >
                         <Key
-                            latin:keyStyle="smileyKeyStyle"
-                            latin:keyWidth="20%p"
-                            latin:keyEdgeFlags="right" />
+                            latin:keyLabel="\@" />
+                    </case>
+                    <case
+                        latin:mode="url"
+                    >
+                        <Key
+                            latin:keyLabel="-"
+                            latin:manualTemporaryUpperCaseCode="95"
+                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                            latin:popupCharacters="_" />
                     </case>
                     <default>
                         <Key
-                            latin:keyStyle="returnKeyStyle"
-                            latin:keyWidth="20%p"
-                            latin:keyEdgeFlags="right" />
+                            latin:keyLabel="/"
+                            latin:manualTemporaryUpperCaseCode="64"
+                            latin:keyHintIcon="@drawable/key_hint_at_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
+                            latin:popupCharacters="\@" />
                     </default>
                 </switch>
             </case>
-            <case
-                latin:hasSettingsKey="true"
-            >
-                <Key
-                    latin:keyStyle="toSymbolKeyStyle"
-                    latin:keyWidth="15%p"
-                    latin:keyEdgeFlags="left" />
-                <Key
-                    latin:keyStyle="settingsKeyStyle" />
-                <include
-                    latin:keyboardLayout="@xml/kbd_qwerty_f1" />
+            <!-- not languageCode="ru" -->
+            <default>
                 <switch>
                     <case
-                        latin:mode="web"
+                        latin:mode="url"
                     >
                         <Key
-                            latin:keyStyle="spaceKeyStyle"
-                            latin:keyWidth="30%p" />
-                        <Key
-                            latin:keyStyle="tabKeyStyle" />
+                            latin:keyStyle="comKeyStyle"
+                            latin:keyWidth="17.8%p" />
                     </case>
                     <default>
-                        <Key
-                            latin:keyStyle="spaceKeyStyle"
-                            latin:keyWidth="30%p" />
+                        <switch>
+                            <case
+                                latin:mode="email"
+                            >
+                                <Key
+                                    latin:keyStyle="comKeyStyle" />
+                            </case>
+                            <case
+                                latin:imeAction="actionSearch"
+                            >
+                                <Key
+                                    latin:keyLabel=":"
+                                    latin:manualTemporaryUpperCaseCode="43"
+                                    latin:keyHintIcon="@drawable/key_hint_plus_holo"
+                                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
+                                    latin:popupCharacters="+" />
+                            </case>
+                            <default>
+                                <Key
+                                    latin:keyStyle="smileyKeyStyle" />
+                            </default>
+                        </switch>
+                        <switch>
+                            <case
+                                latin:mode="email"
+                            >
+                                <Key
+                                    latin:keyLabel="\@" />
+                            </case>
+                            <default>
+                                <Key
+                                    latin:keyLabel="/"
+                                    latin:manualTemporaryUpperCaseCode="64"
+                                    latin:keyHintIcon="@drawable/key_hint_at_holo"
+                                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
+                                    latin:popupCharacters="\@" />
+                            </default>
+                        </switch>
                     </default>
                 </switch>
-                <Key
-                    latin:keyLabel="."
-                    latin:keyHintIcon="@drawable/hint_popup"
-                    latin:popupCharacters="@string/alternates_for_punctuation"
-                    latin:maxPopupKeyboardColumn="7"
-                    latin:keyStyle="functionalKeyStyle" />
-                <switch>
-                    <case
-                        latin:mode="im"
-                    >
-                        <Key
-                            latin:keyStyle="smileyKeyStyle"
-                            latin:keyWidth="25%p"
-                            latin:keyEdgeFlags="right" />
-                    </case>
-                    <case
-                        latin:mode="web"
-                    >
-                        <Key
-                            latin:keyStyle="returnKeyStyle"
-                            latin:keyWidth="15%p"
-                            latin:keyEdgeFlags="right" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:keyStyle="returnKeyStyle"
-                            latin:keyWidth="25%p"
-                            latin:keyEdgeFlags="right" />
-                    </default>
-                </switch>
-            </case>
+            </default>
         </switch>
+        <Key
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="38.5%p" />
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <switch>
+                    <case
+                        latin:mode="email"
+                    >
+                        <Key
+                            latin:keyLabel="-" />
+                    </case>
+                    <case
+                        latin:mode="url"
+                    >
+                        <Key
+                            latin:keyLabel="/"
+                            latin:manualTemporaryUpperCaseCode="58"
+                            latin:keyHintIcon="@drawable/key_hint_colon_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+                            latin:popupCharacters=":" />
+                    </case>
+                    <default>
+                        <Key
+                            latin:keyLabel="\?"
+                            latin:manualTemporaryUpperCaseCode="95"
+                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                            latin:popupCharacters="_" />
+                    </default>
+                </switch>
+                <switch>
+                    <case
+                        latin:mode="email"
+                    >
+                        <Key
+                            latin:keyLabel="_" />
+                    </case>
+                    <default>
+                        <Key
+                            latin:keyLabel="!"
+                            latin:manualTemporaryUpperCaseCode="39"
+                            latin:keyHintIcon="@drawable/key_hint_quote_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+                            latin:popupCharacters="\'" />
+                    </default>
+                </switch>
+            </case>
+            <!-- not languageCode="ru" -->
+            <default>
+                <switch>
+                    <case
+                        latin:mode="email"
+                    >
+                        <Key
+                            latin:keyLabel="-" />
+                    </case>
+                    <case
+                        latin:mode="url"
+                    >
+                        <Key
+                            latin:keyLabel="/"
+                            latin:manualTemporaryUpperCaseCode="58"
+                            latin:keyHintIcon="@drawable/key_hint_colon_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+                            latin:popupCharacters=":" />
+                    </case>
+                    <default>
+                        <Key
+                            latin:keyLabel="\'"
+                            latin:manualTemporaryUpperCaseCode="34"
+                            latin:keyHintIcon="@drawable/key_hint_quote_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+                            latin:popupCharacters="&quot;" />
+                    </default>
+                </switch>
+                <switch>
+                    <case
+                        latin:mode="email"
+                    >
+                        <Key
+                            latin:keyLabel="_" />
+                    </case>
+                    <default>
+                        <Key
+                            latin:keyLabel="-"
+                            latin:manualTemporaryUpperCaseCode="95"
+                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                            latin:popupCharacters="_" />
+                    </default>
+                </switch>
+            </default>
+        </switch>
+        <include
+            latin:keyboardLayout="@xml/kbd_settings" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_settings.xml b/java/res/xml-sw600dp/kbd_settings.xml
new file mode 100644
index 0000000..331e151
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_settings.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:mode="web"
+        >
+            <switch>
+                <case
+                    latin:voiceKeyEnabled="true"
+                    latin:passwordInput="false"
+                >
+                    <Key
+                        latin:keyStyle="webTabKeyStyle"
+                        latin:keyWidth="6.4%p" />
+                    <Key
+                        latin:keyStyle="micKeyStyle"
+                        latin:keyWidth="6.5%p" />
+                </case>
+                <default>
+                    <Spacer
+                        latin:horizontalGap="4.15%p" />
+                    <Key
+                        latin:keyStyle="webTabKeyStyle"
+                        latin:keyWidth="8.9%p" />
+                </default>
+            </switch>
+        </case>
+        <default>
+            <switch>
+                <case
+                    latin:hasSettingsKey="true"
+                    latin:voiceKeyEnabled="true"
+                >
+                    <Key
+                        latin:keyStyle="settingsKeyStyle"
+                        latin:keyWidth="6.4%p" />
+                    <Key
+                        latin:keyStyle="micKeyStyle"
+                        latin:keyWidth="6.5%p" />
+                </case>
+                <case
+                    latin:hasSettingsKey="true"
+                    latin:voiceKeyEnabled="false"
+                >
+                    <Spacer
+                        latin:horizontalGap="4.15%p" />
+                    <Key
+                        latin:keyStyle="settingsKeyStyle"
+                        latin:keyWidth="8.9%p" />
+                </case>
+                <case
+                    latin:hasSettingsKey="false"
+                    latin:voiceKeyEnabled="true"
+                >
+                    <Spacer
+                        latin:horizontalGap="4.15%p" />
+                    <Key
+                        latin:keyStyle="micKeyStyle"
+                        latin:keyWidth="8.9%p" />
+                </case>
+                <default>
+                    <Spacer
+                        latin:horizontalGap="13.0%p" />
+                </default>
+            </switch>
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 3f79ae1..c89cd2f 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -23,7 +23,6 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="10%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -33,13 +32,13 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_currency_key_styles" />
+    <!-- This row is intentionally not marked as a top row -->
     <Row
-        latin:rowEdgeFlags="top"
+        latin:keyWidth="9.1%p"
     >
         <Key
             latin:keyLabel="1"
-            latin:popupCharacters="¹,½,⅓,¼,⅛"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="¹,½,⅓,¼,⅛" />
         <Key
             latin:keyLabel="2"
             latin:popupCharacters="²,⅔" />
@@ -63,15 +62,19 @@
             latin:keyLabel="9" />
         <Key
             latin:keyLabel="0"
-            latin:popupCharacters="ⁿ,∅"
+            latin:popupCharacters="ⁿ,∅" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.2%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <Row>
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <Spacer
+            latin:horizontalGap="4.5%p" />
         <Key
-            latin:keyLabel="\@"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="\#" />
+            latin:keyLabel="#" />
         <Key
             latin:keyStyle="currencyKeyStyle" />
         <Key
@@ -93,39 +96,122 @@
             latin:popupCharacters="[,{,&lt;" />
         <Key
             latin:keyLabel=")"
-            latin:popupCharacters="],},&gt;"
+            latin:popupCharacters="],},&gt;" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="14.6%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <Row>
+    <Row
+        latin:keyWidth="8.9%p"
+    >
         <Key
-            latin:keyStyle="altKeyStyle"
-            latin:keyWidth="15%p"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:keyLabel="!"
-            latin:popupCharacters="¡" />
-        <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. -->
-        <!-- latin:popupCharacters="“,”,„,‟,«,»" -->
+            latin:keyLabel="&lt;"
+            latin:popupCharacters="≤,«,‹" />
         <Key
-            latin:keyLabel="&quot;"
-            latin:popupCharacters="“,”,«,»"
-            latin:maxPopupKeyboardColumn="6" />
+            latin:keyLabel="&gt;"
+            latin:popupCharacters="≥,»,›" />
         <Key
-            latin:keyLabel="\'"
-            latin:popupCharacters="‘,’,‚,‛" />
-        <Key
-            latin:keyLabel=":" />
+            latin:keyLabel="="
+            latin:popupCharacters="≠,≈" />
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <Key
+                    latin:keyLabel=":" />
+            </case>
+            <case
+                latin:mode="url"
+            >
+                <Key
+                    latin:keyLabel="\'"
+                    latin:popupCharacters="‘,’,‚,‛" />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel=":" />
+            </default>
+        </switch>
         <Key
             latin:keyLabel=";" />
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <Key
+                    latin:keyLabel="\'"
+                    latin:popupCharacters="‘,’,‚,‛" />
+                <!-- Note: DroidSans doesn't have double-high-reversed-quotation
+                    '\u201f' glyph. -->
+                <!-- latin:popupCharacters="“,”,„,‟,«,»" -->
+                <Key
+                    latin:keyLabel="&quot;"
+                    latin:popupCharacters="“,”,«,»" />
+                <Key
+                    latin:keyLabel="." />
+                <Key
+                    latin:keyLabel="," />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel="," />
+                <Key
+                    latin:keyLabel="." />
+                <Key
+                    latin:keyLabel="!"
+                    latin:popupCharacters="¡" />
+                <Key
+                    latin:keyLabel="\?"
+                    latin:popupCharacters="¿" />
+            </default>
+        </switch>
+        <Key
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="10.1%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row
+        latin:keyWidth="8.9%p"
+    >
+        <Key
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="13.0%p"
+            latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="/" />
         <Key
-            latin:keyLabel="\?"
-            latin:popupCharacters="¿" />
+            latin:keyLabel="\@" />
         <Key
-            latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="15%p"
-            latin:keyEdgeFlags="right" />
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="38.5%p" />
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <Key
+                    latin:keyLabel="_" />
+                <Key
+                    latin:keyLabel="-" />
+            </case>
+            <default>
+                <!-- Note: DroidSans doesn't have double-high-reversed-quotation
+                    '\u201f' glyph. -->
+                <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" -->
+                <Key
+                    latin:keyLabel="&quot;"
+                    latin:popupCharacters="“,”,«,»,‘,’,‚,‛" />
+                <Key
+                    latin:keyLabel="_" />
+            </default>
+        </switch>
+        <include
+            latin:keyboardLayout="@xml/kbd_settings" />
     </Row>
-    <include latin:keyboardLayout="@xml/kbd_symbols_row4" />
 </Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_symbols_shift.xml
index 97fbc1e..7195f6a 100644
--- a/java/res/xml-sw600dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw600dp/kbd_symbols_shift.xml
@@ -23,7 +23,6 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="10%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -31,12 +30,12 @@
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
+    <!-- This row is intentionally not marked as a top row -->
     <Row
-        latin:rowEdgeFlags="top"
+        latin:keyWidth="9.1%p"
     >
         <Key
-            latin:keyLabel="~"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="~" />
         <Key
             latin:keyLabel="`" />
         <Key
@@ -59,15 +58,22 @@
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="×" />
         <Key
-            latin:keyLabel="{" />
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="§"
+            latin:popupCharacters="¶" />
         <Key
-            latin:keyLabel="}"
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="Δ" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.2%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <Row>
-        <Key
-            latin:keyStyle="nonSpecialBackgroundTabKeyStyle"
-            latin:keyEdgeFlags="left" />
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <Spacer
+            latin:horizontalGap="4.5%p" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="£" />
@@ -79,52 +85,80 @@
             latin:keyLabel="€" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
-            latin:keyLabel="°"
-            latin:popupCharacters="′,″" />
+            latin:keyLabel="¥" />
         <Key
             latin:keyLabel="^"
             latin:popupCharacters="↑,↓,←,→" />
         <Key
-            latin:keyLabel="_" />
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="°"
+            latin:popupCharacters="′,″" />
         <Key
-            latin:keyLabel="="
-            latin:popupCharacters="≠,≈,∞" />
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="±"
+            latin:popupCharacters="∞" />
         <Key
-            latin:keyLabel="[" />
+            latin:keyLabel="{" />
         <Key
-            latin:keyLabel="]"
+            latin:keyLabel="}" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="14.6%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <Row>
+    <Row
+        latin:keyWidth="8.9%p"
+    >
         <Key
-            latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="15%p"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:keyStyle="nonPasswordSymbolKeyStyle"
-            latin:keyLabel="™" />
-        <Key
-            latin:keyStyle="nonPasswordSymbolKeyStyle"
-            latin:keyLabel="®" />
+            latin:keyLabel="\\" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="©" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
-            latin:keyLabel="¶"
-            latin:popupCharacters="§" />
+            latin:keyLabel="®" />
         <Key
-            latin:keyLabel="\\" />
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="™" />
         <Key
-            latin:keyLabel="&lt;"
-            latin:popupCharacters="≤,«,‹" />
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="℅" />
         <Key
-            latin:keyLabel="&gt;"
-            latin:popupCharacters="≥,»,›" />
+            latin:keyLabel="[" />
         <Key
-            latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="15%p"
+            latin:keyLabel="]" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="¡" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="¿" />
+        <Key
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="10.1%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4" />
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row
+        latin:keyWidth="8.9%p"
+    >
+        <Key
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="13.0%p"
+            latin:keyEdgeFlags="left" />
+        <Spacer
+            latin:horizontalGap="17.8%p" />
+        <Key
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="38.5%p" />
+        <Spacer
+            latin:horizontalGap="17.8%p" />
+        <include
+            latin:keyboardLayout="@xml/kbd_settings" />
+    </Row>
 </Keyboard>
diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index 9122176..49e105d 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -100,7 +100,7 @@
     <Row>
         <!-- To match one character label size with "More", I placed spaces around the char '('
              and ')'. -->
-        <!-- There is an empty area bellow the "More" key and left of the "(" key.  To ignore
+        <!-- There is an empty area below the "More" key and left of the "(" key.  To ignore
              the touch event on the area, "(" is intentionally not marked as a left edge key. -->
         <Spacer
             latin:horizontalGap="20.427%p" />
@@ -120,12 +120,12 @@
             latin:keyStyle="num8KeyStyle" />
         <Key
             latin:keyStyle="num9KeyStyle" />
-        <!-- There is an empty area bellow the "Enter" key and right of the "9" key.  To ignore
+        <!-- There is an empty area below the "Enter" key and right of the "9" key.  To ignore
              the touch event on the area, "9" is intentionally not marked as a right edge key. -->
         </Row>
     <!-- This row is intentionally not marked as a bottom row -->
     <Row>
-        <!-- There is an empty area bellow the "More" key and left of the "space" key.  To ignore
+        <!-- There is an empty area below the "More" key and left of the "space" key.  To ignore
              the touch event on the area, "space" is intentionally not marked as a left edge key. -->
         <Spacer
             latin:horizontalGap="12.340%p" />
@@ -160,7 +160,7 @@
                     latin:keyWidth="8.042%p" />
             </case>
         </switch>
-        <!-- There is an empty area bellow the "Enter" key and right of the "#" key.  To ignore
+        <!-- There is an empty area below the "Enter" key and right of the "#" key.  To ignore
              the touch event on the area, "#" is intentionally not marked as a right edge key. -->
     </Row>
 </Keyboard>
diff --git a/java/res/xml-sw768dp/kbd_phone_symbols.xml b/java/res/xml-sw768dp/kbd_phone_symbols.xml
index 055c148..f73fb5d 100644
--- a/java/res/xml-sw768dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -108,7 +108,7 @@
     <Row>
         <!-- To match one character label size with "More" and etc., I placed spaces around the
              char 'N', '(' and ')'. -->
-        <!-- There is an empty area bellow the "More" key and left of the "(" key.  To ignore
+        <!-- There is an empty area below the "More" key and left of the "(" key.  To ignore
              the touch event on the area, "(" is intentionally not marked as a left edge key. -->
         <Spacer
             latin:horizontalGap="16.406%p" />
@@ -132,12 +132,12 @@
             latin:keyStyle="num8KeyStyle" />
         <Key
             latin:keyStyle="num9KeyStyle" />
-        <!-- There is an empty area bellow the "Enter" key and right of the "9" key.  To ignore
+        <!-- There is an empty area below the "Enter" key and right of the "9" key.  To ignore
              the touch event on the area, "9" is intentionally not marked as a right edge key. -->
     </Row>
     <!-- This row is intentionally not marked as a bottom row -->
     <Row>
-        <!-- There is an empty area bellow the "More" key and left of the "space" key.  To ignore
+        <!-- There is an empty area below the "More" key and left of the "space" key.  To ignore
              the touch event on the area, "space" is intentionally not marked as a left edge key. -->
         <Spacer
             latin:horizontalGap="8.362%p" />
@@ -172,7 +172,7 @@
                     latin:keyWidth="8.042%p" />
             </case>
         </switch>
-        <!-- There is an empty area bellow the "Enter" key and right of the "#" key.  To ignore
+        <!-- There is an empty area below the "Enter" key and right of the "#" key.  To ignore
              the touch event on the area, "#" is intentionally not marked as a right edge key. -->
     </Row>
 </Keyboard>
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
index f36b61f..e5bc342 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
@@ -193,7 +193,7 @@
                     <default>
                         <Key
                             latin:keyLabel="!"
-                            latin:manualTemporaryUpperCaseCode="39"
+                            latin:manualTemporaryUpperCaseCode="34"
                             latin:keyHintIcon="@drawable/key_hint_quote_holo"
                             latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
                             latin:popupCharacters="\'" />
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index 5452236..160e85d 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -51,7 +51,7 @@
             <key-style
                 latin:styleName="settingsPopupStyle"
                 latin:keyHintIcon="@drawable/hint_popup"
-                latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
+                latin:popupCharacters="\@drawable/sym_keyboard_settings_holo|\@integer/key_settings"
                 latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
@@ -101,20 +101,20 @@
             <key-style
                 latin:styleName="settingsKeyStyle"
                 latin:code="@integer/key_settings"
-                latin:keyIcon="@drawable/sym_keyboard_settings"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+                latin:keyIcon="@drawable/sym_keyboard_settings_holo"
+                latin:iconPreview="@drawable/sym_keyboard_settings_holo"
                 latin:parentStyle="functionalKeyStyle" />
             <key-style
                 latin:styleName="spaceKeyStyle"
                 latin:code="@integer/key_space"
-                latin:keyIcon="@drawable/sym_keyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+                latin:keyIcon="@drawable/sym_keyboard_space_holo"
+                latin:iconPreview="@drawable/sym_keyboard_space_holo"
                 latin:parentStyle="functionalKeyStyle" />
             <key-style
                 latin:styleName="tabKeyStyle"
                 latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_keyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
+                latin:keyIcon="@drawable/sym_keyboard_tab_holo"
+                latin:iconPreview="@drawable/sym_keyboard_tab_holo"
                 latin:parentStyle="functionalKeyStyle" />
             <key-style
                 latin:styleName="micKeyStyle"
@@ -127,8 +127,8 @@
             <key-style
                 latin:styleName="nonSpecialBackgroundTabKeyStyle"
                 latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_keyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
+                latin:keyIcon="@drawable/sym_keyboard_tab_holo"
+                latin:iconPreview="@drawable/sym_keyboard_tab_holo" />
         </case>
         <case
             latin:colorScheme="black"
@@ -175,7 +175,7 @@
                 latin:styleName="settingsKeyStyle"
                 latin:code="@integer/key_settings"
                 latin:keyIcon="@drawable/sym_bkeyboard_settings"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+                latin:iconPreview="@drawable/sym_keyboard_settings_holo"
                 latin:parentStyle="functionalKeyStyle" />
             <key-style
                 latin:styleName="spaceKeyStyle"
@@ -276,8 +276,8 @@
                     <key-style
                         latin:styleName="returnKeyStyle"
                         latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_keyboard_return"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+                        latin:keyIcon="@drawable/sym_keyboard_return_holo"
+                        latin:iconPreview="@drawable/sym_keyboard_return_holo"
                         latin:parentStyle="functionalKeyStyle" />
                 </case>
                 <case
diff --git a/java/res/xml/kbd_numkey_styles.xml b/java/res/xml/kbd_numkey_styles.xml
index 2f9ae32..7439d63 100644
--- a/java/res/xml/kbd_numkey_styles.xml
+++ b/java/res/xml/kbd_numkey_styles.xml
@@ -76,8 +76,8 @@
             <key-style
                 latin:styleName="numAltKeyStyle"
                 latin:code="@integer/key_switch_alpha_symbol"
-                latin:keyIcon="@drawable/sym_keyboard_numalt"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+                latin:keyIcon="@drawable/sym_keyboard_numsymbol_holo"
+                latin:iconPreview="@drawable/sym_keyboard_numsymbol_holo" />
             <key-style
                 latin:styleName="numSpaceKeyStyle"
                 latin:code="@integer/key_space"
diff --git a/java/res/xml/kbd_symbols_row4.xml b/java/res/xml/kbd_symbols_row4.xml
index b330095..a5981bf 100644
--- a/java/res/xml/kbd_symbols_row4.xml
+++ b/java/res/xml/kbd_symbols_row4.xml
@@ -39,7 +39,7 @@
                     latin:keyWidth="40%p" />
                 <Key
                     latin:keyLabel="."
-                    latin:keyHintIcon="@drawable/hint_popup"
+                    latin:keyHintIcon="@drawable/hint_popup_holo"
                     latin:popupCharacters="@string/alternates_for_punctuation"
                     latin:maxPopupKeyboardColumn="7"
                     latin:keyStyle="functionalKeyStyle" />
@@ -76,7 +76,7 @@
                     latin:keyWidth="30%p" />
                 <Key
                     latin:keyLabel="."
-                    latin:keyHintIcon="@drawable/hint_popup"
+                    latin:keyHintIcon="@drawable/hint_popup_holo"
                     latin:popupCharacters="@string/alternates_for_punctuation"
                     latin:maxPopupKeyboardColumn="7"
                     latin:keyStyle="functionalKeyStyle" />
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index 97ef687..91dbf25 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -36,6 +36,8 @@
     public static final int MODE_WEB = 4;
     public static final int MODE_PHONE = 5;
     public static final int MODE_NUMBER = 6;
+    // Should come up with implementing web & email mode clearer way.
+    public static final int MODE_WEB_EMAIL = 7;
 
     public final Locale mLocale;
     public final int mOrientation;
@@ -159,6 +161,7 @@
         case MODE_WEB: return "web";
         case MODE_PHONE: return "phone";
         case MODE_NUMBER: return "number";
+        case MODE_WEB_EMAIL: return "webEmail";
         }
         return null;
     }
@@ -182,6 +185,7 @@
         case EditorInfo.IME_ACTION_SEARCH: action = "actionSearch"; break;
         case EditorInfo.IME_ACTION_SEND: action = "actionSend"; break;
         case EditorInfo.IME_ACTION_DONE: action = "actionDone"; break;
+        case EditorInfo.IME_ACTION_NEXT: action = "actionNext"; break;
         case EditorInfo.IME_ACTION_PREVIOUS: action = "actionPrevious"; break;
         default: action = "actionUnknown(" + actionNo + ")"; break;
         }
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 6e76cad..bf831bf 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -16,15 +16,6 @@
 
 package com.android.inputmethod.latin;
 
-import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.KeyboardActionListener;
-import com.android.inputmethod.keyboard.KeyboardSwitcher;
-import com.android.inputmethod.keyboard.KeyboardView;
-import com.android.inputmethod.keyboard.LatinKeyboard;
-import com.android.inputmethod.keyboard.LatinKeyboardView;
-import com.android.inputmethod.latin.Utils.RingCharBuffer;
-import com.android.inputmethod.voice.VoiceIMEConnector;
-
 import android.app.AlertDialog;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -72,6 +63,15 @@
 import android.widget.HorizontalScrollView;
 import android.widget.LinearLayout;
 
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardActionListener;
+import com.android.inputmethod.keyboard.KeyboardSwitcher;
+import com.android.inputmethod.keyboard.KeyboardView;
+import com.android.inputmethod.keyboard.LatinKeyboard;
+import com.android.inputmethod.keyboard.LatinKeyboardView;
+import com.android.inputmethod.latin.Utils.RingCharBuffer;
+import com.android.inputmethod.voice.VoiceIMEConnector;
+
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.ArrayList;
@@ -85,7 +85,7 @@
     private static final String TAG = LatinIME.class.getSimpleName();
     private static final boolean PERF_DEBUG = false;
     private static final boolean TRACE = false;
-    private static boolean DEBUG = LatinImeLogger.sDBG;
+    private static boolean DEBUG;
 
     /**
      * The private IME option used to indicate that no microphone should be
@@ -390,6 +390,7 @@
         mSubtypeSwitcher = SubtypeSwitcher.getInstance();
         mKeyboardSwitcher = KeyboardSwitcher.getInstance();
         mAccessibilityUtils = AccessibilityUtils.getInstance();
+        DEBUG = LatinImeLogger.sDBG;
 
         final Resources res = getResources();
         mResources = res;
@@ -532,8 +533,9 @@
         final KeyboardSwitcher switcher = mKeyboardSwitcher;
         LatinKeyboardView inputView = switcher.getInputView();
 
-        if(DEBUG) {
-            Log.d(TAG, "onStartInputView: " + inputView);
+        if (DEBUG) {
+            Log.d(TAG, "onStartInputView: inputType=" + ((attribute == null) ? "none"
+                    : String.format("0x%08x", attribute.inputType)));
         }
         // In landscape mode, this method gets called without the input view being created.
         if (inputView == null) {
diff --git a/java/src/com/android/inputmethod/latin/Utils.java b/java/src/com/android/inputmethod/latin/Utils.java
index 727e3f1..a895ba2 100644
--- a/java/src/com/android/inputmethod/latin/Utils.java
+++ b/java/src/com/android/inputmethod/latin/Utils.java
@@ -25,6 +25,7 @@
 import android.os.HandlerThread;
 import android.os.Process;
 import android.text.InputType;
+import android.text.TextUtils;
 import android.text.format.DateUtils;
 import android.util.Log;
 import android.view.inputmethod.EditorInfo;
@@ -38,6 +39,7 @@
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.lang.reflect.Field;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
@@ -485,7 +487,9 @@
         case InputType.TYPE_CLASS_PHONE:
             return KeyboardId.MODE_PHONE;
         case InputType.TYPE_CLASS_TEXT:
-            if (Utils.isEmailVariation(variation)) {
+            if (variation == InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS) {
+                return KeyboardId.MODE_WEB_EMAIL;
+            } else if (Utils.isEmailVariation(variation)) {
                 return KeyboardId.MODE_EMAIL;
             } else if (variation == InputType.TYPE_TEXT_VARIATION_URI) {
                 return KeyboardId.MODE_URL;
@@ -493,7 +497,8 @@
                 return KeyboardId.MODE_IM;
             } else if (variation == InputType.TYPE_TEXT_VARIATION_FILTER) {
                 return KeyboardId.MODE_TEXT;
-            } else if (variation == InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT) {
+            } else if (variation == InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT
+                    || variation == InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD) {
                 return KeyboardId.MODE_WEB;
             } else {
                 return KeyboardId.MODE_TEXT;