diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
deleted file mode 100644
index bc130ca..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_lmp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_lmp.9.png
new file mode 100644
index 0000000..44308bf
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_lmp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_lmp.9.png
new file mode 100644
index 0000000..674783d
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
deleted file mode 100644
index af5ea6b..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png
new file mode 100644
index 0000000..96b625b
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
deleted file mode 100644
index fc7ba2a..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png
new file mode 100644
index 0000000..20e53c2
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
deleted file mode 100644
index 005c4e4..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png
deleted file mode 100644
index 9a07acd..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
deleted file mode 100644
index be420a7..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lmp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lmp.9.png
new file mode 100644
index 0000000..10f8e97
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_suggestion_pressed.9.png b/java/res/drawable-hdpi/btn_suggestion_pressed.9.png
deleted file mode 100644
index 7acceae..0000000
--- a/java/res/drawable-hdpi/btn_suggestion_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_lmp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_lmp.9.png
new file mode 100644
index 0000000..be39415
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lmp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lmp.9.png
new file mode 100644
index 0000000..9fa6d00
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lmp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lmp.9.png
new file mode 100644
index 0000000..c73269b
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lmp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lmp.9.png
new file mode 100644
index 0000000..fffd402
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lmp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lmp.9.png
new file mode 100644
index 0000000..61c23c1
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lmp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lmp.9.png
new file mode 100644
index 0000000..827d743
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_lmp.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_lmp.9.png
new file mode 100644
index 0000000..f9dd3b8
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_popup_panel_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_mic_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_mic_holo_dark.png
deleted file mode 100644
index 3c54694..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_mic_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png
deleted file mode 100644
index 49329f0..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_lmp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_lmp.9.png
new file mode 100644
index 0000000..837df83
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_lmp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_lmp.9.png
new file mode 100644
index 0000000..9772652
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png
deleted file mode 100644
index c6876f7..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png
new file mode 100644
index 0000000..d213633
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png
deleted file mode 100644
index 2bb7b64..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png
new file mode 100644
index 0000000..6d20c54
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png
deleted file mode 100644
index f5ce40c..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png
deleted file mode 100644
index ca73b92..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png
deleted file mode 100644
index 73f2006..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lmp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lmp.9.png
new file mode 100644
index 0000000..ee0aae2
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_suggestion_pressed.9.png b/java/res/drawable-mdpi/btn_suggestion_pressed.9.png
deleted file mode 100644
index 02b4e9a..0000000
--- a/java/res/drawable-mdpi/btn_suggestion_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_lmp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_lmp.9.png
new file mode 100644
index 0000000..625490b
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lmp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lmp.9.png
new file mode 100644
index 0000000..427c870
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lmp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lmp.9.png
new file mode 100644
index 0000000..ea75729
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lmp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lmp.9.png
new file mode 100644
index 0000000..1911c42
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lmp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lmp.9.png
new file mode 100644
index 0000000..cdef116
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lmp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lmp.9.png
new file mode 100644
index 0000000..dea5d07
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_lmp.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_lmp.9.png
new file mode 100644
index 0000000..8965055
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_popup_panel_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_mic_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_mic_holo_dark.png
deleted file mode 100644
index 5e58866..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_mic_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png
deleted file mode 100644
index d0090a3..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_lmp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_lmp.9.png
new file mode 100644
index 0000000..eeb447c
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_lmp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_lmp.9.png
new file mode 100644
index 0000000..624ba8c
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png
deleted file mode 100644
index a932249..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png
new file mode 100644
index 0000000..2bc16cf
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png
deleted file mode 100644
index 3ca93fd..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png
new file mode 100644
index 0000000..80dedd2
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png
deleted file mode 100644
index aa4f44f..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png
deleted file mode 100644
index 4539255..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png
deleted file mode 100644
index 5683924..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lmp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lmp.9.png
new file mode 100644
index 0000000..891d000
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_suggestion_pressed.9.png b/java/res/drawable-xhdpi/btn_suggestion_pressed.9.png
deleted file mode 100644
index 41e126a..0000000
--- a/java/res/drawable-xhdpi/btn_suggestion_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lmp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lmp.9.png
new file mode 100644
index 0000000..c211d89
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lmp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lmp.9.png
new file mode 100644
index 0000000..543bc76
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lmp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lmp.9.png
new file mode 100644
index 0000000..ec42aad
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lmp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lmp.9.png
new file mode 100644
index 0000000..319e9d7
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lmp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lmp.9.png
new file mode 100644
index 0000000..052032b
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lmp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lmp.9.png
new file mode 100644
index 0000000..c7e9d1c
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_lmp.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lmp.9.png
new file mode 100644
index 0000000..36df715
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_mic_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_mic_holo_dark.png
deleted file mode 100644
index 566ba1f..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_mic_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_lmp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_lmp.9.png
new file mode 100644
index 0000000..97b049e
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_lmp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_lmp.9.png
new file mode 100644
index 0000000..2e81497
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png
new file mode 100644
index 0000000..d844b17
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png
new file mode 100644
index 0000000..9661f4a
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lmp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lmp.9.png
new file mode 100644
index 0000000..0cbb2ec
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lmp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lmp.9.png
new file mode 100644
index 0000000..fd2f9e5
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lmp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lmp.9.png
new file mode 100644
index 0000000..3ab7900
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lmp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lmp.9.png
new file mode 100644
index 0000000..99543a1
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lmp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lmp.9.png
new file mode 100644
index 0000000..121411a
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lmp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lmp.9.png
new file mode 100644
index 0000000..e9e3792
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lmp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lmp.9.png
new file mode 100644
index 0000000..6c1143a
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lmp.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lmp.9.png
new file mode 100644
index 0000000..91d5d7f
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lmp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_mic_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_mic_holo_dark.png
deleted file mode 100644
index f55af30..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_mic_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable/btn_keyboard_key_functional_lmp.xml b/java/res/drawable/btn_keyboard_key_functional_lmp.xml
new file mode 100644
index 0000000..57a8355
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_functional_lmp.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Functional keys. -->
+    <item android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lmp" />
+    <item android:drawable="@color/key_background_lmp" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_key_ics.xml b/java/res/drawable/btn_keyboard_key_ics.xml
index 259bb9b..9db0eee 100644
--- a/java/res/drawable/btn_keyboard_key_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_ics.xml
@@ -39,7 +39,7 @@
 
     <!-- Empty background keys. -->
     <item android:state_empty="true"
-          android:drawable="@drawable/transparent" />
+          android:drawable="@android:color/transparent" />
 
     <!-- Normal keys. -->
     <item android:state_pressed="true"
diff --git a/java/res/drawable/btn_keyboard_key_klp.xml b/java/res/drawable/btn_keyboard_key_klp.xml
index 16b5fa0..500e3ea 100644
--- a/java/res/drawable/btn_keyboard_key_klp.xml
+++ b/java/res/drawable/btn_keyboard_key_klp.xml
@@ -39,7 +39,7 @@
 
     <!-- Empty background keys. -->
     <item android:state_empty="true"
-          android:drawable="@drawable/transparent" />
+          android:drawable="@android:color/transparent" />
 
     <!-- Normal keys. -->
     <item android:state_pressed="true"
diff --git a/java/res/drawable/btn_keyboard_key_lmp.xml b/java/res/drawable/btn_keyboard_key_lmp.xml
new file mode 100644
index 0000000..4aaafb5
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_lmp.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Functional keys. -->
+    <item android:state_single="true" android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lmp" />
+    <item android:state_single="true"
+          android:drawable="@color/key_background_lmp" />
+
+    <!-- Action keys. -->
+    <item android:state_active="true" android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lmp" />
+    <item android:state_active="true"
+          android:drawable="@color/key_background_lmp" />
+
+    <!-- Toggle keys. Use checkable/checked state. -->
+    <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_dark_pressed_on_lmp" />
+    <item android:state_checkable="true" android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_lmp" />
+    <item android:state_checkable="true" android:state_checked="true"
+          android:drawable="@drawable/btn_keyboard_key_dark_normal_on_lmp" />
+    <item android:state_checkable="true"
+          android:drawable="@drawable/btn_keyboard_key_dark_normal_off_lmp" />
+
+    <!-- Empty background keys. -->
+    <item android:state_empty="true"
+          android:drawable="@color/key_background_lmp" />
+
+    <!-- Normal keys. -->
+    <item android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lmp" />
+    <item android:drawable="@color/key_background_lmp" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_ics.xml b/java/res/drawable/btn_keyboard_key_popup_ics.xml
index 31b6131..17d646b 100644
--- a/java/res/drawable/btn_keyboard_key_popup_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_popup_ics.xml
@@ -17,5 +17,5 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@drawable/btn_keyboard_key_popup_selected_ics" />
-    <item android:drawable="@drawable/transparent" />
+    <item android:drawable="@android:color/transparent" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/drawable/btn_keyboard_key_popup_klp.xml
index 62cbca8..9dfc93a 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/drawable/btn_keyboard_key_popup_klp.xml
@@ -17,5 +17,5 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
-    <item android:drawable="@drawable/transparent" />
+    <item android:drawable="@android:color/transparent" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_lmp.xml b/java/res/drawable/btn_keyboard_key_popup_lmp.xml
new file mode 100644
index 0000000..ebedaea
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_popup_lmp.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_popup_selected_lmp" />
+    <item android:drawable="@android:color/transparent" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_lmp.xml b/java/res/drawable/btn_keyboard_spacebar_lmp.xml
new file mode 100644
index 0000000..d05972f
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_spacebar_lmp.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lmp" />
+    <item android:drawable="@color/key_background_lmp" />
+</selector>
diff --git a/java/res/drawable/transparent.xml b/java/res/drawable/btn_suggestion_lmp.xml
similarity index 74%
rename from java/res/drawable/transparent.xml
rename to java/res/drawable/btn_suggestion_lmp.xml
index 855cf2a..5c6b373 100644
--- a/java/res/drawable/transparent.xml
+++ b/java/res/drawable/btn_suggestion_lmp.xml
@@ -2,7 +2,7 @@
 <!--
 /*
 **
-** Copyright 2011, The Android Open Source Project
+** Copyright 2014, 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.
@@ -18,13 +18,10 @@
 */
 -->
 
-<shape
+<selector
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle"
 >
-    <solid
-        android:color="@android:color/transparent" />
-    <size
-        android:width="50dp"
-        android:height="40dp" />
-</shape>
+    <item
+        android:state_pressed="true"
+        android:drawable="@color/suggested_word_background_selected_lmp" />
+</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_lmp.xml b/java/res/drawable/keyboard_key_feedback_lmp.xml
new file mode 100644
index 0000000..cdbe64c
--- /dev/null
+++ b/java/res/drawable/keyboard_key_feedback_lmp.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <!-- Left edge -->
+    <item latin:state_left_edge="true" latin:state_has_morekeys="true"
+          android:drawable="@drawable/keyboard_key_feedback_left_more_background_lmp" />
+    <item latin:state_left_edge="true"
+          android:drawable="@drawable/keyboard_key_feedback_left_background_lmp" />
+
+    <!-- Right edge -->
+    <item latin:state_right_edge="true" latin:state_has_morekeys="true"
+          android:drawable="@drawable/keyboard_key_feedback_right_more_background_lmp" />
+    <item latin:state_right_edge="true"
+          android:drawable="@drawable/keyboard_key_feedback_right_background_lmp" />
+
+    <item latin:state_has_morekeys="true"
+          android:drawable="@drawable/keyboard_key_feedback_more_background_lmp" />
+    <item android:drawable="@drawable/keyboard_key_feedback_background_lmp" />
+</selector>
diff --git a/java/res/layout/input_view.xml b/java/res/layout/input_view.xml
index ed387e5..ff0b403 100644
--- a/java/res/layout/input_view.xml
+++ b/java/res/layout/input_view.xml
@@ -43,8 +43,6 @@
             android:layout_width="match_parent"
             android:layout_height="@dimen/config_suggestions_strip_height"
             android:gravity="center_vertical"
-            android:paddingRight="@dimen/config_suggestions_strip_horizontal_padding"
-            android:paddingLeft="@dimen/config_suggestions_strip_horizontal_padding"
             style="?attr/suggestionStripViewStyle" />
 
         <!-- To ensure that key preview popup is correctly placed when the current system locale is
diff --git a/java/res/layout/suggestions_strip.xml b/java/res/layout/suggestions_strip.xml
index 0b61499..3d2f07f 100644
--- a/java/res/layout/suggestions_strip.xml
+++ b/java/res/layout/suggestions_strip.xml
@@ -24,12 +24,16 @@
         android:id="@+id/suggestions_strip"
         android:orientation="horizontal"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />
+        android:layout_height="match_parent"
+        android:layout_marginLeft="@dimen/config_suggestions_strip_horizontal_margin"
+        android:layout_marginRight="@dimen/config_suggestions_strip_horizontal_margin" />
     <LinearLayout
         android:id="@+id/add_to_dictionary_strip"
         android:orientation="horizontal"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:layout_marginLeft="@dimen/config_suggestions_strip_horizontal_margin"
+        android:layout_marginRight="@dimen/config_suggestions_strip_horizontal_margin"
         android:visibility="invisible">
         <TextView
             android:id="@+id/word_to_save"
@@ -49,7 +53,9 @@
         android:id="@+id/important_notice_strip"
         android:orientation="horizontal"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:layout_marginLeft="@dimen/config_suggestions_strip_horizontal_margin"
+        android:layout_marginRight="@dimen/config_suggestions_strip_horizontal_margin">
         <TextView
             android:id="@+id/important_notice_title"
             android:layout_width="match_parent"
@@ -58,4 +64,13 @@
             android:textSize="16sp"
             style="?attr/suggestionWordStyle" />
     </LinearLayout>
+    <ImageButton
+        android:id="@+id/suggestions_strip_voice_key"
+        android:layout_width="@dimen/config_suggestions_strip_edge_key_width"
+        android:layout_height="fill_parent"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true"
+        android:contentDescription="@string/spoken_description_mic"
+        style="?attr/suggestionWordStyle" />
 </merge>
diff --git a/java/res/values-af/strings-talkback-descriptions.xml b/java/res/values-af/strings-talkback-descriptions.xml
index 3529e5a..a3a94ad 100644
--- a/java/res/values-af/strings-talkback-descriptions.xml
+++ b/java/res/values-af/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Vorige"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift geaktiveer"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Bokas-slot geaktiveer"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift gedeaktiveer"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Simboolmodus"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Simbole-skuifsleutelmodus"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Lettermodus"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Foonmodus"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Foonsimbool-modus"</string>
diff --git a/java/res/values-am/strings-talkback-descriptions.xml b/java/res/values-am/strings-talkback-descriptions.xml
index 2d6f0e5..029efac 100644
--- a/java/res/values-am/strings-talkback-descriptions.xml
+++ b/java/res/values-am/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"ቀዳሚ"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"መቀያየሪያ ቁልፍ ነቅቷል"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"አብይ ፊደል ማድረጊያ ቁልፍ ነቅቷል"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"መቀያየሪያ ቁልፍ ተሰናክሏል"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"የምልክቶች ሁኔታ"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"የምልክቶች ቀይር ሁነታ"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"የደብዳቤዎች ሁኔታ"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"የስልክ ሁኔታ"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"የስልክ ምልክቶች ሁኔታ"</string>
diff --git a/java/res/values-ar/strings-talkback-descriptions.xml b/java/res/values-ar/strings-talkback-descriptions.xml
index 9d2eab5..4a97582 100644
--- a/java/res/values-ar/strings-talkback-descriptions.xml
+++ b/java/res/values-ar/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"السابق"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"‏تم تمكين Shift"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"‏تم تمكين Caps lock"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"‏تم تعطيل Shift"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"وضع الرموز"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"وضع تبديل الرموز"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"وضع الأحرف"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"وضع الهاتف"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"وضع رموز الهاتف"</string>
diff --git a/java/res/values-az-rAZ/strings-talkback-descriptions.xml b/java/res/values-az-rAZ/strings-talkback-descriptions.xml
index c5abc5c..3215897 100644
--- a/java/res/values-az-rAZ/strings-talkback-descriptions.xml
+++ b/java/res/values-az-rAZ/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Əvvəlki"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Sürüşdürmə aktivdir"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Böyük hərf kilidi aktivdir"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Sürüşdürmə deaktivdir"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Simvol rejimi"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Simvol dəyişmə rejimi"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Hərf rejimi"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefon rejimi"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefon simvol rejimi"</string>
diff --git a/java/res/values-bg/strings-talkback-descriptions.xml b/java/res/values-bg/strings-talkback-descriptions.xml
index c944c57..483f778 100644
--- a/java/res/values-bg/strings-talkback-descriptions.xml
+++ b/java/res/values-bg/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Назад"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"„Shift“ е активиран"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"„Caps Lock“ е активиран"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"„Shift“ е деактивиран"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Режим за символи"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Режим за промяна на символите"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Режим за букви"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Режим за телефонни номера"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Режим за символи на телефона"</string>
diff --git a/java/res/values-ca/strings-talkback-descriptions.xml b/java/res/values-ca/strings-talkback-descriptions.xml
index 389200b..77894e7 100644
--- a/java/res/values-ca/strings-talkback-descriptions.xml
+++ b/java/res/values-ca/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Anterior"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Maj activat"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Bloq Maj activat"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Maj desactivat"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Mode de símbols"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Mode de canvi de símbols"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Mode de lletres"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Mode de telèfon"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Mode de símbols de telèfon"</string>
diff --git a/java/res/values-cs/strings-talkback-descriptions.xml b/java/res/values-cs/strings-talkback-descriptions.xml
index 7ba691c..8f97f12 100644
--- a/java/res/values-cs/strings-talkback-descriptions.xml
+++ b/java/res/values-cs/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Předchozí"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Klávesa Shift je aktivní"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Klávesa Caps Lock je aktivní"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Klávesa Shift je neaktivní"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Režim symbolů"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Režim změny symbolů"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Režim písmen"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Režim telefonu"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Režim telefonních symbolů"</string>
diff --git a/java/res/values-da/strings-talkback-descriptions.xml b/java/res/values-da/strings-talkback-descriptions.xml
index 2d613d6..f4e3e16 100644
--- a/java/res/values-da/strings-talkback-descriptions.xml
+++ b/java/res/values-da/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Forrige"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift er aktiveret"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock er aktiveret"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift er deaktiveret"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symboltilstand"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Symboltilstand"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Bogstavtilstand"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefontilstand"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefonsymboltilstand"</string>
diff --git a/java/res/values-de/strings-talkback-descriptions.xml b/java/res/values-de/strings-talkback-descriptions.xml
index 9fef632..953249b 100644
--- a/java/res/values-de/strings-talkback-descriptions.xml
+++ b/java/res/values-de/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Zurück"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Umschalttaste aktiviert"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Feststelltaste aktiviert"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Umschalttaste deaktiviert"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbolmodus"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Symbolumschaltmodus"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Buchstabenmodus"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonmodus"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefon-Symbolmodus"</string>
diff --git a/java/res/values-el/strings-talkback-descriptions.xml b/java/res/values-el/strings-talkback-descriptions.xml
index 7393e63..28d31a1 100644
--- a/java/res/values-el/strings-talkback-descriptions.xml
+++ b/java/res/values-el/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Προηγούμενο"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Το Shift είναι ενεργοποιημένο"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Το Caps lock είναι ενεργοποιημένο"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Το Shift είναι απενεργοποιημένο"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Λειτουργία συμβόλων"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Λειτουργία μετατόπισης συμβόλων"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Λειτουργία γραμμάτων"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Λειτουργία τηλεφώνου"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Λειτουργία συμβόλων τηλεφώνου"</string>
diff --git a/java/res/values-en-rGB/strings-talkback-descriptions.xml b/java/res/values-en-rGB/strings-talkback-descriptions.xml
index c9393ee..ccf5188 100644
--- a/java/res/values-en-rGB/strings-talkback-descriptions.xml
+++ b/java/res/values-en-rGB/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Previous"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift enabled"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock enabled"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift disabled"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbols mode"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Symbols shift mode"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Letters mode"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Phone mode"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Phone symbols mode"</string>
diff --git a/java/res/values-en-rIN/strings-talkback-descriptions.xml b/java/res/values-en-rIN/strings-talkback-descriptions.xml
index c9393ee..ccf5188 100644
--- a/java/res/values-en-rIN/strings-talkback-descriptions.xml
+++ b/java/res/values-en-rIN/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Previous"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift enabled"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock enabled"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift disabled"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbols mode"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Symbols shift mode"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Letters mode"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Phone mode"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Phone symbols mode"</string>
diff --git a/java/res/values-es-rUS/strings-talkback-descriptions.xml b/java/res/values-es-rUS/strings-talkback-descriptions.xml
index ab4979f..b64ccae 100644
--- a/java/res/values-es-rUS/strings-talkback-descriptions.xml
+++ b/java/res/values-es-rUS/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Anterior"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Mayúsculas activado"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Bloqueo de mayúsculas activado"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Mayúsculas desactivado"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modo Símbolos"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Modo de cambio de símbolos"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modo Letras"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modo Teléfono"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modo Símbolos del teléfono"</string>
diff --git a/java/res/values-es/strings-talkback-descriptions.xml b/java/res/values-es/strings-talkback-descriptions.xml
index 72bb6f1..c539e70 100644
--- a/java/res/values-es/strings-talkback-descriptions.xml
+++ b/java/res/values-es/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Anterior"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Mayúsculas habilitadas"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Bloq Mayús habilitado"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Mayúsculas inhabilitadas"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modo de símbolos"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Modo de cambio de símbolos"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modo de letras"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modo de teléfono"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modo de símbolos de teléfono"</string>
diff --git a/java/res/values-et-rEE/strings-talkback-descriptions.xml b/java/res/values-et-rEE/strings-talkback-descriptions.xml
index 5a359c1..dcad8dd 100644
--- a/java/res/values-et-rEE/strings-talkback-descriptions.xml
+++ b/java/res/values-et-rEE/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Eelmine"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Tõstuklahv on lubatud"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Suurtähelukk on lubatud"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Tõstuklahv on keelatud"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Sümbolite režiim"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Sümbolite tõsturežiim"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Tähtede režiim"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonirežiim"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefoni sümbolite režiim"</string>
diff --git a/java/res/values-fa/strings-talkback-descriptions.xml b/java/res/values-fa/strings-talkback-descriptions.xml
index 26e99cb..bd3fa20 100644
--- a/java/res/values-fa/strings-talkback-descriptions.xml
+++ b/java/res/values-fa/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"قبلی"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"‏Shift فعال شد"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"‏Caps lock فعال شد"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"‏Shift غیرفعال شد"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"حالت نمادها"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"حالت تغییر نمادها"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"حالت حروف"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"حالت تلفن"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"حالت نمادهای تلفن"</string>
diff --git a/java/res/values-fi/strings-talkback-descriptions.xml b/java/res/values-fi/strings-talkback-descriptions.xml
index 2d0d7a7..2ba3cdc 100644
--- a/java/res/values-fi/strings-talkback-descriptions.xml
+++ b/java/res/values-fi/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Edellinen"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Vaihto päällä"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock päällä"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Vaihto pois päältä"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbolit-tila"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Symbolien vaihtotila"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Näppäimistötila"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Puhelintila"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Puhelinsymbolit-tila"</string>
diff --git a/java/res/values-fr-rCA/strings-talkback-descriptions.xml b/java/res/values-fr-rCA/strings-talkback-descriptions.xml
index b632edc..f6f1fbb 100644
--- a/java/res/values-fr-rCA/strings-talkback-descriptions.xml
+++ b/java/res/values-fr-rCA/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Précédente"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Touche Maj activée"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Verrouillage des majuscules activé"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Touche Majuscule désactivée"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Mode Symboles"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Mode majuscule pour les symboles"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Mode Lettres"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Mode Téléphone"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Mode Symboles du téléphone"</string>
diff --git a/java/res/values-fr/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-fr/donottranslate-config-spacing-and-punctuations.xml
index d72f72b..5a49142 100644
--- a/java/res/values-fr/donottranslate-config-spacing-and-punctuations.xml
+++ b/java/res/values-fr/donottranslate-config-spacing-and-punctuations.xml
@@ -22,6 +22,8 @@
     <string name="symbols_preceded_by_space">([{&amp;;:!?</string>
     <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
     <string name="symbols_followed_by_space">.,;:!?)]}&amp;</string>
+    <!-- Symbols that behave like a single punctuation when typed next to each other -->
+    <string name="symbols_clustering_together">!?</string>
     <!-- Symbols that separate words -->
     <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
     <string name="symbols_word_separators">"&#x0009;&#x0020;&#x000A;&#x00A0;"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"</string>
diff --git a/java/res/values-fr/strings-talkback-descriptions.xml b/java/res/values-fr/strings-talkback-descriptions.xml
index efa140b..49e68dd 100644
--- a/java/res/values-fr/strings-talkback-descriptions.xml
+++ b/java/res/values-fr/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Précédent"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"La touche Maj a bien été activée."</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Le verrouillage des majuscules a bien été activé."</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"La touche Maj a bien été désactivée."</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Mode Symboles"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Mode majuscule pour les symboles"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Mode Lettres"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Mode Téléphone"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Mode Symboles du téléphone"</string>
diff --git a/java/res/values-hi/strings-talkback-descriptions.xml b/java/res/values-hi/strings-talkback-descriptions.xml
index a1468da..55d4578 100644
--- a/java/res/values-hi/strings-talkback-descriptions.xml
+++ b/java/res/values-hi/strings-talkback-descriptions.xml
@@ -20,25 +20,25 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="spoken_use_headphones" msgid="4313642710742229868">"ज़ोर से बोली जाने वाली पासवर्ड कुंजियां सुनने के लिए हैडसेट प्‍लग करें."</string>
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"जोर से बोली जाने वाली पासवर्ड कुंजियां सुनने के लिए हैडसेट प्‍लग करें."</string>
     <string name="spoken_current_text_is" msgid="4240549866156675799">"वर्तमान पाठ %s है"</string>
     <string name="spoken_no_text_entered" msgid="1711276837961785646">"कोई पाठ नहीं डाला गया"</string>
     <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> को सुधार कर <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> करता है"</string>
     <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> स्वत: सुधार करता है"</string>
     <string name="spoken_description_unknown" msgid="2382510329910793539">"कुंजी कोड %d"</string>
-    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"शिफ़्ट"</string>
     <string name="spoken_description_shift_shifted" msgid="1609924271343916689">"शिफ़्ट चालू (अक्षम करने के लिए टैप करें)"</string>
     <string name="spoken_description_caps_lock" msgid="5020582161133170892">"कैप्स लॉक चालू (अक्षम करने के लिए टैप करें)"</string>
-    <string name="spoken_description_delete" msgid="3878902286264983302">"Delete"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"डिलीट"</string>
     <string name="spoken_description_to_symbol" msgid="8244903740201126590">"प्रतीक"</string>
     <string name="spoken_description_to_alpha" msgid="4081215210530031950">"अक्षर"</string>
     <string name="spoken_description_to_numeric" msgid="4560261331530795682">"संख्‍याएं"</string>
     <string name="spoken_description_settings" msgid="7281251004003143204">"सेटिंग"</string>
-    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"टैब"</string>
     <string name="spoken_description_space" msgid="5908716896642059145">"स्पेस"</string>
     <string name="spoken_description_mic" msgid="6153138783813452464">"ध्‍वनि इनपुट"</string>
     <string name="spoken_description_emoji" msgid="7990051553008088470">"ईमोजी"</string>
-    <string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"रिटर्न"</string>
     <string name="spoken_description_search" msgid="5099937658231911288">"खोजें"</string>
     <string name="spoken_description_dot" msgid="5644176501632325560">"डॉट"</string>
     <string name="spoken_description_language_switch" msgid="6818666779313544553">"भाषा स्विच करें"</string>
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"पिछला"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"शिफ़्ट सक्षम किया गया"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"कैप्स लॉक सक्षम किया गया"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"शिफ़्ट अक्षम किया गया"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"प्रतीक मोड"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"प्रतीक शिफ़्ट मोड"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"अक्षर मोड"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"फ़ोन मोड"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"फ़ोन प्रतीक मोड"</string>
diff --git a/java/res/values-hr/strings-talkback-descriptions.xml b/java/res/values-hr/strings-talkback-descriptions.xml
index 31c7eb5..b9e3477 100644
--- a/java/res/values-hr/strings-talkback-descriptions.xml
+++ b/java/res/values-hr/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Prethodna"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Omogućena je tipka Shift"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Omogućen je Caps Lock"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Tipka Shift onemogućena je"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Način unosa simbola"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Način shift simbola"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Način unosa slova"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonski način rada"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Način unosa telefonskih simbola"</string>
diff --git a/java/res/values-hu/strings-talkback-descriptions.xml b/java/res/values-hu/strings-talkback-descriptions.xml
index ec2c353..ef786bc 100644
--- a/java/res/values-hu/strings-talkback-descriptions.xml
+++ b/java/res/values-hu/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Előző"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift bekapcsolva"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock bekapcsolva"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift kikapcsolva"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"„Szimbólumok” mód"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Szimbólumok mód"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"„Betű” mód"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"„Telefon” mód"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"„Telefonos szimbólumok” mód"</string>
diff --git a/java/res/values-hy-rAM/strings-talkback-descriptions.xml b/java/res/values-hy-rAM/strings-talkback-descriptions.xml
index d8f7d27..8e5ff67 100644
--- a/java/res/values-hy-rAM/strings-talkback-descriptions.xml
+++ b/java/res/values-hy-rAM/strings-talkback-descriptions.xml
@@ -23,7 +23,7 @@
     <string name="spoken_use_headphones" msgid="4313642710742229868">"Միացրեք ականջակալը՝ բարձրաձայն արտասանվող գաղտնաբառը լսելու համար:"</string>
     <string name="spoken_current_text_is" msgid="4240549866156675799">"Տվյալ տեքստը %s է"</string>
     <string name="spoken_no_text_entered" msgid="1711276837961785646">"Տեքստ չի մուտքագրվել"</string>
-    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g>-ը շտկում է <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>-ը և դարձնում <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g>-ը շտկում է <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>-ը՝ դարձնելով <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
     <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ստեղնը ինքնաշտկում է կատարում"</string>
     <string name="spoken_description_unknown" msgid="2382510329910793539">"Բանալու կոդը՝ %d"</string>
     <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
@@ -34,8 +34,8 @@
     <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Տառեր"</string>
     <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Թվեր"</string>
     <string name="spoken_description_settings" msgid="7281251004003143204">"Կարգավորումներ"</string>
-    <string name="spoken_description_tab" msgid="8210782459446866716">"Թաբ"</string>
-    <string name="spoken_description_space" msgid="5908716896642059145">"Բացակ"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Բացատ"</string>
     <string name="spoken_description_mic" msgid="6153138783813452464">"Ձայնային մուտքագրում"</string>
     <string name="spoken_description_emoji" msgid="7990051553008088470">"Զմայլիկներ"</string>
     <string name="spoken_description_return" msgid="3183692287397645708">"Վերադառնալ"</string>
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Նախորդը"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift-ը միացված է"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock-ը միացված է"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift-ն անջատված է"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Նշանների ռեժիմ"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Մեծատառերի ռեժիմ"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Տառերի ռեժիմ"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Հեռախոսային ռեժիմ"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Հեռախոսի նշանների ռեժիմ"</string>
@@ -59,7 +59,7 @@
     <string name="keyboard_mode_im" msgid="3812086215529493501">"նամակագրություն"</string>
     <string name="keyboard_mode_number" msgid="5395042245837996809">"թվեր"</string>
     <string name="keyboard_mode_phone" msgid="2486230278064523665">"հեռախոսահամար"</string>
-    <string name="keyboard_mode_text" msgid="9138789594969187494">"տեքստային հաղորդագրություն"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"տեքստ"</string>
     <string name="keyboard_mode_time" msgid="8558297845514402675">"ժամանակ"</string>
     <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
     <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Վերջինները"</string>
diff --git a/java/res/values-in/strings-talkback-descriptions.xml b/java/res/values-in/strings-talkback-descriptions.xml
index 73bf712..af03337 100644
--- a/java/res/values-in/strings-talkback-descriptions.xml
+++ b/java/res/values-in/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Sebelumnya"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift diaktifkan"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock diaktifkan"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift dinonaktifkan"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Mode simbol"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Mode mengubah simbol"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Mode huruf"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Mode telepon"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Mode simbol telepon"</string>
diff --git a/java/res/values-it/strings-talkback-descriptions.xml b/java/res/values-it/strings-talkback-descriptions.xml
index 760db69..d6b55ae 100644
--- a/java/res/values-it/strings-talkback-descriptions.xml
+++ b/java/res/values-it/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Precedente"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Maiusc attivo"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Bloc Maiusc attivo"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Maiusc disattivato"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modalità simboli"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Modalità tastiera simboli"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modalità lettere"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modalità telefono"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modalità simboli telefono"</string>
diff --git a/java/res/values-iw/strings-talkback-descriptions.xml b/java/res/values-iw/strings-talkback-descriptions.xml
index e6344fb..8955134 100644
--- a/java/res/values-iw/strings-talkback-descriptions.xml
+++ b/java/res/values-iw/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"הקודם"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"‏Shift פועל"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"‏Caps Lock פועל"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"‏Shift מושבת"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"מצב סמלים"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"מצב החלפת סמלים"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"מצב אותיות"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"מצב טלפון"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"מצב סמלי טלפון"</string>
diff --git a/java/res/values-ja/strings-talkback-descriptions.xml b/java/res/values-ja/strings-talkback-descriptions.xml
index 990774e..6e917bc 100644
--- a/java/res/values-ja/strings-talkback-descriptions.xml
+++ b/java/res/values-ja/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"前へ"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift有効"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"CapsLock有効"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift解除"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"記号モード"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"シンボルshiftモード"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"英数モード"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"電話モード"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"電話記号モード"</string>
diff --git a/java/res/values-ka-rGE/strings-talkback-descriptions.xml b/java/res/values-ka-rGE/strings-talkback-descriptions.xml
index c4fd659..bd131e1 100644
--- a/java/res/values-ka-rGE/strings-talkback-descriptions.xml
+++ b/java/res/values-ka-rGE/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"წინა"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ჩართულია"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"ჩართულია Caps"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift გამორთულია"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"სიმბოლოების რეჟიმი"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"სიმბოლოების shift რეჟიმი"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"ასოების რეჟიმი"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"ტელეფონის რეჟიმი"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"ტელეფონის სიმბოლოების რეჟიმი"</string>
diff --git a/java/res/values-km-rKH/strings-talkback-descriptions.xml b/java/res/values-km-rKH/strings-talkback-descriptions.xml
index 76bc35f..ef415a9 100644
--- a/java/res/values-km-rKH/strings-talkback-descriptions.xml
+++ b/java/res/values-km-rKH/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"មុន"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"បាន​បើក Shift"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"បាន​បើក Caps lock"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"បាន​បិទ Shift"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"របៀប​និមិត្ត​សញ្ញា"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"របៀប Symbols shift"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"របៀប​អក្សរ"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"របៀប​ទូរស័ព្ទ"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"​របៀប​និមិត្ត​សញ្ញា​ទូរស័ព្ទ"</string>
diff --git a/java/res/values-km-rKH/strings.xml b/java/res/values-km-rKH/strings.xml
index 519aa44..4d7de93 100644
--- a/java/res/values-km-rKH/strings.xml
+++ b/java/res/values-km-rKH/strings.xml
@@ -29,7 +29,7 @@
     <string name="popup_on_keypress" msgid="123894815723512944">"លេច​ឡើង​នៅ​​ពេល​ចុច​គ្រាប់​ចុច"</string>
     <string name="general_category" msgid="1859088467017573195">"ទូទៅ"</string>
     <string name="correction_category" msgid="2236750915056607613">"ការ​កែ​អត្ថបទ"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"បញ្ចូល​ដោយ​ប្រើ​កាយវិការ"</string>
+    <string name="gesture_typing_category" msgid="497263612130532630">"បញ្ចូល​ដោយ​ប្រើ​កាយវិការ​"</string>
     <string name="misc_category" msgid="6894192814868233453">"ជម្រើស​ផ្សេងទៀត"</string>
     <string name="advanced_settings" msgid="362895144495591463">"ការ​កំណត់​កម្រិត​ខ្ពស់"</string>
     <string name="advanced_settings_summary" msgid="4487980456152830271">"ជម្រើស​សម្រាប់​អ្នក​ជំនាញ"</string>
@@ -39,7 +39,7 @@
     <string name="show_language_switch_key_summary" msgid="7343403647474265713">"បង្ហាញ​នៅ​ពេល​ដែល​បើក​ភាសា​បញ្ចូល​ច្រើន"</string>
     <string name="sliding_key_input_preview" msgid="6604262359510068370">"បង្ហាញ​ទ្រនិច​បង្ហាញ​ស្លាយ"</string>
     <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"បង្ហាញ​​សញ្ញា​មើល​​ឃើញ​ខណៈ​ពេល​ដែល​រុញ​ពី​ឆ្វេង ឬ​​គ្រាប់​ចុច​​និមិត្ត​សញ្ញា"</string>
-    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"​សោ​លេចឡើង​បោះបង់​ការ​​ពន្យារពេល"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"​សោ​លេចឡើង​បោះបង់​ការ​​ពន្យារពេល​"</string>
     <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"គ្មាន​ការ​ពន្យារពេល"</string>
     <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"លំនាំដើម"</string>
     <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> មិល្លី​វិនាទី"</string>
@@ -49,7 +49,7 @@
     <string name="use_personalized_dicts" msgid="5167396352105467626">"ការ​ស្នើ​ផ្ទាល់​ខ្លួន"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"រយៈ​ពេល​ចុច​ដកឃ្លា​ពីរដង"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"ប៉ះ​ដកឃ្លា​ពីរ​​ដង​បញ្ចូល​​​រយៈ​ពេល​ដែល​អនុវត្ត​តាម​ដកឃ្លា"</string>
-    <string name="auto_cap" msgid="1719746674854628252">"ការ​សរសេរ​ជា​អក្សរ​ធំ​​ស្វ័យប្រវត្តិ"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"ការ​សរសេរ​ជា​អក្សរ​ធំ​​ស្វ័យប្រវត្តិ​"</string>
     <string name="auto_cap_summary" msgid="7934452761022946874">"សរសេរ​ពាក្យ​ដំបូង​​​ជា​អក្សរ​ធំ​​នៃ​ប្រយោគ​នីមួយ​ៗ"</string>
     <string name="edit_personal_dictionary" msgid="3996910038952940420">"វចនានុក្រម​ផ្ទាល់ខ្លួន"</string>
     <string name="configure_dictionaries_title" msgid="4238652338556902049">"ផ្នែក​បន្ថែម​វចនានុក្រម"</string>
@@ -60,7 +60,7 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"បង្ហាញ​នៅ​ក្នុង​របៀប​បញ្ឈរ"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"លាក់​ជានិច្ច"</string>
     <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"ទប់ស្កាត់​​ពាក្យ​​បំពាន"</string>
-    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"កុំ​ស្នើ​ឲ្យ​ពាក្យ​បំពាន​មាន​សក្ដានុពល"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"កុំ​ស្នើ​ឲ្យ​ពាក្យ​បំពាន​មាន​សក្ដានុពល​"</string>
     <string name="auto_correction" msgid="7630720885194996950">"ការ​កែ​​​ស្វ័យប្រវត្តិ"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"ចន្លោះ​មិន​ឃើញ ​និង​សញ្ញា​​វណ្ណយុត្ត​កែ​ពាក្យ​ដែល​បាន​វាយ​ខុស​ស្វ័យប្រវត្តិ"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"បិទ"</string>
@@ -123,7 +123,7 @@
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"ថិរវេលា​​ញ័រ​​ពេល​ចុច​គ្រាប់ចុច"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"កម្រិត​សំឡេង​ពេល​ចុច​គ្រាប់​ចុច"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"អាន​ឯកសារ​វចនានុក្រម​ខាង​ក្រៅ"</string>
-    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"គ្មាន​ឯកសារ​វចនានុក្រម​នៅ​ក្នុង​ថត​ទាញ​យក"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"គ្មាន​ឯកសារ​វចនានុក្រម​នៅ​ក្នុង​ថត​ទាញ​យក​​"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"ជ្រើស​ឯកសារ​វចនានុក្រម​ ដើម្បី​ដំឡើង"</string>
     <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"ពិត​ជា​ដំឡើង​ឯកសារ​នេះ​សម្រាប់ <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"មាន​កំហុស"</string>
@@ -154,7 +154,7 @@
     <string name="dictionary_provider_name" msgid="3027315045397363079">"កម្មវិធី​ផ្ដល់​វចនានុក្រម"</string>
     <string name="dictionary_service_name" msgid="6237472350693511448">"សេវាកម្ម​​វចនានុក្រម"</string>
     <string name="download_description" msgid="6014835283119198591">"ព័ត៌មាន​បច្ចុប្បន្នភាព​វចនានុក្រម"</string>
-    <string name="dictionary_settings_title" msgid="8091417676045693313">"ផ្នែក​បន្ថែម​វចនានុក្រម"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"ផ្នែក​បន្ថែម​វចនានុក្រម​​"</string>
     <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"វចនានុក្រម​​​​​អាច​ប្រើ​បាន"</string>
     <string name="dictionary_settings_summary" msgid="5305694987799824349">"ការ​កំណត់​សម្រាប់​វចនានុក្រម"</string>
     <string name="user_dictionaries" msgid="3582332055892252845">"វចនានុក្រម​​​អ្នក​ប្រើ"</string>
@@ -170,10 +170,10 @@
     <string name="message_updating" msgid="4457761393932375219">"ពិនិត្យមើល​បច្ចុប្បន្នភាព"</string>
     <string name="message_loading" msgid="5638680861387748936">"កំពុង​ផ្ទុក..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"វចនានុក្រម​ចម្បង"</string>
-    <string name="cancel" msgid="6830980399865683324">"បោះ​បង់"</string>
+    <string name="cancel" msgid="6830980399865683324">"បោះ​បង់​"</string>
     <string name="go_to_settings" msgid="3876892339342569259">"ការ​កំណត់"</string>
     <string name="install_dict" msgid="180852772562189365">"ដំឡើង"</string>
-    <string name="cancel_download_dict" msgid="7843340278507019303">"បោះ​បង់"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"បោះ​បង់​"</string>
     <string name="delete_dict" msgid="756853268088330054">"លុប"</string>
     <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"ភាសា​ដែល​បាន​ជ្រើស​នៅ​លើ​ឧបករណ៍​ចល័ត​មាន​វចនានុក្រម​អាច​ប្រើ​បាន។&lt;br/&gt; យើង​ផ្ដល់​អនុសាសន៍​ឲ្យ &lt;b&gt;ទាញ​យក&lt;/b&gt; វចនានុក្រម​ភាសា <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ដើម្បី​បង្កើន​បទពិសោធន៍​វាយ​បញ្ចូល​របស់​អ្នក។&lt;br/&gt; &lt;br/&gt; ការ​ទាញ​យក​អាច​ចំណាយ​ពេល​ប្រហែល​ពីរ​នាទី​នៅ​តាម 3G។ ការ​គិត​ថ្លៃ​អាច​អនុវត្ត​ប្រសិន​បើ​អ្នក​មិន​ប្រើ &lt;b&gt;ផែនការ​ទិន្នន័យ​គ្មាន​ដែន​កំណត់&lt;/b&gt;.&lt;br/&gt; បើ​អ្នក​មិន​ប្រាកដ​​ថា​ផែនការ​ណា​មួយ​ដែល​អ្នក​មាន យើង​ផ្ដល់​អនុសាសន៍​ឲ្យ​​ភ្ជាប់​វ៉ាយហ្វាយ ដើម្បី​ចាប់ផ្ដើម​ទាញ​យក​ដោយ​ស្វ័យ​ប្រវត្តិ។&lt;br/&gt; &lt;br/&gt; ជំនួយ៖ អ្នក​អាច​ទាញ​យក និង​លុប​វចនានុក្រម​ដោយ​ចូល​ទៅ​ &lt;b&gt;ភាសា &amp; ការ​បញ្ចូល&lt;/b&gt; នៅ​ក្នុង​ម៉ឺនុយ &lt;b&gt;ការ​កំណត់&lt;/b&gt; សម្រាប់​ឧបករណ៍​ចល័ត។"</string>
     <string name="download_over_metered" msgid="1643065851159409546">"ទាញ​យក​ឥឡូវ​នេះ (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> មេកាបៃ)"</string>
@@ -191,7 +191,7 @@
     <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"ពាក្យ៖"</string>
     <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"ផ្លូវកាត់​៖"</string>
     <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"ភាសា៖"</string>
-    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"វាយ​បញ្ចូល​ពាក្យ"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"វាយ​បញ្ចូល​ពាក្យ​"</string>
     <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"ផ្លូវកាត់​ជា​ជម្រើស"</string>
     <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"កែ​ពាក្យ"</string>
     <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"កែ"</string>
diff --git a/java/res/values-ko/strings-talkback-descriptions.xml b/java/res/values-ko/strings-talkback-descriptions.xml
index 6142c6a..71c49d7 100644
--- a/java/res/values-ko/strings-talkback-descriptions.xml
+++ b/java/res/values-ko/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"이전"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift 사용"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock 사용"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift 사용 중지됨"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"기호 모드"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"기호 전환 모드"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"문자 모드"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"다이얼 모드"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"전화 기호 모드"</string>
diff --git a/java/res/values-land/config.xml b/java/res/values-land/config.xml
index 43ae068..37bf22f 100644
--- a/java/res/values-land/config.xml
+++ b/java/res/values-land/config.xml
@@ -58,6 +58,8 @@
     <fraction name="config_key_shifted_letter_hint_ratio_5row">48%</fraction>
 
     <dimen name="config_suggestions_strip_height">36dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">54dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen>
     <dimen name="config_more_suggestions_row_height">36dp</dimen>
     <integer name="config_max_more_suggestions_row">2</integer>
     <fraction name="config_min_more_suggestions_width">60%</fraction>
diff --git a/java/res/values-lo-rLA/strings-talkback-descriptions.xml b/java/res/values-lo-rLA/strings-talkback-descriptions.xml
index 681a213..b67ec96 100644
--- a/java/res/values-lo-rLA/strings-talkback-descriptions.xml
+++ b/java/res/values-lo-rLA/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"ກ່ອນໜ້ານີ້"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ເປີດ​ນຳໃຊ້ຢູ່"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock ເປີດນຳໃຊ້ຢູ່"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift ປິດ​ນຳໃຊ້ຢູ່"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"ໂຫມດ​ສັນຍາລັກ"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"ຊີມໂບຊິບໂໝດ"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"ໂຫມດ​ໂຕອັກ​ສອນ"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"ໂຫມດ​ໂທລະສັບ"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"ໂຫມດ​ສັນຍາລັກ​ໂທລະສັບ"</string>
diff --git a/java/res/values-lt/strings-talkback-descriptions.xml b/java/res/values-lt/strings-talkback-descriptions.xml
index 07119cb..e584180 100644
--- a/java/res/values-lt/strings-talkback-descriptions.xml
+++ b/java/res/values-lt/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Ankstesnis"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Klavišas „Shift“ įgalintas"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Didžiųjų raidžių klavišas įgalintas"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Klavišas „Shift“ išjungtas"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Simbolių režimas"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Simbolių perjungimo režimas"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Raidžių režimas"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonų numerių režimas"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefonų numerių simbolių režimas"</string>
diff --git a/java/res/values-lv/strings-talkback-descriptions.xml b/java/res/values-lv/strings-talkback-descriptions.xml
index eb32e9d..8278e63 100644
--- a/java/res/values-lv/strings-talkback-descriptions.xml
+++ b/java/res/values-lv/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Atpakaļ"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Pārslēgšanas režīms ir iespējots"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Burtslēgs ir iespējots"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Pārslēgšanas režīms ir atspējots"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Simbolu režīms"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Simbolu pārslēgšanas režīms"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Burtu režīms"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Tālruņa režīms"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Tālruņa simbolu režīms"</string>
diff --git a/java/res/values-mn-rMN/strings-talkback-descriptions.xml b/java/res/values-mn-rMN/strings-talkback-descriptions.xml
index 7eb3167..f4c608e 100644
--- a/java/res/values-mn-rMN/strings-talkback-descriptions.xml
+++ b/java/res/values-mn-rMN/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Өмнөх"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Сэлгэхийг идэвхжүүлсэн"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Томоор бичихийг идэвхжүүлсэн"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Сэлгэхийг идэвхжүүлээгүй"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Симбол төлөв"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Симбол сэлгэх горим"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Үсэгнүүд төлөв"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Утасны төлөв"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Утасны символ төлөв"</string>
diff --git a/java/res/values-ms-rMY/strings-talkback-descriptions.xml b/java/res/values-ms-rMY/strings-talkback-descriptions.xml
index 29c5fd8..cbdd02f 100644
--- a/java/res/values-ms-rMY/strings-talkback-descriptions.xml
+++ b/java/res/values-ms-rMY/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Sebelumnya"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Kunci anjak didayakan"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Kunci huruf besar didayakan"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Kunci anjak dilumpuhkan"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Mod simbol"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Mod shift simbol"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Mod huruf"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Mod telefon"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Mod simbol telefon"</string>
diff --git a/java/res/values-nb/strings-talkback-descriptions.xml b/java/res/values-nb/strings-talkback-descriptions.xml
index 96edf38..23a6c85 100644
--- a/java/res/values-nb/strings-talkback-descriptions.xml
+++ b/java/res/values-nb/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Forrige"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift er aktivert"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock er aktivert"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift er deaktivert"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbolmodus"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Shift-modus for symboler"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Bokstavmodus"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Ringemodus"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Ringemodus med symboler"</string>
diff --git a/java/res/values-ne-rNP/strings-talkback-descriptions.xml b/java/res/values-ne-rNP/strings-talkback-descriptions.xml
index cffed33..a1602bb 100644
--- a/java/res/values-ne-rNP/strings-talkback-descriptions.xml
+++ b/java/res/values-ne-rNP/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"अघिल्लो"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"सिफ्ट सक्षम पारिएको छ"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"क्याप्स लक सक्षम पारिएको छ"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"सिफ्ट असक्षम पारिएको छ"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"प्रतिक ढाँचा"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"प्रतीक सिफ्ट ढाँचा"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"अक्षर ढाँचा"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"फोन ढाँचा"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"फोन प्रतिक मोड"</string>
diff --git a/java/res/values-nl/strings-talkback-descriptions.xml b/java/res/values-nl/strings-talkback-descriptions.xml
index 8dcd574..df87659 100644
--- a/java/res/values-nl/strings-talkback-descriptions.xml
+++ b/java/res/values-nl/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Vorige"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ingeschakeld"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock ingeschakeld"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift uitgeschakeld"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbolen"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Shift-modus voor symbolen"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Alfanumeriek toetsenbord"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Toetsenbord telefoon"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefoonsymbolen"</string>
diff --git a/java/res/values-pl/strings-talkback-descriptions.xml b/java/res/values-pl/strings-talkback-descriptions.xml
index 567bb3b..d40a107 100644
--- a/java/res/values-pl/strings-talkback-descriptions.xml
+++ b/java/res/values-pl/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Wstecz"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift włączony"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock włączony"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift wyłączony"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Tryb symboli"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Tryb zmiany symboli"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Tryb liter"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Tryb telefonu"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Tryb symboli telefonu"</string>
diff --git a/java/res/values-pt-rPT/strings-talkback-descriptions.xml b/java/res/values-pt-rPT/strings-talkback-descriptions.xml
index bf51caa..5495a63 100644
--- a/java/res/values-pt-rPT/strings-talkback-descriptions.xml
+++ b/java/res/values-pt-rPT/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Anterior"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ativado"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock ativado"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift desativado"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modo de símbolos"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Modo para alternar símbolos"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modo de letras"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modo de telemóvel"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modo de símbolos de telemóvel"</string>
diff --git a/java/res/values-pt/strings-talkback-descriptions.xml b/java/res/values-pt/strings-talkback-descriptions.xml
index 01aac39..47ab196 100644
--- a/java/res/values-pt/strings-talkback-descriptions.xml
+++ b/java/res/values-pt/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Anterior"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ativado"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock ativado"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift desativado"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modo de símbolos"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Modo de alternância de símbolos"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modo de letras"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modo de telefone"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modo de símbolos do telefone"</string>
diff --git a/java/res/values-ro/strings-talkback-descriptions.xml b/java/res/values-ro/strings-talkback-descriptions.xml
index 2b428eb..de19bf1 100644
--- a/java/res/values-ro/strings-talkback-descriptions.xml
+++ b/java/res/values-ro/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Înapoi"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Tasta Shift a fost activată"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Tasta Caps Lock este activată"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Tasta Shift a fost dezactivată"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modul Simboluri"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Mod shift simboluri"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modul Alfanumeric"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modul Telefon"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modul Telefon cu simboluri"</string>
diff --git a/java/res/values-ru/strings-talkback-descriptions.xml b/java/res/values-ru/strings-talkback-descriptions.xml
index 7e64f11..a38da0f 100644
--- a/java/res/values-ru/strings-talkback-descriptions.xml
+++ b/java/res/values-ru/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Назад."</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Верхний регистр включен."</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock включен."</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Верхний регистр отключен."</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Режим добавления символов."</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Режим ввода символов в верхнем регистре."</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Режим ввода текста."</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Режим набора номера."</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Режим телефонных символов."</string>
diff --git a/java/res/values-sk/strings-talkback-descriptions.xml b/java/res/values-sk/strings-talkback-descriptions.xml
index 605aceb..256eb39 100644
--- a/java/res/values-sk/strings-talkback-descriptions.xml
+++ b/java/res/values-sk/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Naspäť"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Kláves Shift je povolený"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Kláves Caps Lock je povolený"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Kláves Shift je zakázaný"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Režim symbolov"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Režim klávesnice symbolov"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Režim písmen"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Režim telefónu"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Režim telefónnych symbolov"</string>
diff --git a/java/res/values-sl/strings-talkback-descriptions.xml b/java/res/values-sl/strings-talkback-descriptions.xml
index 280393a..8a35f0f 100644
--- a/java/res/values-sl/strings-talkback-descriptions.xml
+++ b/java/res/values-sl/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Nazaj"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Način »Shift« je omogočen"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Funkcija »Caps Lock« je omogočena"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Način »Shift« je onemogočen"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Način simbolov"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Način preklopa simbolov"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Način črk"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Način telefona"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Način simbolov telefona"</string>
diff --git a/java/res/values-sr/strings-talkback-descriptions.xml b/java/res/values-sr/strings-talkback-descriptions.xml
index 402d45b..626bccc 100644
--- a/java/res/values-sr/strings-talkback-descriptions.xml
+++ b/java/res/values-sr/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Следеће"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift је омогућен"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock је омогућен"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift је онемогућен"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Режим симбола"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Shift режим симбола"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Режим слова"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Режим телефона"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Режим симбола телефона"</string>
diff --git a/java/res/values-sv/strings-talkback-descriptions.xml b/java/res/values-sv/strings-talkback-descriptions.xml
index 140202d..50078fd 100644
--- a/java/res/values-sv/strings-talkback-descriptions.xml
+++ b/java/res/values-sv/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Föregående"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Skift aktiverat"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock är aktiverat"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Skift är inaktiverat"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbolläge"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Symbolskiftningsläge"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Bokstavsläge"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonläge"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefonsymbolläge"</string>
diff --git a/java/res/values-sw/strings-talkback-descriptions.xml b/java/res/values-sw/strings-talkback-descriptions.xml
index e9ca282..11ac28e 100644
--- a/java/res/values-sw/strings-talkback-descriptions.xml
+++ b/java/res/values-sw/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Iililotangulia"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift imewashwa"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock imewashwa"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift imezimwa"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Hali ya alama"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Hali ya kubadilisha Alama"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Hali ya herufi"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Hali ya simu"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Hali ya alama za simu"</string>
diff --git a/java/res/values-sw600dp-land/config.xml b/java/res/values-sw600dp-land/config.xml
index 00edde1..ba8b52f 100644
--- a/java/res/values-sw600dp-land/config.xml
+++ b/java/res/values-sw600dp-land/config.xml
@@ -48,7 +48,9 @@
     <fraction name="config_key_letter_ratio_5row">62%</fraction>
     <fraction name="config_key_shifted_letter_hint_ratio_5row">36%</fraction>
 
-    <dimen name="config_suggestions_strip_horizontal_padding">252.0dp</dimen>
+    <dimen name="config_suggestions_strip_height">44dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">180.0dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen>
     <integer name="config_max_more_suggestions_row">5</integer>
     <fraction name="config_min_more_suggestions_width">50%</fraction>
 
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml
index 3bd8439..d97538d 100644
--- a/java/res/values-sw600dp/config.xml
+++ b/java/res/values-sw600dp/config.xml
@@ -63,12 +63,13 @@
     <fraction name="config_key_shifted_letter_hint_ratio_5row">27%</fraction>
 
     <dimen name="config_suggestions_strip_height">44dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">54dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen>
     <dimen name="config_more_suggestions_row_height">44dp</dimen>
     <integer name="config_max_more_suggestions_row">6</integer>
     <fraction name="config_min_more_suggestions_width">90%</fraction>
-    <dimen name="config_suggestions_strip_horizontal_padding">94.5dp</dimen>
     <dimen name="config_suggestion_min_width">48.0dp</dimen>
-    <dimen name="config_suggestion_text_horizontal_padding">12dp</dimen>
+    <dimen name="config_suggestion_text_horizontal_padding">10dp</dimen>
     <dimen name="config_suggestion_text_size">22dp</dimen>
     <dimen name="config_more_suggestions_hint_text_size">33dp</dimen>
 
diff --git a/java/res/values-sw768dp-land/config.xml b/java/res/values-sw768dp-land/config.xml
index 3878a9e..63f86ba 100644
--- a/java/res/values-sw768dp-land/config.xml
+++ b/java/res/values-sw768dp-land/config.xml
@@ -49,7 +49,9 @@
     <fraction name="config_key_letter_ratio_5row">53%</fraction>
     <fraction name="config_key_shifted_letter_hint_ratio_5row">30%</fraction>
 
-    <dimen name="config_suggestions_strip_horizontal_padding">252.0dp</dimen>
+    <dimen name="config_suggestions_strip_height">44dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">340dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen>
     <fraction name="config_min_more_suggestions_width">50%</fraction>
 
     <!-- Gesture floating preview text parameters -->
diff --git a/java/res/values-sw768dp/config.xml b/java/res/values-sw768dp/config.xml
index 34eec38..94b38d8 100644
--- a/java/res/values-sw768dp/config.xml
+++ b/java/res/values-sw768dp/config.xml
@@ -61,12 +61,13 @@
     <fraction name="config_key_shifted_letter_hint_ratio_5row">33%</fraction>
 
     <dimen name="config_suggestions_strip_height">44dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">100dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen>
     <dimen name="config_more_suggestions_row_height">44dp</dimen>
     <integer name="config_max_more_suggestions_row">6</integer>
     <fraction name="config_min_more_suggestions_width">90%</fraction>
-    <dimen name="config_suggestions_strip_horizontal_padding">94.5dp</dimen>
     <dimen name="config_suggestion_min_width">46dp</dimen>
-    <dimen name="config_suggestion_text_horizontal_padding">8dp</dimen>
+    <dimen name="config_suggestion_text_horizontal_padding">10dp</dimen>
     <dimen name="config_suggestion_text_size">22dp</dimen>
     <dimen name="config_more_suggestions_hint_text_size">33dp</dimen>
 
diff --git a/java/res/values-th/strings-talkback-descriptions.xml b/java/res/values-th/strings-talkback-descriptions.xml
index eb712ae..0135095 100644
--- a/java/res/values-th/strings-talkback-descriptions.xml
+++ b/java/res/values-th/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"ก่อนหน้า"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"เปิดใช้งาน Shift แล้ว"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"เปิดใช้งาน Caps Lock แล้ว"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"ปิดใช้งาน Shift แล้ว"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"โหมดสัญลักษณ์"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"โหมดการเลื่อนสัญลักษณ์"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"โหมดตัวอักษร"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"โหมดโทรศัพท์"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"โหมดสัญลักษณ์โทรศัพท์"</string>
diff --git a/java/res/values-tl/strings-talkback-descriptions.xml b/java/res/values-tl/strings-talkback-descriptions.xml
index fbf276b..e4eff7d 100644
--- a/java/res/values-tl/strings-talkback-descriptions.xml
+++ b/java/res/values-tl/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Nauna"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Naka-enable ang shift"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Naka-enable ang caps lock"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Naka-disable ang shift"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbols mode"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Shift mode ng mga simbolo"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Letters mode"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Phone mode"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Phone symbols mode"</string>
diff --git a/java/res/values-tr/strings-talkback-descriptions.xml b/java/res/values-tr/strings-talkback-descriptions.xml
index d06c900..40bbd36 100644
--- a/java/res/values-tr/strings-talkback-descriptions.xml
+++ b/java/res/values-tr/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Önceki"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Üst karakter etkin"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Büyük harf etkin"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Üst karakter devre dışı"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Sembol modu"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Semboller üst karakter modu"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Harf modu"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefon modu"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefon sembolleri modu"</string>
diff --git a/java/res/values-uk/strings-talkback-descriptions.xml b/java/res/values-uk/strings-talkback-descriptions.xml
index 9b6d114..79675d8 100644
--- a/java/res/values-uk/strings-talkback-descriptions.xml
+++ b/java/res/values-uk/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Назад"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift увімкнено"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock увімкнено"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift вимкнено"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Режим символів"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Режим перемикання символів"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Режим літер"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Режим номерів телефону"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Режим телефонних символів"</string>
diff --git a/java/res/values-vi/strings-talkback-descriptions.xml b/java/res/values-vi/strings-talkback-descriptions.xml
index 9202883..9a618f9 100644
--- a/java/res/values-vi/strings-talkback-descriptions.xml
+++ b/java/res/values-vi/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Trước"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Đã bật Shift"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Đã bật Caps lock"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Đã tắt Shift"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Chế độ biểu tượng"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Chế độ chuyển ký hiệu"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Chế độ chữ cái"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Chế độ điện thoại"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Chế độ biểu tượng điện thoại"</string>
diff --git a/java/res/values-zh-rCN/strings-talkback-descriptions.xml b/java/res/values-zh-rCN/strings-talkback-descriptions.xml
index 93f89e0..24445ab 100644
--- a/java/res/values-zh-rCN/strings-talkback-descriptions.xml
+++ b/java/res/values-zh-rCN/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"上一个"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"已开启Shift模式"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"已锁定大写模式"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"已关闭Shift模式"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"符号模式"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"符号移位模式"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"字母模式"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"电话模式"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"电话符号模式"</string>
diff --git a/java/res/values-zh-rHK/strings-talkback-descriptions.xml b/java/res/values-zh-rHK/strings-talkback-descriptions.xml
index 8b60504..e2f63b0 100644
--- a/java/res/values-zh-rHK/strings-talkback-descriptions.xml
+++ b/java/res/values-zh-rHK/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"上一個"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift 鍵已啟用"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"大寫鎖定已啟用"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift 鍵已停用"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"符號模式"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"符號轉變模式"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"字母模式"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"撥號模式"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"符號撥號模式"</string>
diff --git a/java/res/values-zh-rTW/strings-talkback-descriptions.xml b/java/res/values-zh-rTW/strings-talkback-descriptions.xml
index 6351a98..63ea4d1 100644
--- a/java/res/values-zh-rTW/strings-talkback-descriptions.xml
+++ b/java/res/values-zh-rTW/strings-talkback-descriptions.xml
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"上一個"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift 鍵已啟用"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"大寫鎖定已啟用"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"Shift 鍵已停用"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"符號模式"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"符號移位模式"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"字母模式"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"撥號模式"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"撥號符號模式"</string>
diff --git a/java/res/values-zu/strings-talkback-descriptions.xml b/java/res/values-zu/strings-talkback-descriptions.xml
index d30ec8b..14a1ea8 100644
--- a/java/res/values-zu/strings-talkback-descriptions.xml
+++ b/java/res/values-zu/strings-talkback-descriptions.xml
@@ -26,12 +26,12 @@
     <string name="spoken_auto_correct" msgid="8989324692167993804">"I-<xliff:g id="KEY_NAME">%1$s</xliff:g> ilungisa i-<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> kube yi-<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
     <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"I-<xliff:g id="KEY_NAME">%1$s</xliff:g> yenza ukulungisa okuzenzakalelayo"</string>
     <string name="spoken_description_unknown" msgid="2382510329910793539">"Ikhodi yokhiye %d"</string>
-    <string name="spoken_description_shift" msgid="7209798151676638728">"I-Shift"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"U-Shift"</string>
     <string name="spoken_description_shift_shifted" msgid="1609924271343916689">"U-Shift uvuliwe (thepha ukuwuvimbela)"</string>
     <string name="spoken_description_caps_lock" msgid="5020582161133170892">"Ofeleba bavuliwe (thepha ukubavimbela)"</string>
     <string name="spoken_description_delete" msgid="3878902286264983302">"Susa"</string>
     <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Amasimbuli"</string>
-    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Imbhalo"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Izinhlamvu"</string>
     <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Izinombolo"</string>
     <string name="spoken_description_settings" msgid="7281251004003143204">"Izilungiselelo"</string>
     <string name="spoken_description_tab" msgid="8210782459446866716">"Ithebhu"</string>
@@ -46,8 +46,8 @@
     <string name="spoken_description_action_previous" msgid="2919072174697865110">"Okwangaphambilini"</string>
     <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"U-Shift uvunyelwe"</string>
     <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Ofeleba bavunyelwe"</string>
-    <string name="spoken_description_shiftmode_off" msgid="5039126122829961331">"U-Shift uvimbelwe"</string>
     <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Imodi yezimpawu"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="3940566070908816492">"Imodi yamasimbuli we-shift"</string>
     <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Imodi yezinhlamvu"</string>
     <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Imodi yefoni"</string>
     <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Imodi yezimpawu zefoni"</string>
@@ -65,7 +65,7 @@
     <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Okwakamuva"</string>
     <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Abantu"</string>
     <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Izinto"</string>
-    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Awendalo"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Indalo"</string>
     <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Izindawo"</string>
     <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Amasimbuli"</string>
     <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Izithombe-mzwelo"</string>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 475e92f..769a1d9 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -74,6 +74,7 @@
         <!-- Size of the text for spacebar language label, in the proportion of key height. -->
         <attr name="languageOnSpacebarTextRatio" format="fraction" />
         <attr name="languageOnSpacebarTextColor" format="color" />
+        <attr name="languageOnSpacebarTextShadowRadius" format="float" />
         <attr name="languageOnSpacebarTextShadowColor" format="color" />
         <!-- Background image for the spacebar. -->
         <attr name="spacebarBackground" format="reference" />
@@ -217,7 +218,12 @@
         <attr name="iconSettingsKey" format="reference" />
         <attr name="iconSpaceKey" format="reference" />
         <attr name="iconEnterKey" format="reference" />
+        <attr name="iconGoKey" format="reference" />
         <attr name="iconSearchKey" format="reference" />
+        <attr name="iconSendKey" format="reference" />
+        <attr name="iconNextKey" format="reference" />
+        <attr name="iconDoneKey" format="reference" />
+        <attr name="iconPreviousKey" format="reference" />
         <attr name="iconTabKey" format="reference" />
         <attr name="iconShortcutKey" format="reference" />
         <attr name="iconSpaceKeyForNumberLayout" format="reference" />
@@ -431,6 +437,7 @@
             <!--  This should be aligned with KeyboardId.IME_ACTION_* -->
             <enum name="actionCustomLabel" value="0x100" />
         </attr>
+        <attr name="isIconDefined" format="string" />
         <attr name="localeCode" format="string" />
         <attr name="languageCode" format="string" />
         <attr name="countryCode" format="string" />
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 824928c..db9a27a 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -26,7 +26,6 @@
     <color name="suggested_word_color_ics">#B233B5E5</color>
     <color name="highlight_translucent_color_ics">#9933B5E5</color>
     <color name="key_text_color_holo">@android:color/white</color>
-    <color name="key_text_shadow_color_holo">@android:color/transparent</color>
     <color name="key_text_inactivated_color_holo">#66E0E4E5</color>
     <color name="key_hint_letter_color_holo">#80000000</color>
     <color name="key_hint_label_color_holo">#A0FFFFFF</color>
@@ -40,6 +39,18 @@
     <color name="typed_word_color_klp">#D8F0F0F0</color>
     <color name="suggested_word_color_klp">#B2F0F0F0</color>
     <color name="highlight_translucent_color_klp">#99E0E0E0</color>
+    <!-- Color resources for LMP theme. Base color = F0F0F0 -->
+    <color name="key_text_inactive_color_lmp">#808184</color>
+    <color name="key_hint_letter_color_lmp">#808184</color>
+    <color name="highlight_color_lmp">#7FCAC3</color>
+    <color name="typed_word_color_lmp">#D87FCAC3</color>
+    <color name="suggested_word_color_lmp">#B27FCAC3</color>
+    <color name="highlight_translucent_color_lmp">#997FCAC3</color>
+    <color name="keyboard_background_lmp">#384248</color>
+    <color name="key_background_lmp">#384248</color>
+    <color name="key_background_pressed_lmp">#546872</color>
+    <color name="suggestions_strip_background_lmp">#263238</color>
+    <color name="suggested_word_background_selected_lmp">#384248</color>
     <!-- Color resources for setup wizard and tutorial -->
     <color name="setup_background">#FFEBEBEB</color>
     <color name="setup_text_dark">#FF707070</color>
diff --git a/java/res/values/config-common.xml b/java/res/values/config-common.xml
index 3fe4b94..ad27ab4 100644
--- a/java/res/values/config-common.xml
+++ b/java/res/values/config-common.xml
@@ -24,9 +24,6 @@
          at input history to suggest a hopefully helpful suggestions for the next word? -->
     <bool name="config_default_next_word_prediction">true</bool>
 
-    <!-- This configuration must be aligned with {@link KeyboardTheme#DEFAULT_THEME_ID}. -->
-    <string name="config_default_keyboard_theme_id" translatable="false">2</string>
-
     <integer name="config_delay_update_shift_state">100</integer>
     <integer name="config_double_space_period_timeout">1100</integer>
 
@@ -136,7 +133,7 @@
     <integer name="config_gesture_trail_shadow_ratio">-1</integer>
 
     <!-- Common configuration of Emoji keyboard -->
-    <dimen name="config_emoji_category_page_id_height">3dp</dimen>
+    <dimen name="config_emoji_category_page_id_height">2dp</dimen>
 
     <!-- Inset used in Accessibility mode to avoid accidental key presses when a finger slides off the screen. -->
     <dimen name="config_accessibility_edge_slop">8dp</dimen>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 45ea483..9f556a6 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -64,10 +64,11 @@
     <fraction name="config_key_shifted_letter_hint_ratio_5row">41%</fraction>
 
     <dimen name="config_suggestions_strip_height">40dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">36dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">36dp</dimen>
     <dimen name="config_more_suggestions_row_height">40dp</dimen>
     <integer name="config_max_more_suggestions_row">6</integer>
     <fraction name="config_min_more_suggestions_width">90%</fraction>
-    <dimen name="config_suggestions_strip_horizontal_padding">0dp</dimen>
     <dimen name="config_suggestion_min_width">44dp</dimen>
     <dimen name="config_suggestion_text_horizontal_padding">6dp</dimen>
     <dimen name="config_suggestion_text_size">18dp</dimen>
diff --git a/java/res/values/donottranslate-config-spacing-and-punctuations.xml b/java/res/values/donottranslate-config-spacing-and-punctuations.xml
index 1be5cf8..2faf578 100644
--- a/java/res/values/donottranslate-config-spacing-and-punctuations.xml
+++ b/java/res/values/donottranslate-config-spacing-and-punctuations.xml
@@ -26,6 +26,8 @@
     <string name="symbols_preceded_by_space">([{&amp;</string>
     <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
     <string name="symbols_followed_by_space">.,;:!?)]}&amp;</string>
+    <!-- Symbols that behave like a single punctuation when typed next to each other -->
+    <string name="symbols_clustering_together"></string>
     <!-- Symbols that separate words -->
     <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
     <string name="symbols_word_separators">"&#x0009;&#x0020;&#x000A;&#x00A0;"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"</string>
diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index 9a610a0..415dd0b 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -47,17 +47,6 @@
     <string name="prefs_debug_mode">Debug Mode</string>
     <string name="prefs_force_non_distinct_multitouch">Force non-distinct multitouch</string>
 
-    <!-- For keyboard color scheme option dialog. -->
-    <string-array name="keyboard_theme_names">
-        <item>@string/keyboard_color_scheme_white</item>
-        <item>@string/keyboard_color_scheme_blue</item>
-    </string-array>
-    <!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. -->
-    <string-array name="keyboard_theme_ids">
-        <item>2</item>
-        <item>0</item>
-    </string-array>
-
     <!-- Subtype locale display name exceptions.
          For each exception, there should be related string resources for display name that may have
          explicit keyboard layout. The string resource name must be "subtype_<locale>" or
diff --git a/java/res/values/keyboard-icons-holo.xml b/java/res/values/keyboard-icons-holo.xml
index 4c888d5..669d2c0 100644
--- a/java/res/values/keyboard-icons-holo.xml
+++ b/java/res/values/keyboard-icons-holo.xml
@@ -21,9 +21,6 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
     <style name="KeyboardIcons.Holo">
         <!-- Keyboard icons -->
-        <!-- TODO: The following holo icon for phone (drawable-hdpi and drawable-xhdpi) are missing.
-             sym_keyboard_123_mic_holo
-             -->
         <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item>
         <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo_dark</item>
         <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo_dark</item>
diff --git a/java/res/values/keyboard-icons-lmp.xml b/java/res/values/keyboard-icons-lmp.xml
new file mode 100644
index 0000000..39e0fe3
--- /dev/null
+++ b/java/res/values/keyboard-icons-lmp.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="KeyboardIcons.LMP">
+        <!-- Keyboard icons -->
+        <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item>
+        <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo_dark</item>
+        <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo_dark</item>
+        <item name="iconSpaceKey">@drawable/sym_keyboard_space_holo_dark</item>
+        <item name="iconEnterKey">@drawable/sym_keyboard_return_holo_dark</item>
+        <!-- TODO: Uncomment those icon definitions once we have those icon assets. -->
+        <!-- <item name="iconGoKey">@drawable/sym_keyboard_go_holo_dark</item> -->
+        <item name="iconSearchKey">@drawable/sym_keyboard_search_holo_dark</item>
+        <!-- <item name="iconSendKey">@drawable/sym_keyboard_send_holo_dark</item> -->
+        <!-- <item name="iconNextKey">@drawable/sym_keyboard_next_holo_dark</item> -->
+        <!-- <item name="iconDoneKey">@drawable/sym_keyboard_done_holo_dark</item> -->
+        <!-- <item name="iconPreviousKey">@drawable/sym_keyboard_previous_holo_dark</item> -->
+        <item name="iconTabKey">@drawable/sym_keyboard_tab_holo_dark</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo_dark</item>
+        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo_dark</item>
+        <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo_dark</item>
+        <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo_dark</item>
+        <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item>
+        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_dark</item>
+        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo_dark</item>
+        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo_dark</item>
+        <item name="iconEmojiKey">@drawable/sym_keyboard_smiley_holo_dark</item>
+    </style>
+</resources>
diff --git a/java/res/values/keyboard-themes.xml b/java/res/values/keyboard-themes.xml
new file mode 100644
index 0000000..0325f5b
--- /dev/null
+++ b/java/res/values/keyboard-themes.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For keyboard color scheme option dialog. -->
+    <string-array name="keyboard_theme_names" translatable="false">
+        <item>@string/keyboard_color_scheme_white</item>
+        <item>@string/keyboard_color_scheme_blue</item>
+        <!-- TODO: Make this item as translatable string resource. -->
+        <item>Quantum</item>
+    </string-array>
+    <!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. -->
+    <string-array name="keyboard_theme_ids" translatable="false">
+        <item>2</item>
+        <item>0</item>
+        <item>3</item>
+    </string-array>
+</resources>
diff --git a/java/res/values/strings-emoji-descriptions.xml b/java/res/values/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..3c726bb
--- /dev/null
+++ b/java/res/values/strings-emoji-descriptions.xml
@@ -0,0 +1,1667 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+     <!-- Spoken description for Unicode code point U+00A9 -->
+     <string name="spoken_emoji_00A9">Copyright sign</string>
+     <!-- Spoken description for Unicode code point U+00AE -->
+     <string name="spoken_emoji_00AE">Registered sign</string>
+     <!-- Spoken description for Unicode code point U+203C -->
+     <string name="spoken_emoji_203C">Double exclamation mark</string>
+     <!-- Spoken description for Unicode code point U+2049 -->
+     <string name="spoken_emoji_2049">Exclamation question mark</string>
+     <!-- Spoken description for Unicode code point U+2122 -->
+     <string name="spoken_emoji_2122">Trade mark sign</string>
+     <!-- Spoken description for Unicode code point U+2139 -->
+     <string name="spoken_emoji_2139">Information source</string>
+     <!-- Spoken description for Unicode code point U+2194 -->
+     <string name="spoken_emoji_2194">Left right arrow</string>
+     <!-- Spoken description for Unicode code point U+2195 -->
+     <string name="spoken_emoji_2195">Up down arrow</string>
+     <!-- Spoken description for Unicode code point U+2196 -->
+     <string name="spoken_emoji_2196">North west arrow</string>
+     <!-- Spoken description for Unicode code point U+2197 -->
+     <string name="spoken_emoji_2197">North east arrow</string>
+     <!-- Spoken description for Unicode code point U+2198 -->
+     <string name="spoken_emoji_2198">South east arrow</string>
+     <!-- Spoken description for Unicode code point U+2199 -->
+     <string name="spoken_emoji_2199">South west arrow</string>
+     <!-- Spoken description for Unicode code point U+21A9 -->
+     <string name="spoken_emoji_21A9">Leftwards arrow with hook</string>
+     <!-- Spoken description for Unicode code point U+21AA -->
+     <string name="spoken_emoji_21AA">Rightwards arrow with hook</string>
+     <!-- Spoken description for Unicode code point U+231A -->
+     <string name="spoken_emoji_231A">Watch</string>
+     <!-- Spoken description for Unicode code point U+231B -->
+     <string name="spoken_emoji_231B">Hourglass</string>
+     <!-- Spoken description for Unicode code point U+23E9 -->
+     <string name="spoken_emoji_23E9">Black right-pointing double triangle</string>
+     <!-- Spoken description for Unicode code point U+23EA -->
+     <string name="spoken_emoji_23EA">Black left-pointing double triangle</string>
+     <!-- Spoken description for Unicode code point U+23EB -->
+     <string name="spoken_emoji_23EB">Black up-pointing double triangle</string>
+     <!-- Spoken description for Unicode code point U+23EC -->
+     <string name="spoken_emoji_23EC">Black down-pointing double triangle</string>
+     <!-- Spoken description for Unicode code point U+23F0 -->
+     <string name="spoken_emoji_23F0">Alarm clock</string>
+     <!-- Spoken description for Unicode code point U+23F3 -->
+     <string name="spoken_emoji_23F3">Hourglass with flowing sand</string>
+     <!-- Spoken description for Unicode code point U+24C2 -->
+     <string name="spoken_emoji_24C2">Circled latin capital letter m</string>
+     <!-- Spoken description for Unicode code point U+25AA -->
+     <string name="spoken_emoji_25AA">Black small square</string>
+     <!-- Spoken description for Unicode code point U+25AB -->
+     <string name="spoken_emoji_25AB">White small square</string>
+     <!-- Spoken description for Unicode code point U+25B6 -->
+     <string name="spoken_emoji_25B6">Black right-pointing triangle</string>
+     <!-- Spoken description for Unicode code point U+25C0 -->
+     <string name="spoken_emoji_25C0">Black left-pointing triangle</string>
+     <!-- Spoken description for Unicode code point U+25FB -->
+     <string name="spoken_emoji_25FB">White medium square</string>
+     <!-- Spoken description for Unicode code point U+25FC -->
+     <string name="spoken_emoji_25FC">Black medium square</string>
+     <!-- Spoken description for Unicode code point U+25FD -->
+     <string name="spoken_emoji_25FD">White medium small square</string>
+     <!-- Spoken description for Unicode code point U+25FE -->
+     <string name="spoken_emoji_25FE">Black medium small square</string>
+     <!-- Spoken description for Unicode code point U+2600 -->
+     <string name="spoken_emoji_2600">Black sun with rays</string>
+     <!-- Spoken description for Unicode code point U+2601 -->
+     <string name="spoken_emoji_2601">Cloud</string>
+     <!-- Spoken description for Unicode code point U+260E -->
+     <string name="spoken_emoji_260E">Black telephone</string>
+     <!-- Spoken description for Unicode code point U+2611 -->
+     <string name="spoken_emoji_2611">Ballot box with check</string>
+     <!-- Spoken description for Unicode code point U+2614 -->
+     <string name="spoken_emoji_2614">Umbrella with rain drops</string>
+     <!-- Spoken description for Unicode code point U+2615 -->
+     <string name="spoken_emoji_2615">Hot beverage</string>
+     <!-- Spoken description for Unicode code point U+261D -->
+     <string name="spoken_emoji_261D">White up pointing index</string>
+     <!-- Spoken description for Unicode code point U+263A -->
+     <string name="spoken_emoji_263A">White smiling face</string>
+     <!-- Spoken description for Unicode code point U+2648 -->
+     <string name="spoken_emoji_2648">Aries</string>
+     <!-- Spoken description for Unicode code point U+2649 -->
+     <string name="spoken_emoji_2649">Taurus</string>
+     <!-- Spoken description for Unicode code point U+264A -->
+     <string name="spoken_emoji_264A">Gemini</string>
+     <!-- Spoken description for Unicode code point U+264B -->
+     <string name="spoken_emoji_264B">Cancer</string>
+     <!-- Spoken description for Unicode code point U+264C -->
+     <string name="spoken_emoji_264C">Leo</string>
+     <!-- Spoken description for Unicode code point U+264D -->
+     <string name="spoken_emoji_264D">Virgo</string>
+     <!-- Spoken description for Unicode code point U+264E -->
+     <string name="spoken_emoji_264E">Libra</string>
+     <!-- Spoken description for Unicode code point U+264F -->
+     <string name="spoken_emoji_264F">Scorpius</string>
+     <!-- Spoken description for Unicode code point U+2650 -->
+     <string name="spoken_emoji_2650">Sagittarius</string>
+     <!-- Spoken description for Unicode code point U+2651 -->
+     <string name="spoken_emoji_2651">Capricorn</string>
+     <!-- Spoken description for Unicode code point U+2652 -->
+     <string name="spoken_emoji_2652">Aquarius</string>
+     <!-- Spoken description for Unicode code point U+2653 -->
+     <string name="spoken_emoji_2653">Pisces</string>
+     <!-- Spoken description for Unicode code point U+2660 -->
+     <string name="spoken_emoji_2660">Black spade suit</string>
+     <!-- Spoken description for Unicode code point U+2663 -->
+     <string name="spoken_emoji_2663">Black club suit</string>
+     <!-- Spoken description for Unicode code point U+2665 -->
+     <string name="spoken_emoji_2665">Black heart suit</string>
+     <!-- Spoken description for Unicode code point U+2666 -->
+     <string name="spoken_emoji_2666">Black diamond suit</string>
+     <!-- Spoken description for Unicode code point U+2668 -->
+     <string name="spoken_emoji_2668">Hot springs</string>
+     <!-- Spoken description for Unicode code point U+267B -->
+     <string name="spoken_emoji_267B">Black universal recycling symbol</string>
+     <!-- Spoken description for Unicode code point U+267F -->
+     <string name="spoken_emoji_267F">Wheelchair symbol</string>
+     <!-- Spoken description for Unicode code point U+2693 -->
+     <string name="spoken_emoji_2693">Anchor</string>
+     <!-- Spoken description for Unicode code point U+26A0 -->
+     <string name="spoken_emoji_26A0">Warning sign</string>
+     <!-- Spoken description for Unicode code point U+26A1 -->
+     <string name="spoken_emoji_26A1">High voltage sign</string>
+     <!-- Spoken description for Unicode code point U+26AA -->
+     <string name="spoken_emoji_26AA">Medium white circle</string>
+     <!-- Spoken description for Unicode code point U+26AB -->
+     <string name="spoken_emoji_26AB">Medium black circle</string>
+     <!-- Spoken description for Unicode code point U+26BD -->
+     <string name="spoken_emoji_26BD">Soccer ball</string>
+     <!-- Spoken description for Unicode code point U+26BE -->
+     <string name="spoken_emoji_26BE">Baseball</string>
+     <!-- Spoken description for Unicode code point U+26C4 -->
+     <string name="spoken_emoji_26C4">Snowman without snow</string>
+     <!-- Spoken description for Unicode code point U+26C5 -->
+     <string name="spoken_emoji_26C5">Sun behind cloud</string>
+     <!-- Spoken description for Unicode code point U+26CE -->
+     <string name="spoken_emoji_26CE">Ophiuchus</string>
+     <!-- Spoken description for Unicode code point U+26D4 -->
+     <string name="spoken_emoji_26D4">No entry</string>
+     <!-- Spoken description for Unicode code point U+26EA -->
+     <string name="spoken_emoji_26EA">Church</string>
+     <!-- Spoken description for Unicode code point U+26F2 -->
+     <string name="spoken_emoji_26F2">Fountain</string>
+     <!-- Spoken description for Unicode code point U+26F3 -->
+     <string name="spoken_emoji_26F3">Flag in hole</string>
+     <!-- Spoken description for Unicode code point U+26F5 -->
+     <string name="spoken_emoji_26F5">Sailboat</string>
+     <!-- Spoken description for Unicode code point U+26FA -->
+     <string name="spoken_emoji_26FA">Tent</string>
+     <!-- Spoken description for Unicode code point U+26FD -->
+     <string name="spoken_emoji_26FD">Fuel pump</string>
+     <!-- Spoken description for Unicode code point U+2702 -->
+     <string name="spoken_emoji_2702">Black scissors</string>
+     <!-- Spoken description for Unicode code point U+2705 -->
+     <string name="spoken_emoji_2705">White heavy check mark</string>
+     <!-- Spoken description for Unicode code point U+2708 -->
+     <string name="spoken_emoji_2708">Airplane</string>
+     <!-- Spoken description for Unicode code point U+2709 -->
+     <string name="spoken_emoji_2709">Envelope</string>
+     <!-- Spoken description for Unicode code point U+270A -->
+     <string name="spoken_emoji_270A">Raised fist</string>
+     <!-- Spoken description for Unicode code point U+270B -->
+     <string name="spoken_emoji_270B">Raised hand</string>
+     <!-- Spoken description for Unicode code point U+270C -->
+     <string name="spoken_emoji_270C">Victory hand</string>
+     <!-- Spoken description for Unicode code point U+270F -->
+     <string name="spoken_emoji_270F">Pencil</string>
+     <!-- Spoken description for Unicode code point U+2712 -->
+     <string name="spoken_emoji_2712">Black nib</string>
+     <!-- Spoken description for Unicode code point U+2714 -->
+     <string name="spoken_emoji_2714">Heavy check mark</string>
+     <!-- Spoken description for Unicode code point U+2716 -->
+     <string name="spoken_emoji_2716">Heavy multiplication x</string>
+     <!-- Spoken description for Unicode code point U+2728 -->
+     <string name="spoken_emoji_2728">Sparkles</string>
+     <!-- Spoken description for Unicode code point U+2733 -->
+     <string name="spoken_emoji_2733">Eight spoked asterisk</string>
+     <!-- Spoken description for Unicode code point U+2734 -->
+     <string name="spoken_emoji_2734">Eight pointed black star</string>
+     <!-- Spoken description for Unicode code point U+2744 -->
+     <string name="spoken_emoji_2744">Snowflake</string>
+     <!-- Spoken description for Unicode code point U+2747 -->
+     <string name="spoken_emoji_2747">Sparkle</string>
+     <!-- Spoken description for Unicode code point U+274C -->
+     <string name="spoken_emoji_274C">Cross mark</string>
+     <!-- Spoken description for Unicode code point U+274E -->
+     <string name="spoken_emoji_274E">Negative squared cross mark</string>
+     <!-- Spoken description for Unicode code point U+2753 -->
+     <string name="spoken_emoji_2753">Black question mark ornament</string>
+     <!-- Spoken description for Unicode code point U+2754 -->
+     <string name="spoken_emoji_2754">White question mark ornament</string>
+     <!-- Spoken description for Unicode code point U+2755 -->
+     <string name="spoken_emoji_2755">White exclamation mark ornament</string>
+     <!-- Spoken description for Unicode code point U+2757 -->
+     <string name="spoken_emoji_2757">Heavy exclamation mark symbol</string>
+     <!-- Spoken description for Unicode code point U+2764 -->
+     <string name="spoken_emoji_2764">Heavy black heart</string>
+     <!-- Spoken description for Unicode code point U+2795 -->
+     <string name="spoken_emoji_2795">Heavy plus sign</string>
+     <!-- Spoken description for Unicode code point U+2796 -->
+     <string name="spoken_emoji_2796">Heavy minus sign</string>
+     <!-- Spoken description for Unicode code point U+2797 -->
+     <string name="spoken_emoji_2797">Heavy division sign</string>
+     <!-- Spoken description for Unicode code point U+27A1 -->
+     <string name="spoken_emoji_27A1">Black rightwards arrow</string>
+     <!-- Spoken description for Unicode code point U+27B0 -->
+     <string name="spoken_emoji_27B0">Curly loop</string>
+     <!-- Spoken description for Unicode code point U+27BF -->
+     <string name="spoken_emoji_27BF">Double curly loop</string>
+     <!-- Spoken description for Unicode code point U+2934 -->
+     <string name="spoken_emoji_2934">Arrow pointing rightwards then curving upwards</string>
+     <!-- Spoken description for Unicode code point U+2935 -->
+     <string name="spoken_emoji_2935">Arrow pointing rightwards then curving downwards</string>
+     <!-- Spoken description for Unicode code point U+2B05 -->
+     <string name="spoken_emoji_2B05">Leftwards black arrow</string>
+     <!-- Spoken description for Unicode code point U+2B06 -->
+     <string name="spoken_emoji_2B06">Upwards black arrow</string>
+     <!-- Spoken description for Unicode code point U+2B07 -->
+     <string name="spoken_emoji_2B07">Downwards black arrow</string>
+     <!-- Spoken description for Unicode code point U+2B1B -->
+     <string name="spoken_emoji_2B1B">Black large square</string>
+     <!-- Spoken description for Unicode code point U+2B1C -->
+     <string name="spoken_emoji_2B1C">White large square</string>
+     <!-- Spoken description for Unicode code point U+2B50 -->
+     <string name="spoken_emoji_2B50">White medium star</string>
+     <!-- Spoken description for Unicode code point U+2B55 -->
+     <string name="spoken_emoji_2B55">Heavy large circle</string>
+     <!-- Spoken description for Unicode code point U+3030 -->
+     <string name="spoken_emoji_3030">Wavy dash</string>
+     <!-- Spoken description for Unicode code point U+303D -->
+     <string name="spoken_emoji_303D">Part alternation mark</string>
+     <!-- Spoken description for Unicode code point U+3297 -->
+     <string name="spoken_emoji_3297">Circled ideograph congratulation</string>
+     <!-- Spoken description for Unicode code point U+3299 -->
+     <string name="spoken_emoji_3299">Circled ideograph secret</string>
+     <!-- Spoken description for Unicode code point U+1F004 -->
+     <string name="spoken_emoji_1F004">Mahjong tile red dragon</string>
+     <!-- Spoken description for Unicode code point U+1F0CF -->
+     <string name="spoken_emoji_1F0CF">Playing card black joker</string>
+     <!-- Spoken description for Unicode code point U+1F170 -->
+     <string name="spoken_emoji_1F170">Blood type A</string>
+     <!-- Spoken description for Unicode code point U+1F171 -->
+     <string name="spoken_emoji_1F171">Blood type B</string>
+     <!-- Spoken description for Unicode code point U+1F17E -->
+     <string name="spoken_emoji_1F17E">Blood type O</string>
+     <!-- Spoken description for Unicode code point U+1F17F -->
+     <string name="spoken_emoji_1F17F">Parking lot</string>
+     <!-- Spoken description for Unicode code point U+1F18E -->
+     <string name="spoken_emoji_1F18E">Blood type AB</string>
+     <!-- Spoken description for Unicode code point U+1F191, means "clear" -->
+     <string name="spoken_emoji_1F191">Squared CL</string>
+     <!-- Spoken description for Unicode code point U+1F192 -->
+     <string name="spoken_emoji_1F192">Squared cool</string>
+     <!-- Spoken description for Unicode code point U+1F193 -->
+     <string name="spoken_emoji_1F193">Squared free</string>
+     <!-- Spoken description for Unicode code point U+1F194 -->
+     <string name="spoken_emoji_1F194">Squared ID</string>
+     <!-- Spoken description for Unicode code point U+1F195 -->
+     <string name="spoken_emoji_1F195">Squared new</string>
+     <!-- Spoken description for Unicode code point U+1F196 -->
+     <string name="spoken_emoji_1F196">Squared N G</string>
+     <!-- Spoken description for Unicode code point U+1F197 -->
+     <string name="spoken_emoji_1F197">Squared OK</string>
+     <!-- Spoken description for Unicode code point U+1F198 -->
+     <string name="spoken_emoji_1F198">Squared SOS</string>
+     <!-- Spoken description for Unicode code point U+1F199 -->
+     <string name="spoken_emoji_1F199">Squared up with exclamation mark</string>
+     <!-- Spoken description for Unicode code point U+1F19A, means "versus" -->
+     <string name="spoken_emoji_1F19A">Squared vs</string>
+     <!-- Spoken description for Unicode code point U+1F201 -->
+     <string name="spoken_emoji_1F201">Squared katakana here</string>
+     <!-- Spoken description for Unicode code point U+1F202-->
+     <string name="spoken_emoji_1F202">Squared katakana service</string>
+     <!-- Spoken description for Unicode code point U+1F21A, means "free" or "no-charge" -->
+     <string name="spoken_emoji_1F21A">Squared ideograph charge-free</string>
+     <!-- Spoken description for Unicode code point U+1F22F -->
+     <string name="spoken_emoji_1F22F">Squared ideograph reserved-seat</string>
+     <!-- Spoken description for Unicode code point U+1F232 -->
+     <string name="spoken_emoji_1F232">Squared ideograph prohibitation</string>
+     <!-- Spoken description for Unicode code point U+1F233 -->
+     <string name="spoken_emoji_1F233">Squared ideograph vacancy</string>
+     <!-- Spoken description for Unicode code point U+1F234 -->
+     <string name="spoken_emoji_1F234">Squared ideograph acceptance</string>
+     <!-- Spoken description for Unicode code point U+1F235 -->
+     <string name="spoken_emoji_1F235">Squared ideograph full occupancy</string>
+     <!-- Spoken description for Unicode code point U+1F236, means "charged" or "fee-based" -->
+     <string name="spoken_emoji_1F236">Squared ideograph paid</string>
+     <!-- Spoken description for Unicode code point U+1F237 -->
+     <string name="spoken_emoji_1F237">Squared ideograph monthly</string>
+     <!-- Spoken description for Unicode code point U+1F238, means "subscription" or "application" -->
+     <string name="spoken_emoji_1F238">Squared ideograph application</string>
+     <!-- Spoken description for Unicode code point U+1F239 -->
+     <string name="spoken_emoji_1F239">Squared ideograph discount</string>
+     <!-- Spoken description for Unicode code point U+1F23A -->
+     <string name="spoken_emoji_1F23A">Squared ideograph in business</string>
+     <!-- Spoken description for Unicode code point U+1F250 -->
+     <string name="spoken_emoji_1F250">Circled ideograph advantage</string>
+     <!-- Spoken description for Unicode code point U+1F251 -->
+     <string name="spoken_emoji_1F251">Circled ideograph accept</string>
+     <!-- Spoken description for Unicode code point U+1F300 -->
+     <string name="spoken_emoji_1F300">Cyclone</string>
+     <!-- Spoken description for Unicode code point U+1F301 -->
+     <string name="spoken_emoji_1F301">Foggy</string>
+     <!-- Spoken description for Unicode code point U+1F302 -->
+     <string name="spoken_emoji_1F302">Closed umbrella</string>
+     <!-- Spoken description for Unicode code point U+1F303 -->
+     <string name="spoken_emoji_1F303">Night with stars</string>
+     <!-- Spoken description for Unicode code point U+1F304 -->
+     <string name="spoken_emoji_1F304">Sunrise over mountains</string>
+     <!-- Spoken description for Unicode code point U+1F305 -->
+     <string name="spoken_emoji_1F305">Sunrise</string>
+     <!-- Spoken description for Unicode code point U+1F306 -->
+     <string name="spoken_emoji_1F306">Cityscape at dusk</string>
+     <!-- Spoken description for Unicode code point U+1F307 -->
+     <string name="spoken_emoji_1F307">Sunset over buildings</string>
+     <!-- Spoken description for Unicode code point U+1F308 -->
+     <string name="spoken_emoji_1F308">Rainbow</string>
+     <!-- Spoken description for Unicode code point U+1F309 -->
+     <string name="spoken_emoji_1F309">Bridge at night</string>
+     <!-- Spoken description for Unicode code point U+1F30A -->
+     <string name="spoken_emoji_1F30A">Water wave</string>
+     <!-- Spoken description for Unicode code point U+1F30B -->
+     <string name="spoken_emoji_1F30B">Volcano</string>
+     <!-- Spoken description for Unicode code point U+1F30C -->
+     <string name="spoken_emoji_1F30C">Milky way</string>
+     <!-- Spoken description for Unicode code point U+1F30D -->
+     <string name="spoken_emoji_1F30D">Earth globe europe-africa</string>
+     <!-- Spoken description for Unicode code point U+1F30E -->
+     <string name="spoken_emoji_1F30E">Earth globe americas</string>
+     <!-- Spoken description for Unicode code point U+1F30F -->
+     <string name="spoken_emoji_1F30F">Earth globe asia-australia</string>
+     <!-- Spoken description for Unicode code point U+1F310 -->
+     <string name="spoken_emoji_1F310">Globe with meridians</string>
+     <!-- Spoken description for Unicode code point U+1F311 -->
+     <string name="spoken_emoji_1F311">New moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F312 -->
+     <string name="spoken_emoji_1F312">Waxing crescent moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F313 -->
+     <string name="spoken_emoji_1F313">First quarter moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F314 -->
+     <string name="spoken_emoji_1F314">Waxing gibbous moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F315 -->
+     <string name="spoken_emoji_1F315">Full moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F316 -->
+     <string name="spoken_emoji_1F316">Waning gibbous moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F317 -->
+     <string name="spoken_emoji_1F317">Last quarter moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F318 -->
+     <string name="spoken_emoji_1F318">Waning crescent moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F319 -->
+     <string name="spoken_emoji_1F319">Crescent moon</string>
+     <!-- Spoken description for Unicode code point U+1F31A -->
+     <string name="spoken_emoji_1F31A">New moon with face</string>
+     <!-- Spoken description for Unicode code point U+1F31B -->
+     <string name="spoken_emoji_1F31B">First quarter moon with face</string>
+     <!-- Spoken description for Unicode code point U+1F31C -->
+     <string name="spoken_emoji_1F31C">Last quarter moon with face</string>
+     <!-- Spoken description for Unicode code point U+1F31D -->
+     <string name="spoken_emoji_1F31D">Full moon with face</string>
+     <!-- Spoken description for Unicode code point U+1F31E -->
+     <string name="spoken_emoji_1F31E">Sun with face</string>
+     <!-- Spoken description for Unicode code point U+1F31F -->
+     <string name="spoken_emoji_1F31F">Glowing star</string>
+     <!-- Spoken description for Unicode code point U+1F320 -->
+     <string name="spoken_emoji_1F320">Shooting star</string>
+     <!-- Spoken description for Unicode code point U+1F330 -->
+     <string name="spoken_emoji_1F330">Chestnut</string>
+     <!-- Spoken description for Unicode code point U+1F331 -->
+     <string name="spoken_emoji_1F331">Seedling</string>
+     <!-- Spoken description for Unicode code point U+1F332 -->
+     <string name="spoken_emoji_1F332">Evergreen tree</string>
+     <!-- Spoken description for Unicode code point U+1F333 -->
+     <string name="spoken_emoji_1F333">Deciduous tree</string>
+     <!-- Spoken description for Unicode code point U+1F334 -->
+     <string name="spoken_emoji_1F334">Palm tree</string>
+     <!-- Spoken description for Unicode code point U+1F335 -->
+     <string name="spoken_emoji_1F335">Cactus</string>
+     <!-- Spoken description for Unicode code point U+1F337 -->
+     <string name="spoken_emoji_1F337">Tulip</string>
+     <!-- Spoken description for Unicode code point U+1F338 -->
+     <string name="spoken_emoji_1F338">Cherry blossom</string>
+     <!-- Spoken description for Unicode code point U+1F339 -->
+     <string name="spoken_emoji_1F339">Rose</string>
+     <!-- Spoken description for Unicode code point U+1F33A -->
+     <string name="spoken_emoji_1F33A">Hibiscus</string>
+     <!-- Spoken description for Unicode code point U+1F33B -->
+     <string name="spoken_emoji_1F33B">Sunflower</string>
+     <!-- Spoken description for Unicode code point U+1F33C -->
+     <string name="spoken_emoji_1F33C">Blossom</string>
+     <!-- Spoken description for Unicode code point U+1F33D -->
+     <string name="spoken_emoji_1F33D">Ear of maize</string>
+     <!-- Spoken description for Unicode code point U+1F33E -->
+     <string name="spoken_emoji_1F33E">Ear of rice</string>
+     <!-- Spoken description for Unicode code point U+1F33F -->
+     <string name="spoken_emoji_1F33F">Herb</string>
+     <!-- Spoken description for Unicode code point U+1F340 -->
+     <string name="spoken_emoji_1F340">Four leaf clover</string>
+     <!-- Spoken description for Unicode code point U+1F341 -->
+     <string name="spoken_emoji_1F341">Maple leaf</string>
+     <!-- Spoken description for Unicode code point U+1F342 -->
+     <string name="spoken_emoji_1F342">Fallen leaf</string>
+     <!-- Spoken description for Unicode code point U+1F343 -->
+     <string name="spoken_emoji_1F343">Leaf fluttering in wind</string>
+     <!-- Spoken description for Unicode code point U+1F344 -->
+     <string name="spoken_emoji_1F344">Mushroom</string>
+     <!-- Spoken description for Unicode code point U+1F345 -->
+     <string name="spoken_emoji_1F345">Tomato</string>
+     <!-- Spoken description for Unicode code point U+1F346 -->
+     <string name="spoken_emoji_1F346">Aubergine</string>
+     <!-- Spoken description for Unicode code point U+1F347 -->
+     <string name="spoken_emoji_1F347">Grapes</string>
+     <!-- Spoken description for Unicode code point U+1F348 -->
+     <string name="spoken_emoji_1F348">Melon</string>
+     <!-- Spoken description for Unicode code point U+1F349 -->
+     <string name="spoken_emoji_1F349">Watermelon</string>
+     <!-- Spoken description for Unicode code point U+1F34A -->
+     <string name="spoken_emoji_1F34A">Tangerine</string>
+     <!-- Spoken description for Unicode code point U+1F34B -->
+     <string name="spoken_emoji_1F34B">Lemon</string>
+     <!-- Spoken description for Unicode code point U+1F34C -->
+     <string name="spoken_emoji_1F34C">Banana</string>
+     <!-- Spoken description for Unicode code point U+1F34D -->
+     <string name="spoken_emoji_1F34D">Pineapple</string>
+     <!-- Spoken description for Unicode code point U+1F34E -->
+     <string name="spoken_emoji_1F34E">Red apple</string>
+     <!-- Spoken description for Unicode code point U+1F34F -->
+     <string name="spoken_emoji_1F34F">Green apple</string>
+     <!-- Spoken description for Unicode code point U+1F350 -->
+     <string name="spoken_emoji_1F350">Pear</string>
+     <!-- Spoken description for Unicode code point U+1F351 -->
+     <string name="spoken_emoji_1F351">Peach</string>
+     <!-- Spoken description for Unicode code point U+1F352 -->
+     <string name="spoken_emoji_1F352">Cherries</string>
+     <!-- Spoken description for Unicode code point U+1F353 -->
+     <string name="spoken_emoji_1F353">Strawberry</string>
+     <!-- Spoken description for Unicode code point U+1F354 -->
+     <string name="spoken_emoji_1F354">Hamburger</string>
+     <!-- Spoken description for Unicode code point U+1F355 -->
+     <string name="spoken_emoji_1F355">Slice of pizza</string>
+     <!-- Spoken description for Unicode code point U+1F356 -->
+     <string name="spoken_emoji_1F356">Meat on bone</string>
+     <!-- Spoken description for Unicode code point U+1F357 -->
+     <string name="spoken_emoji_1F357">Poultry leg</string>
+     <!-- Spoken description for Unicode code point U+1F358 -->
+     <string name="spoken_emoji_1F358">Rice cracker</string>
+     <!-- Spoken description for Unicode code point U+1F359 -->
+     <string name="spoken_emoji_1F359">Rice ball</string>
+     <!-- Spoken description for Unicode code point U+1F35A -->
+     <string name="spoken_emoji_1F35A">Cooked rice</string>
+     <!-- Spoken description for Unicode code point U+1F35B -->
+     <string name="spoken_emoji_1F35B">Curry and rice</string>
+     <!-- Spoken description for Unicode code point U+1F35C -->
+     <string name="spoken_emoji_1F35C">Steaming bowl</string>
+     <!-- Spoken description for Unicode code point U+1F35D -->
+     <string name="spoken_emoji_1F35D">Spaghetti</string>
+     <!-- Spoken description for Unicode code point U+1F35E -->
+     <string name="spoken_emoji_1F35E">Bread</string>
+     <!-- Spoken description for Unicode code point U+1F35F -->
+     <string name="spoken_emoji_1F35F">French fries</string>
+     <!-- Spoken description for Unicode code point U+1F360 -->
+     <string name="spoken_emoji_1F360">Roasted sweet potato</string>
+     <!-- Spoken description for Unicode code point U+1F361 -->
+     <string name="spoken_emoji_1F361">Dango</string>
+     <!-- Spoken description for Unicode code point U+1F362 -->
+     <string name="spoken_emoji_1F362">Oden</string>
+     <!-- Spoken description for Unicode code point U+1F363 -->
+     <string name="spoken_emoji_1F363">Sushi</string>
+     <!-- Spoken description for Unicode code point U+1F364 -->
+     <string name="spoken_emoji_1F364">Fried shrimp</string>
+     <!-- Spoken description for Unicode code point U+1F365 -->
+     <string name="spoken_emoji_1F365">Fish cake with swirl design</string>
+     <!-- Spoken description for Unicode code point U+1F366 -->
+     <string name="spoken_emoji_1F366">Soft ice cream</string>
+     <!-- Spoken description for Unicode code point U+1F367 -->
+     <string name="spoken_emoji_1F367">Shaved ice</string>
+     <!-- Spoken description for Unicode code point U+1F368 -->
+     <string name="spoken_emoji_1F368">Ice cream</string>
+     <!-- Spoken description for Unicode code point U+1F369 -->
+     <string name="spoken_emoji_1F369">Doughnut</string>
+     <!-- Spoken description for Unicode code point U+1F36A -->
+     <string name="spoken_emoji_1F36A">Cookie</string>
+     <!-- Spoken description for Unicode code point U+1F36B -->
+     <string name="spoken_emoji_1F36B">Chocolate bar</string>
+     <!-- Spoken description for Unicode code point U+1F36C -->
+     <string name="spoken_emoji_1F36C">Candy</string>
+     <!-- Spoken description for Unicode code point U+1F36D -->
+     <string name="spoken_emoji_1F36D">Lollipop</string>
+     <!-- Spoken description for Unicode code point U+1F36E -->
+     <string name="spoken_emoji_1F36E">Custard</string>
+     <!-- Spoken description for Unicode code point U+1F36F -->
+     <string name="spoken_emoji_1F36F">Honey pot</string>
+     <!-- Spoken description for Unicode code point U+1F370 -->
+     <string name="spoken_emoji_1F370">Shortcake</string>
+     <!-- Spoken description for Unicode code point U+1F371 -->
+     <string name="spoken_emoji_1F371">Bento box</string>
+     <!-- Spoken description for Unicode code point U+1F372 -->
+     <string name="spoken_emoji_1F372">Pot of food</string>
+     <!-- Spoken description for Unicode code point U+1F373 -->
+     <string name="spoken_emoji_1F373">Cooking</string>
+     <!-- Spoken description for Unicode code point U+1F374 -->
+     <string name="spoken_emoji_1F374">Fork and knife</string>
+     <!-- Spoken description for Unicode code point U+1F375 -->
+     <string name="spoken_emoji_1F375">Teacup without handle</string>
+     <!-- Spoken description for Unicode code point U+1F376 -->
+     <string name="spoken_emoji_1F376">Sake bottle and cup</string>
+     <!-- Spoken description for Unicode code point U+1F377 -->
+     <string name="spoken_emoji_1F377">Wine glass</string>
+     <!-- Spoken description for Unicode code point U+1F378 -->
+     <string name="spoken_emoji_1F378">Cocktail glass</string>
+     <!-- Spoken description for Unicode code point U+1F379 -->
+     <string name="spoken_emoji_1F379">Tropical drink</string>
+     <!-- Spoken description for Unicode code point U+1F37A -->
+     <string name="spoken_emoji_1F37A">Beer mug</string>
+     <!-- Spoken description for Unicode code point U+1F37B -->
+     <string name="spoken_emoji_1F37B">Clinking beer mugs</string>
+     <!-- Spoken description for Unicode code point U+1F37C -->
+     <string name="spoken_emoji_1F37C">Baby bottle</string>
+     <!-- Spoken description for Unicode code point U+1F380 -->
+     <string name="spoken_emoji_1F380">Ribbon</string>
+     <!-- Spoken description for Unicode code point U+1F381 -->
+     <string name="spoken_emoji_1F381">Wrapped present</string>
+     <!-- Spoken description for Unicode code point U+1F382 -->
+     <string name="spoken_emoji_1F382">Birthday cake</string>
+     <!-- Spoken description for Unicode code point U+1F383 -->
+     <string name="spoken_emoji_1F383">Jack-o-lantern</string>
+     <!-- Spoken description for Unicode code point U+1F384 -->
+     <string name="spoken_emoji_1F384">Christmas tree</string>
+     <!-- Spoken description for Unicode code point U+1F385 -->
+     <string name="spoken_emoji_1F385">Father christmas</string>
+     <!-- Spoken description for Unicode code point U+1F386 -->
+     <string name="spoken_emoji_1F386">Fireworks</string>
+     <!-- Spoken description for Unicode code point U+1F387 -->
+     <string name="spoken_emoji_1F387">Firework sparkler</string>
+     <!-- Spoken description for Unicode code point U+1F388 -->
+     <string name="spoken_emoji_1F388">Balloon</string>
+     <!-- Spoken description for Unicode code point U+1F389 -->
+     <string name="spoken_emoji_1F389">Party popper</string>
+     <!-- Spoken description for Unicode code point U+1F38A -->
+     <string name="spoken_emoji_1F38A">Confetti ball</string>
+     <!-- Spoken description for Unicode code point U+1F38B -->
+     <string name="spoken_emoji_1F38B">Tanabata tree</string>
+     <!-- Spoken description for Unicode code point U+1F38C -->
+     <string name="spoken_emoji_1F38C">Crossed flags</string>
+     <!-- Spoken description for Unicode code point U+1F38D -->
+     <string name="spoken_emoji_1F38D">Pine decoration</string>
+     <!-- Spoken description for Unicode code point U+1F38E -->
+     <string name="spoken_emoji_1F38E">Japanese dolls</string>
+     <!-- Spoken description for Unicode code point U+1F38F -->
+     <string name="spoken_emoji_1F38F">Carp streamer</string>
+     <!-- Spoken description for Unicode code point U+1F390 -->
+     <string name="spoken_emoji_1F390">Wind chime</string>
+     <!-- Spoken description for Unicode code point U+1F391 -->
+     <string name="spoken_emoji_1F391">Moon viewing ceremony</string>
+     <!-- Spoken description for Unicode code point U+1F392 -->
+     <string name="spoken_emoji_1F392">School satchel</string>
+     <!-- Spoken description for Unicode code point U+1F393 -->
+     <string name="spoken_emoji_1F393">Graduation cap</string>
+     <!-- Spoken description for Unicode code point U+1F3A0 -->
+     <string name="spoken_emoji_1F3A0">Carousel horse</string>
+     <!-- Spoken description for Unicode code point U+1F3A1 -->
+     <string name="spoken_emoji_1F3A1">Ferris wheel</string>
+     <!-- Spoken description for Unicode code point U+1F3A2 -->
+     <string name="spoken_emoji_1F3A2">Roller coaster</string>
+     <!-- Spoken description for Unicode code point U+1F3A3 -->
+     <string name="spoken_emoji_1F3A3">Fishing pole and fish</string>
+     <!-- Spoken description for Unicode code point U+1F3A4 -->
+     <string name="spoken_emoji_1F3A4">Microphone</string>
+     <!-- Spoken description for Unicode code point U+1F3A5 -->
+     <string name="spoken_emoji_1F3A5">Movie camera</string>
+     <!-- Spoken description for Unicode code point U+1F3A6 -->
+     <string name="spoken_emoji_1F3A6">Cinema</string>
+     <!-- Spoken description for Unicode code point U+1F3A7 -->
+     <string name="spoken_emoji_1F3A7">Headphone</string>
+     <!-- Spoken description for Unicode code point U+1F3A8 -->
+     <string name="spoken_emoji_1F3A8">Artist palette</string>
+     <!-- Spoken description for Unicode code point U+1F3A9 -->
+     <string name="spoken_emoji_1F3A9">Top hat</string>
+     <!-- Spoken description for Unicode code point U+1F3AA -->
+     <string name="spoken_emoji_1F3AA">Circus tent</string>
+     <!-- Spoken description for Unicode code point U+1F3AB -->
+     <string name="spoken_emoji_1F3AB">Ticket</string>
+     <!-- Spoken description for Unicode code point U+1F3AC -->
+     <string name="spoken_emoji_1F3AC">Clapper board</string>
+     <!-- Spoken description for Unicode code point U+1F3AD -->
+     <string name="spoken_emoji_1F3AD">Performing arts</string>
+     <!-- Spoken description for Unicode code point U+1F3AE -->
+     <string name="spoken_emoji_1F3AE">Video game</string>
+     <!-- Spoken description for Unicode code point U+1F3AF -->
+     <string name="spoken_emoji_1F3AF">Direct hit</string>
+     <!-- Spoken description for Unicode code point U+1F3B0 -->
+     <string name="spoken_emoji_1F3B0">Slot machine</string>
+     <!-- Spoken description for Unicode code point U+1F3B1 -->
+     <string name="spoken_emoji_1F3B1">Billiards</string>
+     <!-- Spoken description for Unicode code point U+1F3B2 -->
+     <string name="spoken_emoji_1F3B2">Game die</string>
+     <!-- Spoken description for Unicode code point U+1F3B3 -->
+     <string name="spoken_emoji_1F3B3">Bowling</string>
+     <!-- Spoken description for Unicode code point U+1F3B4 -->
+     <string name="spoken_emoji_1F3B4">Flower playing cards</string>
+     <!-- Spoken description for Unicode code point U+1F3B5 -->
+     <string name="spoken_emoji_1F3B5">Musical note</string>
+     <!-- Spoken description for Unicode code point U+1F3B6 -->
+     <string name="spoken_emoji_1F3B6">Multiple musical notes</string>
+     <!-- Spoken description for Unicode code point U+1F3B7 -->
+     <string name="spoken_emoji_1F3B7">Saxophone</string>
+     <!-- Spoken description for Unicode code point U+1F3B8 -->
+     <string name="spoken_emoji_1F3B8">Guitar</string>
+     <!-- Spoken description for Unicode code point U+1F3B9 -->
+     <string name="spoken_emoji_1F3B9">Musical keyboard</string>
+     <!-- Spoken description for Unicode code point U+1F3BA -->
+     <string name="spoken_emoji_1F3BA">Trumpet</string>
+     <!-- Spoken description for Unicode code point U+1F3BB -->
+     <string name="spoken_emoji_1F3BB">Violin</string>
+     <!-- Spoken description for Unicode code point U+1F3BC -->
+     <string name="spoken_emoji_1F3BC">Musical score</string>
+     <!-- Spoken description for Unicode code point U+1F3BD -->
+     <string name="spoken_emoji_1F3BD">Running shirt with sash</string>
+     <!-- Spoken description for Unicode code point U+1F3BE -->
+     <string name="spoken_emoji_1F3BE">Tennis racquet and ball</string>
+     <!-- Spoken description for Unicode code point U+1F3BF -->
+     <string name="spoken_emoji_1F3BF">Ski and ski boot</string>
+     <!-- Spoken description for Unicode code point U+1F3C0 -->
+     <string name="spoken_emoji_1F3C0">Basketball and hoop</string>
+     <!-- Spoken description for Unicode code point U+1F3C1 -->
+     <string name="spoken_emoji_1F3C1">Chequered flag</string>
+     <!-- Spoken description for Unicode code point U+1F3C2 -->
+     <string name="spoken_emoji_1F3C2">Snowboarder</string>
+     <!-- Spoken description for Unicode code point U+1F3C3 -->
+     <string name="spoken_emoji_1F3C3">Runner</string>
+     <!-- Spoken description for Unicode code point U+1F3C4 -->
+     <string name="spoken_emoji_1F3C4">Surfer</string>
+     <!-- Spoken description for Unicode code point U+1F3C6 -->
+     <string name="spoken_emoji_1F3C6">Trophy</string>
+     <!-- Spoken description for Unicode code point U+1F3C7 -->
+     <string name="spoken_emoji_1F3C7">Horse racing</string>
+     <!-- Spoken description for Unicode code point U+1F3C8 -->
+     <string name="spoken_emoji_1F3C8">American football</string>
+     <!-- Spoken description for Unicode code point U+1F3C9 -->
+     <string name="spoken_emoji_1F3C9">Rugby football</string>
+     <!-- Spoken description for Unicode code point U+1F3CA -->
+     <string name="spoken_emoji_1F3CA">Swimmer</string>
+     <!-- Spoken description for Unicode code point U+1F3E0 -->
+     <string name="spoken_emoji_1F3E0">House building</string>
+     <!-- Spoken description for Unicode code point U+1F3E1 -->
+     <string name="spoken_emoji_1F3E1">House with garden</string>
+     <!-- Spoken description for Unicode code point U+1F3E2 -->
+     <string name="spoken_emoji_1F3E2">Office building</string>
+     <!-- Spoken description for Unicode code point U+1F3E3 -->
+     <string name="spoken_emoji_1F3E3">Japanese post office</string>
+     <!-- Spoken description for Unicode code point U+1F3E4 -->
+     <string name="spoken_emoji_1F3E4">European post office</string>
+     <!-- Spoken description for Unicode code point U+1F3E5 -->
+     <string name="spoken_emoji_1F3E5">Hospital</string>
+     <!-- Spoken description for Unicode code point U+1F3E6 -->
+     <string name="spoken_emoji_1F3E6">Bank</string>
+     <!-- Spoken description for Unicode code point U+1F3E7 -->
+     <string name="spoken_emoji_1F3E7">Automated teller machine</string>
+     <!-- Spoken description for Unicode code point U+1F3E8 -->
+     <string name="spoken_emoji_1F3E8">Hotel</string>
+     <!-- Spoken description for Unicode code point U+1F3E9 -->
+     <string name="spoken_emoji_1F3E9">Love hotel</string>
+     <!-- Spoken description for Unicode code point U+1F3EA -->
+     <string name="spoken_emoji_1F3EA">Convenience store</string>
+     <!-- Spoken description for Unicode code point U+1F3EB -->
+     <string name="spoken_emoji_1F3EB">School</string>
+     <!-- Spoken description for Unicode code point U+1F3EC -->
+     <string name="spoken_emoji_1F3EC">Department store</string>
+     <!-- Spoken description for Unicode code point U+1F3ED -->
+     <string name="spoken_emoji_1F3ED">Factory</string>
+     <!-- Spoken description for Unicode code point U+1F3EE -->
+     <string name="spoken_emoji_1F3EE">Izakaya lantern</string>
+     <!-- Spoken description for Unicode code point U+1F3EF -->
+     <string name="spoken_emoji_1F3EF">Japanese castle</string>
+     <!-- Spoken description for Unicode code point U+1F3F0 -->
+     <string name="spoken_emoji_1F3F0">European castle</string>
+     <!-- Spoken description for Unicode code point U+1F400 -->
+     <string name="spoken_emoji_1F400">Rat</string>
+     <!-- Spoken description for Unicode code point U+1F401 -->
+     <string name="spoken_emoji_1F401">Mouse</string>
+     <!-- Spoken description for Unicode code point U+1F402 -->
+     <string name="spoken_emoji_1F402">Ox</string>
+     <!-- Spoken description for Unicode code point U+1F403 -->
+     <string name="spoken_emoji_1F403">Water buffalo</string>
+     <!-- Spoken description for Unicode code point U+1F404 -->
+     <string name="spoken_emoji_1F404">Cow</string>
+     <!-- Spoken description for Unicode code point U+1F406 -->
+     <string name="spoken_emoji_1F406">Leopard</string>
+     <!-- Spoken description for Unicode code point U+1F407 -->
+     <string name="spoken_emoji_1F407">Rabbit</string>
+     <!-- Spoken description for Unicode code point U+1F408 -->
+     <string name="spoken_emoji_1F408">Cat</string>
+     <!-- Spoken description for Unicode code point U+1F409 -->
+     <string name="spoken_emoji_1F409">Dragon</string>
+     <!-- Spoken description for Unicode code point U+1F40A -->
+     <string name="spoken_emoji_1F40A">Crocodile</string>
+     <!-- Spoken description for Unicode code point U+1F40B -->
+     <string name="spoken_emoji_1F40B">Whale</string>
+     <!-- Spoken description for Unicode code point U+1F40C -->
+     <string name="spoken_emoji_1F40C">Snail</string>
+     <!-- Spoken description for Unicode code point U+1F40D -->
+     <string name="spoken_emoji_1F40D">Snake</string>
+     <!-- Spoken description for Unicode code point U+1F40E -->
+     <string name="spoken_emoji_1F40E">Horse</string>
+     <!-- Spoken description for Unicode code point U+1F40F -->
+     <string name="spoken_emoji_1F40F">Ram</string>
+     <!-- Spoken description for Unicode code point U+1F410 -->
+     <string name="spoken_emoji_1F410">Goat</string>
+     <!-- Spoken description for Unicode code point U+1F411 -->
+     <string name="spoken_emoji_1F411">Sheep</string>
+     <!-- Spoken description for Unicode code point U+1F412 -->
+     <string name="spoken_emoji_1F412">Monkey</string>
+     <!-- Spoken description for Unicode code point U+1F413 -->
+     <string name="spoken_emoji_1F413">Rooster</string>
+     <!-- Spoken description for Unicode code point U+1F414 -->
+     <string name="spoken_emoji_1F414">Chicken</string>
+     <!-- Spoken description for Unicode code point U+1F415 -->
+     <string name="spoken_emoji_1F415">Dog</string>
+     <!-- Spoken description for Unicode code point U+1F416 -->
+     <string name="spoken_emoji_1F416">Pig</string>
+     <!-- Spoken description for Unicode code point U+1F417 -->
+     <string name="spoken_emoji_1F417">Boar</string>
+     <!-- Spoken description for Unicode code point U+1F418 -->
+     <string name="spoken_emoji_1F418">Elephant</string>
+     <!-- Spoken description for Unicode code point U+1F419 -->
+     <string name="spoken_emoji_1F419">Octopus</string>
+     <!-- Spoken description for Unicode code point U+1F41A -->
+     <string name="spoken_emoji_1F41A">Spiral shell</string>
+     <!-- Spoken description for Unicode code point U+1F41B -->
+     <string name="spoken_emoji_1F41B">Bug</string>
+     <!-- Spoken description for Unicode code point U+1F41C -->
+     <string name="spoken_emoji_1F41C">Ant</string>
+     <!-- Spoken description for Unicode code point U+1F41D -->
+     <string name="spoken_emoji_1F41D">Honeybee</string>
+     <!-- Spoken description for Unicode code point U+1F41E -->
+     <string name="spoken_emoji_1F41E">Lady beetle</string>
+     <!-- Spoken description for Unicode code point U+1F41F -->
+     <string name="spoken_emoji_1F41F">Fish</string>
+     <!-- Spoken description for Unicode code point U+1F420 -->
+     <string name="spoken_emoji_1F420">Tropical fish</string>
+     <!-- Spoken description for Unicode code point U+1F421 -->
+     <string name="spoken_emoji_1F421">Blowfish</string>
+     <!-- Spoken description for Unicode code point U+1F422 -->
+     <string name="spoken_emoji_1F422">Turtle</string>
+     <!-- Spoken description for Unicode code point U+1F423 -->
+     <string name="spoken_emoji_1F423">Hatching chick</string>
+     <!-- Spoken description for Unicode code point U+1F424 -->
+     <string name="spoken_emoji_1F424">Baby chick</string>
+     <!-- Spoken description for Unicode code point U+1F425 -->
+     <string name="spoken_emoji_1F425">Front-facing baby chick</string>
+     <!-- Spoken description for Unicode code point U+1F426 -->
+     <string name="spoken_emoji_1F426">Bird</string>
+     <!-- Spoken description for Unicode code point U+1F427 -->
+     <string name="spoken_emoji_1F427">Penguin</string>
+     <!-- Spoken description for Unicode code point U+1F428 -->
+     <string name="spoken_emoji_1F428">Koala</string>
+     <!-- Spoken description for Unicode code point U+1F429 -->
+     <string name="spoken_emoji_1F429">Poodle</string>
+     <!-- Spoken description for Unicode code point U+1F42A -->
+     <string name="spoken_emoji_1F42A">Dromedary camel</string>
+     <!-- Spoken description for Unicode code point U+1F42B -->
+     <string name="spoken_emoji_1F42B">Bactrian camel</string>
+     <!-- Spoken description for Unicode code point U+1F42C -->
+     <string name="spoken_emoji_1F42C">Dolphin</string>
+     <!-- Spoken description for Unicode code point U+1F42D -->
+     <string name="spoken_emoji_1F42D">Mouse face</string>
+     <!-- Spoken description for Unicode code point U+1F42E -->
+     <string name="spoken_emoji_1F42E">Cow face</string>
+     <!-- Spoken description for Unicode code point U+1F42F -->
+     <string name="spoken_emoji_1F42F">Tiger face</string>
+     <!-- Spoken description for Unicode code point U+1F430 -->
+     <string name="spoken_emoji_1F430">Rabbit face</string>
+     <!-- Spoken description for Unicode code point U+1F431 -->
+     <string name="spoken_emoji_1F431">Cat face</string>
+     <!-- Spoken description for Unicode code point U+1F432 -->
+     <string name="spoken_emoji_1F432">Dragon face</string>
+     <!-- Spoken description for Unicode code point U+1F433 -->
+     <string name="spoken_emoji_1F433">Spouting whale</string>
+     <!-- Spoken description for Unicode code point U+1F434 -->
+     <string name="spoken_emoji_1F434">Horse face</string>
+     <!-- Spoken description for Unicode code point U+1F435 -->
+     <string name="spoken_emoji_1F435">Monkey face</string>
+     <!-- Spoken description for Unicode code point U+1F436 -->
+     <string name="spoken_emoji_1F436">Dog face</string>
+     <!-- Spoken description for Unicode code point U+1F437 -->
+     <string name="spoken_emoji_1F437">Pig face</string>
+     <!-- Spoken description for Unicode code point U+1F438 -->
+     <string name="spoken_emoji_1F438">Frog face</string>
+     <!-- Spoken description for Unicode code point U+1F439 -->
+     <string name="spoken_emoji_1F439">Hamster face</string>
+     <!-- Spoken description for Unicode code point U+1F43A -->
+     <string name="spoken_emoji_1F43A">Wolf face</string>
+     <!-- Spoken description for Unicode code point U+1F43B -->
+     <string name="spoken_emoji_1F43B">Bear face</string>
+     <!-- Spoken description for Unicode code point U+1F43C -->
+     <string name="spoken_emoji_1F43C">Panda face</string>
+     <!-- Spoken description for Unicode code point U+1F43D -->
+     <string name="spoken_emoji_1F43D">Pig nose</string>
+     <!-- Spoken description for Unicode code point U+1F43E -->
+     <string name="spoken_emoji_1F43E">Paw prints</string>
+     <!-- Spoken description for Unicode code point U+1F440 -->
+     <string name="spoken_emoji_1F440">Eyes</string>
+     <!-- Spoken description for Unicode code point U+1F442 -->
+     <string name="spoken_emoji_1F442">Ear</string>
+     <!-- Spoken description for Unicode code point U+1F443 -->
+     <string name="spoken_emoji_1F443">Nose</string>
+     <!-- Spoken description for Unicode code point U+1F444 -->
+     <string name="spoken_emoji_1F444">Mouth</string>
+     <!-- Spoken description for Unicode code point U+1F445 -->
+     <string name="spoken_emoji_1F445">Tongue</string>
+     <!-- Spoken description for Unicode code point U+1F446 -->
+     <string name="spoken_emoji_1F446">White up pointing backhand index</string>
+     <!-- Spoken description for Unicode code point U+1F447 -->
+     <string name="spoken_emoji_1F447">White down pointing backhand index</string>
+     <!-- Spoken description for Unicode code point U+1F448 -->
+     <string name="spoken_emoji_1F448">White left pointing backhand index</string>
+     <!-- Spoken description for Unicode code point U+1F449 -->
+     <string name="spoken_emoji_1F449">White right pointing backhand index</string>
+     <!-- Spoken description for Unicode code point U+1F44A -->
+     <string name="spoken_emoji_1F44A">Fisted hand sign</string>
+     <!-- Spoken description for Unicode code point U+1F44B -->
+     <string name="spoken_emoji_1F44B">Waving hand sign</string>
+     <!-- Spoken description for Unicode code point U+1F44C -->
+     <string name="spoken_emoji_1F44C">Ok hand sign</string>
+     <!-- Spoken description for Unicode code point U+1F44D -->
+     <string name="spoken_emoji_1F44D">Thumbs up sign</string>
+     <!-- Spoken description for Unicode code point U+1F44E -->
+     <string name="spoken_emoji_1F44E">Thumbs down sign</string>
+     <!-- Spoken description for Unicode code point U+1F44F -->
+     <string name="spoken_emoji_1F44F">Clapping hands sign</string>
+     <!-- Spoken description for Unicode code point U+1F450 -->
+     <string name="spoken_emoji_1F450">Open hands sign</string>
+     <!-- Spoken description for Unicode code point U+1F451 -->
+     <string name="spoken_emoji_1F451">Crown</string>
+     <!-- Spoken description for Unicode code point U+1F452 -->
+     <string name="spoken_emoji_1F452">Womans hat</string>
+     <!-- Spoken description for Unicode code point U+1F453 -->
+     <string name="spoken_emoji_1F453">Eyeglasses</string>
+     <!-- Spoken description for Unicode code point U+1F454 -->
+     <string name="spoken_emoji_1F454">Necktie</string>
+     <!-- Spoken description for Unicode code point U+1F455 -->
+     <string name="spoken_emoji_1F455">T-shirt</string>
+     <!-- Spoken description for Unicode code point U+1F456 -->
+     <string name="spoken_emoji_1F456">Jeans</string>
+     <!-- Spoken description for Unicode code point U+1F457 -->
+     <string name="spoken_emoji_1F457">Dress</string>
+     <!-- Spoken description for Unicode code point U+1F458 -->
+     <string name="spoken_emoji_1F458">Kimono</string>
+     <!-- Spoken description for Unicode code point U+1F459 -->
+     <string name="spoken_emoji_1F459">Bikini</string>
+     <!-- Spoken description for Unicode code point U+1F45A -->
+     <string name="spoken_emoji_1F45A">Womans clothes</string>
+     <!-- Spoken description for Unicode code point U+1F45B -->
+     <string name="spoken_emoji_1F45B">Purse</string>
+     <!-- Spoken description for Unicode code point U+1F45C -->
+     <string name="spoken_emoji_1F45C">Handbag</string>
+     <!-- Spoken description for Unicode code point U+1F45D -->
+     <string name="spoken_emoji_1F45D">Pouch</string>
+     <!-- Spoken description for Unicode code point U+1F45E -->
+     <string name="spoken_emoji_1F45E">Mans shoe</string>
+     <!-- Spoken description for Unicode code point U+1F45F -->
+     <string name="spoken_emoji_1F45F">Athletic shoe</string>
+     <!-- Spoken description for Unicode code point U+1F460 -->
+     <string name="spoken_emoji_1F460">High-heeled shoe</string>
+     <!-- Spoken description for Unicode code point U+1F461 -->
+     <string name="spoken_emoji_1F461">Womans sandal</string>
+     <!-- Spoken description for Unicode code point U+1F462 -->
+     <string name="spoken_emoji_1F462">Womans boots</string>
+     <!-- Spoken description for Unicode code point U+1F463 -->
+     <string name="spoken_emoji_1F463">Footprints</string>
+     <!-- Spoken description for Unicode code point U+1F464 -->
+     <string name="spoken_emoji_1F464">Bust in silhouette</string>
+     <!-- Spoken description for Unicode code point U+1F465 -->
+     <string name="spoken_emoji_1F465">Busts in silhouette</string>
+     <!-- Spoken description for Unicode code point U+1F466 -->
+     <string name="spoken_emoji_1F466">Boy</string>
+     <!-- Spoken description for Unicode code point U+1F467 -->
+     <string name="spoken_emoji_1F467">Girl</string>
+     <!-- Spoken description for Unicode code point U+1F468 -->
+     <string name="spoken_emoji_1F468">Man</string>
+     <!-- Spoken description for Unicode code point U+1F469 -->
+     <string name="spoken_emoji_1F469">Woman</string>
+     <!-- Spoken description for Unicode code point U+1F46A -->
+     <string name="spoken_emoji_1F46A">Family</string>
+     <!-- Spoken description for Unicode code point U+1F46B -->
+     <string name="spoken_emoji_1F46B">Man and woman holding hands</string>
+     <!-- Spoken description for Unicode code point U+1F46C -->
+     <string name="spoken_emoji_1F46C">Two men holding hands</string>
+     <!-- Spoken description for Unicode code point U+1F46D -->
+     <string name="spoken_emoji_1F46D">Two women holding hands</string>
+     <!-- Spoken description for Unicode code point U+1F46E -->
+     <string name="spoken_emoji_1F46E">Police officer</string>
+     <!-- Spoken description for Unicode code point U+1F46F -->
+     <string name="spoken_emoji_1F46F">Woman with bunny ears</string>
+     <!-- Spoken description for Unicode code point U+1F470 -->
+     <string name="spoken_emoji_1F470">Bride with veil</string>
+     <!-- Spoken description for Unicode code point U+1F471 -->
+     <string name="spoken_emoji_1F471">Person with blond hair</string>
+     <!-- Spoken description for Unicode code point U+1F472 -->
+     <string name="spoken_emoji_1F472">Man with gua pi mao</string>
+     <!-- Spoken description for Unicode code point U+1F473 -->
+     <string name="spoken_emoji_1F473">Man with turban</string>
+     <!-- Spoken description for Unicode code point U+1F474 -->
+     <string name="spoken_emoji_1F474">Older man</string>
+     <!-- Spoken description for Unicode code point U+1F475 -->
+     <string name="spoken_emoji_1F475">Older woman</string>
+     <!-- Spoken description for Unicode code point U+1F476 -->
+     <string name="spoken_emoji_1F476">Baby</string>
+     <!-- Spoken description for Unicode code point U+1F477 -->
+     <string name="spoken_emoji_1F477">Construction worker</string>
+     <!-- Spoken description for Unicode code point U+1F478 -->
+     <string name="spoken_emoji_1F478">Princess</string>
+     <!-- Spoken description for Unicode code point U+1F479 -->
+     <string name="spoken_emoji_1F479">Japanese ogre</string>
+     <!-- Spoken description for Unicode code point U+1F47A -->
+     <string name="spoken_emoji_1F47A">Japanese goblin</string>
+     <!-- Spoken description for Unicode code point U+1F47B -->
+     <string name="spoken_emoji_1F47B">Ghost</string>
+     <!-- Spoken description for Unicode code point U+1F47C -->
+     <string name="spoken_emoji_1F47C">Baby angel</string>
+     <!-- Spoken description for Unicode code point U+1F47D -->
+     <string name="spoken_emoji_1F47D">Extraterrestrial alien</string>
+     <!-- Spoken description for Unicode code point U+1F47E -->
+     <string name="spoken_emoji_1F47E">Alien monster</string>
+     <!-- Spoken description for Unicode code point U+1F47F -->
+     <string name="spoken_emoji_1F47F">Imp</string>
+     <!-- Spoken description for Unicode code point U+1F480 -->
+     <string name="spoken_emoji_1F480">Skull</string>
+     <!-- Spoken description for Unicode code point U+1F481 -->
+     <string name="spoken_emoji_1F481">Information desk person</string>
+     <!-- Spoken description for Unicode code point U+1F482 -->
+     <string name="spoken_emoji_1F482">Guardsman</string>
+     <!-- Spoken description for Unicode code point U+1F483 -->
+     <string name="spoken_emoji_1F483">Dancer</string>
+     <!-- Spoken description for Unicode code point U+1F484 -->
+     <string name="spoken_emoji_1F484">Lipstick</string>
+     <!-- Spoken description for Unicode code point U+1F485 -->
+     <string name="spoken_emoji_1F485">Nail polish</string>
+     <!-- Spoken description for Unicode code point U+1F486 -->
+     <string name="spoken_emoji_1F486">Face massage</string>
+     <!-- Spoken description for Unicode code point U+1F487 -->
+     <string name="spoken_emoji_1F487">Haircut</string>
+     <!-- Spoken description for Unicode code point U+1F488 -->
+     <string name="spoken_emoji_1F488">Barber pole</string>
+     <!-- Spoken description for Unicode code point U+1F489 -->
+     <string name="spoken_emoji_1F489">Syringe</string>
+     <!-- Spoken description for Unicode code point U+1F48A -->
+     <string name="spoken_emoji_1F48A">Pill</string>
+     <!-- Spoken description for Unicode code point U+1F48B -->
+     <string name="spoken_emoji_1F48B">Kiss mark</string>
+     <!-- Spoken description for Unicode code point U+1F48C -->
+     <string name="spoken_emoji_1F48C">Love letter</string>
+     <!-- Spoken description for Unicode code point U+1F48D -->
+     <string name="spoken_emoji_1F48D">Ring</string>
+     <!-- Spoken description for Unicode code point U+1F48E -->
+     <string name="spoken_emoji_1F48E">Gem stone</string>
+     <!-- Spoken description for Unicode code point U+1F48F -->
+     <string name="spoken_emoji_1F48F">Kiss</string>
+     <!-- Spoken description for Unicode code point U+1F490 -->
+     <string name="spoken_emoji_1F490">Bouquet</string>
+     <!-- Spoken description for Unicode code point U+1F491 -->
+     <string name="spoken_emoji_1F491">Couple with heart</string>
+     <!-- Spoken description for Unicode code point U+1F492 -->
+     <string name="spoken_emoji_1F492">Wedding</string>
+     <!-- Spoken description for Unicode code point U+1F493 -->
+     <string name="spoken_emoji_1F493">Beating heart</string>
+     <!-- Spoken description for Unicode code point U+1F494 -->
+     <string name="spoken_emoji_1F494">Broken heart</string>
+     <!-- Spoken description for Unicode code point U+1F495 -->
+     <string name="spoken_emoji_1F495">Two hearts</string>
+     <!-- Spoken description for Unicode code point U+1F496 -->
+     <string name="spoken_emoji_1F496">Sparkling heart</string>
+     <!-- Spoken description for Unicode code point U+1F497 -->
+     <string name="spoken_emoji_1F497">Growing heart</string>
+     <!-- Spoken description for Unicode code point U+1F498 -->
+     <string name="spoken_emoji_1F498">Heart with arrow</string>
+     <!-- Spoken description for Unicode code point U+1F499 -->
+     <string name="spoken_emoji_1F499">Blue heart</string>
+     <!-- Spoken description for Unicode code point U+1F49A -->
+     <string name="spoken_emoji_1F49A">Green heart</string>
+     <!-- Spoken description for Unicode code point U+1F49B -->
+     <string name="spoken_emoji_1F49B">Yellow heart</string>
+     <!-- Spoken description for Unicode code point U+1F49C -->
+     <string name="spoken_emoji_1F49C">Purple heart</string>
+     <!-- Spoken description for Unicode code point U+1F49D -->
+     <string name="spoken_emoji_1F49D">Heart with ribbon</string>
+     <!-- Spoken description for Unicode code point U+1F49E -->
+     <string name="spoken_emoji_1F49E">Revolving hearts</string>
+     <!-- Spoken description for Unicode code point U+1F49F -->
+     <string name="spoken_emoji_1F49F">Heart decoration</string>
+     <!-- Spoken description for Unicode code point U+1F4A0 -->
+     <string name="spoken_emoji_1F4A0">Diamond shape with a dot inside</string>
+     <!-- Spoken description for Unicode code point U+1F4A1 -->
+     <string name="spoken_emoji_1F4A1">Electric light bulb</string>
+     <!-- Spoken description for Unicode code point U+1F4A2 -->
+     <string name="spoken_emoji_1F4A2">Anger symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4A3 -->
+     <string name="spoken_emoji_1F4A3">Bomb</string>
+     <!-- Spoken description for Unicode code point U+1F4A4 -->
+     <string name="spoken_emoji_1F4A4">Sleeping symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4A5 -->
+     <string name="spoken_emoji_1F4A5">Collision symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4A6 -->
+     <string name="spoken_emoji_1F4A6">Splashing sweat symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4A7 -->
+     <string name="spoken_emoji_1F4A7">Droplet</string>
+     <!-- Spoken description for Unicode code point U+1F4A8 -->
+     <string name="spoken_emoji_1F4A8">Dash symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4A9 -->
+     <string name="spoken_emoji_1F4A9">Pile of poo</string>
+     <!-- Spoken description for Unicode code point U+1F4AA -->
+     <string name="spoken_emoji_1F4AA">Flexed biceps</string>
+     <!-- Spoken description for Unicode code point U+1F4AB -->
+     <string name="spoken_emoji_1F4AB">Dizzy symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4AC -->
+     <string name="spoken_emoji_1F4AC">Speech balloon</string>
+     <!-- Spoken description for Unicode code point U+1F4AD -->
+     <string name="spoken_emoji_1F4AD">Thought balloon</string>
+     <!-- Spoken description for Unicode code point U+1F4AE -->
+     <string name="spoken_emoji_1F4AE">White flower</string>
+     <!-- Spoken description for Unicode code point U+1F4AF -->
+     <string name="spoken_emoji_1F4AF">Hundred points symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4B0 -->
+     <string name="spoken_emoji_1F4B0">Money bag</string>
+     <!-- Spoken description for Unicode code point U+1F4B1 -->
+     <string name="spoken_emoji_1F4B1">Currency exchange</string>
+     <!-- Spoken description for Unicode code point U+1F4B2 -->
+     <string name="spoken_emoji_1F4B2">Heavy dollar sign</string>
+     <!-- Spoken description for Unicode code point U+1F4B3 -->
+     <string name="spoken_emoji_1F4B3">Credit card</string>
+     <!-- Spoken description for Unicode code point U+1F4B4 -->
+     <string name="spoken_emoji_1F4B4">Banknote with yen sign</string>
+     <!-- Spoken description for Unicode code point U+1F4B5 -->
+     <string name="spoken_emoji_1F4B5">Banknote with dollar sign</string>
+     <!-- Spoken description for Unicode code point U+1F4B6 -->
+     <string name="spoken_emoji_1F4B6">Banknote with euro sign</string>
+     <!-- Spoken description for Unicode code point U+1F4B7 -->
+     <string name="spoken_emoji_1F4B7">Banknote with pound sign</string>
+     <!-- Spoken description for Unicode code point U+1F4B8 -->
+     <string name="spoken_emoji_1F4B8">Money with wings</string>
+     <!-- Spoken description for Unicode code point U+1F4B9 -->
+     <string name="spoken_emoji_1F4B9">Chart with upwards trend and yen sign</string>
+     <!-- Spoken description for Unicode code point U+1F4BA -->
+     <string name="spoken_emoji_1F4BA">Seat</string>
+     <!-- Spoken description for Unicode code point U+1F4BB -->
+     <string name="spoken_emoji_1F4BB">Personal computer</string>
+     <!-- Spoken description for Unicode code point U+1F4BC -->
+     <string name="spoken_emoji_1F4BC">Briefcase</string>
+     <!-- Spoken description for Unicode code point U+1F4BD -->
+     <string name="spoken_emoji_1F4BD">Minidisc</string>
+     <!-- Spoken description for Unicode code point U+1F4BE -->
+     <string name="spoken_emoji_1F4BE">Floppy disk</string>
+     <!-- Spoken description for Unicode code point U+1F4BF -->
+     <string name="spoken_emoji_1F4BF">Optical disc</string>
+     <!-- Spoken description for Unicode code point U+1F4C0 -->
+     <string name="spoken_emoji_1F4C0">Dvd</string>
+     <!-- Spoken description for Unicode code point U+1F4C1 -->
+     <string name="spoken_emoji_1F4C1">File folder</string>
+     <!-- Spoken description for Unicode code point U+1F4C2 -->
+     <string name="spoken_emoji_1F4C2">Open file folder</string>
+     <!-- Spoken description for Unicode code point U+1F4C3 -->
+     <string name="spoken_emoji_1F4C3">Page with curl</string>
+     <!-- Spoken description for Unicode code point U+1F4C4 -->
+     <string name="spoken_emoji_1F4C4">Page facing up</string>
+     <!-- Spoken description for Unicode code point U+1F4C5 -->
+     <string name="spoken_emoji_1F4C5">Calendar</string>
+     <!-- Spoken description for Unicode code point U+1F4C6 -->
+     <string name="spoken_emoji_1F4C6">Tear-off calendar</string>
+     <!-- Spoken description for Unicode code point U+1F4C7 -->
+     <string name="spoken_emoji_1F4C7">Card index</string>
+     <!-- Spoken description for Unicode code point U+1F4C8 -->
+     <string name="spoken_emoji_1F4C8">Chart with upwards trend</string>
+     <!-- Spoken description for Unicode code point U+1F4C9 -->
+     <string name="spoken_emoji_1F4C9">Chart with downwards trend</string>
+     <!-- Spoken description for Unicode code point U+1F4CA -->
+     <string name="spoken_emoji_1F4CA">Bar chart</string>
+     <!-- Spoken description for Unicode code point U+1F4CB -->
+     <string name="spoken_emoji_1F4CB">Clipboard</string>
+     <!-- Spoken description for Unicode code point U+1F4CC -->
+     <string name="spoken_emoji_1F4CC">Pushpin</string>
+     <!-- Spoken description for Unicode code point U+1F4CD -->
+     <string name="spoken_emoji_1F4CD">Round pushpin</string>
+     <!-- Spoken description for Unicode code point U+1F4CE -->
+     <string name="spoken_emoji_1F4CE">Paperclip</string>
+     <!-- Spoken description for Unicode code point U+1F4CF -->
+     <string name="spoken_emoji_1F4CF">Straight ruler</string>
+     <!-- Spoken description for Unicode code point U+1F4D0 -->
+     <string name="spoken_emoji_1F4D0">Triangular ruler</string>
+     <!-- Spoken description for Unicode code point U+1F4D1 -->
+     <string name="spoken_emoji_1F4D1">Bookmark tabs</string>
+     <!-- Spoken description for Unicode code point U+1F4D2 -->
+     <string name="spoken_emoji_1F4D2">Ledger</string>
+     <!-- Spoken description for Unicode code point U+1F4D3 -->
+     <string name="spoken_emoji_1F4D3">Notebook</string>
+     <!-- Spoken description for Unicode code point U+1F4D4 -->
+     <string name="spoken_emoji_1F4D4">Notebook with decorative cover</string>
+     <!-- Spoken description for Unicode code point U+1F4D5 -->
+     <string name="spoken_emoji_1F4D5">Closed book</string>
+     <!-- Spoken description for Unicode code point U+1F4D6 -->
+     <string name="spoken_emoji_1F4D6">Open book</string>
+     <!-- Spoken description for Unicode code point U+1F4D7 -->
+     <string name="spoken_emoji_1F4D7">Green book</string>
+     <!-- Spoken description for Unicode code point U+1F4D8 -->
+     <string name="spoken_emoji_1F4D8">Blue book</string>
+     <!-- Spoken description for Unicode code point U+1F4D9 -->
+     <string name="spoken_emoji_1F4D9">Orange book</string>
+     <!-- Spoken description for Unicode code point U+1F4DA -->
+     <string name="spoken_emoji_1F4DA">Books</string>
+     <!-- Spoken description for Unicode code point U+1F4DB -->
+     <string name="spoken_emoji_1F4DB">Name badge</string>
+     <!-- Spoken description for Unicode code point U+1F4DC -->
+     <string name="spoken_emoji_1F4DC">Scroll</string>
+     <!-- Spoken description for Unicode code point U+1F4DD -->
+     <string name="spoken_emoji_1F4DD">Memo</string>
+     <!-- Spoken description for Unicode code point U+1F4DE -->
+     <string name="spoken_emoji_1F4DE">Telephone receiver</string>
+     <!-- Spoken description for Unicode code point U+1F4DF -->
+     <string name="spoken_emoji_1F4DF">Pager</string>
+     <!-- Spoken description for Unicode code point U+1F4E0 -->
+     <string name="spoken_emoji_1F4E0">Fax machine</string>
+     <!-- Spoken description for Unicode code point U+1F4E1 -->
+     <string name="spoken_emoji_1F4E1">Satellite antenna</string>
+     <!-- Spoken description for Unicode code point U+1F4E2 -->
+     <string name="spoken_emoji_1F4E2">Public address loudspeaker</string>
+     <!-- Spoken description for Unicode code point U+1F4E3 -->
+     <string name="spoken_emoji_1F4E3">Cheering megaphone</string>
+     <!-- Spoken description for Unicode code point U+1F4E4 -->
+     <string name="spoken_emoji_1F4E4">Outbox tray</string>
+     <!-- Spoken description for Unicode code point U+1F4E5 -->
+     <string name="spoken_emoji_1F4E5">Inbox tray</string>
+     <!-- Spoken description for Unicode code point U+1F4E6 -->
+     <string name="spoken_emoji_1F4E6">Package</string>
+     <!-- Spoken description for Unicode code point U+1F4E7 -->
+     <string name="spoken_emoji_1F4E7">E-mail symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4E8 -->
+     <string name="spoken_emoji_1F4E8">Incoming envelope</string>
+     <!-- Spoken description for Unicode code point U+1F4E9 -->
+     <string name="spoken_emoji_1F4E9">Envelope with downwards arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F4EA -->
+     <string name="spoken_emoji_1F4EA">Closed mailbox with lowered flag</string>
+     <!-- Spoken description for Unicode code point U+1F4EB -->
+     <string name="spoken_emoji_1F4EB">Closed mailbox with raised flag</string>
+     <!-- Spoken description for Unicode code point U+1F4EC -->
+     <string name="spoken_emoji_1F4EC">Open mailbox with raised flag</string>
+     <!-- Spoken description for Unicode code point U+1F4ED -->
+     <string name="spoken_emoji_1F4ED">Open mailbox with lowered flag</string>
+     <!-- Spoken description for Unicode code point U+1F4EE -->
+     <string name="spoken_emoji_1F4EE">Postbox</string>
+     <!-- Spoken description for Unicode code point U+1F4EF -->
+     <string name="spoken_emoji_1F4EF">Postal horn</string>
+     <!-- Spoken description for Unicode code point U+1F4F0 -->
+     <string name="spoken_emoji_1F4F0">Newspaper</string>
+     <!-- Spoken description for Unicode code point U+1F4F1 -->
+     <string name="spoken_emoji_1F4F1">Mobile phone</string>
+     <!-- Spoken description for Unicode code point U+1F4F2 -->
+     <string name="spoken_emoji_1F4F2">Mobile phone with rightwards arrow at left</string>
+     <!-- Spoken description for Unicode code point U+1F4F3 -->
+     <string name="spoken_emoji_1F4F3">Vibration mode</string>
+     <!-- Spoken description for Unicode code point U+1F4F4 -->
+     <string name="spoken_emoji_1F4F4">Mobile phone off</string>
+     <!-- Spoken description for Unicode code point U+1F4F5 -->
+     <string name="spoken_emoji_1F4F5">No mobile phones</string>
+     <!-- Spoken description for Unicode code point U+1F4F6 -->
+     <string name="spoken_emoji_1F4F6">Antenna with bars</string>
+     <!-- Spoken description for Unicode code point U+1F4F7 -->
+     <string name="spoken_emoji_1F4F7">Camera</string>
+     <!-- Spoken description for Unicode code point U+1F4F9 -->
+     <string name="spoken_emoji_1F4F9">Video camera</string>
+     <!-- Spoken description for Unicode code point U+1F4FA -->
+     <string name="spoken_emoji_1F4FA">Television</string>
+     <!-- Spoken description for Unicode code point U+1F4FB -->
+     <string name="spoken_emoji_1F4FB">Radio</string>
+     <!-- Spoken description for Unicode code point U+1F4FC -->
+     <string name="spoken_emoji_1F4FC">Videocassette</string>
+     <!-- Spoken description for Unicode code point U+1F500 -->
+     <string name="spoken_emoji_1F500">Twisted rightwards arrows</string>
+     <!-- Spoken description for Unicode code point U+1F501 -->
+     <string name="spoken_emoji_1F501">Clockwise rightwards and leftwards open circle arrows</string>
+     <!-- Spoken description for Unicode code point U+1F502 -->
+     <string name="spoken_emoji_1F502">Clockwise rightwards and leftwards open circle arrows with circled one overlay</string>
+     <!-- Spoken description for Unicode code point U+1F503 -->
+     <string name="spoken_emoji_1F503">Clockwise downwards and upwards open circle arrows</string>
+     <!-- Spoken description for Unicode code point U+1F504 -->
+     <string name="spoken_emoji_1F504">Anticlockwise downwards and upwards open circle arrows</string>
+     <!-- Spoken description for Unicode code point U+1F505 -->
+     <string name="spoken_emoji_1F505">Low brightness symbol</string>
+     <!-- Spoken description for Unicode code point U+1F506 -->
+     <string name="spoken_emoji_1F506">High brightness symbol</string>
+     <!-- Spoken description for Unicode code point U+1F507 -->
+     <string name="spoken_emoji_1F507">Speaker with cancellation stroke</string>
+     <!-- Spoken description for Unicode code point U+1F508 -->
+     <string name="spoken_emoji_1F508">Speaker</string>
+     <!-- Spoken description for Unicode code point U+1F509 -->
+     <string name="spoken_emoji_1F509">Speaker with one sound wave</string>
+     <!-- Spoken description for Unicode code point U+1F50A -->
+     <string name="spoken_emoji_1F50A">Speaker with three sound waves</string>
+     <!-- Spoken description for Unicode code point U+1F50B -->
+     <string name="spoken_emoji_1F50B">Battery</string>
+     <!-- Spoken description for Unicode code point U+1F50C -->
+     <string name="spoken_emoji_1F50C">Electric plug</string>
+     <!-- Spoken description for Unicode code point U+1F50D -->
+     <string name="spoken_emoji_1F50D">Left-pointing magnifying glass</string>
+     <!-- Spoken description for Unicode code point U+1F50E -->
+     <string name="spoken_emoji_1F50E">Right-pointing magnifying glass</string>
+     <!-- Spoken description for Unicode code point U+1F50F -->
+     <string name="spoken_emoji_1F50F">Lock with ink pen</string>
+     <!-- Spoken description for Unicode code point U+1F510 -->
+     <string name="spoken_emoji_1F510">Closed lock with key</string>
+     <!-- Spoken description for Unicode code point U+1F511 -->
+     <string name="spoken_emoji_1F511">Key</string>
+     <!-- Spoken description for Unicode code point U+1F512 -->
+     <string name="spoken_emoji_1F512">Lock</string>
+     <!-- Spoken description for Unicode code point U+1F513 -->
+     <string name="spoken_emoji_1F513">Open lock</string>
+     <!-- Spoken description for Unicode code point U+1F514 -->
+     <string name="spoken_emoji_1F514">Bell</string>
+     <!-- Spoken description for Unicode code point U+1F515 -->
+     <string name="spoken_emoji_1F515">Bell with cancellation stroke</string>
+     <!-- Spoken description for Unicode code point U+1F516 -->
+     <string name="spoken_emoji_1F516">Bookmark</string>
+     <!-- Spoken description for Unicode code point U+1F517 -->
+     <string name="spoken_emoji_1F517">Link symbol</string>
+     <!-- Spoken description for Unicode code point U+1F518 -->
+     <string name="spoken_emoji_1F518">Radio button</string>
+     <!-- Spoken description for Unicode code point U+1F519 -->
+     <string name="spoken_emoji_1F519">Back with leftwards arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F51A -->
+     <string name="spoken_emoji_1F51A">End with leftwards arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F51B -->
+     <string name="spoken_emoji_1F51B">On with exclamation mark with left right arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F51C -->
+     <string name="spoken_emoji_1F51C">Soon with rightwards arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F51D -->
+     <string name="spoken_emoji_1F51D">Top with upwards arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F51E -->
+     <string name="spoken_emoji_1F51E">No one under eighteen symbol</string>
+     <!-- Spoken description for Unicode code point U+1F51F -->
+     <string name="spoken_emoji_1F51F">Keycap ten</string>
+     <!-- Spoken description for Unicode code point U+1F520 -->
+     <string name="spoken_emoji_1F520">Input symbol for latin capital letters</string>
+     <!-- Spoken description for Unicode code point U+1F521 -->
+     <string name="spoken_emoji_1F521">Input symbol for latin small letters</string>
+     <!-- Spoken description for Unicode code point U+1F522 -->
+     <string name="spoken_emoji_1F522">Input symbol for numbers</string>
+     <!-- Spoken description for Unicode code point U+1F523 -->
+     <string name="spoken_emoji_1F523">Input symbol for symbols</string>
+     <!-- Spoken description for Unicode code point U+1F524 -->
+     <string name="spoken_emoji_1F524">Input symbol for latin letters</string>
+     <!-- Spoken description for Unicode code point U+1F525 -->
+     <string name="spoken_emoji_1F525">Fire</string>
+     <!-- Spoken description for Unicode code point U+1F526 -->
+     <string name="spoken_emoji_1F526">Electric torch</string>
+     <!-- Spoken description for Unicode code point U+1F527 -->
+     <string name="spoken_emoji_1F527">Wrench</string>
+     <!-- Spoken description for Unicode code point U+1F528 -->
+     <string name="spoken_emoji_1F528">Hammer</string>
+     <!-- Spoken description for Unicode code point U+1F529 -->
+     <string name="spoken_emoji_1F529">Nut and bolt</string>
+     <!-- Spoken description for Unicode code point U+1F52A -->
+     <string name="spoken_emoji_1F52A">Hocho</string>
+     <!-- Spoken description for Unicode code point U+1F52B -->
+     <string name="spoken_emoji_1F52B">Pistol</string>
+     <!-- Spoken description for Unicode code point U+1F52C -->
+     <string name="spoken_emoji_1F52C">Microscope</string>
+     <!-- Spoken description for Unicode code point U+1F52D -->
+     <string name="spoken_emoji_1F52D">Telescope</string>
+     <!-- Spoken description for Unicode code point U+1F52E -->
+     <string name="spoken_emoji_1F52E">Crystal ball</string>
+     <!-- Spoken description for Unicode code point U+1F52F -->
+     <string name="spoken_emoji_1F52F">Six pointed star with middle dot</string>
+     <!-- Spoken description for Unicode code point U+1F530 -->
+     <string name="spoken_emoji_1F530">Japanese symbol for beginner</string>
+     <!-- Spoken description for Unicode code point U+1F531 -->
+     <string name="spoken_emoji_1F531">Trident emblem</string>
+     <!-- Spoken description for Unicode code point U+1F532 -->
+     <string name="spoken_emoji_1F532">Black square button</string>
+     <!-- Spoken description for Unicode code point U+1F533 -->
+     <string name="spoken_emoji_1F533">White square button</string>
+     <!-- Spoken description for Unicode code point U+1F534 -->
+     <string name="spoken_emoji_1F534">Large red circle</string>
+     <!-- Spoken description for Unicode code point U+1F535 -->
+     <string name="spoken_emoji_1F535">Large blue circle</string>
+     <!-- Spoken description for Unicode code point U+1F536 -->
+     <string name="spoken_emoji_1F536">Large orange diamond</string>
+     <!-- Spoken description for Unicode code point U+1F537 -->
+     <string name="spoken_emoji_1F537">Large blue diamond</string>
+     <!-- Spoken description for Unicode code point U+1F538 -->
+     <string name="spoken_emoji_1F538">Small orange diamond</string>
+     <!-- Spoken description for Unicode code point U+1F539 -->
+     <string name="spoken_emoji_1F539">Small blue diamond</string>
+     <!-- Spoken description for Unicode code point U+1F53A -->
+     <string name="spoken_emoji_1F53A">Up-pointing red triangle</string>
+     <!-- Spoken description for Unicode code point U+1F53B -->
+     <string name="spoken_emoji_1F53B">Down-pointing red triangle</string>
+     <!-- Spoken description for Unicode code point U+1F53C -->
+     <string name="spoken_emoji_1F53C">Up-pointing small red triangle</string>
+     <!-- Spoken description for Unicode code point U+1F53D -->
+     <string name="spoken_emoji_1F53D">Down-pointing small red triangle</string>
+     <!-- Spoken description for Unicode code point U+1F550 -->
+     <string name="spoken_emoji_1F550">Clock face one oclock</string>
+     <!-- Spoken description for Unicode code point U+1F551 -->
+     <string name="spoken_emoji_1F551">Clock face two oclock</string>
+     <!-- Spoken description for Unicode code point U+1F552 -->
+     <string name="spoken_emoji_1F552">Clock face three oclock</string>
+     <!-- Spoken description for Unicode code point U+1F553 -->
+     <string name="spoken_emoji_1F553">Clock face four oclock</string>
+     <!-- Spoken description for Unicode code point U+1F554 -->
+     <string name="spoken_emoji_1F554">Clock face five oclock</string>
+     <!-- Spoken description for Unicode code point U+1F555 -->
+     <string name="spoken_emoji_1F555">Clock face six oclock</string>
+     <!-- Spoken description for Unicode code point U+1F556 -->
+     <string name="spoken_emoji_1F556">Clock face seven oclock</string>
+     <!-- Spoken description for Unicode code point U+1F557 -->
+     <string name="spoken_emoji_1F557">Clock face eight oclock</string>
+     <!-- Spoken description for Unicode code point U+1F558 -->
+     <string name="spoken_emoji_1F558">Clock face nine oclock</string>
+     <!-- Spoken description for Unicode code point U+1F559 -->
+     <string name="spoken_emoji_1F559">Clock face ten oclock</string>
+     <!-- Spoken description for Unicode code point U+1F55A -->
+     <string name="spoken_emoji_1F55A">Clock face eleven oclock</string>
+     <!-- Spoken description for Unicode code point U+1F55B -->
+     <string name="spoken_emoji_1F55B">Clock face twelve oclock</string>
+     <!-- Spoken description for Unicode code point U+1F55C -->
+     <string name="spoken_emoji_1F55C">Clock face one-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F55D -->
+     <string name="spoken_emoji_1F55D">Clock face two-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F55E -->
+     <string name="spoken_emoji_1F55E">Clock face three-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F55F -->
+     <string name="spoken_emoji_1F55F">Clock face four-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F560 -->
+     <string name="spoken_emoji_1F560">Clock face five-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F561 -->
+     <string name="spoken_emoji_1F561">Clock face six-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F562 -->
+     <string name="spoken_emoji_1F562">Clock face seven-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F563 -->
+     <string name="spoken_emoji_1F563">Clock face eight-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F564 -->
+     <string name="spoken_emoji_1F564">Clock face nine-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F565 -->
+     <string name="spoken_emoji_1F565">Clock face ten-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F566 -->
+     <string name="spoken_emoji_1F566">Clock face eleven-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F567 -->
+     <string name="spoken_emoji_1F567">Clock face twelve-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F5FB -->
+     <string name="spoken_emoji_1F5FB">Mount fuji</string>
+     <!-- Spoken description for Unicode code point U+1F5FC -->
+     <string name="spoken_emoji_1F5FC">Tokyo tower</string>
+     <!-- Spoken description for Unicode code point U+1F5FD -->
+     <string name="spoken_emoji_1F5FD">Statue of liberty</string>
+     <!-- Spoken description for Unicode code point U+1F5FE -->
+     <string name="spoken_emoji_1F5FE">Silhouette of japan</string>
+     <!-- Spoken description for Unicode code point U+1F5FF -->
+     <string name="spoken_emoji_1F5FF">Moyai</string>
+     <!-- Spoken description for Unicode code point U+1F600 -->
+     <string name="spoken_emoji_1F600">Grinning face</string>
+     <!-- Spoken description for Unicode code point U+1F601 -->
+     <string name="spoken_emoji_1F601">Grinning face with smiling eyes</string>
+     <!-- Spoken description for Unicode code point U+1F602 -->
+     <string name="spoken_emoji_1F602">Face with tears of joy</string>
+     <!-- Spoken description for Unicode code point U+1F603 -->
+     <string name="spoken_emoji_1F603">Smiling face with open mouth</string>
+     <!-- Spoken description for Unicode code point U+1F604 -->
+     <string name="spoken_emoji_1F604">Smiling face with open mouth and smiling eyes</string>
+     <!-- Spoken description for Unicode code point U+1F605 -->
+     <string name="spoken_emoji_1F605">Smiling face with open mouth and cold sweat</string>
+     <!-- Spoken description for Unicode code point U+1F606 -->
+     <string name="spoken_emoji_1F606">Smiling face with open mouth and tightly-closed eyes</string>
+     <!-- Spoken description for Unicode code point U+1F607 -->
+     <string name="spoken_emoji_1F607">Smiling face with halo</string>
+     <!-- Spoken description for Unicode code point U+1F608 -->
+     <string name="spoken_emoji_1F608">Smiling face with horns</string>
+     <!-- Spoken description for Unicode code point U+1F609 -->
+     <string name="spoken_emoji_1F609">Winking face</string>
+     <!-- Spoken description for Unicode code point U+1F60A -->
+     <string name="spoken_emoji_1F60A">Smiling face with smiling eyes</string>
+     <!-- Spoken description for Unicode code point U+1F60B -->
+     <string name="spoken_emoji_1F60B">Face savouring delicious food</string>
+     <!-- Spoken description for Unicode code point U+1F60C -->
+     <string name="spoken_emoji_1F60C">Relieved face</string>
+     <!-- Spoken description for Unicode code point U+1F60D -->
+     <string name="spoken_emoji_1F60D">Smiling face with heart-shaped eyes</string>
+     <!-- Spoken description for Unicode code point U+1F60E -->
+     <string name="spoken_emoji_1F60E">Smiling face with sunglasses</string>
+     <!-- Spoken description for Unicode code point U+1F60F -->
+     <string name="spoken_emoji_1F60F">Smirking face</string>
+     <!-- Spoken description for Unicode code point U+1F610 -->
+     <string name="spoken_emoji_1F610">Neutral face</string>
+     <!-- Spoken description for Unicode code point U+1F611 -->
+     <string name="spoken_emoji_1F611">Expressionless face</string>
+     <!-- Spoken description for Unicode code point U+1F612 -->
+     <string name="spoken_emoji_1F612">Unamused face</string>
+     <!-- Spoken description for Unicode code point U+1F613 -->
+     <string name="spoken_emoji_1F613">Face with cold sweat</string>
+     <!-- Spoken description for Unicode code point U+1F614 -->
+     <string name="spoken_emoji_1F614">Pensive face</string>
+     <!-- Spoken description for Unicode code point U+1F615 -->
+     <string name="spoken_emoji_1F615">Confused face</string>
+     <!-- Spoken description for Unicode code point U+1F616 -->
+     <string name="spoken_emoji_1F616">Confounded face</string>
+     <!-- Spoken description for Unicode code point U+1F617 -->
+     <string name="spoken_emoji_1F617">Kissing face</string>
+     <!-- Spoken description for Unicode code point U+1F618 -->
+     <string name="spoken_emoji_1F618">Face throwing a kiss</string>
+     <!-- Spoken description for Unicode code point U+1F619 -->
+     <string name="spoken_emoji_1F619">Kissing face with smiling eyes</string>
+     <!-- Spoken description for Unicode code point U+1F61A -->
+     <string name="spoken_emoji_1F61A">Kissing face with closed eyes</string>
+     <!-- Spoken description for Unicode code point U+1F61B -->
+     <string name="spoken_emoji_1F61B">Face with stuck-out tongue</string>
+     <!-- Spoken description for Unicode code point U+1F61C -->
+     <string name="spoken_emoji_1F61C">Face with stuck-out tongue and winking eye</string>
+     <!-- Spoken description for Unicode code point U+1F61D -->
+     <string name="spoken_emoji_1F61D">Face with stuck-out tongue and tightly-closed eyes</string>
+     <!-- Spoken description for Unicode code point U+1F61E -->
+     <string name="spoken_emoji_1F61E">Disappointed face</string>
+     <!-- Spoken description for Unicode code point U+1F61F -->
+     <string name="spoken_emoji_1F61F">Worried face</string>
+     <!-- Spoken description for Unicode code point U+1F620 -->
+     <string name="spoken_emoji_1F620">Angry face</string>
+     <!-- Spoken description for Unicode code point U+1F621 -->
+     <string name="spoken_emoji_1F621">Pouting face</string>
+     <!-- Spoken description for Unicode code point U+1F622 -->
+     <string name="spoken_emoji_1F622">Crying face</string>
+     <!-- Spoken description for Unicode code point U+1F623 -->
+     <string name="spoken_emoji_1F623">Persevering face</string>
+     <!-- Spoken description for Unicode code point U+1F624 -->
+     <string name="spoken_emoji_1F624">Face with look of triumph</string>
+     <!-- Spoken description for Unicode code point U+1F625 -->
+     <string name="spoken_emoji_1F625">Disappointed but relieved face</string>
+     <!-- Spoken description for Unicode code point U+1F626 -->
+     <string name="spoken_emoji_1F626">Frowning face with open mouth</string>
+     <!-- Spoken description for Unicode code point U+1F627 -->
+     <string name="spoken_emoji_1F627">Anguished face</string>
+     <!-- Spoken description for Unicode code point U+1F628 -->
+     <string name="spoken_emoji_1F628">Fearful face</string>
+     <!-- Spoken description for Unicode code point U+1F629 -->
+     <string name="spoken_emoji_1F629">Weary face</string>
+     <!-- Spoken description for Unicode code point U+1F62A -->
+     <string name="spoken_emoji_1F62A">Sleepy face</string>
+     <!-- Spoken description for Unicode code point U+1F62B -->
+     <string name="spoken_emoji_1F62B">Tired face</string>
+     <!-- Spoken description for Unicode code point U+1F62C -->
+     <string name="spoken_emoji_1F62C">Grimacing face</string>
+     <!-- Spoken description for Unicode code point U+1F62D -->
+     <string name="spoken_emoji_1F62D">Loudly crying face</string>
+     <!-- Spoken description for Unicode code point U+1F62E -->
+     <string name="spoken_emoji_1F62E">Face with open mouth</string>
+     <!-- Spoken description for Unicode code point U+1F62F -->
+     <string name="spoken_emoji_1F62F">Hushed face</string>
+     <!-- Spoken description for Unicode code point U+1F630 -->
+     <string name="spoken_emoji_1F630">Face with open mouth and cold sweat</string>
+     <!-- Spoken description for Unicode code point U+1F631 -->
+     <string name="spoken_emoji_1F631">Face screaming in fear</string>
+     <!-- Spoken description for Unicode code point U+1F632 -->
+     <string name="spoken_emoji_1F632">Astonished face</string>
+     <!-- Spoken description for Unicode code point U+1F633 -->
+     <string name="spoken_emoji_1F633">Flushed face</string>
+     <!-- Spoken description for Unicode code point U+1F634 -->
+     <string name="spoken_emoji_1F634">Sleeping face</string>
+     <!-- Spoken description for Unicode code point U+1F635 -->
+     <string name="spoken_emoji_1F635">Dizzy face</string>
+     <!-- Spoken description for Unicode code point U+1F636 -->
+     <string name="spoken_emoji_1F636">Face without mouth</string>
+     <!-- Spoken description for Unicode code point U+1F637 -->
+     <string name="spoken_emoji_1F637">Face with medical mask</string>
+     <!-- Spoken description for Unicode code point U+1F638 -->
+     <string name="spoken_emoji_1F638">Grinning cat face with smiling eyes</string>
+     <!-- Spoken description for Unicode code point U+1F639 -->
+     <string name="spoken_emoji_1F639">Cat face with tears of joy</string>
+     <!-- Spoken description for Unicode code point U+1F63A -->
+     <string name="spoken_emoji_1F63A">Smiling cat face with open mouth</string>
+     <!-- Spoken description for Unicode code point U+1F63B -->
+     <string name="spoken_emoji_1F63B">Smiling cat face with heart-shaped eyes</string>
+     <!-- Spoken description for Unicode code point U+1F63C -->
+     <string name="spoken_emoji_1F63C">Cat face with wry smile</string>
+     <!-- Spoken description for Unicode code point U+1F63D -->
+     <string name="spoken_emoji_1F63D">Kissing cat face with closed eyes</string>
+     <!-- Spoken description for Unicode code point U+1F63E -->
+     <string name="spoken_emoji_1F63E">Pouting cat face</string>
+     <!-- Spoken description for Unicode code point U+1F63F -->
+     <string name="spoken_emoji_1F63F">Crying cat face</string>
+     <!-- Spoken description for Unicode code point U+1F640 -->
+     <string name="spoken_emoji_1F640">Weary cat face</string>
+     <!-- Spoken description for Unicode code point U+1F645 -->
+     <string name="spoken_emoji_1F645">Face with no good gesture</string>
+     <!-- Spoken description for Unicode code point U+1F646 -->
+     <string name="spoken_emoji_1F646">Face with ok gesture</string>
+     <!-- Spoken description for Unicode code point U+1F647 -->
+     <string name="spoken_emoji_1F647">Person bowing deeply</string>
+     <!-- Spoken description for Unicode code point U+1F648 -->
+     <string name="spoken_emoji_1F648">See-no-evil monkey</string>
+     <!-- Spoken description for Unicode code point U+1F649 -->
+     <string name="spoken_emoji_1F649">Hear-no-evil monkey</string>
+     <!-- Spoken description for Unicode code point U+1F64A -->
+     <string name="spoken_emoji_1F64A">Speak-no-evil monkey</string>
+     <!-- Spoken description for Unicode code point U+1F64B -->
+     <string name="spoken_emoji_1F64B">Happy person raising one hand</string>
+     <!-- Spoken description for Unicode code point U+1F64C -->
+     <string name="spoken_emoji_1F64C">Person raising both hands in celebration</string>
+     <!-- Spoken description for Unicode code point U+1F64D -->
+     <string name="spoken_emoji_1F64D">Person frowning</string>
+     <!-- Spoken description for Unicode code point U+1F64E -->
+     <string name="spoken_emoji_1F64E">Person with pouting face</string>
+     <!-- Spoken description for Unicode code point U+1F64F -->
+     <string name="spoken_emoji_1F64F">Person with folded hands</string>
+     <!-- Spoken description for Unicode code point U+1F680 -->
+     <string name="spoken_emoji_1F680">Rocket</string>
+     <!-- Spoken description for Unicode code point U+1F681 -->
+     <string name="spoken_emoji_1F681">Helicopter</string>
+     <!-- Spoken description for Unicode code point U+1F682 -->
+     <string name="spoken_emoji_1F682">Steam locomotive</string>
+     <!-- Spoken description for Unicode code point U+1F683 -->
+     <string name="spoken_emoji_1F683">Railway car</string>
+     <!-- Spoken description for Unicode code point U+1F684 -->
+     <string name="spoken_emoji_1F684">High-speed train</string>
+     <!-- Spoken description for Unicode code point U+1F685 -->
+     <string name="spoken_emoji_1F685">High-speed train with bullet nose</string>
+     <!-- Spoken description for Unicode code point U+1F686 -->
+     <string name="spoken_emoji_1F686">Train</string>
+     <!-- Spoken description for Unicode code point U+1F687 -->
+     <string name="spoken_emoji_1F687">Metro</string>
+     <!-- Spoken description for Unicode code point U+1F688 -->
+     <string name="spoken_emoji_1F688">Light rail</string>
+     <!-- Spoken description for Unicode code point U+1F689 -->
+     <string name="spoken_emoji_1F689">Station</string>
+     <!-- Spoken description for Unicode code point U+1F68A -->
+     <string name="spoken_emoji_1F68A">Tram</string>
+     <!-- Spoken description for Unicode code point U+1F68B -->
+     <string name="spoken_emoji_1F68B">Tram car</string>
+     <!-- Spoken description for Unicode code point U+1F68C -->
+     <string name="spoken_emoji_1F68C">Bus</string>
+     <!-- Spoken description for Unicode code point U+1F68D -->
+     <string name="spoken_emoji_1F68D">Oncoming bus</string>
+     <!-- Spoken description for Unicode code point U+1F68E -->
+     <string name="spoken_emoji_1F68E">Trolleybus</string>
+     <!-- Spoken description for Unicode code point U+1F68F -->
+     <string name="spoken_emoji_1F68F">Bus stop</string>
+     <!-- Spoken description for Unicode code point U+1F690 -->
+     <string name="spoken_emoji_1F690">Minibus</string>
+     <!-- Spoken description for Unicode code point U+1F691 -->
+     <string name="spoken_emoji_1F691">Ambulance</string>
+     <!-- Spoken description for Unicode code point U+1F692 -->
+     <string name="spoken_emoji_1F692">Fire engine</string>
+     <!-- Spoken description for Unicode code point U+1F693 -->
+     <string name="spoken_emoji_1F693">Police car</string>
+     <!-- Spoken description for Unicode code point U+1F694 -->
+     <string name="spoken_emoji_1F694">Oncoming police car</string>
+     <!-- Spoken description for Unicode code point U+1F695 -->
+     <string name="spoken_emoji_1F695">Taxi</string>
+     <!-- Spoken description for Unicode code point U+1F696 -->
+     <string name="spoken_emoji_1F696">Oncoming taxi</string>
+     <!-- Spoken description for Unicode code point U+1F697 -->
+     <string name="spoken_emoji_1F697">Automobile</string>
+     <!-- Spoken description for Unicode code point U+1F698 -->
+     <string name="spoken_emoji_1F698">Oncoming automobile</string>
+     <!-- Spoken description for Unicode code point U+1F699 -->
+     <string name="spoken_emoji_1F699">Recreational vehicle</string>
+     <!-- Spoken description for Unicode code point U+1F69A -->
+     <string name="spoken_emoji_1F69A">Delivery truck</string>
+     <!-- Spoken description for Unicode code point U+1F69B -->
+     <string name="spoken_emoji_1F69B">Articulated lorry</string>
+     <!-- Spoken description for Unicode code point U+1F69C -->
+     <string name="spoken_emoji_1F69C">Tractor</string>
+     <!-- Spoken description for Unicode code point U+1F69D -->
+     <string name="spoken_emoji_1F69D">Monorail</string>
+     <!-- Spoken description for Unicode code point U+1F69E -->
+     <string name="spoken_emoji_1F69E">Mountain railway</string>
+     <!-- Spoken description for Unicode code point U+1F69F -->
+     <string name="spoken_emoji_1F69F">Suspension railway</string>
+     <!-- Spoken description for Unicode code point U+1F6A0 -->
+     <string name="spoken_emoji_1F6A0">Mountain cableway</string>
+     <!-- Spoken description for Unicode code point U+1F6A1 -->
+     <string name="spoken_emoji_1F6A1">Aerial tramway</string>
+     <!-- Spoken description for Unicode code point U+1F6A2 -->
+     <string name="spoken_emoji_1F6A2">Ship</string>
+     <!-- Spoken description for Unicode code point U+1F6A3 -->
+     <string name="spoken_emoji_1F6A3">Rowboat</string>
+     <!-- Spoken description for Unicode code point U+1F6A4 -->
+     <string name="spoken_emoji_1F6A4">Speedboat</string>
+     <!-- Spoken description for Unicode code point U+1F6A5 -->
+     <string name="spoken_emoji_1F6A5">Horizontal traffic light</string>
+     <!-- Spoken description for Unicode code point U+1F6A6 -->
+     <string name="spoken_emoji_1F6A6">Vertical traffic light</string>
+     <!-- Spoken description for Unicode code point U+1F6A7 -->
+     <string name="spoken_emoji_1F6A7">Construction sign</string>
+     <!-- Spoken description for Unicode code point U+1F6A8 -->
+     <string name="spoken_emoji_1F6A8">Police cars revolving light</string>
+     <!-- Spoken description for Unicode code point U+1F6A9 -->
+     <string name="spoken_emoji_1F6A9">Triangular flag on post</string>
+     <!-- Spoken description for Unicode code point U+1F6AA -->
+     <string name="spoken_emoji_1F6AA">Door</string>
+     <!-- Spoken description for Unicode code point U+1F6AB -->
+     <string name="spoken_emoji_1F6AB">No entry sign</string>
+     <!-- Spoken description for Unicode code point U+1F6AC -->
+     <string name="spoken_emoji_1F6AC">Smoking symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6AD -->
+     <string name="spoken_emoji_1F6AD">No smoking symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6AE -->
+     <string name="spoken_emoji_1F6AE">Put litter in its place symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6AF -->
+     <string name="spoken_emoji_1F6AF">Do not litter symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6B0 -->
+     <string name="spoken_emoji_1F6B0">Potable water symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6B1 -->
+     <string name="spoken_emoji_1F6B1">Non-potable water symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6B2 -->
+     <string name="spoken_emoji_1F6B2">Bicycle</string>
+     <!-- Spoken description for Unicode code point U+1F6B3 -->
+     <string name="spoken_emoji_1F6B3">No bicycles</string>
+     <!-- Spoken description for Unicode code point U+1F6B4 -->
+     <string name="spoken_emoji_1F6B4">Bicyclist</string>
+     <!-- Spoken description for Unicode code point U+1F6B5 -->
+     <string name="spoken_emoji_1F6B5">Mountain bicyclist</string>
+     <!-- Spoken description for Unicode code point U+1F6B6 -->
+     <string name="spoken_emoji_1F6B6">Pedestrian</string>
+     <!-- Spoken description for Unicode code point U+1F6B7 -->
+     <string name="spoken_emoji_1F6B7">No pedestrians</string>
+     <!-- Spoken description for Unicode code point U+1F6B8 -->
+     <string name="spoken_emoji_1F6B8">Children crossing</string>
+     <!-- Spoken description for Unicode code point U+1F6B9 -->
+     <string name="spoken_emoji_1F6B9">Mens symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6BA -->
+     <string name="spoken_emoji_1F6BA">Womens symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6BB -->
+     <string name="spoken_emoji_1F6BB">Restroom</string>
+     <!-- Spoken description for Unicode code point U+1F6BC -->
+     <string name="spoken_emoji_1F6BC">Baby symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6BD -->
+     <string name="spoken_emoji_1F6BD">Toilet</string>
+     <!-- Spoken description for Unicode code point U+1F6BE -->
+     <string name="spoken_emoji_1F6BE">Water closet</string>
+     <!-- Spoken description for Unicode code point U+1F6BF -->
+     <string name="spoken_emoji_1F6BF">Shower</string>
+     <!-- Spoken description for Unicode code point U+1F6C0 -->
+     <string name="spoken_emoji_1F6C0">Bath</string>
+     <!-- Spoken description for Unicode code point U+1F6C1 -->
+     <string name="spoken_emoji_1F6C1">Bathtub</string>
+     <!-- Spoken description for Unicode code point U+1F6C2 -->
+     <string name="spoken_emoji_1F6C2">Passport control</string>
+     <!-- Spoken description for Unicode code point U+1F6C3 -->
+     <string name="spoken_emoji_1F6C3">Customs</string>
+     <!-- Spoken description for Unicode code point U+1F6C4 -->
+     <string name="spoken_emoji_1F6C4">Baggage claim</string>
+     <!-- Spoken description for Unicode code point U+1F6C5 -->
+     <string name="spoken_emoji_1F6C5">Left luggage</string>
+</resources>
diff --git a/java/res/values/strings-talkback-descriptions.xml b/java/res/values/strings-talkback-descriptions.xml
index 9c1e652..80406d0 100644
--- a/java/res/values/strings-talkback-descriptions.xml
+++ b/java/res/values/strings-talkback-descriptions.xml
@@ -35,10 +35,14 @@
     <string name="spoken_description_unknown">Key code %d</string>
     <!-- Spoken description for the "Shift" keyboard key when "Shift" is off. -->
     <string name="spoken_description_shift">Shift</string>
+    <!-- Spoken description for the "Shift" keyboard key in symbols mode. -->
+    <string name="spoken_description_symbols_shift">More symbols</string>
     <!-- Spoken description for the "Shift" keyboard key when "Shift" is on. -->
-    <string name="spoken_description_shift_shifted">Shift on (tap to disable)</string>
+    <string name="spoken_description_shift_shifted">Shift</string>
+    <!-- Spoken description for the "Shift" keyboard key in 2nd symbols (a.k.a. symbols shift) mode. -->
+    <string name="spoken_description_symbols_shift_shifted">Symbols</string>
     <!-- Spoken description for the "Shift" keyboard key when "Caps lock" is on. -->
-    <string name="spoken_description_caps_lock">Caps lock on (tap to disable)</string>
+    <string name="spoken_description_caps_lock">Shift</string>
     <!-- Spoken description for the "Delete" keyboard key. -->
     <string name="spoken_description_delete">Delete</string>
     <!-- Spoken description for the "To Symbol" keyboard key. -->
@@ -74,11 +78,10 @@
     <string name="spoken_description_shiftmode_on">Shift enabled</string>
     <!-- Spoken feedback after turning "Caps lock" mode on. -->
     <string name="spoken_description_shiftmode_locked">Caps lock enabled</string>
-    <!-- Spoken feedback after turning "Shift" mode off. -->
-    <string name="spoken_description_shiftmode_off">Shift disabled</string>
-
     <!-- Spoken feedback after changing to the symbols keyboard. -->
     <string name="spoken_description_mode_symbol">Symbols mode</string>
+    <!-- Spoken feedback after changing to the 2nd symbols (a.k.a. symbols shift) keyboard. -->
+    <string name="spoken_description_mode_symbol_shift">More symbols mode</string>
     <!-- Spoken feedback after changing to the alphanumeric keyboard. -->
     <string name="spoken_description_mode_alpha">Letters mode</string>
     <!-- Spoken feedback after changing to the phone dialer keyboard. -->
diff --git a/java/res/values/themes-common.xml b/java/res/values/themes-common.xml
index eb6cdd9..76abb10 100644
--- a/java/res/values/themes-common.xml
+++ b/java/res/values/themes-common.xml
@@ -120,12 +120,7 @@
         name="MoreKeysKeyboardView"
         parent="MainKeyboardView" />
     <style name="MoreKeysKeyboardContainer" />
-    <style name="SuggestionStripView">
-        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
-        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
-        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
-        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
-    </style>
+    <style name="SuggestionStripView" />
     <style name="SuggestionWord">
         <item name="android:minWidth">@dimen/config_suggestion_min_width</item>
         <item name="android:textSize">@dimen/config_suggestion_text_size</item>
diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml
index 720eda9..d7943ee 100644
--- a/java/res/values/themes-ics.xml
+++ b/java/res/values/themes-ics.xml
@@ -56,8 +56,8 @@
         <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
         <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
         <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
-        <item name="keyTextShadowColor">@color/key_text_shadow_color_holo</item>
-        <item name="keyTextShadowRadius">0.0</item>
+        <!-- A negative value to disable key text shadow layer. -->
+        <item name="keyTextShadowRadius">-1.0</item>
     </style>
     <style
         name="MainKeyboardView.ICS"
@@ -71,6 +71,7 @@
         <item name="autoCorrectionSpacebarLedEnabled">false</item>
         <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
         <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
+        <item name="languageOnSpacebarTextShadowRadius">1.0</item>
         <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
         <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_ics</item>
     </style>
@@ -109,8 +110,12 @@
     </style>
     <style
         name="SuggestionStripView.ICS"
-        parent="SuggestionStripView"
+        parent="KeyboardView.ICS"
     >
+        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
+        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
+        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
+        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
         <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
         <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
         <item name="colorValidTypedWord">@color/typed_word_color_ics</item>
diff --git a/java/res/values/themes-klp.xml b/java/res/values/themes-klp.xml
index 8305271..13500fe 100644
--- a/java/res/values/themes-klp.xml
+++ b/java/res/values/themes-klp.xml
@@ -56,8 +56,8 @@
         <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
         <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
         <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
-        <item name="keyTextShadowColor">@color/key_text_shadow_color_holo</item>
-        <item name="keyTextShadowRadius">0.0</item>
+        <!-- A negative value to disable key text shadow layer. -->
+        <item name="keyTextShadowRadius">-1.0</item>
     </style>
     <style
         name="MainKeyboardView.KLP"
@@ -71,6 +71,7 @@
         <item name="autoCorrectionSpacebarLedEnabled">false</item>
         <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
         <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
+        <item name="languageOnSpacebarTextShadowRadius">1.0</item>
         <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
         <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_klp</item>
     </style>
@@ -109,8 +110,12 @@
     </style>
     <style
         name="SuggestionStripView.KLP"
-        parent="SuggestionStripView"
+        parent="KeyboardView.KLP"
     >
+        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
+        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
+        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
+        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
         <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
         <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
         <item name="colorValidTypedWord">@color/typed_word_color_klp</item>
diff --git a/java/res/values/themes-lmp.xml b/java/res/values/themes-lmp.xml
new file mode 100644
index 0000000..c05190b
--- /dev/null
+++ b/java/res/values/themes-lmp.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="KeyboardTheme.LMP" parent="KeyboardIcons.LMP">
+        <item name="keyboardStyle">@style/Keyboard.LMP</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.LMP</item>
+        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.LMP</item>
+        <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.LMP</item>
+        <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.LMP</item>
+        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.LMP</item>
+        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.LMP</item>
+        <item name="suggestionStripViewStyle">@style/SuggestionStripView.LMP</item>
+        <item name="suggestionWordStyle">@style/SuggestionWord.LMP</item>
+    </style>
+    <style
+        name="Keyboard.LMP"
+        parent="Keyboard"
+    >
+        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
+        <item name="themeId">3</item>
+        <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item>
+        <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item>
+        <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item>
+        <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item>
+        <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
+    </style>
+    <style
+        name="KeyboardView.LMP"
+        parent="KeyboardView"
+    >
+        <item name="android:background">@color/keyboard_background_lmp</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_lmp</item>
+        <item name="keyTypeface">bold</item>
+        <item name="keyTextColor">@color/key_text_color_holo</item>
+        <item name="keyTextInactivatedColor">@color/key_text_inactive_color_lmp</item>
+        <item name="keyHintLetterColor">@color/key_hint_letter_color_lmp</item>
+        <item name="keyHintLabelColor">@color/key_text_inactive_color_lmp</item>
+        <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lmp</item>
+        <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_holo</item>
+        <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
+        <!-- A negative value to disable key text shadow layer. -->
+        <item name="keyTextShadowRadius">-1.0</item>
+    </style>
+    <style
+        name="MainKeyboardView.LMP"
+        parent="KeyboardView.LMP"
+    >
+        <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
+        <item name="gestureFloatingPreviewTextColor">@color/highlight_color_lmp</item>
+        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
+        <item name="gestureTrailColor">@color/highlight_color_lmp</item>
+        <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_lmp</item>
+        <item name="autoCorrectionSpacebarLedEnabled">false</item>
+        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
+        <item name="languageOnSpacebarTextColor">@color/key_text_inactive_color_lmp</item>
+        <!-- A negative value to disable text shadow layer. -->
+        <item name="languageOnSpacebarTextShadowRadius">-1.0</item>
+        <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lmp</item>
+    </style>
+    <style
+        name="KeyPreviewTextView.LMP"
+        parent="KeyPreviewTextView"
+    >
+        <item name="android:background">@drawable/keyboard_key_feedback_lmp</item>
+    </style>
+    <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
+         for instance delete button, need themed {@link KeyboardView} attributes. -->
+    <style
+        name="EmojiPalettesView.LMP"
+        parent="KeyboardView.LMP"
+    >
+        <item name="keyBackgroundEmojiFunctional">@drawable/btn_keyboard_key_functional_lmp</item>
+        <item name="emojiTabLabelColor">@color/emoji_tab_label_color_holo</item>
+    </style>
+    <style
+        name="MoreKeysKeyboard.LMP"
+        parent="Keyboard.LMP"
+    >
+        <item name="keyboardTopPadding">0%p</item>
+        <item name="keyboardBottomPadding">0%p</item>
+        <item name="horizontalGap">0%p</item>
+        <item name="touchPositionCorrectionData">@null</item>
+    </style>
+    <style
+        name="MoreKeysKeyboardView.LMP"
+        parent="KeyboardView.LMP"
+    >
+        <item name="android:background">@drawable/keyboard_popup_panel_background_lmp</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_popup_lmp</item>
+        <item name="keyTypeface">normal</item>
+        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
+    </style>
+    <style
+        name="SuggestionStripView.LMP"
+        parent="KeyboardView.LMP"
+    >
+        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
+        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
+        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
+        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
+        <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
+        <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
+        <item name="colorValidTypedWord">@color/typed_word_color_lmp</item>
+        <item name="colorTypedWord">@color/typed_word_color_lmp</item>
+        <item name="colorAutoCorrect">@color/highlight_color_lmp</item>
+        <item name="colorSuggested">@color/suggested_word_color_lmp</item>
+        <item name="alphaObsoleted">70%</item>
+    </style>
+    <style
+        name="SuggestionWord.LMP"
+        parent="SuggestionWord"
+    >
+        <item name="android:background">@drawable/btn_suggestion_lmp</item>
+        <item name="android:textColor">@color/highlight_color_lmp</item>
+    </style>
+</resources>
diff --git a/java/res/xml-sw600dp/key_settings.xml b/java/res/xml-sw600dp/key_settings.xml
new file mode 100644
index 0000000..45915e9
--- /dev/null
+++ b/java/res/xml-sw600dp/key_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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:clobberSettingsKey="false"
+        >
+            <Key
+                latin:keyStyle="settingsKeyStyle" />
+        </case>
+        <!-- clobberSettingsKey="true" -->
+        <default>
+            <Spacer />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/key_shortcut.xml b/java/res/xml-sw600dp/key_shortcut.xml
deleted file mode 100644
index d24e81f..0000000
--- a/java/res/xml-sw600dp/key_shortcut.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2012, 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:supportsSwitchingToShortcutIme="true"
-            latin:clobberSettingsKey="false"
-        >
-            <Key
-                latin:keyStyle="shortcutKeyStyle"
-                latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/keyspec_settings" />
-        </case>
-        <case
-            latin:supportsSwitchingToShortcutIme="true"
-            latin:clobberSettingsKey="true"
-        >
-            <Key
-                latin:keyStyle="shortcutKeyStyle" />
-        </case>
-        <case
-            latin:supportsSwitchingToShortcutIme="false"
-            latin:clobberSettingsKey="false"
-        >
-            <Key
-                latin:keyStyle="settingsKeyStyle" />
-        </case>
-        <!-- supportsSwitchingToShortcutIme="false" clobberSettingsKey="true" -->
-        <default>
-            <Spacer />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml
index 3d5556f..f9b959b 100644
--- a/java/res/xml-sw600dp/key_styles_common.xml
+++ b/java/res/xml-sw600dp/key_styles_common.xml
@@ -78,7 +78,7 @@
         latin:keyboardLayout="@xml/key_styles_enter" />
     <key-style
         latin:styleName="spaceKeyStyle"
-        latin:keySpec=" |!code/key_space"
+        latin:keySpec="!icon/space_key|!code/key_space"
         latin:keyActionFlags="noKeyPreview|enableLongPress" />
     <!-- U+200C: ZERO WIDTH NON-JOINER
          U+200D: ZERO WIDTH JOINER -->
diff --git a/java/res/xml-sw600dp/key_styles_enter.xml b/java/res/xml-sw600dp/key_styles_enter.xml
index 0699e45..99ac108 100644
--- a/java/res/xml-sw600dp/key_styles_enter.xml
+++ b/java/res/xml-sw600dp/key_styles_enter.xml
@@ -117,6 +117,16 @@
         </case>
         <case
             latin:imeAction="actionGo"
+            latin:isIconDefined="go_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/go_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionGo"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
@@ -126,6 +136,16 @@
         </case>
         <case
             latin:imeAction="actionNext"
+            latin:isIconDefined="next_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/next_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionNext"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
@@ -135,6 +155,16 @@
         </case>
         <case
             latin:imeAction="actionPrevious"
+            latin:isIconDefined="previous_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/previous_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionPrevious"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
@@ -144,6 +174,16 @@
         </case>
         <case
             latin:imeAction="actionDone"
+            latin:isIconDefined="done_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/done_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionDone"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
@@ -153,6 +193,16 @@
         </case>
         <case
             latin:imeAction="actionSend"
+            latin:isIconDefined="send_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/send_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionSend"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
diff --git a/java/res/xml-sw600dp/row_dvorak4.xml b/java/res/xml-sw600dp/row_dvorak4.xml
index 2ba6a49..d3709ef 100644
--- a/java/res/xml-sw600dp/row_dvorak4.xml
+++ b/java/res/xml-sw600dp/row_dvorak4.xml
@@ -29,7 +29,7 @@
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyWidth="10.0%p" />
         <include
-            latin:keyboardLayout="@xml/key_shortcut" />
+            latin:keyboardLayout="@xml/key_settings" />
         <include
             latin:keyboardLayout="@xml/key_f1" />
         <include
diff --git a/java/res/xml-sw600dp/row_pcqwerty5.xml b/java/res/xml-sw600dp/row_pcqwerty5.xml
index 52b581a..ac07f11 100644
--- a/java/res/xml-sw600dp/row_pcqwerty5.xml
+++ b/java/res/xml-sw600dp/row_pcqwerty5.xml
@@ -26,7 +26,7 @@
     >
         <include
             latin:keyWidth="9.0%p"
-            latin:keyboardLayout="@xml/key_shortcut" />
+            latin:keyboardLayout="@xml/key_settings" />
         <switch>
             <case
                 latin:languageSwitchKeyEnabled="true"
diff --git a/java/res/xml-sw600dp/row_qwerty4.xml b/java/res/xml-sw600dp/row_qwerty4.xml
index 7969dd8..d931437 100644
--- a/java/res/xml-sw600dp/row_qwerty4.xml
+++ b/java/res/xml-sw600dp/row_qwerty4.xml
@@ -29,7 +29,7 @@
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyWidth="10.0%p" />
         <include
-            latin:keyboardLayout="@xml/key_shortcut" />
+            latin:keyboardLayout="@xml/key_settings" />
         <include
             latin:keyboardLayout="@xml/key_f1" />
         <include
diff --git a/java/res/xml-sw600dp/rows_marathi.xml b/java/res/xml-sw600dp/rows_marathi.xml
new file mode 100644
index 0000000..51dc7a2
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_marathi.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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"
+>
+    <include
+        latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_marathi1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_marathi2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_marathi3" />
+        <include
+            latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_sign_anusvara.xml b/java/res/xml-v16/keystyle_devanagari_sign_anusvara.xml
index 71439d6..405aebc 100644
--- a/java/res/xml-v16/keystyle_devanagari_sign_anusvara.xml
+++ b/java/res/xml-v16/keystyle_devanagari_sign_anusvara.xml
@@ -36,6 +36,15 @@
                 latin:styleName="moreKeysDevanagariSignAnusvara"
                 latin:moreKeys="&#x0903;,&#x0901;,&#x093C;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+                 U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignAnusvara"
+                latin:moreKeys="&#x0903;,&#x0901;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariSignAnusvara" />
diff --git a/java/res/xml-v16/keystyle_devanagari_sign_virama.xml b/java/res/xml-v16/keystyle_devanagari_sign_virama.xml
index 0c3a29b..73248e4 100644
--- a/java/res/xml-v16/keystyle_devanagari_sign_virama.xml
+++ b/java/res/xml-v16/keystyle_devanagari_sign_virama.xml
@@ -34,6 +34,14 @@
                 latin:styleName="moreKeysDevanagariSignVirama"
                 latin:moreKeys="&#x094D;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0905: "अ" DEVANAGARI LETTER A -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignVirama"
+                latin:moreKeys="&#x0905;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariSignVirama" />
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml
index 5bb0351..cd07999 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml
@@ -43,6 +43,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignAa"
                 latin:moreKeys="&#x093E;,%" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0906: "आ" DEVANAGARI LETTER AA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAa"
+                latin:moreKeys="&#x0906;,%" />
+        </case>
         <default>
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAa" />
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml
index 8edf6eb..75a49b1 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml
@@ -43,6 +43,14 @@
                 latin:moreKeys="&#x0948;,%" />
         </case>
         <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0910: "ऐ" DEVANAGARI LETTER AI -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAi"
+                latin:moreKeys="&#x0910;,%" />
+        </case>
+        <case
             latin:keyboardLayoutSet="nepali_traditional"
         >
             <!-- U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml
index 212e058..26f1aca 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml
@@ -42,6 +42,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignAu"
                 latin:moreKeys="&#x094C;,%" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0914: "औ" DEVANAGARI LETTER AU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAu"
+                latin:moreKeys="&#x0914;,%" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAu" />
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_e.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_e.xml
index ef2c3f1..ec056a3 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_e.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_e.xml
@@ -34,9 +34,23 @@
                 latin:styleName="moreKeysDevanagariVowelSignCandraE"
                 latin:moreKeys="&#x0945;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+090D: "ऍ" DEVANAGARI LETTER CANDRA E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraE"
+                latin:moreKeys="&#x090D;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignCandraE" />
         </default>
     </switch>
+    <!-- U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E -->
+    <key-style
+        latin:styleName="baseKeyDevanagariVowelSignCandraE"
+        latin:parentStyle="moreKeysDevanagariVowelSignCandraE"
+        latin:keySpec="&#x0945;"
+        latin:keyLabelFlags="fontNormal" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_o.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_o.xml
index ac01d37..fb4d4eb 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_o.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_o.xml
@@ -34,6 +34,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignCandraO"
                 latin:moreKeys="&#x0949;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0911: "ऑ" DEVANAGARI LETTER CANDRA O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraO"
+                latin:moreKeys="&#x0911;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignCandraO" />
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml
index 77d6eb5..965bccb 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml
@@ -43,6 +43,14 @@
                 latin:moreKeys="&#x0947;" />
         </case>
         <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+090F: "ए" DEVANAGARI LETTER SHORT E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignE"
+                latin:moreKeys="&#x090F;" />
+        </case>
+        <case
             latin:keyboardLayoutSet="nepali_traditional"
         >
             <!-- U+0903: "ः‍" DEVANAGARI SIGN VISARGA
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml
index d79447b..ec71c4d 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml
@@ -42,6 +42,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignI"
                 latin:moreKeys="&#x093F;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0907: "इ" DEVANAGARI LETTER I -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignI"
+                latin:moreKeys="&#x0907;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignI" />
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml
index 0e10f31..9a9f915 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml
@@ -42,6 +42,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignIi"
                 latin:moreKeys="&#x0940;,%" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0908: "ई" DEVANAGARI LETTER II -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignIi"
+                latin:moreKeys="&#x0908;,%" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignIi" />
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml
index 47ca906..77389c2 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml
@@ -44,6 +44,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignO"
                 latin:moreKeys="&#x094B;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignO"
+                latin:moreKeys="&#x0913;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignO" />
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml
index 694e4ab..e2167bf 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml
@@ -43,6 +43,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignU"
                 latin:moreKeys="&#x0941;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0909: "उ" DEVANAGARI LETTER U -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignU"
+                latin:moreKeys="&#x0909;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignU" />
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml
index f17489e..7452368 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml
@@ -43,6 +43,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignUu"
                 latin:moreKeys="&#x0942;,%" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+090A: "ऊ" DEVANAGARI LETTER UU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignUu"
+                latin:moreKeys="&#x090A;,%" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignUu" />
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_vocalic_r.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_vocalic_r.xml
index 2709846..9c930d3 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_vocalic_r.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_vocalic_r.xml
@@ -44,6 +44,16 @@
                 latin:moreKeys="&#x090B;,&#x0943;" />
         </case>
         <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0931: "ऱ" DEVANAGARI LETTER RRA
+                 U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                 U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
+                latin:moreKeys="&#x0931;,&#x090B;,&#x0943;" />
+        </case>
+        <case
             latin:keyboardLayoutSet="nepali_traditional"
         >
             <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
diff --git a/java/res/drawable/transparent.xml b/java/res/xml/kbd_marathi.xml
similarity index 67%
copy from java/res/drawable/transparent.xml
copy to java/res/xml/kbd_marathi.xml
index 855cf2a..4328cd6 100644
--- a/java/res/drawable/transparent.xml
+++ b/java/res/xml/kbd_marathi.xml
@@ -2,7 +2,7 @@
 <!--
 /*
 **
-** Copyright 2011, The Android Open Source Project
+** Copyright 2014, 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.
@@ -18,13 +18,9 @@
 */
 -->
 
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle"
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <solid
-        android:color="@android:color/transparent" />
-    <size
-        android:width="50dp"
-        android:height="40dp" />
-</shape>
+    <include
+        latin:keyboardLayout="@xml/rows_marathi" />
+</Keyboard>
diff --git a/java/res/xml/key_f1.xml b/java/res/xml/key_f1.xml
index c96ddca..3471c85 100644
--- a/java/res/xml/key_f1.xml
+++ b/java/res/xml/key_f1.xml
@@ -36,27 +36,10 @@
                 latin:keySpec="\@"
                 latin:keyStyle="f1MoreKeysStyle" />
         </case>
-        <case
-            latin:supportsSwitchingToShortcutIme="false"
-        >
-            <Key
-                latin:keySpec="!text/keyspec_comma"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:keyStyle="f1MoreKeysStyle" />
-        </case>
-        <!-- latin:supportsSwitchingToShortcutIme="true" -->
-        <case
-            latin:hasShortcutKey="true"
-        >
-            <Key
-                latin:keyStyle="shortcutKeyStyle" />
-        </case>
-        <!-- latin:hasShortcutKey="false" -->
         <default>
             <Key
                 latin:keySpec="!text/keyspec_comma"
                 latin:keyLabelFlags="hasPopupHint"
-                latin:additionalMoreKeys="!text/keyspec_shortcut"
                 latin:keyStyle="f1MoreKeysStyle" />
         </default>
     </switch>
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index 78e0301..773995f 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -87,7 +87,7 @@
         latin:keyboardLayout="@xml/key_styles_enter" />
     <key-style
         latin:styleName="spaceKeyStyle"
-        latin:keySpec=" |!code/key_space"
+        latin:keySpec="!icon/space_key|!code/key_space"
         latin:keyActionFlags="noKeyPreview|enableLongPress" />
     <!-- U+200C: ZERO WIDTH NON-JOINER
          U+200D: ZERO WIDTH JOINER -->
diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml
index acb27ab..8bba136 100644
--- a/java/res/xml/key_styles_enter.xml
+++ b/java/res/xml/key_styles_enter.xml
@@ -284,6 +284,16 @@
         </case>
         <case
             latin:imeAction="actionGo"
+            latin:isIconDefined="go_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/go_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionGo"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
@@ -293,6 +303,16 @@
         </case>
         <case
             latin:imeAction="actionNext"
+            latin:isIconDefined="next_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/next_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionNext"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
@@ -302,6 +322,16 @@
         </case>
         <case
             latin:imeAction="actionPrevious"
+            latin:isIconDefined="previous_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/previous_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionPrevious"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
@@ -311,6 +341,16 @@
         </case>
         <case
             latin:imeAction="actionDone"
+            latin:isIconDefined="done_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/done_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionDone"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
@@ -320,6 +360,16 @@
         </case>
         <case
             latin:imeAction="actionSend"
+            latin:isIconDefined="send_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/send_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionSend"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
diff --git a/java/res/xml/keyboard_layout_set_marathi.xml b/java/res/xml/keyboard_layout_set_marathi.xml
new file mode 100644
index 0000000..e5c68e7
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_marathi.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_marathi"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keystyle_devanagari_sign_anusvara.xml b/java/res/xml/keystyle_devanagari_sign_anusvara.xml
index 6dc9b7e..a7e421d 100644
--- a/java/res/xml/keystyle_devanagari_sign_anusvara.xml
+++ b/java/res/xml/keystyle_devanagari_sign_anusvara.xml
@@ -37,6 +37,16 @@
                 latin:styleName="moreKeysDevanagariSignAnusvara"
                 latin:moreKeys="&#x25CC;&#x0903;|&#x0903;,&#x25CC;&#x0901;|&#x0901;,&#x25CC;&#x093C;|&#x093C;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+                 U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignAnusvara"
+                latin:moreKeys="&#x25CC;&#x0903;|&#x0903;,&#x25CC;&#x0901;|&#x0901;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariSignAnusvara" />
diff --git a/java/res/xml/keystyle_devanagari_sign_virama.xml b/java/res/xml/keystyle_devanagari_sign_virama.xml
index 96506e2..58dd42a 100644
--- a/java/res/xml/keystyle_devanagari_sign_virama.xml
+++ b/java/res/xml/keystyle_devanagari_sign_virama.xml
@@ -35,6 +35,14 @@
                 latin:styleName="moreKeysDevanagariSignVirama"
                 latin:moreKeys="&#x25CC;&#x094D;|&#x094D;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0905: "अ" DEVANAGARI LETTER A -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignVirama"
+                latin:moreKeys="&#x0905;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariSignVirama" />
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml b/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml
index 4b87650..1a60ca2 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml
@@ -45,6 +45,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignAa"
                 latin:moreKeys="&#x25CC;&#x093E;|&#x093E;,%" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0906: "आ" DEVANAGARI LETTER AA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAa"
+                latin:moreKeys="&#x0906;,%" />
+        </case>
         <default>
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAa" />
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml b/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml
index 050a7ce..e6b64e5 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml
@@ -45,6 +45,14 @@
                 latin:moreKeys="&#x25CC;&#x0948;|&#x0948;,%" />
         </case>
         <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0910: "ऐ" DEVANAGARI LETTER AI -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAi"
+                latin:moreKeys="&#x0910;,%" />
+        </case>
+        <case
             latin:keyboardLayoutSet="nepali_traditional"
         >
             <!-- U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_au.xml b/java/res/xml/keystyle_devanagari_vowel_sign_au.xml
index 49e67da..3e129ec 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_au.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_au.xml
@@ -44,6 +44,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignAu"
                 latin:moreKeys="&#x25CC;&#x094C;|&#x094C;,%" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0914: "औ" DEVANAGARI LETTER AU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAu"
+                latin:moreKeys="&#x0914;,%" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAu" />
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_candra_e.xml b/java/res/xml/keystyle_devanagari_vowel_sign_candra_e.xml
index 86f68d3..b7d0908 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_candra_e.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_candra_e.xml
@@ -35,9 +35,24 @@
                 latin:styleName="moreKeysDevanagariVowelSignCandraE"
                 latin:moreKeys="&#x25CC;&#x0945;|&#x0945;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+090D: "ऍ" DEVANAGARI LETTER CANDRA E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraE"
+                latin:moreKeys="&#x090D;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignCandraE" />
         </default>
     </switch>
+    <!-- U+25CC: "◌" DOTTED CIRCLE
+         U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E -->
+    <key-style
+        latin:styleName="baseKeyDevanagariVowelSignCandraE"
+        latin:parentStyle="moreKeysDevanagariVowelSignCandraE"
+        latin:keySpec="&#x25CC;&#x0945;|&#x0945;"
+        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_candra_o.xml b/java/res/xml/keystyle_devanagari_vowel_sign_candra_o.xml
index fd711e0..861dd1a 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_candra_o.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_candra_o.xml
@@ -35,6 +35,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignCandraO"
                 latin:moreKeys="&#x25CC;&#x0949;|&#x0949;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0911: "ऑ" DEVANAGARI LETTER CANDRA O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraO"
+                latin:moreKeys="&#x0911;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignCandraO" />
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_e.xml b/java/res/xml/keystyle_devanagari_vowel_sign_e.xml
index 88f6a74..95d85a9 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_e.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_e.xml
@@ -45,6 +45,14 @@
                 latin:moreKeys="&#x25CC;&#x0947;|&#x0947;" />
         </case>
         <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+090F: "ए" DEVANAGARI LETTER SHORT E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignE"
+                latin:moreKeys="&#x090F;" />
+        </case>
+        <case
             latin:keyboardLayoutSet="nepali_traditional"
         >
             <!-- U+25CC: "◌" DOTTED CIRCLE
@@ -59,6 +67,8 @@
                 latin:styleName="moreKeysDevanagariVowelSignE" />
         </default>
     </switch>
+    <!-- U+25CC: "◌" DOTTED CIRCLE
+         U+0947: "े" DEVANAGARI VOWEL SIGN E -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignE"
         latin:parentStyle="moreKeysDevanagariVowelSignE"
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_i.xml b/java/res/xml/keystyle_devanagari_vowel_sign_i.xml
index a84fdb4..5817be1 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_i.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_i.xml
@@ -44,6 +44,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignI"
                 latin:moreKeys="&#x25CC;&#x093F;|&#x093F;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0907: "इ" DEVANAGARI LETTER I -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignI"
+                latin:moreKeys="&#x0907;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignI" />
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml b/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml
index 6f6eb0f..a7863c6 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml
@@ -44,6 +44,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignIi"
                 latin:moreKeys="&#x25CC;&#x0940;|&#x0940;,%" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0908: "ई" DEVANAGARI LETTER II -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignIi"
+                latin:moreKeys="&#x0908;,%" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignIi" />
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_o.xml b/java/res/xml/keystyle_devanagari_vowel_sign_o.xml
index 68b176a..3dc874e 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_o.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_o.xml
@@ -46,6 +46,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignO"
                 latin:moreKeys="&#x25CC;&#x094B;|&#x094B;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignO"
+                latin:moreKeys="&#x0913;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignO" />
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_u.xml b/java/res/xml/keystyle_devanagari_vowel_sign_u.xml
index 7c058b1..226c11a 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_u.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_u.xml
@@ -45,6 +45,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignU"
                 latin:moreKeys="&#x25CC;&#x0941;|&#x0941;" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0909: "उ" DEVANAGARI LETTER U -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignU"
+                latin:moreKeys="&#x0909;" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignU" />
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml b/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml
index 73ab63c..7a9f47d 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml
@@ -45,6 +45,14 @@
                 latin:styleName="moreKeysDevanagariVowelSignUu"
                 latin:moreKeys="&#x25CC;&#x0942;|&#x0942;,%" />
         </case>
+        <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+090A: "ऊ" DEVANAGARI LETTER UU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignUu"
+                latin:moreKeys="&#x090A;,%" />
+        </case>
         <default>
              <key-style
                 latin:styleName="moreKeysDevanagariVowelSignUu" />
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_vocalic_r.xml b/java/res/xml/keystyle_devanagari_vowel_sign_vocalic_r.xml
index 29b083e..56b7396 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_vocalic_r.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_vocalic_r.xml
@@ -46,6 +46,17 @@
                 latin:moreKeys="&#x090B;,&#x25CC;&#x0943;|&#x0943;" />
         </case>
         <case
+            latin:keyboardLayoutSet="marathi"
+        >
+            <!-- U+0931: "ऱ" DEVANAGARI LETTER RRA
+                 U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                 U+25CC: "◌" DOTTED CIRCLE
+                 U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
+                latin:moreKeys="&#x0931;,&#x090B;,&#x25CC;&#x0943;|&#x0943;" />
+        </case>
+        <case
             latin:keyboardLayoutSet="nepali_traditional"
         >
             <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 28eceb8..2adc957 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -68,6 +68,7 @@
     lv: Latvian/qwerty
     mk: Macedonian/south_slavic
     mn_MN: Mongolian (Mongolia)/mongolian
+    (mr_IN: Marathi (India)/marathi) # This is a preliminary keyboard layout.
     ms_MY: Malay (Malaysia)/qwerty
     (my_MM: Myanmar (Myanmar)/myanmar) # This is a preliminary keyboard layout.
     nb: Norwegian Bokmål/nordic
@@ -477,6 +478,16 @@
             android:imeSubtypeExtraValue="KeyboardLayoutSet=mongolian,EmojiCapable"
             android:isAsciiCapable="false"
     />
+    <!-- TODO: This marathi keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x747b9f03"
+            android:imeSubtypeLocale="mr_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=marathi,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0x84c87c61"
@@ -492,7 +503,7 @@
             android:subtypeId="0xea266ea4"
             android:imeSubtypeLocale="my_MM"
             android:imeSubtypeMode="keyboard"
-            android:imeSubtypeExtraValue="KeyboardLayoutSet=myanmar,EmojiCapable"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=myanmar,EmojiCapable,CombiningRules=MyanmarReordering"
             android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index 7d86dbd..61ebb69 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -158,12 +158,11 @@
                 android:persistent="true"
                 android:defaultValue="false" />
             <ListPreference
-                android:key="pref_keyboard_layout_20110916"
+                android:key="pref_keyboard_theme"
                 android:title="@string/keyboard_color_scheme"
                 android:persistent="true"
                 android:entryValues="@array/keyboard_theme_ids"
-                android:entries="@array/keyboard_theme_names"
-                android:defaultValue="@string/config_default_keyboard_theme_id" />
+                android:entries="@array/keyboard_theme_names" />
             <PreferenceScreen
                 android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings"
                 android:key="custom_input_styles"
diff --git a/java/res/xml/row_dvorak4.xml b/java/res/xml/row_dvorak4.xml
index 91462cb..279f646 100644
--- a/java/res/xml/row_dvorak4.xml
+++ b/java/res/xml/row_dvorak4.xml
@@ -30,7 +30,6 @@
         <Key
             latin:keySpec="q"
             latin:backgroundType="normal"
-            latin:additionalMoreKeys="!text/keyspec_shortcut"
             latin:keyStyle="f1MoreKeysStyle" />
         <include
             latin:keyXPos="25%p"
diff --git a/java/res/xml/row_pcqwerty5.xml b/java/res/xml/row_pcqwerty5.xml
index 3782763..32c5389 100644
--- a/java/res/xml/row_pcqwerty5.xml
+++ b/java/res/xml/row_pcqwerty5.xml
@@ -26,13 +26,6 @@
     >
         <switch>
             <case
-                latin:hasShortcutKey="true"
-            >
-                <Key
-                    latin:keyStyle="shortcutKeyStyle"
-                    latin:keyWidth="11.538%p" />
-            </case>
-            <case
                 latin:clobberSettingsKey="false"
             >
                 <Key
diff --git a/java/res/xml/rowkeys_marathi1.xml b/java/res/xml/rowkeys_marathi1.xml
new file mode 100644
index 0000000..810e71e
--- /dev/null
+++ b/java/res/xml/rowkeys_marathi1.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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"
+>
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
+    <!-- U+0967: "१" DEVANAGARI DIGIT ONE -->
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignAu"
+        latin:keyHintLabel="1"
+        latin:additionalMoreKeys="&#x0967;,1" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
+    <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignAi"
+        latin:keyHintLabel="2"
+        latin:additionalMoreKeys="&#x0968;,2" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_aa" />
+    <!-- U+0969: "३" DEVANAGARI DIGIT THREE -->
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignAa"
+        latin:keyHintLabel="3"
+        latin:additionalMoreKeys="&#x0969;,3" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ii" />
+    <!-- U+096A: "४" DEVANAGARI DIGIT FOUR -->
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignIi"
+        latin:keyHintLabel="4"
+        latin:additionalMoreKeys="&#x096A;,4" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_uu" />
+    <!-- U+096B: "५" DEVANAGARI DIGIT FIVE -->
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignUu"
+        latin:keyHintLabel="5"
+        latin:additionalMoreKeys="&#x096B;,5" />
+    <!-- U+092C: "ब" DEVANAGARI LETTER BA
+         U+092D: "भ" DEVANAGARI LETTER BHA
+         U+096C: "६" DEVANAGARI DIGIT SIX -->
+    <Key
+        latin:keySpec="&#x092C;"
+        latin:moreKeys="&#x092D;,%"
+        latin:keyHintLabel="6"
+        latin:additionalMoreKeys="&#x096C;,6"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0939: "ह" DEVANAGARI LETTER HA
+         U+096D: "७" DEVANAGARI DIGIT SEVEN -->
+    <Key
+        latin:keySpec="&#x0939;"
+        latin:keyHintLabel="7"
+        latin:additionalMoreKeys="&#x096D;,7"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0917: "ग" DEVANAGARI LETTER GA
+         U+0918: "घ" DEVANAGARI LETTER GHA
+         U+096E: "८" DEVANAGARI DIGIT EIGHT -->
+    <Key
+        latin:keySpec="&#x0917;"
+        latin:moreKeys="&#x0918;,%"
+        latin:keyHintLabel="8"
+        latin:additionalMoreKeys="&#x096E;,8"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0926: "द" DEVANAGARI LETTER DA
+         U+0927: "ध" DEVANAGARI LETTER DHA
+         U+096F: "९" DEVANAGARI DIGIT NINE -->
+    <Key
+        latin:keySpec="&#x0926;"
+        latin:moreKeys="&#x0927;,%"
+        latin:keyHintLabel="9"
+        latin:additionalMoreKeys="&#x096F;,9"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+091C: "ज" DEVANAGARI LETTER JA
+         U+091D: "झ" DEVANAGARI LETTER JHA
+         U+091C/U+094D/U+091E: "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER JHA -->
+    <Key
+        latin:keySpec="&#x091C;"
+        latin:moreKeys="&#x091D;,&#x091C;&#x094D;&#x091E;,%"
+        latin:keyHintLabel="0"
+        latin:additionalMoreKeys="&#x0966;,0"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0921: "ड" DEVANAGARI LETTER DDA
+         U+0922: "ढ" DEVANAGARI LETTER DDHA -->
+    <Key
+        latin:keySpec="&#x0921;"
+        latin:moreKeys="&#x0922;"
+        latin:keyLabelFlags="fontNormal" />
+</merge>
diff --git a/java/res/xml/rowkeys_marathi2.xml b/java/res/xml/rowkeys_marathi2.xml
new file mode 100644
index 0000000..f950915
--- /dev/null
+++ b/java/res/xml/rowkeys_marathi2.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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"
+>
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_o" />
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignO" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignE" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+    <Key
+        latin:keyStyle="baseKeyDevanagariSignVirama" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_i" />
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignI" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_u" />
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignU" />
+    <!-- U+092A: "प" DEVANAGARI LETTER PA
+         U+092B: "फ" DEVANAGARI LETTER PHA -->
+    <Key
+        latin:keySpec="&#x092A;"
+        latin:moreKeys="&#x092B;"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_vocalic_r" />
+    <!-- U+0930: "र" DEVANAGARI LETTER RA -->
+    <Key
+        latin:keySpec="&#x0930;"
+        latin:keyStyle="moreKeysDevanagariVowelSignVocalicR"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0915: "क" DEVANAGARI LETTER KA
+         U+0916: "ख" DEVANAGARI LETTER KHA -->
+    <Key
+        latin:keySpec="&#x0915;"
+        latin:moreKeys="&#x0916;"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0924: "त" DEVANAGARI LETTER TA
+         U+0925: "थ" DEVANAGARI LETTER THA
+         U+0924/U+094D/U+0930: "त्र" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
+    <Key
+        latin:keySpec="&#x0924;"
+        latin:moreKeys="&#x0925;,&#x0924;&#x094D;&#x0930;"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+091A: "च" DEVANAGARI LETTER CA
+         U+091B: "छ" DEVANAGARI LETTER CHA -->
+    <Key
+        latin:keySpec="&#x091A;"
+        latin:moreKeys="&#x091B;"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+091F: "ट" DEVANAGARI LETTER TTA
+         U+0920: "ठ" DEVANAGARI LETTER TTHA -->
+    <Key
+        latin:keySpec="&#x091F;"
+        latin:moreKeys="&#x0920;"
+        latin:keyLabelFlags="fontNormal" />
+</merge>
diff --git a/java/res/xml/rowkeys_marathi3.xml b/java/res/xml/rowkeys_marathi3.xml
new file mode 100644
index 0000000..17fc5ac
--- /dev/null
+++ b/java/res/xml/rowkeys_marathi3.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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"
+>
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_candra_o" />
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignCandraO" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_candra_e" />
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignCandraE" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include
+        latin:keyboardLayout="@xml/keystyle_devanagari_sign_anusvara" />
+    <Key
+        latin:keyStyle="baseKeyDevanagariSignAnusvara" />
+    <!-- U+092E: "म" DEVANAGARI LETTER MA -->
+    <Key
+        latin:keySpec="&#x092E;"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0928: "न" DEVANAGARI LETTER NA
+         U+0923: "ण" DEVANAGARI LETTER NNA
+         U+091E: "ञ" DEVANAGARI LETTER NYA
+         U+0919: "ङ" DEVANAGARI LETTER NGA -->
+    <Key
+        latin:keySpec="&#x0928;"
+        latin:moreKeys="&#x0923;,&#x091E;,&#x0919;"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0935: "व" DEVANAGARI LETTER VA -->
+    <Key
+        latin:keySpec="&#x0935;"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0932: "ल" DEVANAGARI LETTER LA
+         U+0933: "ळ" DEVANAGARI LETTER LLA -->
+    <Key
+        latin:keySpec="&#x0932;"
+        latin:moreKeys="&#x0933;"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0938: "स" DEVANAGARI LETTER SA
+         U+0936: "श" DEVANAGARI LETTER SHA
+         U+0937: "ष" DEVANAGARI LETTER SSA
+         U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
+    <Key
+        latin:keySpec="&#x0938;"
+        latin:moreKeys="&#x0936;,&#x0937;,&#x0936;&#x094D;&#x0930;"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+092F: "य" DEVANAGARI LETTER YA -->
+    <Key
+        latin:keySpec="&#x092F;"
+        latin:keyLabelFlags="fontNormal" />
+    <!-- U+0915/U+094D/U+0937: "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA -->
+    <Key
+        latin:keySpec="&#x0915;&#x094D;&#x0937;"
+        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+</merge>
diff --git a/java/res/xml/rows_marathi.xml b/java/res/xml/rows_marathi.xml
new file mode 100644
index 0000000..42a0363
--- /dev/null
+++ b/java/res/xml/rows_marathi.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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"
+>
+    <include
+        latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_marathi1" />
+    </Row>
+    <Row
+            latin:keyWidth="9.091%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_marathi2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_marathi3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java
index bc094b1..d50dd3e 100644
--- a/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java
+++ b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java
@@ -68,7 +68,6 @@
         // These only need to be initialized if the kill switch is off.
         sInstance.initInternal(context);
         KeyCodeDescriptionMapper.init();
-        AccessibleKeyboardViewProxy.init(context);
     }
 
     public static AccessibilityUtils getInstance() {
diff --git a/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java b/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java
index 2e6649b..0499a34 100644
--- a/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java
+++ b/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java
@@ -189,9 +189,14 @@
             break;
         case KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED:
         case KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED:
-        case KeyboardId.ELEMENT_SYMBOLS_SHIFTED:
             resId = R.string.spoken_description_shift_shifted;
             break;
+        case KeyboardId.ELEMENT_SYMBOLS:
+            resId = R.string.spoken_description_symbols_shift;
+            break;
+        case KeyboardId.ELEMENT_SYMBOLS_SHIFTED:
+            resId = R.string.spoken_description_symbols_shift_shifted;
+            break;
         default:
             resId = R.string.spoken_description_shift;
         }
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
similarity index 77%
rename from java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
rename to java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
index 322127a..1092942 100644
--- a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
+++ b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
@@ -36,9 +36,7 @@
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 
-public final class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat {
-    private static final AccessibleKeyboardViewProxy sInstance = new AccessibleKeyboardViewProxy();
-
+public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelegateCompat {
     /** Map of keyboard modes to resource IDs. */
     private static final SparseIntArray KEYBOARD_MODE_RES_IDS = new SparseIntArray();
 
@@ -54,9 +52,9 @@
         KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_URL, R.string.keyboard_mode_url);
     }
 
-    private MainKeyboardView mView;
+    private final MainKeyboardView mView;
     private Keyboard mKeyboard;
-    private AccessibilityEntityProvider mAccessibilityNodeProvider;
+    private MainKeyboardAccessibilityNodeProvider mAccessibilityNodeProvider;
 
     private Key mLastHoverKey = null;
 
@@ -69,46 +67,14 @@
     private int mLastKeyboardMode = KEYBOARD_IS_HIDDEN;
     private static final int KEYBOARD_IS_HIDDEN = -1;
 
-    public static void init(final Context context) {
-        sInstance.initInternal(context);
-    }
-
-    public static AccessibleKeyboardViewProxy getInstance() {
-        return sInstance;
-    }
-
-    private AccessibleKeyboardViewProxy() {
-        // Not publicly instantiable.
-    }
-
-    private void initInternal(final Context context) {
+    public MainKeyboardAccessibilityDelegate(final MainKeyboardView view) {
+        final Context context = view.getContext();
         mEdgeSlop = context.getResources().getDimensionPixelSize(
                 R.dimen.config_accessibility_edge_slop);
-    }
-
-    /**
-     * Sets the view wrapped by this proxy.
-     *
-     * @param view The view to wrap.
-     */
-    public void setView(final MainKeyboardView view) {
-        if (view == null) {
-            // Ignore null views.
-            return;
-        }
         mView = view;
 
         // Ensure that the view has an accessibility delegate.
         ViewCompat.setAccessibilityDelegate(view, this);
-
-        if (mAccessibilityNodeProvider == null) {
-            return;
-        }
-        mAccessibilityNodeProvider.setView(view);
-
-        // Since this class is constructed lazily, we might not get a subsequent
-        // call to setKeyboard() and therefore need to call it now.
-        setKeyboard(view.getKeyboard());
     }
 
     /**
@@ -136,12 +102,19 @@
             return;
         }
         // Announce the language name only when the language is changed.
-        if (lastKeyboard == null || !lastKeyboard.mId.mSubtype.equals(keyboard.mId.mSubtype)) {
+        if (lastKeyboard == null || !keyboard.mId.mSubtype.equals(lastKeyboard.mId.mSubtype)) {
             announceKeyboardLanguage(keyboard);
+            return;
         }
         // Announce the mode only when the mode is changed.
-        if (lastKeyboardMode != keyboard.mId.mMode) {
+        if (keyboard.mId.mMode != lastKeyboardMode) {
             announceKeyboardMode(keyboard);
+            return;
+        }
+        // Announce the keyboard type only when the type is changed.
+        if (keyboard.mId.mElementId != lastKeyboard.mId.mElementId) {
+            announceKeyboardType(keyboard, lastKeyboard);
+            return;
         }
     }
 
@@ -149,9 +122,6 @@
      * Called when the keyboard is hidden and accessibility is enabled.
      */
     public void onHideWindow() {
-        if (mView == null) {
-            return;
-        }
         announceKeyboardHidden();
         mLastKeyboardMode = KEYBOARD_IS_HIDDEN;
     }
@@ -174,9 +144,8 @@
      * @param keyboard The new keyboard.
      */
     private void announceKeyboardMode(final Keyboard keyboard) {
-        final int mode = keyboard.mId.mMode;
         final Context context = mView.getContext();
-        final int modeTextResId = KEYBOARD_MODE_RES_IDS.get(mode);
+        final int modeTextResId = KEYBOARD_MODE_RES_IDS.get(keyboard.mId.mMode);
         if (modeTextResId == 0) {
             return;
         }
@@ -186,6 +155,50 @@
     }
 
     /**
+     * Announces which type of keyboard is being displayed.
+     *
+     * @param keyboard The new keyboard.
+     * @param lastKeyboard The last keyboard.
+     */
+    private void announceKeyboardType(final Keyboard keyboard, final Keyboard lastKeyboard) {
+        final int lastElementId = lastKeyboard.mId.mElementId;
+        final int resId;
+        switch (keyboard.mId.mElementId) {
+        case KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED:
+        case KeyboardId.ELEMENT_ALPHABET:
+            if (lastElementId == KeyboardId.ELEMENT_ALPHABET
+                    || lastElementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+                return;
+            }
+            resId = R.string.spoken_description_mode_alpha;
+            break;
+        case KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED:
+            resId = R.string.spoken_description_shiftmode_on;
+            break;
+        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED:
+        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED:
+            resId = R.string.spoken_description_shiftmode_locked;
+            break;
+        case KeyboardId.ELEMENT_SYMBOLS:
+            resId = R.string.spoken_description_mode_symbol;
+            break;
+        case KeyboardId.ELEMENT_SYMBOLS_SHIFTED:
+            resId = R.string.spoken_description_mode_symbol_shift;
+            break;
+        case KeyboardId.ELEMENT_PHONE:
+            resId = R.string.spoken_description_mode_phone;
+            break;
+        case KeyboardId.ELEMENT_PHONE_SYMBOLS:
+            resId = R.string.spoken_description_mode_phone_shift;
+            break;
+        default:
+            return;
+        }
+        final String text = mView.getContext().getString(resId);
+        sendWindowStateChanged(text);
+    }
+
+    /**
      * Announces that the keyboard has been hidden.
      */
     private void announceKeyboardHidden() {
@@ -214,7 +227,7 @@
     }
 
     /**
-     * Proxy method for View.getAccessibilityNodeProvider(). This method is called in SDK
+     * Delegate method for View.getAccessibilityNodeProvider(). This method is called in SDK
      * version 15 (Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) and higher to obtain the virtual
      * node hierarchy provider.
      *
@@ -222,10 +235,7 @@
      * @return The accessibility node provider for the current keyboard.
      */
     @Override
-    public AccessibilityEntityProvider getAccessibilityNodeProvider(final View host) {
-        if (mView == null) {
-            return null;
-        }
+    public MainKeyboardAccessibilityNodeProvider getAccessibilityNodeProvider(final View host) {
         return getAccessibilityNodeProvider();
     }
 
@@ -238,10 +248,6 @@
      * @return {@code true} if the event is handled
      */
     public boolean dispatchHoverEvent(final MotionEvent event, final KeyDetector keyDetector) {
-        if (mView == null) {
-            return false;
-        }
-
         final int x = (int) event.getX();
         final int y = (int) event.getY();
         final Key previousKey = mLastHoverKey;
@@ -275,14 +281,14 @@
     }
 
     /**
-     * @return A lazily-instantiated node provider for this view proxy.
+     * @return A lazily-instantiated node provider for this view delegate.
      */
-    private AccessibilityEntityProvider getAccessibilityNodeProvider() {
+    private MainKeyboardAccessibilityNodeProvider getAccessibilityNodeProvider() {
         // Instantiate the provide only when requested. Since the system
         // will call this method multiple times it is a good practice to
         // cache the provider instance.
         if (mAccessibilityNodeProvider == null) {
-            mAccessibilityNodeProvider = new AccessibilityEntityProvider(mView);
+            mAccessibilityNodeProvider = new MainKeyboardAccessibilityNodeProvider(mView);
         }
         return mAccessibilityNodeProvider;
     }
@@ -301,7 +307,7 @@
     }
 
     /**
-     * Simulates a key press by injecting touch event into the keyboard view.
+     * Simulates a key press by injecting touch an event into the keyboard view.
      * This avoids the complexity of trackers and listeners within the keyboard.
      *
      * @param key The key to press.
@@ -318,7 +324,7 @@
     }
 
     /**
-     * Simulates a key release by injecting touch event into the keyboard view.
+     * Simulates a key release by injecting touch an event into the keyboard view.
      * This avoids the complexity of trackers and listeners within the keyboard.
      *
      * @param key The key to release.
@@ -367,7 +373,7 @@
         if (key == null) {
             return false;
         }
-        final AccessibilityEntityProvider provider = getAccessibilityNodeProvider();
+        final MainKeyboardAccessibilityNodeProvider provider = getAccessibilityNodeProvider();
 
         switch (event.getAction()) {
         case MotionEvent.ACTION_HOVER_ENTER:
@@ -383,72 +389,4 @@
         }
         return true;
     }
-
-    /**
-     * Notifies the user of changes in the keyboard shift state.
-     */
-    public void notifyShiftState() {
-        if (mView == null || mKeyboard == null) {
-            return;
-        }
-
-        final KeyboardId keyboardId = mKeyboard.mId;
-        final int elementId = keyboardId.mElementId;
-        final Context context = mView.getContext();
-        final CharSequence text;
-
-        switch (elementId) {
-        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED:
-        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED:
-            text = context.getText(R.string.spoken_description_shiftmode_locked);
-            break;
-        case KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED:
-        case KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED:
-        case KeyboardId.ELEMENT_SYMBOLS_SHIFTED:
-            text = context.getText(R.string.spoken_description_shiftmode_on);
-            break;
-        default:
-            text = context.getText(R.string.spoken_description_shiftmode_off);
-        }
-        AccessibilityUtils.getInstance().announceForAccessibility(mView, text);
-    }
-
-    /**
-     * Notifies the user of changes in the keyboard symbols state.
-     */
-    public void notifySymbolsState() {
-        if (mView == null || mKeyboard == null) {
-            return;
-        }
-
-        final KeyboardId keyboardId = mKeyboard.mId;
-        final int elementId = keyboardId.mElementId;
-        final Context context = mView.getContext();
-        final int resId;
-
-        switch (elementId) {
-        case KeyboardId.ELEMENT_ALPHABET:
-        case KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED:
-        case KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED:
-        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED:
-        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED:
-            resId = R.string.spoken_description_mode_alpha;
-            break;
-        case KeyboardId.ELEMENT_SYMBOLS:
-        case KeyboardId.ELEMENT_SYMBOLS_SHIFTED:
-            resId = R.string.spoken_description_mode_symbol;
-            break;
-        case KeyboardId.ELEMENT_PHONE:
-            resId = R.string.spoken_description_mode_phone;
-            break;
-        case KeyboardId.ELEMENT_PHONE_SYMBOLS:
-            resId = R.string.spoken_description_mode_phone_shift;
-            break;
-        default:
-            return;
-        }
-
-        final String text = context.getString(resId);
-        AccessibilityUtils.getInstance().announceForAccessibility(mView, text);
-    }
 }
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityNodeProvider.java
similarity index 95%
rename from java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
rename to java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityNodeProvider.java
index ec1ab35..f69d316 100644
--- a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
+++ b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityNodeProvider.java
@@ -47,8 +47,8 @@
  * virtual views, thus conveying their logical structure.
  * </p>
  */
-public final class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat {
-    private static final String TAG = AccessibilityEntityProvider.class.getSimpleName();
+public final class MainKeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderCompat {
+    private static final String TAG = MainKeyboardAccessibilityNodeProvider.class.getSimpleName();
     private static final int UNDEFINED = Integer.MIN_VALUE;
 
     private final KeyCodeDescriptionMapper mKeyCodeDescriptionMapper;
@@ -64,23 +64,14 @@
     private int mAccessibilityFocusedView = UNDEFINED;
 
     /** The current keyboard view. */
-    private KeyboardView mKeyboardView;
+    private final KeyboardView mKeyboardView;
 
     /** The current keyboard. */
     private Keyboard mKeyboard;
 
-    public AccessibilityEntityProvider(final KeyboardView keyboardView) {
+    public MainKeyboardAccessibilityNodeProvider(final KeyboardView keyboardView) {
         mKeyCodeDescriptionMapper = KeyCodeDescriptionMapper.getInstance();
         mAccessibilityUtils = AccessibilityUtils.getInstance();
-        setView(keyboardView);
-    }
-
-    /**
-     * Sets the keyboard view represented by this node provider.
-     *
-     * @param keyboardView The keyboard view to represent.
-     */
-    public void setView(final KeyboardView keyboardView) {
         mKeyboardView = keyboardView;
         updateParentLocation();
 
diff --git a/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java b/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
index a0d7641..6e32e74 100644
--- a/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
@@ -29,8 +29,8 @@
             Context.class, String.class, Integer.TYPE, String.class, Locale.class);
 
     @SuppressWarnings("deprecation")
-    public static void addWord(final Context context, final String word, final int freq,
-            final String shortcut, final Locale locale) {
+    public static void addWord(final Context context, final String word,
+            final int freq, final String shortcut, final Locale locale) {
         if (hasNewerAddWord()) {
             CompatUtils.invoke(Words.class, null, METHOD_addWord, context, word, freq, shortcut,
                     locale);
diff --git a/java/src/com/android/inputmethod/event/CombinerChain.java b/java/src/com/android/inputmethod/event/CombinerChain.java
index 8b59dc5..990f7de 100644
--- a/java/src/com/android/inputmethod/event/CombinerChain.java
+++ b/java/src/com/android/inputmethod/event/CombinerChain.java
@@ -23,6 +23,7 @@
 import com.android.inputmethod.latin.utils.CollectionUtils;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 
 /**
  * This class implements the logic chain between receiving events and generating code points.
@@ -43,6 +44,13 @@
     private SpannableStringBuilder mStateFeedback;
     private final ArrayList<Combiner> mCombiners;
 
+    private static final HashMap<String, Class> IMPLEMENTED_COMBINERS
+            = new HashMap<String, Class>();
+    static {
+        IMPLEMENTED_COMBINERS.put("MyanmarReordering", MyanmarReordering.class);
+    }
+    private static final String COMBINER_SPEC_SEPARATOR = ";";
+
     /**
      * Create an combiner chain.
      *
@@ -56,6 +64,9 @@
         mCombiners = CollectionUtils.newArrayList();
         // The dead key combiner is always active, and always first
         mCombiners.add(new DeadKeyCombiner());
+        for (final Combiner combiner : combinerList) {
+            mCombiners.add(combiner);
+        }
         mCombinedText = new StringBuilder();
         mStateFeedback = new SpannableStringBuilder();
     }
@@ -114,4 +125,29 @@
         final SpannableStringBuilder s = new SpannableStringBuilder(mCombinedText);
         return s.append(mStateFeedback);
     }
+
+    public static Combiner[] createCombiners(final String spec) {
+        if (TextUtils.isEmpty(spec)) {
+            return new Combiner[0];
+        }
+        final String[] combinerDescriptors = spec.split(COMBINER_SPEC_SEPARATOR);
+        final Combiner[] combiners = new Combiner[combinerDescriptors.length];
+        int i = 0;
+        for (final String combinerDescriptor : combinerDescriptors) {
+            final Class combinerClass = IMPLEMENTED_COMBINERS.get(combinerDescriptor);
+            if (null == combinerClass) {
+                throw new RuntimeException("Unknown combiner descriptor: " + combinerDescriptor);
+            }
+            try {
+                combiners[i++] = (Combiner)combinerClass.newInstance();
+            } catch (InstantiationException e) {
+                throw new RuntimeException("Unable to instantiate combiner: " + combinerDescriptor,
+                        e);
+            } catch (IllegalAccessException e) {
+                throw new RuntimeException("Unable to instantiate combiner: " + combinerDescriptor,
+                        e);
+            }
+        }
+        return combiners;
+    }
 }
diff --git a/java/src/com/android/inputmethod/event/MyanmarReordering.java b/java/src/com/android/inputmethod/event/MyanmarReordering.java
new file mode 100644
index 0000000..27b8c14
--- /dev/null
+++ b/java/src/com/android/inputmethod/event/MyanmarReordering.java
@@ -0,0 +1,235 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.event;
+
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.utils.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+/**
+ * A combiner that reorders input for Myanmar.
+ */
+public class MyanmarReordering implements Combiner {
+    // U+1031 MYANMAR VOWEL SIGN E
+    private final static int VOWEL_E = 0x1031; // Code point for vowel E that we need to reorder
+    // U+200C ZERO WIDTH NON-JOINER
+    // U+200B ZERO WIDTH SPACE
+    private final static int ZERO_WIDTH_NON_JOINER = 0x200B; // should be 0x200C
+
+    private final ArrayList<Event> mCurrentEvents = CollectionUtils.newArrayList();
+
+    // List of consonants :
+    // U+1000 MYANMAR LETTER KA
+    // U+1001 MYANMAR LETTER KHA
+    // U+1002 MYANMAR LETTER GA
+    // U+1003 MYANMAR LETTER GHA
+    // U+1004 MYANMAR LETTER NGA
+    // U+1005 MYANMAR LETTER CA
+    // U+1006 MYANMAR LETTER CHA
+    // U+1007 MYANMAR LETTER JA
+    // U+1008 MYANMAR LETTER JHA
+    // U+1009 MYANMAR LETTER NYA
+    // U+100A MYANMAR LETTER NNYA
+    // U+100B MYANMAR LETTER TTA
+    // U+100C MYANMAR LETTER TTHA
+    // U+100D MYANMAR LETTER DDA
+    // U+100E MYANMAR LETTER DDHA
+    // U+100F MYANMAR LETTER NNA
+    // U+1010 MYANMAR LETTER TA
+    // U+1011 MYANMAR LETTER THA
+    // U+1012 MYANMAR LETTER DA
+    // U+1013 MYANMAR LETTER DHA
+    // U+1014 MYANMAR LETTER NA
+    // U+1015 MYANMAR LETTER PA
+    // U+1016 MYANMAR LETTER PHA
+    // U+1017 MYANMAR LETTER BA
+    // U+1018 MYANMAR LETTER BHA
+    // U+1019 MYANMAR LETTER MA
+    // U+101A MYANMAR LETTER YA
+    // U+101B MYANMAR LETTER RA
+    // U+101C MYANMAR LETTER LA
+    // U+101D MYANMAR LETTER WA
+    // U+101E MYANMAR LETTER SA
+    // U+101F MYANMAR LETTER HA
+    // U+1020 MYANMAR LETTER LLA
+    // U+103F MYANMAR LETTER GREAT SA
+    private static boolean isConsonant(final int codePoint) {
+        return (codePoint >= 0x1000 && codePoint <= 0x1020) || 0x103F == codePoint;
+    }
+
+    // List of medials :
+    // U+103B MYANMAR CONSONANT SIGN MEDIAL YA
+    // U+103C MYANMAR CONSONANT SIGN MEDIAL RA
+    // U+103D MYANMAR CONSONANT SIGN MEDIAL WA
+    // U+103E MYANMAR CONSONANT SIGN MEDIAL HA
+    // U+105E MYANMAR CONSONANT SIGN MON MEDIAL NA
+    // U+105F MYANMAR CONSONANT SIGN MON MEDIAL MA
+    // U+1060 MYANMAR CONSONANT SIGN MON MEDIAL LA
+    // U+1082 MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+    private static int[] MEDIAL_LIST = { 0x103B, 0x103C, 0x103D, 0x103E,
+            0x105E, 0x105F, 0x1060, 0x1082};
+    private static boolean isMedial(final int codePoint) {
+        return Arrays.binarySearch(MEDIAL_LIST, codePoint) >= 0;
+    }
+
+    private static boolean isConsonantOrMedial(final int codePoint) {
+        return isConsonant(codePoint) || isMedial(codePoint);
+    }
+
+    private Event getLastEvent() {
+        final int size = mCurrentEvents.size();
+        if (size <= 0) {
+            return null;
+        }
+        return mCurrentEvents.get(size - 1);
+    }
+
+    private CharSequence getCharSequence() {
+        final StringBuilder s = new StringBuilder();
+        for (final Event e : mCurrentEvents) {
+            s.appendCodePoint(e.mCodePoint);
+        }
+        return s;
+    }
+
+    /**
+     * Clears the currently combining stream of events and returns the resulting software text
+     * event corresponding to the stream. Optionally adds a new event to the cleared stream.
+     * @param newEvent the new event to add to the stream. null if none.
+     * @return the resulting software text event. Null if none.
+     */
+    private Event clearAndGetResultingEvent(final Event newEvent) {
+        final CharSequence combinedText;
+        if (mCurrentEvents.size() > 0) {
+            combinedText = getCharSequence();
+            mCurrentEvents.clear();
+        } else {
+            combinedText = null;
+        }
+        if (null != newEvent) {
+            mCurrentEvents.add(newEvent);
+        }
+        return null == combinedText ? null
+                : Event.createSoftwareTextEvent(combinedText, Event.NOT_A_KEY_CODE);
+    }
+
+    @Override
+    public Event processEvent(ArrayList<Event> previousEvents, Event newEvent) {
+        final int codePoint = newEvent.mCodePoint;
+        if (VOWEL_E == codePoint) {
+            final Event lastEvent = getLastEvent();
+            if (null == lastEvent) {
+                mCurrentEvents.add(newEvent);
+                return null;
+            } else if (isConsonantOrMedial(lastEvent.mCodePoint)) {
+                final Event resultingEvent = clearAndGetResultingEvent(null);
+                mCurrentEvents.add(Event.createSoftwareKeypressEvent(ZERO_WIDTH_NON_JOINER,
+                        Event.NOT_A_KEY_CODE,
+                        Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE,
+                        false /* isKeyRepeat */));
+                mCurrentEvents.add(newEvent);
+                return resultingEvent;
+            } else { // VOWEL_E == lastCodePoint. But if that was anything else this is correct too.
+                return clearAndGetResultingEvent(newEvent);
+            }
+        } if (isConsonant(codePoint)) {
+            final Event lastEvent = getLastEvent();
+            if (null == lastEvent) {
+                mCurrentEvents.add(newEvent);
+                return null;
+            } else if (VOWEL_E == lastEvent.mCodePoint) {
+                final int eventSize = mCurrentEvents.size();
+                if (eventSize >= 2
+                        && mCurrentEvents.get(eventSize - 2).mCodePoint == ZERO_WIDTH_NON_JOINER) {
+                    // We have a ZWJN before a vowel E. We need to remove the ZWNJ and then
+                    // reorder the vowel with respect to the consonant.
+                    mCurrentEvents.remove(eventSize - 1);
+                    mCurrentEvents.remove(eventSize - 2);
+                    mCurrentEvents.add(newEvent);
+                    mCurrentEvents.add(lastEvent);
+                    return null;
+                }
+                // If there is already a consonant, then we are starting a new syllable.
+                for (int i = eventSize - 2; i >= 0; --i) {
+                    if (isConsonant(mCurrentEvents.get(i).mCodePoint)) {
+                        return clearAndGetResultingEvent(newEvent);
+                    }
+                }
+                // If we come here, we didn't have a consonant so we reorder
+                mCurrentEvents.remove(eventSize - 1);
+                mCurrentEvents.add(newEvent);
+                mCurrentEvents.add(lastEvent);
+                return null;
+            } else { // lastCodePoint is a consonant/medial. But if it's something else it's fine
+                return clearAndGetResultingEvent(newEvent);
+            }
+        } else if (isMedial(codePoint)) {
+            final Event lastEvent = getLastEvent();
+            if (null == lastEvent) {
+                mCurrentEvents.add(newEvent);
+                return null;
+            } else if (VOWEL_E == lastEvent.mCodePoint) {
+                final int eventSize = mCurrentEvents.size();
+                // If there is already a consonant, then we are in the middle of a syllable, and we
+                // need to reorder.
+                boolean hasConsonant = false;
+                for (int i = eventSize - 2; i >= 0; --i) {
+                    if (isConsonant(mCurrentEvents.get(i).mCodePoint)) {
+                        hasConsonant = true;
+                        break;
+                    }
+                }
+                if (hasConsonant) {
+                    mCurrentEvents.remove(eventSize - 1);
+                    mCurrentEvents.add(newEvent);
+                    mCurrentEvents.add(lastEvent);
+                    return null;
+                }
+                // Otherwise, we just commit everything.
+                return clearAndGetResultingEvent(null);
+            } else { // lastCodePoint is a consonant/medial. But if it's something else it's fine
+                return clearAndGetResultingEvent(newEvent);
+            }
+        } else if (Constants.CODE_DELETE == newEvent.mKeyCode) {
+            if (mCurrentEvents.size() > 0) {
+                mCurrentEvents.remove(mCurrentEvents.size() - 1);
+                return null;
+            }
+        }
+        // This character is not part of the combining scheme, so we should reset everything.
+        if (mCurrentEvents.size() > 0) {
+            // If we have events in flight, then add the new event and return the resulting event.
+            mCurrentEvents.add(newEvent);
+            return clearAndGetResultingEvent(null);
+        } else {
+            // If we don't have any events in flight, then just pass this one through.
+            return newEvent;
+        }
+    }
+
+    @Override
+    public CharSequence getCombiningStateFeedback() {
+        return getCharSequence();
+    }
+
+    @Override
+    public void reset() {
+        mCurrentEvents.clear();
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/EmojiCategoryPageIndicatorView.java b/java/src/com/android/inputmethod/keyboard/EmojiCategoryPageIndicatorView.java
index d56a3cf..4ef9e22 100644
--- a/java/src/com/android/inputmethod/keyboard/EmojiCategoryPageIndicatorView.java
+++ b/java/src/com/android/inputmethod/keyboard/EmojiCategoryPageIndicatorView.java
@@ -25,7 +25,7 @@
 import android.widget.LinearLayout;
 
 public class EmojiCategoryPageIndicatorView extends LinearLayout {
-    private static final float BOTTOM_MARGIN_RATIO = 0.66f;
+    private static final float BOTTOM_MARGIN_RATIO = 1.0f;
     private final Paint mPaint = new Paint();
     private int mCategoryPageSize = 0;
     private int mCurrentCategoryPageId = 0;
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 0235fde..4a46a4a 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -26,7 +26,6 @@
 import android.view.View;
 import android.view.inputmethod.EditorInfo;
 
-import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
 import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
 import com.android.inputmethod.keyboard.KeyboardLayoutSet.KeyboardLayoutSetException;
 import com.android.inputmethod.keyboard.internal.KeyboardState;
@@ -65,7 +64,7 @@
      * what user actually typed. */
     private boolean mIsAutoCorrectionActive;
 
-    private KeyboardTheme mKeyboardTheme = KeyboardTheme.getDefaultKeyboardTheme();
+    private KeyboardTheme mKeyboardTheme;
     private Context mThemeContext;
 
     private static final KeyboardSwitcher sInstance = new KeyboardSwitcher();
@@ -102,7 +101,7 @@
 
     private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context,
             final KeyboardTheme keyboardTheme) {
-        if (mThemeContext == null || mKeyboardTheme.mThemeId != keyboardTheme.mThemeId) {
+        if (mThemeContext == null || !keyboardTheme.equals(mKeyboardTheme)) {
             mKeyboardTheme = keyboardTheme;
             mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId);
             KeyboardLayoutSet.clearKeyboardCache();
@@ -123,7 +122,7 @@
         builder.setOptions(
                 mSubtypeSwitcher.isShortcutImeEnabled(),
                 settingsValues.mShowsVoiceInputKey,
-                mLatinIME.shouldSwitchToOtherInputMethods());
+                mLatinIME.shouldShowLanguageSwitchKey());
         mKeyboardLayoutSet = builder.build();
         mCurrentSettingsValues = settingsValues;
         try {
@@ -148,6 +147,9 @@
 
     public void onHideWindow() {
         mIsAutoCorrectionActive = false;
+        if (mKeyboardView != null) {
+            mKeyboardView.onHideWindow();
+        }
     }
 
     private void setKeyboard(final Keyboard keyboard) {
@@ -340,7 +342,8 @@
             mKeyboardView.closing();
         }
 
-        updateKeyboardThemeAndContextThemeWrapper(mLatinIME, mKeyboardTheme);
+        updateKeyboardThemeAndContextThemeWrapper(
+                mLatinIME, KeyboardTheme.getKeyboardTheme(mPrefs));
         mCurrentInputView = (InputView)LayoutInflater.from(mThemeContext).inflate(
                 R.layout.input_view, null);
         mMainKeyboardFrame = mCurrentInputView.findViewById(R.id.main_keyboard_frame);
@@ -353,11 +356,6 @@
         mEmojiPalettesView.setHardwareAcceleratedDrawingEnabled(
                 isHardwareAcceleratedDrawingEnabled);
         mEmojiPalettesView.setKeyboardActionListener(mLatinIME);
-
-        // This always needs to be set since the accessibility state can
-        // potentially change without the input view being re-created.
-        AccessibleKeyboardViewProxy.getInstance().setView(mKeyboardView);
-
         return mCurrentInputView;
     }
 
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
index 4db72ad..429c7dd 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
@@ -17,34 +17,85 @@
 package com.android.inputmethod.keyboard;
 
 import android.content.SharedPreferences;
+import android.os.Build;
+import android.os.Build.VERSION_CODES;
 import android.util.Log;
 
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.settings.Settings;
+
+import java.util.Arrays;
+import java.util.Comparator;
 
 public final class KeyboardTheme {
     private static final String TAG = KeyboardTheme.class.getSimpleName();
 
-    public static final int THEME_ID_ICS = 0;
-    public static final int THEME_ID_KLP = 2;
-    private static final int DEFAULT_THEME_ID = THEME_ID_KLP;
+    static final String KITKAT_KEYBOARD_THEME_KEY = "pref_keyboard_layout_20110916";
+    static final String KEYBOARD_THEME_KEY = "pref_keyboard_theme_20140509";
+
+    static final int THEME_ID_ICS = 0;
+    static final int THEME_ID_KLP = 2;
+    static final int THEME_ID_LMP = 3;
+    static final int DEFAULT_THEME_ID = THEME_ID_KLP;
 
     private static final KeyboardTheme[] KEYBOARD_THEMES = {
-        new KeyboardTheme(THEME_ID_ICS, R.style.KeyboardTheme_ICS),
-        new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP),
+        new KeyboardTheme(THEME_ID_ICS, R.style.KeyboardTheme_ICS,
+                VERSION_CODES.ICE_CREAM_SANDWICH),
+        new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP,
+                VERSION_CODES.KITKAT),
+        new KeyboardTheme(THEME_ID_LMP, R.style.KeyboardTheme_LMP,
+                // TODO: Update this constant once the *next* version becomes available.
+                VERSION_CODES.CUR_DEVELOPMENT),
     };
+    static {
+        // Sort {@link #KEYBOARD_THEME} by descending order of {@link #mMinApiVersion}.
+        Arrays.sort(KEYBOARD_THEMES, new Comparator<KeyboardTheme>() {
+            @Override
+            public int compare(final KeyboardTheme lhs, final KeyboardTheme rhs) {
+                if (lhs.mMinApiVersion > rhs.mMinApiVersion) return -1;
+                if (lhs.mMinApiVersion < rhs.mMinApiVersion) return 1;
+                return 0;
+            }
+        });
+    }
 
     public final int mThemeId;
     public final int mStyleId;
+    final int mMinApiVersion;
 
     // Note: The themeId should be aligned with "themeId" attribute of Keyboard style
-    // in values/style.xml.
-    public KeyboardTheme(final int themeId, final int styleId) {
+    // in values/themes-<style>.xml.
+    private KeyboardTheme(final int themeId, final int styleId, final int minApiVersion) {
         mThemeId = themeId;
         mStyleId = styleId;
+        mMinApiVersion = minApiVersion;
     }
 
-    private static KeyboardTheme searchKeyboardTheme(final int themeId) {
+    @Override
+    public boolean equals(final Object o) {
+        if (o == this) return true;
+        return (o instanceof KeyboardTheme) && ((KeyboardTheme)o).mThemeId == mThemeId;
+    }
+
+    @Override
+    public int hashCode() {
+        return mThemeId;
+    }
+
+    // TODO: This method should be removed when {@link LatinImeLogger} is removed.
+    public int getCompatibleThemeIdForLogging() {
+        switch (mThemeId) {
+        case THEME_ID_ICS:
+            return 5;
+        case THEME_ID_KLP:
+            return 9;
+        case THEME_ID_LMP:
+            return 10;
+        default: // Invalid theme
+            return -1;
+        }
+    }
+
+    private static KeyboardTheme searchKeyboardThemeById(final int themeId) {
         // TODO: This search algorithm isn't optimal if there are many themes.
         for (final KeyboardTheme theme : KEYBOARD_THEMES) {
             if (theme.mThemeId == themeId) {
@@ -54,18 +105,57 @@
         return null;
     }
 
-    public static KeyboardTheme getDefaultKeyboardTheme() {
-        return searchKeyboardTheme(DEFAULT_THEME_ID);
+    private static int getSdkVersion() {
+        final int sdkVersion = Build.VERSION.SDK_INT;
+        // TODO: Consider to remove this check once the *next* version becomes available.
+        if (sdkVersion == VERSION_CODES.KITKAT && Build.VERSION.CODENAME.startsWith("L")) {
+            return VERSION_CODES.CUR_DEVELOPMENT;
+        }
+        return sdkVersion;
+    }
+
+    static KeyboardTheme getDefaultKeyboardTheme(final SharedPreferences prefs,
+            final int sdkVersion) {
+        final String obsoleteIdString = prefs.getString(KITKAT_KEYBOARD_THEME_KEY, null);
+        if (obsoleteIdString != null) {
+            // Remove old preference.
+            prefs.edit().remove(KITKAT_KEYBOARD_THEME_KEY).apply();
+            if (sdkVersion <= VERSION_CODES.KITKAT) {
+                try {
+                    final int themeId = Integer.parseInt(obsoleteIdString);
+                    final KeyboardTheme theme = searchKeyboardThemeById(themeId);
+                    if (theme != null) {
+                        return theme;
+                    }
+                    Log.w(TAG, "Unknown keyboard theme in preference: " + obsoleteIdString);
+                } catch (final NumberFormatException e) {
+                    Log.w(TAG, "Illegal keyboard theme in preference: " + obsoleteIdString);
+                }
+            }
+        }
+        // TODO: This search algorithm isn't optimal if there are many themes.
+        for (final KeyboardTheme theme : KEYBOARD_THEMES) {
+            if (sdkVersion >= theme.mMinApiVersion) {
+                return theme;
+            }
+        }
+        return searchKeyboardThemeById(DEFAULT_THEME_ID);
+    }
+
+    public static void saveKeyboardThemeId(final String themeIdString,
+            final SharedPreferences prefs) {
+        prefs.edit().putString(KEYBOARD_THEME_KEY, themeIdString).apply();
     }
 
     public static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs) {
-        final String themeIdString = prefs.getString(Settings.PREF_KEYBOARD_LAYOUT, null);
+        final int sdkVersion = getSdkVersion();
+        final String themeIdString = prefs.getString(KEYBOARD_THEME_KEY, null);
         if (themeIdString == null) {
-            return getDefaultKeyboardTheme();
+            return getDefaultKeyboardTheme(prefs, sdkVersion);
         }
         try {
             final int themeId = Integer.parseInt(themeIdString);
-            final KeyboardTheme theme = searchKeyboardTheme(themeId);
+            final KeyboardTheme theme = searchKeyboardThemeById(themeId);
             if (theme != null) {
                 return theme;
             }
@@ -73,9 +163,8 @@
         } catch (final NumberFormatException e) {
             Log.w(TAG, "Illegal keyboard theme in preference: " + themeIdString);
         }
-        // Reset preference to default value.
-        final String defaultThemeIdString = Integer.toString(DEFAULT_THEME_ID);
-        prefs.edit().putString(Settings.PREF_KEYBOARD_LAYOUT, defaultThemeIdString).apply();
-        return getDefaultKeyboardTheme();
+        // Remove preference.
+        prefs.edit().remove(KEYBOARD_THEME_KEY).apply();
+        return getDefaultKeyboardTheme(prefs, sdkVersion);
     }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 8ca00b0..4450a44 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -82,6 +82,7 @@
     private final float mVerticalCorrection;
     private final Drawable mKeyBackground;
     private final Rect mKeyBackgroundPadding = new Rect();
+    private static final float KET_TEXT_SHADOW_RADIUS_DISABLED = -1.0f;
 
     // HORIZONTAL ELLIPSIS "...", character for popup hint.
     private static final String POPUP_HINT_CHAR = "\u2026";
@@ -133,7 +134,7 @@
         mKeyShiftedLetterHintPadding = keyboardViewAttr.getDimension(
                 R.styleable.KeyboardView_keyShiftedLetterHintPadding, 0.0f);
         mKeyTextShadowRadius = keyboardViewAttr.getFloat(
-                R.styleable.KeyboardView_keyTextShadowRadius, 0.0f);
+                R.styleable.KeyboardView_keyTextShadowRadius, KET_TEXT_SHADOW_RADIUS_DISABLED);
         mVerticalCorrection = keyboardViewAttr.getDimension(
                 R.styleable.KeyboardView_verticalCorrection, 0.0f);
         keyboardViewAttr.recycle();
@@ -414,18 +415,23 @@
                 }
             }
 
-            paint.setColor(key.selectTextColor(params));
             if (key.isEnabled()) {
-                // Set a drop shadow for the text
-                paint.setShadowLayer(mKeyTextShadowRadius, 0.0f, 0.0f, params.mTextShadowColor);
+                paint.setColor(key.selectTextColor(params));
+                // Set a drop shadow for the text if the shadow radius is positive value.
+                if (mKeyTextShadowRadius > 0.0f) {
+                    paint.setShadowLayer(mKeyTextShadowRadius, 0.0f, 0.0f, params.mTextShadowColor);
+                } else {
+                    paint.clearShadowLayer();
+                }
             } else {
                 // Make label invisible
                 paint.setColor(Color.TRANSPARENT);
+                paint.clearShadowLayer();
             }
             blendAlpha(paint, params.mAnimAlpha);
             canvas.drawText(label, 0, label.length(), positionX, baseline, paint);
             // Turn off drop shadow and reset x-scale.
-            paint.setShadowLayer(0.0f, 0.0f, 0.0f, Color.TRANSPARENT);
+            paint.clearShadowLayer();
             paint.setTextScaleX(1.0f);
 
             if (icon != null) {
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index ecef8cc..1a8e4b7 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -39,7 +39,7 @@
 import android.widget.TextView;
 
 import com.android.inputmethod.accessibility.AccessibilityUtils;
-import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
+import com.android.inputmethod.accessibility.MainKeyboardAccessibilityDelegate;
 import com.android.inputmethod.annotations.ExternallyReferenced;
 import com.android.inputmethod.keyboard.internal.DrawingHandler;
 import com.android.inputmethod.keyboard.internal.DrawingPreviewPlacerView;
@@ -74,6 +74,7 @@
  * @attr ref R.styleable#MainKeyboardView_autoCorrectionSpacebarLedIcon
  * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextRatio
  * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextColor
+ * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextShadowRadius
  * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextShadowColor
  * @attr ref R.styleable#MainKeyboardView_spacebarBackground
  * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarFinalAlpha
@@ -129,7 +130,9 @@
     private final float mLanguageOnSpacebarTextRatio;
     private float mLanguageOnSpacebarTextSize;
     private final int mLanguageOnSpacebarTextColor;
+    private final float mLanguageOnSpacebarTextShadowRadius;
     private final int mLanguageOnSpacebarTextShadowColor;
+    private static final float LANGUAGE_ON_SPACEBAR_TEXT_SHADOW_RADIUS_DISABLED = -1.0f;
     // The minimum x-scale to fit the language name on spacebar.
     private static final float MINIMUM_XSCALE_OF_LANGUAGE_NAME = 0.8f;
     // Stuff to draw auto correction LED on spacebar.
@@ -179,6 +182,8 @@
     private final DrawingHandler mDrawingHandler =
             new DrawingHandler(this);
 
+    private final MainKeyboardAccessibilityDelegate mAccessibilityDelegate;
+
     public MainKeyboardView(final Context context, final AttributeSet attrs) {
         this(context, attrs, R.attr.mainKeyboardViewStyle);
     }
@@ -229,6 +234,9 @@
                 R.styleable.MainKeyboardView_languageOnSpacebarTextRatio, 1, 1, 1.0f);
         mLanguageOnSpacebarTextColor = mainKeyboardViewAttr.getColor(
                 R.styleable.MainKeyboardView_languageOnSpacebarTextColor, 0);
+        mLanguageOnSpacebarTextShadowRadius = mainKeyboardViewAttr.getFloat(
+                R.styleable.MainKeyboardView_languageOnSpacebarTextShadowRadius,
+                LANGUAGE_ON_SPACEBAR_TEXT_SHADOW_RADIUS_DISABLED);
         mLanguageOnSpacebarTextShadowColor = mainKeyboardViewAttr.getColor(
                 R.styleable.MainKeyboardView_languageOnSpacebarTextShadowColor, 0);
         mLanguageOnSpacebarFinalAlpha = mainKeyboardViewAttr.getInt(
@@ -278,6 +286,8 @@
 
         mLanguageOnSpacebarHorizontalMargin = (int)getResources().getDimension(
                 R.dimen.config_language_on_spacebar_horizontal_margin);
+
+        mAccessibilityDelegate = new MainKeyboardAccessibilityDelegate(this);
     }
 
     @Override
@@ -404,9 +414,7 @@
             ResearchLogger.mainKeyboardView_setKeyboard(keyboard, orientation);
         }
 
-        // This always needs to be set since the accessibility state can
-        // potentially change without the keyboard being set again.
-        AccessibleKeyboardViewProxy.getInstance().setKeyboard(keyboard);
+        mAccessibilityDelegate.setKeyboard(keyboard);
     }
 
     /**
@@ -769,6 +777,12 @@
         mMoreKeysKeyboardCache.clear();
     }
 
+    public void onHideWindow() {
+        if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
+            mAccessibilityDelegate.onHideWindow();
+        }
+    }
+
     /**
      * Receives hover events from the input framework.
      *
@@ -779,8 +793,7 @@
     @Override
     public boolean dispatchHoverEvent(final MotionEvent event) {
         if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
-            return AccessibleKeyboardViewProxy.getInstance().dispatchHoverEvent(
-                    event, mKeyDetector);
+            return mAccessibilityDelegate.dispatchHoverEvent(event, mKeyDetector);
         }
 
         // Reflection doesn't support calling superclass methods.
@@ -941,12 +954,17 @@
             final float descent = paint.descent();
             final float textHeight = -paint.ascent() + descent;
             final float baseline = height / 2 + textHeight / 2;
-            paint.setColor(mLanguageOnSpacebarTextShadowColor);
-            paint.setAlpha(mLanguageOnSpacebarAnimAlpha);
-            canvas.drawText(language, width / 2, baseline - descent - 1, paint);
+            if (mLanguageOnSpacebarTextShadowRadius > 0.0f) {
+                paint.setShadowLayer(mLanguageOnSpacebarTextShadowRadius, 0, 0,
+                        mLanguageOnSpacebarTextShadowColor);
+            } else {
+                paint.clearShadowLayer();
+            }
             paint.setColor(mLanguageOnSpacebarTextColor);
             paint.setAlpha(mLanguageOnSpacebarAnimAlpha);
             canvas.drawText(language, width / 2, baseline - descent, paint);
+            paint.clearShadowLayer();
+            paint.setTextScaleX(1.0f);
         }
 
         // Draw the spacebar icon at the bottom
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
index dfe0df0..2aeeed8 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
@@ -664,6 +664,8 @@
                     R.styleable.Keyboard_Case_isMultiLine, id.isMultiLine());
             final boolean imeActionMatched = matchInteger(caseAttr,
                     R.styleable.Keyboard_Case_imeAction, id.imeAction());
+            final boolean isIconDefinedMatched = isIconDefined(caseAttr,
+                    R.styleable.Keyboard_Case_isIconDefined, mParams.mIconsSet);
             final boolean localeCodeMatched = matchString(caseAttr,
                     R.styleable.Keyboard_Case_localeCode, id.mLocale.toString());
             final boolean languageCodeMatched = matchString(caseAttr,
@@ -675,10 +677,11 @@
                     && passwordInputMatched && clobberSettingsKeyMatched
                     && supportsSwitchingToShortcutImeMatched && hasShortcutKeyMatched
                     && languageSwitchKeyEnabledMatched && isMultiLineMatched && imeActionMatched
-                    && localeCodeMatched && languageCodeMatched && countryCodeMatched;
+                    && isIconDefinedMatched && localeCodeMatched && languageCodeMatched
+                    && countryCodeMatched;
 
             if (DEBUG) {
-                startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE,
+                startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE,
                         textAttr(caseAttr.getString(
                                 R.styleable.Keyboard_Case_keyboardLayoutSet), "keyboardLayoutSet"),
                         textAttr(caseAttr.getString(
@@ -704,6 +707,8 @@
                                 "languageSwitchKeyEnabled"),
                         booleanAttr(caseAttr, R.styleable.Keyboard_Case_isMultiLine,
                                 "isMultiLine"),
+                        textAttr(caseAttr.getString(R.styleable.Keyboard_Case_isIconDefined),
+                                "isIconDefined"),
                         textAttr(caseAttr.getString(R.styleable.Keyboard_Case_localeCode),
                                 "localeCode"),
                         textAttr(caseAttr.getString(R.styleable.Keyboard_Case_languageCode),
@@ -755,6 +760,16 @@
         return false;
     }
 
+    private static boolean isIconDefined(final TypedArray a, final int index,
+            final KeyboardIconsSet iconsSet) {
+        if (!a.hasValue(index)) {
+            return true;
+        }
+        final String iconName = a.getString(index);
+        final int iconId = KeyboardIconsSet.getIconId(iconName);
+        return iconsSet.getIconDrawable(iconId) != null;
+    }
+
     private boolean parseDefault(final XmlPullParser parser, final KeyboardRow row,
             final boolean skip) throws XmlPullParserException, IOException {
         if (DEBUG) startTag("<%s>", TAG_DEFAULT);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
index 6c9b5ad..65d6a56 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
@@ -42,7 +42,12 @@
     public static final String NAME_SPACE_KEY = "space_key";
     public static final String NAME_SPACE_KEY_FOR_NUMBER_LAYOUT = "space_key_for_number_layout";
     public static final String NAME_ENTER_KEY = "enter_key";
+    public static final String NAME_GO_KEY = "go_key";
     public static final String NAME_SEARCH_KEY = "search_key";
+    public static final String NAME_SEND_KEY = "send_key";
+    public static final String NAME_NEXT_KEY = "next_key";
+    public static final String NAME_DONE_KEY = "done_key";
+    public static final String NAME_PREVIOUS_KEY = "previous_key";
     public static final String NAME_TAB_KEY = "tab_key";
     public static final String NANE_TAB_KEY_PREVIEW = "tab_key_preview";
     public static final String NAME_SHORTCUT_KEY = "shortcut_key";
@@ -64,7 +69,12 @@
         NAME_SETTINGS_KEY,                R.styleable.Keyboard_iconSettingsKey,
         NAME_SPACE_KEY,                   R.styleable.Keyboard_iconSpaceKey,
         NAME_ENTER_KEY,                   R.styleable.Keyboard_iconEnterKey,
+        NAME_GO_KEY,                      R.styleable.Keyboard_iconGoKey,
         NAME_SEARCH_KEY,                  R.styleable.Keyboard_iconSearchKey,
+        NAME_SEND_KEY,                    R.styleable.Keyboard_iconSendKey,
+        NAME_NEXT_KEY,                    R.styleable.Keyboard_iconNextKey,
+        NAME_DONE_KEY,                    R.styleable.Keyboard_iconDoneKey,
+        NAME_PREVIOUS_KEY,                R.styleable.Keyboard_iconPreviousKey,
         NAME_TAB_KEY,                     R.styleable.Keyboard_iconTabKey,
         NAME_SHORTCUT_KEY,                R.styleable.Keyboard_iconShortcutKey,
         NAME_SPACE_KEY_FOR_NUMBER_LAYOUT, R.styleable.Keyboard_iconSpaceKeyForNumberLayout,
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 14fa767..7e6181a 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -95,18 +95,18 @@
         /*   5:23 */ "morekeys_c",
         /*   6:23 */ "double_quotes",
         /*   7:22 */ "morekeys_n",
-        /*   8:22 */ "single_quotes",
-        /*   9:21 */ "keylabel_to_alpha",
+        /*   8:22 */ "keylabel_to_alpha",
+        /*   9:22 */ "single_quotes",
         /*  10:20 */ "morekeys_s",
         /*  11:14 */ "morekeys_y",
         /*  12:13 */ "morekeys_d",
         /*  13:12 */ "morekeys_z",
         /*  14:10 */ "morekeys_t",
         /*  15:10 */ "morekeys_l",
-        /*  16: 9 */ "morekeys_g",
-        /*  17: 9 */ "single_angle_quotes",
-        /*  18: 9 */ "double_angle_quotes",
-        /*  19: 9 */ "keyspec_currency",
+        /*  16:10 */ "keyspec_currency",
+        /*  17: 9 */ "morekeys_g",
+        /*  18: 9 */ "single_angle_quotes",
+        /*  19: 9 */ "double_angle_quotes",
         /*  20: 8 */ "morekeys_r",
         /*  21: 6 */ "morekeys_k",
         /*  22: 6 */ "morekeys_cyrillic_ie",
@@ -119,29 +119,29 @@
         /*  29: 5 */ "keyspec_east_slavic_row2_11",
         /*  30: 5 */ "keyspec_east_slavic_row3_5",
         /*  31: 5 */ "morekeys_cyrillic_soft_sign",
-        /*  32: 4 */ "morekeys_nordic_row2_11",
-        /*  33: 4 */ "morekeys_punctuation",
-        /*  34: 4 */ "keyspec_symbols_1",
-        /*  35: 4 */ "keyspec_symbols_2",
-        /*  36: 4 */ "keyspec_symbols_3",
-        /*  37: 4 */ "keyspec_symbols_4",
-        /*  38: 4 */ "keyspec_symbols_5",
-        /*  39: 4 */ "keyspec_symbols_6",
-        /*  40: 4 */ "keyspec_symbols_7",
-        /*  41: 4 */ "keyspec_symbols_8",
-        /*  42: 4 */ "keyspec_symbols_9",
-        /*  43: 4 */ "keyspec_symbols_0",
-        /*  44: 4 */ "keylabel_to_symbol",
-        /*  45: 4 */ "additional_morekeys_symbols_1",
-        /*  46: 4 */ "additional_morekeys_symbols_2",
-        /*  47: 4 */ "additional_morekeys_symbols_3",
-        /*  48: 4 */ "additional_morekeys_symbols_4",
-        /*  49: 4 */ "additional_morekeys_symbols_5",
-        /*  50: 4 */ "additional_morekeys_symbols_6",
-        /*  51: 4 */ "additional_morekeys_symbols_7",
-        /*  52: 4 */ "additional_morekeys_symbols_8",
-        /*  53: 4 */ "additional_morekeys_symbols_9",
-        /*  54: 4 */ "additional_morekeys_symbols_0",
+        /*  32: 5 */ "keyspec_symbols_1",
+        /*  33: 5 */ "keyspec_symbols_2",
+        /*  34: 5 */ "keyspec_symbols_3",
+        /*  35: 5 */ "keyspec_symbols_4",
+        /*  36: 5 */ "keyspec_symbols_5",
+        /*  37: 5 */ "keyspec_symbols_6",
+        /*  38: 5 */ "keyspec_symbols_7",
+        /*  39: 5 */ "keyspec_symbols_8",
+        /*  40: 5 */ "keyspec_symbols_9",
+        /*  41: 5 */ "keyspec_symbols_0",
+        /*  42: 5 */ "keylabel_to_symbol",
+        /*  43: 5 */ "additional_morekeys_symbols_1",
+        /*  44: 5 */ "additional_morekeys_symbols_2",
+        /*  45: 5 */ "additional_morekeys_symbols_3",
+        /*  46: 5 */ "additional_morekeys_symbols_4",
+        /*  47: 5 */ "additional_morekeys_symbols_5",
+        /*  48: 5 */ "additional_morekeys_symbols_6",
+        /*  49: 5 */ "additional_morekeys_symbols_7",
+        /*  50: 5 */ "additional_morekeys_symbols_8",
+        /*  51: 5 */ "additional_morekeys_symbols_9",
+        /*  52: 5 */ "additional_morekeys_symbols_0",
+        /*  53: 4 */ "morekeys_nordic_row2_11",
+        /*  54: 4 */ "morekeys_punctuation",
         /*  55: 4 */ "keyspec_tablet_comma",
         /*  56: 3 */ "keyspec_swiss_row1_11",
         /*  57: 3 */ "keyspec_swiss_row2_10",
@@ -266,19 +266,19 @@
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_lqm_rqm",
         /* morekeys_n */ EMPTY,
-        /* single_quotes */ "!text/single_lqm_rqm",
         // Label for "switch to alphabetic" key.
         /* keylabel_to_alpha */ "ABC",
+        /* single_quotes */ "!text/single_lqm_rqm",
         /* morekeys_s ~ */
-        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        /* ~ morekeys_g */
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_l */
+        /* keyspec_currency */ "$",
+        /* morekeys_g */ EMPTY,
         /* single_angle_quotes */ "!text/single_laqm_raqm",
         /* double_angle_quotes */ "!text/double_laqm_raqm",
-        /* keyspec_currency */ "$",
         /* morekeys_r ~ */
-        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        /* ~ morekeys_nordic_row2_11 */
-        /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&",
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_cyrillic_soft_sign */
         /* keyspec_symbols_1 */ "1",
         /* keyspec_symbols_2 */ "2",
         /* keyspec_symbols_3 */ "3",
@@ -292,8 +292,9 @@
         // Label for "switch to symbols" key.
         /* keylabel_to_symbol */ "?123",
         /* additional_morekeys_symbols_1 ~ */
-        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        /* ~ additional_morekeys_symbols_0 */
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_nordic_row2_11 */
+        /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&",
         /* keyspec_tablet_comma */ ",",
         /* keyspec_swiss_row1_11 ~ */
         EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
@@ -515,7 +516,7 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes ~ */
+        /* keylabel_to_alpha ~ */
         null, null, null,
         /* ~ morekeys_s */
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
@@ -526,18 +527,18 @@
     /* Locale ar: Arabic */
     private static final String[] TEXTS_ar = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
         // U+200C: ZERO WIDTH NON-JOINER
         // U+0628: "ب" ARABIC LETTER BEH
         // U+062C: "ج" ARABIC LETTER JEEM
         /* keylabel_to_alpha */ "\u0623\u200C\u0628\u200C\u062C",
-        /* morekeys_s ~ */
+        /* single_quotes ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null,
-        /* ~ morekeys_punctuation */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_soft_sign */
         // U+0661: "١" ARABIC-INDIC DIGIT ONE
         /* keyspec_symbols_1 */ "\u0661",
         // U+0662: "٢" ARABIC-INDIC DIGIT TWO
@@ -573,6 +574,8 @@
         // U+066B: "٫" ARABIC DECIMAL SEPARATOR
         // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
         /* additional_morekeys_symbols_0 */ "0,\u066B,\u066C",
+        /* morekeys_nordic_row2_11 */ null,
+        /* morekeys_punctuation */ null,
         // U+061F: "؟" ARABIC QUESTION MARK
         // U+060C: "،" ARABIC COMMA
         // U+061B: "؛" ARABIC SEMICOLON
@@ -688,15 +691,15 @@
         /* morekeys_c */ "\u00E7,\u0107,\u010D",
         /* double_quotes ~ */
         null, null, null, null,
-        /* ~ keylabel_to_alpha */
+        /* ~ single_quotes */
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u015F,\u00DF,\u015B,\u0161",
         /* morekeys_y ~ */
-        null, null, null, null, null,
-        /* ~ morekeys_l */
+        null, null, null, null, null, null,
+        /* ~ keyspec_currency */
         // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
         /* morekeys_g */ "\u011F",
     };
@@ -708,12 +711,12 @@
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
         /* morekeys_n */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "В" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s ~ */
         null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_k */
@@ -742,7 +745,6 @@
         // single_quotes of Bulgarian is default single_quotes_right_left.
         /* double_quotes */ "!text/double_9qm_lqm",
         /* morekeys_n */ null,
-        /* single_quotes */ null,
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
@@ -802,23 +804,23 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes ~ */
+        /* keylabel_to_alpha ~ */
         null, null, null, null, null, null, null,
         /* ~ morekeys_t */
         // U+00B7: "·" MIDDLE DOT
         // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
         /* morekeys_l */ "l\u00B7l,\u0142",
-        /* morekeys_g ~ */
+        /* keyspec_currency ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null,
         /* ~ morekeys_nordic_row2_11 */
         // U+00B7: "·" MIDDLE DOT
         /* morekeys_punctuation */ "!autoColumnOrder!9,\\,,?,!,\u00B7,#,),(,/,;,',@,:,-,\",+,\\%,&",
-        /* keyspec_symbols_1 ~ */
+        /* keyspec_tablet_comma ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null,
         /* ~ keyspec_south_slavic_row3_8 */
         /* morekeys_tablet_punctuation */ "!autoColumnOrder!8,\\,,',\u00B7,#,),(,/,;,@,:,-,\",+,\\%,&",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
@@ -877,8 +879,8 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u0148,\u00F1,\u0144",
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -894,11 +896,11 @@
         /* morekeys_z */ "\u017E,\u017A,\u017C",
         // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
         /* morekeys_t */ "\u0165",
-        /* morekeys_l */ null,
-        /* morekeys_g */ null,
+        /* morekeys_l ~ */
+        null, null, null,
+        /* ~ morekeys_g */
         /* single_angle_quotes */ "!text/single_raqm_laqm",
         /* double_angle_quotes */ "!text/double_raqm_laqm",
-        /* keyspec_currency */ null,
         // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
         /* morekeys_r */ "\u0159",
     };
@@ -936,8 +938,8 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
@@ -951,11 +953,12 @@
         /* morekeys_t */ null,
         // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
         /* morekeys_l */ "\u0142",
+        /* keyspec_currency */ null,
         /* morekeys_g */ null,
         /* single_angle_quotes */ "!text/single_raqm_laqm",
         /* double_angle_quotes */ "!text/double_raqm_laqm",
-        /* keyspec_currency ~ */
-        null, null, null, null,
+        /* morekeys_r ~ */
+        null, null, null,
         /* ~ morekeys_cyrillic_ie */
         // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
         /* keyspec_nordic_row1_11 */ "\u00E5",
@@ -966,8 +969,9 @@
         // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
         /* morekeys_nordic_row2_10 */ "\u00E4",
         /* keyspec_east_slavic_row1_9 ~ */
-        null, null, null, null, null,
-        /* ~ morekeys_cyrillic_soft_sign */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ additional_morekeys_symbols_0 */
         // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         /* morekeys_nordic_row2_11 */ "\u00F6",
     };
@@ -1010,21 +1014,21 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u00DF,\u015B,\u0161",
         /* morekeys_y ~ */
-        null, null, null, null, null, null,
+        null, null, null, null, null, null, null,
         /* ~ morekeys_g */
         /* single_angle_quotes */ "!text/single_raqm_laqm",
         /* double_angle_quotes */ "!text/double_raqm_laqm",
-        /* keyspec_currency ~ */
+        /* morekeys_r ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null,
+        null, null, null, null, null, null,
         /* ~ keyspec_tablet_comma */
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         /* keyspec_swiss_row1_11 */ "\u00FC",
@@ -1043,8 +1047,8 @@
     /* Locale el: Greek */
     private static final String[] TEXTS_el = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0391: "Α" GREEK CAPITAL LETTER ALPHA
         // U+0392: "Β" GREEK CAPITAL LETTER BETA
@@ -1063,40 +1067,40 @@
         // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
         // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
         /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
         // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
         // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
         // U+0153: "œ" LATIN SMALL LIGATURE OE
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-        /* morekeys_o */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5",
+        /* morekeys_o */ "\u00F3,\u00F4,\u00F6,\u00F2,\u0153,\u00F8,\u014D,\u00F5",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B",
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
         // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
-        /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113",
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0113",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-        /* morekeys_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
+        /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* morekeys_c */ "\u00E7",
         /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         /* morekeys_n */ "\u00F1",
-        /* single_quotes */ null,
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* morekeys_s */ "\u00DF",
     };
@@ -1169,8 +1173,8 @@
         // U+0149: "ŉ" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
         // U+014B: "ŋ" LATIN SMALL LETTER ENG
         /* morekeys_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
-        /* single_quotes */ null,
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -1201,13 +1205,13 @@
         // U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT
         // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
         /* morekeys_l */ "\u013A,\u013C,\u013E,\u0140,\u0142",
+        /* keyspec_currency */ null,
         // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
         // U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE
         // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
         /* morekeys_g */ "\u011F,\u0121,\u0123",
-        /* single_angle_quotes ~ */
-        null, null, null,
-        /* ~ keyspec_currency */
+        /* single_angle_quotes */ null,
+        /* double_angle_quotes */ null,
         // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
         // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
         // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
@@ -1301,9 +1305,11 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes ~ */
+        /* keylabel_to_alpha ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null,
         /* ~ morekeys_nordic_row2_11 */
         // U+00A1: "¡" INVERTED EXCLAMATION MARK
         // U+00BF: "¿" INVERTED QUESTION MARK
@@ -1366,8 +1372,8 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u0146,\u00F1,\u0144",
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -1390,12 +1396,12 @@
         // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
         // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
         /* morekeys_l */ "\u013C,\u0142,\u013A,\u013E",
+        /* keyspec_currency */ null,
         // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
         // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
         /* morekeys_g */ "\u0123,\u011F",
-        /* single_angle_quotes ~ */
-        null, null, null,
-        /* ~ keyspec_currency */
+        /* single_angle_quotes */ null,
+        /* double_angle_quotes */ null,
         // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
         // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
         // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
@@ -1470,22 +1476,22 @@
     /* Locale fa: Persian */
     private static final String[] TEXTS_fa = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0627: "ا" ARABIC LETTER ALEF
         // U+200C: ZERO WIDTH NON-JOINER
         // U+0628: "ب" ARABIC LETTER BEH
         // U+067E: "پ" ARABIC LETTER PEH
         /* keylabel_to_alpha */ "\u0627\u200C\u0628\u200C\u067E",
-        /* morekeys_s ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ double_angle_quotes */
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_l */
         // U+FDFC: "﷼" RIAL SIGN
         /* keyspec_currency */ "\uFDFC",
-        /* morekeys_r ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~ morekeys_punctuation */
+        /* morekeys_g ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_soft_sign */
         // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
         /* keyspec_symbols_1 */ "\u06F1",
         // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
@@ -1521,6 +1527,8 @@
         // U+066B: "٫" ARABIC DECIMAL SEPARATOR
         // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
         /* additional_morekeys_symbols_0 */ "0,\u066B,\u066C",
+        /* morekeys_nordic_row2_11 */ null,
+        /* morekeys_punctuation */ null,
         // U+060C: "،" ARABIC COMMA
         // U+061B: "؛" ARABIC SEMICOLON
         // U+061F: "؟" ARABIC QUESTION MARK
@@ -1629,7 +1637,7 @@
         /* morekeys_u */ "\u00FC",
         /* morekeys_e ~ */
         null, null, null, null, null, null, null,
-        /* ~ keylabel_to_alpha */
+        /* ~ single_quotes */
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -1652,8 +1660,9 @@
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         /* morekeys_nordic_row2_10 */ "\u00F8",
         /* keyspec_east_slavic_row1_9 ~ */
-        null, null, null, null, null,
-        /* ~ morekeys_cyrillic_soft_sign */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ additional_morekeys_symbols_0 */
         // U+00E6: "æ" LATIN SMALL LETTER AE
         /* morekeys_nordic_row2_11 */ "\u00E6",
     };
@@ -1786,21 +1795,21 @@
     /* Locale hi: Hindi */
     private static final String[] TEXTS_hi = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0915: "क" DEVANAGARI LETTER KA
         // U+0916: "ख" DEVANAGARI LETTER KHA
         // U+0917: "ग" DEVANAGARI LETTER GA
         /* keylabel_to_alpha */ "\u0915\u0916\u0917",
-        /* morekeys_s ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ double_angle_quotes */
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_l */
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keyspec_currency */ "\u20B9",
-        /* morekeys_r ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~ morekeys_punctuation */
+        /* morekeys_g ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_soft_sign */
         // U+0967: "१" DEVANAGARI DIGIT ONE
         /* keyspec_symbols_1 */ "\u0967",
         // U+0968: "२" DEVANAGARI DIGIT TWO
@@ -1848,8 +1857,8 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes */ "!text/single_9qm_rqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_rqm",
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -1862,7 +1871,7 @@
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         /* morekeys_z */ "\u017E,\u017A,\u017C",
         /* morekeys_t ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_g */
         /* single_angle_quotes */ "!text/single_raqm_laqm",
         /* double_angle_quotes */ "!text/double_raqm_laqm",
@@ -1914,8 +1923,9 @@
         /* morekeys_c */ null,
         /* double_quotes */ "!text/double_9qm_rqm",
         /* morekeys_n */ null,
+        /* keylabel_to_alpha */ null,
         /* single_quotes */ "!text/single_9qm_rqm",
-        /* keylabel_to_alpha ~ */
+        /* morekeys_s ~ */
         null, null, null, null, null, null, null, null,
         /* ~ morekeys_g */
         /* single_angle_quotes */ "!text/single_raqm_laqm",
@@ -1925,16 +1935,17 @@
     /* Locale hy_AM: Armenian (Armenia) */
     private static final String[] TEXTS_hy_AM = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB
         // U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
         // U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM
         /* keylabel_to_alpha */ "\u0531\u0532\u0533",
-        /* morekeys_s ~ */
+        /* single_quotes ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_nordic_row2_11 */
         // U+055E: "՞" ARMENIAN QUESTION MARK
         // U+055C: "՜" ARMENIAN EXCLAMATION MARK
@@ -1947,10 +1958,6 @@
         // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
         // U+055F: "՟" ARMENIAN ABBREVIATION MARK
         /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,\u055E,\u055C,.,\u055A,\u0559,?,!,\u055D,\u055B,\u058A,\u00BB,\u00AB,\u055F,;,:",
-        /* keyspec_symbols_1 ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null,
-        /* ~ additional_morekeys_symbols_0 */
         // U+058F: "֏" ARMENIAN DRAM SIGN
         // TODO: Enable this when we have glyph for the following letter
         // <string name="keyspec_currency">&#x058F;</string>
@@ -2026,8 +2033,8 @@
         /* morekeys_c */ null,
         /* double_quotes */ "!text/double_9qm_lqm",
         /* morekeys_n */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
@@ -2109,21 +2116,21 @@
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_rqm_9qm",
         /* morekeys_n */ null,
-        /* single_quotes */ "!text/single_rqm_9qm",
         // Label for "switch to alphabetic" key.
         // U+05D0: "א" HEBREW LETTER ALEF
         // U+05D1: "ב" HEBREW LETTER BET
         // U+05D2: "ג" HEBREW LETTER GIMEL
         /* keylabel_to_alpha */ "\u05D0\u05D1\u05D2",
+        /* single_quotes */ "!text/single_rqm_9qm",
         /* morekeys_s ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ double_angle_quotes */
+        null, null, null, null, null, null,
+        /* ~ morekeys_l */
         // U+20AA: "₪" NEW SHEQEL SIGN
         /* keyspec_currency */ "\u20AA",
-        /* morekeys_r ~ */
+        /* morekeys_g ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_swiss_row2_11 */
         // U+2605: "★" BLACK STAR
         /* morekeys_star */ "\u2605",
@@ -2166,26 +2173,26 @@
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
         /* morekeys_n */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         // Label for "switch to alphabetic" key.
         // U+10D0: "ა" GEORGIAN LETTER AN
         // U+10D1: "ბ" GEORGIAN LETTER BAN
         // U+10D2: "გ" GEORGIAN LETTER GAN
         /* keylabel_to_alpha */ "\u10D0\u10D1\u10D2",
+        /* single_quotes */ "!text/single_9qm_lqm",
     };
 
     /* Locale kk: Kazakh */
     private static final String[] TEXTS_kk = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "В" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_s ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_k */
         // U+0451: "ё" CYRILLIC SMALL LETTER IO
         /* morekeys_cyrillic_ie */ "\u0451",
@@ -2202,7 +2209,7 @@
         /* keyspec_east_slavic_row3_5 */ "\u0438",
         // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
         /* morekeys_cyrillic_soft_sign */ "\u044A",
-        /* morekeys_nordic_row2_11 ~ */
+        /* keyspec_symbols_1 ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2234,14 +2241,14 @@
     /* Locale km_KH: Khmer (Cambodia) */
     private static final String[] TEXTS_km_KH = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+1780: "ក" KHMER LETTER KA
         // U+1781: "ខ" KHMER LETTER KHA
         // U+1782: "គ" KHMER LETTER KO
         /* keylabel_to_alpha */ "\u1780\u1781\u1782",
-        /* morekeys_s ~ */
+        /* single_quotes ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2249,7 +2256,7 @@
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null,
+        null, null, null, null, null, null, null,
         /* ~ morekeys_cyrillic_a */
         // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
         /* morekeys_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
@@ -2258,15 +2265,15 @@
     /* Locale ky: Kirghiz */
     private static final String[] TEXTS_ky = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "В" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_s ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_k */
         // U+0451: "ё" CYRILLIC SMALL LETTER IO
         /* morekeys_cyrillic_ie */ "\u0451",
@@ -2283,7 +2290,7 @@
         /* keyspec_east_slavic_row3_5 */ "\u0438",
         // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
         /* morekeys_cyrillic_soft_sign */ "\u044A",
-        /* morekeys_nordic_row2_11 ~ */
+        /* keyspec_symbols_1 ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2301,16 +2308,16 @@
     /* Locale lo_LA: Lao (Laos) */
     private static final String[] TEXTS_lo_LA = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0E81: "ກ" LAO LETTER KO
         // U+0E82: "ຂ" LAO LETTER KHO SUNG
         // U+0E84: "ຄ" LAO LETTER KHO TAM
         /* keylabel_to_alpha */ "\u0E81\u0E82\u0E84",
-        /* morekeys_s ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ double_angle_quotes */
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_l */
         // U+20AD: "₭" KIP SIGN
         /* keyspec_currency */ "\u20AD",
     };
@@ -2372,8 +2379,8 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u0146,\u00F1,\u0144",
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -2396,12 +2403,12 @@
         // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
         // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
         /* morekeys_l */ "\u013C,\u0142,\u013A,\u013E",
+        /* keyspec_currency */ null,
         // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
         // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
         /* morekeys_g */ "\u0123,\u011F",
-        /* single_angle_quotes ~ */
-        null, null, null,
-        /* ~ keyspec_currency */
+        /* single_angle_quotes */ null,
+        /* double_angle_quotes */ null,
         // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
         // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
         // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
@@ -2466,8 +2473,8 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u0146,\u00F1,\u0144",
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -2490,12 +2497,12 @@
         // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
         // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
         /* morekeys_l */ "\u013C,\u0142,\u013A,\u013E",
+        /* keyspec_currency */ null,
         // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
         // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
         /* morekeys_g */ "\u0123,\u011F",
-        /* single_angle_quotes ~ */
-        null, null, null,
-        /* ~ keyspec_currency */
+        /* single_angle_quotes */ null,
+        /* double_angle_quotes */ null,
         // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
         // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
         // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
@@ -2511,12 +2518,12 @@
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
         /* morekeys_n */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "В" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s ~ */
         null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_k */
@@ -2544,39 +2551,88 @@
     /* Locale mn_MN: Mongolian (Mongolia) */
     private static final String[] TEXTS_mn_MN = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "В" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
-        /* morekeys_s ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ double_angle_quotes */
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_l */
         // U+20AE: "₮" TUGRIK SIGN
         /* keyspec_currency */ "\u20AE",
     };
 
+    /* Locale mr_IN: Marathi (India) */
+    private static final String[] TEXTS_mr_IN = {
+        /* morekeys_a ~ */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
+        // Label for "switch to alphabetic" key.
+        // U+0915: "क" DEVANAGARI LETTER KA
+        // U+0916: "ख" DEVANAGARI LETTER KHA
+        // U+0917: "ग" DEVANAGARI LETTER GA
+        /* keylabel_to_alpha */ "\u0915\u0916\u0917",
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_l */
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        /* keyspec_currency */ "\u20B9",
+        /* morekeys_g ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_soft_sign */
+        // U+0967: "१" DEVANAGARI DIGIT ONE
+        /* keyspec_symbols_1 */ "\u0967",
+        // U+0968: "२" DEVANAGARI DIGIT TWO
+        /* keyspec_symbols_2 */ "\u0968",
+        // U+0969: "३" DEVANAGARI DIGIT THREE
+        /* keyspec_symbols_3 */ "\u0969",
+        // U+096A: "४" DEVANAGARI DIGIT FOUR
+        /* keyspec_symbols_4 */ "\u096A",
+        // U+096B: "५" DEVANAGARI DIGIT FIVE
+        /* keyspec_symbols_5 */ "\u096B",
+        // U+096C: "६" DEVANAGARI DIGIT SIX
+        /* keyspec_symbols_6 */ "\u096C",
+        // U+096D: "७" DEVANAGARI DIGIT SEVEN
+        /* keyspec_symbols_7 */ "\u096D",
+        // U+096E: "८" DEVANAGARI DIGIT EIGHT
+        /* keyspec_symbols_8 */ "\u096E",
+        // U+096F: "९" DEVANAGARI DIGIT NINE
+        /* keyspec_symbols_9 */ "\u096F",
+        // U+0966: "०" DEVANAGARI DIGIT ZERO
+        /* keyspec_symbols_0 */ "\u0966",
+        // Label for "switch to symbols" key.
+        /* keylabel_to_symbol */ "?\u0967\u0968\u0969",
+        /* additional_morekeys_symbols_1 */ "1",
+        /* additional_morekeys_symbols_2 */ "2",
+        /* additional_morekeys_symbols_3 */ "3",
+        /* additional_morekeys_symbols_4 */ "4",
+        /* additional_morekeys_symbols_5 */ "5",
+        /* additional_morekeys_symbols_6 */ "6",
+        /* additional_morekeys_symbols_7 */ "7",
+        /* additional_morekeys_symbols_8 */ "8",
+        /* additional_morekeys_symbols_9 */ "9",
+        /* additional_morekeys_symbols_0 */ "0",
+    };
+
     /* Locale my_MM: Burmese (Myanmar) */
     private static final String[] TEXTS_my_MM = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+1000: "က" MYANMAR LETTER KA
         // U+1001: "ခ" MYANMAR LETTER KHA
         // U+1002: "ဂ" MYANMAR LETTER GA
         /* keylabel_to_alpha */ "\u1000\u1001\u1002",
-        /* morekeys_s ~ */
+        /* single_quotes ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_nordic_row2_11 */
         /* morekeys_punctuation */ "!autoColumnOrder!9,\u104A,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&",
-        /* keyspec_symbols_1 ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null,
-        /* ~ additional_morekeys_symbols_0 */
         // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
         // U+104B: "။" MYANMAR SIGN SECTION
         /* keyspec_tablet_comma */ "\u104A",
@@ -2633,9 +2689,10 @@
         /* morekeys_c */ null,
         /* double_quotes */ "!text/double_9qm_rqm",
         /* morekeys_n */ null,
+        /* keylabel_to_alpha */ null,
         /* single_quotes */ "!text/single_9qm_rqm",
-        /* keylabel_to_alpha ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* morekeys_s ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_cyrillic_ie */
         // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
         /* keyspec_nordic_row1_11 */ "\u00E5",
@@ -2646,8 +2703,9 @@
         // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         /* morekeys_nordic_row2_10 */ "\u00F6",
         /* keyspec_east_slavic_row1_9 ~ */
-        null, null, null, null, null,
-        /* ~ morekeys_cyrillic_soft_sign */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ additional_morekeys_symbols_0 */
         // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
         /* morekeys_nordic_row2_11 */ "\u00E4",
     };
@@ -2655,21 +2713,21 @@
     /* Locale ne_NP: Nepali (Nepal) */
     private static final String[] TEXTS_ne_NP = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0915: "क" DEVANAGARI LETTER KA
         // U+0916: "ख" DEVANAGARI LETTER KHA
         // U+0917: "ग" DEVANAGARI LETTER GA
         /* keylabel_to_alpha */ "\u0915\u0916\u0917",
-        /* morekeys_s ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ double_angle_quotes */
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_l */
         // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
         /* keyspec_currency */ "\u0930\u0941.",
-        /* morekeys_r ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~ morekeys_punctuation */
+        /* morekeys_g ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_soft_sign */
         // U+0967: "१" DEVANAGARI DIGIT ONE
         /* keyspec_symbols_1 */ "\u0967",
         // U+0968: "२" DEVANAGARI DIGIT TWO
@@ -2751,8 +2809,8 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes */ "!text/single_9qm_rqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_rqm",
         /* morekeys_s */ null,
         // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
         /* morekeys_y */ "\u0133",
@@ -2797,8 +2855,8 @@
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         /* morekeys_n */ "\u0144,\u00F1",
-        /* single_quotes */ "!text/single_9qm_rqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_rqm",
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
@@ -2900,8 +2958,8 @@
         /* morekeys_c */ null,
         /* double_quotes */ "!text/double_9qm_rqm",
         /* morekeys_n */ null,
-        /* single_quotes */ "!text/single_9qm_rqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_rqm",
         // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -2921,12 +2979,12 @@
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
         /* morekeys_n */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "В" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s ~ */
         null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_k */
@@ -3004,8 +3062,8 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u0148,\u0146,\u00F1,\u0144",
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -3028,12 +3086,12 @@
         // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
         // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
         /* morekeys_l */ "\u013E,\u013A,\u013C,\u0142",
+        /* keyspec_currency */ null,
         // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
         // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
         /* morekeys_g */ "\u0123,\u011F",
         /* single_angle_quotes */ "!text/single_raqm_laqm",
         /* double_angle_quotes */ "!text/double_raqm_laqm",
-        /* keyspec_currency */ null,
         // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
         // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
         // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
@@ -3052,8 +3110,8 @@
         /* morekeys_c */ "\u010D,\u0107",
         /* double_quotes */ "!text/double_9qm_lqm",
         /* morekeys_n */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u0161",
         /* morekeys_y */ null,
@@ -3062,7 +3120,7 @@
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         /* morekeys_z */ "\u017E",
         /* morekeys_t ~ */
-        null, null, null,
+        null, null, null, null,
         /* ~ morekeys_g */
         /* single_angle_quotes */ "!text/single_raqm_laqm",
         /* double_angle_quotes */ "!text/double_raqm_laqm",
@@ -3075,21 +3133,20 @@
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
         /* morekeys_n */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         // END: More keys definitions for Serbian (Cyrillic)
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "В" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s ~ */
-        null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null,
         /* ~ morekeys_g */
         /* single_angle_quotes */ "!text/single_raqm_laqm",
         /* double_angle_quotes */ "!text/double_raqm_laqm",
-        /* keyspec_currency ~ */
-        null, null, null,
-        /* ~ morekeys_k */
+        /* morekeys_r */ null,
+        /* morekeys_k */ null,
         // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
         /* morekeys_cyrillic_ie */ "\u0450",
         /* keyspec_nordic_row1_11 ~ */
@@ -3169,8 +3226,8 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
         /* morekeys_n */ "\u0144,\u00F1,\u0148",
-        /* single_quotes */ null,
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ null,
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
@@ -3191,10 +3248,10 @@
         /* morekeys_t */ "\u0165,\u00FE",
         // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
         /* morekeys_l */ "\u0142",
+        /* keyspec_currency */ null,
         /* morekeys_g */ null,
         /* single_angle_quotes */ "!text/single_raqm_laqm",
         /* double_angle_quotes */ "!text/double_raqm_laqm",
-        /* keyspec_currency */ null,
         // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
         /* morekeys_r */ "\u0159",
         /* morekeys_k */ null,
@@ -3209,8 +3266,9 @@
         // U+0153: "œ" LATIN SMALL LIGATURE OE
         /* morekeys_nordic_row2_10 */ "\u00F8,\u0153",
         /* keyspec_east_slavic_row1_9 ~ */
-        null, null, null, null, null,
-        /* ~ morekeys_cyrillic_soft_sign */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ additional_morekeys_symbols_0 */
         // U+00E6: "æ" LATIN SMALL LETTER AE
         /* morekeys_nordic_row2_11 */ "\u00E6",
     };
@@ -3259,29 +3317,29 @@
         /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         /* morekeys_n */ "\u00F1",
-        /* single_quotes */ null,
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* morekeys_s */ "\u00DF",
         /* morekeys_y ~ */
-        null, null, null, null, null,
-        /* ~ morekeys_l */
+        null, null, null, null, null, null,
+        /* ~ keyspec_currency */
         /* morekeys_g */ "g\'",
     };
 
     /* Locale th: Thai */
     private static final String[] TEXTS_th = {
         /* morekeys_a ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ single_quotes */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_n */
         // Label for "switch to alphabetic" key.
         // U+0E01: "ก" THAI CHARACTER KO KAI
         // U+0E02: "ข" THAI CHARACTER KHO KHAI
         // U+0E04: "ค" THAI CHARACTER KHO KHWAI
         /* keylabel_to_alpha */ "\u0E01\u0E02\u0E04",
-        /* morekeys_s ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ double_angle_quotes */
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_l */
         // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
         /* keyspec_currency */ "\u0E3F",
     };
@@ -3374,15 +3432,15 @@
         /* morekeys_c */ "\u00E7,\u0107,\u010D",
         /* double_quotes ~ */
         null, null, null, null,
-        /* ~ keylabel_to_alpha */
+        /* ~ single_quotes */
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u015F,\u00DF,\u015B,\u0161",
         /* morekeys_y ~ */
-        null, null, null, null, null,
-        /* ~ morekeys_l */
+        null, null, null, null, null, null,
+        /* ~ keyspec_currency */
         // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
         /* morekeys_g */ "\u011F",
     };
@@ -3394,19 +3452,19 @@
         /* ~ morekeys_c */
         /* double_quotes */ "!text/double_9qm_lqm",
         /* morekeys_n */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
         // U+0412: "В" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s ~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~ double_angle_quotes */
+        null, null, null, null, null, null,
+        /* ~ morekeys_l */
         // U+20B4: "₴" HRYVNIA SIGN
         /* keyspec_currency */ "\u20B4",
-        /* morekeys_r ~ */
-        null, null, null, null, null, null, null,
+        /* morekeys_g ~ */
+        null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_nordic_row2_10 */
         // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
         /* keyspec_east_slavic_row1_9 */ "\u0449",
@@ -3418,7 +3476,7 @@
         /* keyspec_east_slavic_row3_5 */ "\u0438",
         // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
         /* morekeys_cyrillic_soft_sign */ "\u044A",
-        /* morekeys_nordic_row2_11 ~ */
+        /* keyspec_symbols_1 ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -3512,8 +3570,8 @@
         // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
         /* morekeys_d */ "\u0111",
         /* morekeys_z ~ */
-        null, null, null, null, null, null,
-        /* ~ double_angle_quotes */
+        null, null, null,
+        /* ~ morekeys_l */
         // U+20AB: "₫" DONG SIGN
         /* keyspec_currency */ "\u20AB",
     };
@@ -3530,40 +3588,40 @@
         // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
         // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
         /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
         // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
         // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
         // U+0153: "œ" LATIN SMALL LIGATURE OE
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
         // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-        /* morekeys_o */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5",
+        /* morekeys_o */ "\u00F3,\u00F4,\u00F6,\u00F2,\u0153,\u00F8,\u014D,\u00F5",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
         // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
-        /* morekeys_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B",
-        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
         // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
-        /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113",
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0113",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-        /* morekeys_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
+        /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC",
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* morekeys_c */ "\u00E7",
         /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         /* morekeys_n */ "\u00F1",
-        /* single_quotes */ null,
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* morekeys_s */ "\u00DF",
     };
@@ -3640,8 +3698,8 @@
         // U+0149: "ŉ" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
         // U+014B: "ŋ" LATIN SMALL LETTER ENG
         /* morekeys_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
-        /* single_quotes */ null,
         /* keylabel_to_alpha */ null,
+        /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
@@ -3673,14 +3731,14 @@
         // U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT
         // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
         /* morekeys_l */ "\u013A,\u013C,\u013E,\u0140,\u0142",
+        /* keyspec_currency */ null,
         // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX
         // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
         // U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE
         // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
         /* morekeys_g */ "\u011D,\u011F,\u0121,\u0123",
-        /* single_angle_quotes ~ */
-        null, null, null,
-        /* ~ keyspec_currency */
+        /* single_angle_quotes */ null,
+        /* double_angle_quotes */ null,
         // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
         // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
         // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
@@ -3711,26 +3769,26 @@
         "DEFAULT", TEXTS_DEFAULT, /* 168/168 DEFAULT */
         "af"     , TEXTS_af,    /*   7/ 12 Afrikaans */
         "ar"     , TEXTS_ar,    /*  55/110 Arabic */
-        "az_AZ"  , TEXTS_az_AZ, /*   8/ 17 Azerbaijani (Azerbaijan) */
+        "az_AZ"  , TEXTS_az_AZ, /*   8/ 18 Azerbaijani (Azerbaijan) */
         "be_BY"  , TEXTS_be_BY, /*   9/ 32 Belarusian (Belarus) */
-        "bg"     , TEXTS_bg,    /*   2/ 10 Bulgarian */
+        "bg"     , TEXTS_bg,    /*   2/  9 Bulgarian */
         "ca"     , TEXTS_ca,    /*  11/ 95 Catalan */
         "cs"     , TEXTS_cs,    /*  17/ 21 Czech */
-        "da"     , TEXTS_da,    /*  19/ 33 Danish */
+        "da"     , TEXTS_da,    /*  19/ 54 Danish */
         "de"     , TEXTS_de,    /*  16/ 62 German */
-        "el"     , TEXTS_el,    /*   1/ 10 Greek */
+        "el"     , TEXTS_el,    /*   1/  9 Greek */
         "en"     , TEXTS_en,    /*   8/ 11 English */
         "eo"     , TEXTS_eo,    /*  26/118 Esperanto */
-        "es"     , TEXTS_es,    /*   8/ 34 Spanish */
+        "es"     , TEXTS_es,    /*   8/ 55 Spanish */
         "et_EE"  , TEXTS_et_EE, /*  22/ 27 Estonian (Estonia) */
         "eu_ES"  , TEXTS_eu_ES, /*   7/  8 Basque (Spain) */
         "fa"     , TEXTS_fa,    /*  58/125 Persian */
-        "fi"     , TEXTS_fi,    /*  10/ 33 Finnish */
+        "fi"     , TEXTS_fi,    /*  10/ 54 Finnish */
         "fr"     , TEXTS_fr,    /*  13/ 62 French */
         "gl_ES"  , TEXTS_gl_ES, /*   7/  8 Gallegan (Spain) */
-        "hi"     , TEXTS_hi,    /*  23/ 55 Hindi */
-        "hr"     , TEXTS_hr,    /*   9/ 19 Croatian */
-        "hu"     , TEXTS_hu,    /*   9/ 19 Hungarian */
+        "hi"     , TEXTS_hi,    /*  23/ 53 Hindi */
+        "hr"     , TEXTS_hr,    /*   9/ 20 Croatian */
+        "hu"     , TEXTS_hu,    /*   9/ 20 Hungarian */
         "hy_AM"  , TEXTS_hy_AM, /*   8/126 Armenian (Armenia) */
         "is"     , TEXTS_is,    /*  10/ 15 Icelandic */
         "it"     , TEXTS_it,    /*  11/ 62 Italian */
@@ -3739,14 +3797,15 @@
         "kk"     , TEXTS_kk,    /*  15/121 Kazakh */
         "km_KH"  , TEXTS_km_KH, /*   2/122 Khmer (Cambodia) */
         "ky"     , TEXTS_ky,    /*  10/ 88 Kirghiz */
-        "lo_LA"  , TEXTS_lo_LA, /*   2/ 20 Lao (Laos) */
+        "lo_LA"  , TEXTS_lo_LA, /*   2/ 17 Lao (Laos) */
         "lt"     , TEXTS_lt,    /*  18/ 22 Lithuanian */
         "lv"     , TEXTS_lv,    /*  18/ 22 Latvian */
         "mk"     , TEXTS_mk,    /*   9/ 93 Macedonian */
-        "mn_MN"  , TEXTS_mn_MN, /*   2/ 20 Mongolian (Mongolia) */
+        "mn_MN"  , TEXTS_mn_MN, /*   2/ 17 Mongolian (Mongolia) */
+        "mr_IN"  , TEXTS_mr_IN, /*  23/ 53 Marathi (India) */
         "my_MM"  , TEXTS_my_MM, /*   8/104 Burmese (Myanmar) */
-        "nb"     , TEXTS_nb,    /*  11/ 33 Norwegian Bokmål */
-        "ne_NP"  , TEXTS_ne_NP, /*  23/ 55 Nepali (Nepal) */
+        "nb"     , TEXTS_nb,    /*  11/ 54 Norwegian Bokmål */
+        "ne_NP"  , TEXTS_ne_NP, /*  23/ 53 Nepali (Nepal) */
         "nl"     , TEXTS_nl,    /*   9/ 12 Dutch */
         "pl"     , TEXTS_pl,    /*  10/ 16 Polish */
         "pt"     , TEXTS_pt,    /*   6/  6 Portuguese */
@@ -3754,15 +3813,15 @@
         "ro"     , TEXTS_ro,    /*   6/ 15 Romanian */
         "ru"     , TEXTS_ru,    /*   9/ 32 Russian */
         "sk"     , TEXTS_sk,    /*  20/ 22 Slovak */
-        "sl"     , TEXTS_sl,    /*   8/ 19 Slovenian */
+        "sl"     , TEXTS_sl,    /*   8/ 20 Slovenian */
         "sr"     , TEXTS_sr,    /*  11/ 93 Serbian */
-        "sv"     , TEXTS_sv,    /*  21/ 33 Swedish */
-        "sw"     , TEXTS_sw,    /*   9/ 17 Swahili */
-        "th"     , TEXTS_th,    /*   2/ 20 Thai */
+        "sv"     , TEXTS_sv,    /*  21/ 54 Swedish */
+        "sw"     , TEXTS_sw,    /*   9/ 18 Swahili */
+        "th"     , TEXTS_th,    /*   2/ 17 Thai */
         "tl"     , TEXTS_tl,    /*   7/  8 Tagalog */
-        "tr"     , TEXTS_tr,    /*   7/ 17 Turkish */
+        "tr"     , TEXTS_tr,    /*   7/ 18 Turkish */
         "uk"     , TEXTS_uk,    /*  11/ 87 Ukrainian */
-        "vi"     , TEXTS_vi,    /*   8/ 20 Vietnamese */
+        "vi"     , TEXTS_vi,    /*   8/ 17 Vietnamese */
         "zu"     , TEXTS_zu,    /*   8/ 11 Zulu */
         "zz"     , TEXTS_zz,    /*  19/112 Alphabet */
     };
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index b88509f..999508e 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -218,6 +218,8 @@
             int bigramProbability);
     private static native String getPropertyNative(long dict, String query);
     private static native boolean isCorruptedNative(long dict);
+    private static native boolean migrateNative(long dict, String dictFilePath,
+            long newFormatVersion);
 
     // TODO: Move native dict into session
     private final void loadDictionary(final String path, final long startOffset,
@@ -371,8 +373,7 @@
         return getProbabilityNative(mNativeDict, codePoints);
     }
 
-    // TODO: Add a batch process version (isValidBigramMultiple?) to avoid excessive numbers of jni
-    // calls when checking for changes in an entire dictionary.
+    @UsedForTesting
     public boolean isValidBigram(final String word0, final String word1) {
         return getBigramProbability(word0, word1) != NOT_A_PROBABILITY;
     }
@@ -413,8 +414,8 @@
         public WordProperty mWordProperty;
         public int mNextToken;
 
-        public GetNextWordPropertyResult(final WordProperty wordPreperty, final int nextToken) {
-            mWordProperty = wordPreperty;
+        public GetNextWordPropertyResult(final WordProperty wordProperty, final int nextToken) {
+            mWordProperty = wordProperty;
             mNextToken = nextToken;
         }
     }
@@ -533,11 +534,15 @@
             return false;
         }
         final String tmpDictFilePath = mDictFilePath + DICT_FILE_NAME_SUFFIX_FOR_MIGRATION;
-        // TODO: Implement migrateNative(tmpDictFilePath, newFormatVersion).
+        if (!migrateNative(mNativeDict, tmpDictFilePath, newFormatVersion)) {
+            return false;
+        }
         close();
         final File dictFile = new File(mDictFilePath);
         final File tmpDictFile = new File(tmpDictFilePath);
-        FileUtils.deleteRecursively(dictFile);
+        if (!FileUtils.deleteRecursively(dictFile)) {
+            return false;
+        }
         if (!BinaryDictionaryUtils.renameDict(tmpDictFile, dictFile)) {
             return false;
         }
diff --git a/java/src/com/android/inputmethod/latin/Constants.java b/java/src/com/android/inputmethod/latin/Constants.java
index e71723a..67ca595 100644
--- a/java/src/com/android/inputmethod/latin/Constants.java
+++ b/java/src/com/android/inputmethod/latin/Constants.java
@@ -115,6 +115,11 @@
              */
             public static final String IS_ADDITIONAL_SUBTYPE = "isAdditionalSubtype";
 
+            /**
+             * The subtype extra value used to specify the combining rules.
+             */
+            public static final String COMBINING_RULES = "CombiningRules";
+
             private ExtraValue() {
                 // This utility class is not publicly instantiable.
             }
@@ -164,6 +169,8 @@
     // How many continuous deletes at which to start deleting at a higher speed.
     public static final int DELETE_ACCELERATE_AT = 20;
 
+    public static final String WORD_SEPARATOR = " ";
+
     public static boolean isValidCoordinate(final int coordinate) {
         // Detect {@link NOT_A_COORDINATE}, {@link SUGGESTION_STRIP_COORDINATE},
         // and {@link SPELL_CHECKER_COORDINATE}.
diff --git a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
index 09d0ea2..e04fcda 100644
--- a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
@@ -29,10 +29,14 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.latin.personalization.AccountUtils;
+import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.ExecutorUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
@@ -59,10 +63,10 @@
     private static final int INDEX_NAME = 1;
 
     /** The number of contacts in the most recent dictionary rebuild. */
-    static private int sContactCountAtLastRebuild = 0;
+    private int mContactCountAtLastRebuild = 0;
 
-    /** The locale for this contacts dictionary. Controls name bigram predictions. */
-    public final Locale mLocale;
+    /** The hash code of ArrayList of contacts names in the most recent dictionary rebuild. */
+    private int mHashCodeAtLastRebuild = 0;
 
     private ContentObserver mObserver;
 
@@ -71,11 +75,7 @@
      */
     private final boolean mUseFirstLastBigrams;
 
-    public ContactsBinaryDictionary(final Context context, final Locale locale) {
-        this(context, locale, null /* dictFile */);
-    }
-
-    public ContactsBinaryDictionary(final Context context, final Locale locale,
+    private ContactsBinaryDictionary(final Context context, final Locale locale,
             final File dictFile) {
         this(context, locale, dictFile, NAME);
     }
@@ -84,12 +84,17 @@
             final File dictFile, final String name) {
         super(context, getDictName(name, locale, dictFile), locale, Dictionary.TYPE_CONTACTS,
                 dictFile);
-        mLocale = locale;
         mUseFirstLastBigrams = useFirstLastBigramsForLocale(locale);
         registerObserver(context);
         reloadDictionaryIfRequired();
     }
 
+    @UsedForTesting
+    public static ContactsBinaryDictionary getDictionary(final Context context, final Locale locale,
+            final File dictFile) {
+        return new ContactsBinaryDictionary(context, locale, dictFile);
+    }
+
     private synchronized void registerObserver(final Context context) {
         if (mObserver != null) return;
         ContentResolver cres = context.getContentResolver();
@@ -97,7 +102,14 @@
                 new ContentObserver(null) {
                     @Override
                     public void onChange(boolean self) {
-                        setNeedsToReload();
+                        ExecutorUtils.getExecutor("Check Contacts").execute(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (haveContentsChanged()) {
+                                    setNeedsToRecreate();
+                                }
+                            }
+                        });
                     }
                 });
     }
@@ -144,7 +156,7 @@
                 return;
             }
             if (cursor.moveToFirst()) {
-                sContactCountAtLastRebuild = getContactCount();
+                mContactCountAtLastRebuild = getContactCount();
                 addWordsLocked(cursor);
             }
         } catch (final SQLiteException e) {
@@ -168,9 +180,11 @@
 
     private void addWordsLocked(final Cursor cursor) {
         int count = 0;
+        final ArrayList<String> names = CollectionUtils.newArrayList();
         while (!cursor.isAfterLast() && count < MAX_CONTACT_COUNT) {
             String name = cursor.getString(INDEX_NAME);
             if (isValidName(name)) {
+                names.add(name);
                 addNameLocked(name);
                 ++count;
             } else {
@@ -180,6 +194,7 @@
             }
             cursor.moveToNext();
         }
+        mHashCodeAtLastRebuild = names.hashCode();
     }
 
     private int getContactCount() {
@@ -259,8 +274,7 @@
         return end;
     }
 
-    @Override
-    protected boolean haveContentsChanged() {
+    private boolean haveContentsChanged() {
         final long startTime = SystemClock.uptimeMillis();
         final int contactCount = getContactCount();
         if (contactCount > MAX_CONTACT_COUNT) {
@@ -269,9 +283,9 @@
             // TODO: Sort and check only the MAX_CONTACT_COUNT most recent contacts?
             return false;
         }
-        if (contactCount != sContactCountAtLastRebuild) {
+        if (contactCount != mContactCountAtLastRebuild) {
             if (DEBUG) {
-                Log.d(TAG, "Contact count changed: " + sContactCountAtLastRebuild + " to "
+                Log.d(TAG, "Contact count changed: " + mContactCountAtLastRebuild + " to "
                         + contactCount);
             }
             return true;
@@ -284,20 +298,20 @@
         if (null == cursor) {
             return false;
         }
+        final ArrayList<String> names = CollectionUtils.newArrayList();
         try {
             if (cursor.moveToFirst()) {
                 while (!cursor.isAfterLast()) {
                     String name = cursor.getString(INDEX_NAME);
-                    if (isValidName(name) && !isNameInDictionaryLocked(name)) {
-                        if (DEBUG) {
-                            Log.d(TAG, "Contact name missing: " + name + " (runtime = "
-                                    + (SystemClock.uptimeMillis() - startTime) + " ms)");
-                        }
-                        return true;
+                    if (isValidName(name)) {
+                        names.add(name);
                     }
                     cursor.moveToNext();
                 }
             }
+            if (names.hashCode() != mHashCodeAtLastRebuild) {
+                return true;
+            }
         } finally {
             cursor.close();
         }
@@ -314,33 +328,4 @@
         }
         return false;
     }
-
-    /**
-     * Checks if the words in a name are in the current binary dictionary.
-     */
-    private boolean isNameInDictionaryLocked(final String name) {
-        int len = StringUtils.codePointCount(name);
-        String prevWord = null;
-        for (int i = 0; i < len; i++) {
-            if (Character.isLetter(name.codePointAt(i))) {
-                int end = getWordEndPosition(name, len, i);
-                String word = name.substring(i, end);
-                i = end - 1;
-                final int wordLen = StringUtils.codePointCount(word);
-                if (wordLen < MAX_WORD_LENGTH && wordLen > 1) {
-                    if (!TextUtils.isEmpty(prevWord) && mUseFirstLastBigrams) {
-                        if (!isValidBigramLocked(prevWord, word)) {
-                            return false;
-                        }
-                    } else {
-                        if (!isValidWordLocked(word)) {
-                            return false;
-                        }
-                    }
-                    prevWord = word;
-                }
-            }
-        }
-        return true;
-    }
 }
diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java
index 0742fbd..cd380db 100644
--- a/java/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -57,6 +57,8 @@
     public static final String TYPE_USER_HISTORY = "history";
     // Personalization dictionary.
     public static final String TYPE_PERSONALIZATION = "personalization";
+    // Contextual dictionary.
+    public static final String TYPE_CONTEXTUAL = "contextual";
     public final String mDictType;
 
     public Dictionary(final String dictType) {
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
index 5238395..e0220e1 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
@@ -23,8 +23,8 @@
 import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.personalization.ContextualDictionary;
 import com.android.inputmethod.latin.personalization.PersonalizationDictionary;
-import com.android.inputmethod.latin.personalization.PersonalizationHelper;
 import com.android.inputmethod.latin.personalization.UserHistoryDictionary;
 import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.ExecutorUtils;
@@ -32,10 +32,14 @@
 import com.android.inputmethod.latin.utils.SuggestionResults;
 
 import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -49,72 +53,84 @@
     private static final int CAPITALIZED_FORM_MAX_PROBABILITY_FOR_INSERT = 140;
 
     private Dictionaries mDictionaries = new Dictionaries();
+    private boolean mIsUserDictEnabled = false;
     private volatile CountDownLatch mLatchForWaitingLoadingMainDictionary = new CountDownLatch(0);
     // To synchronize assigning mDictionaries to ensure closing dictionaries.
-    private Object mLock = new Object();
+    private final Object mLock = new Object();
 
-    private static final String[] dictTypesOrderedToGetSuggestion =
+    private static final String[] DICT_TYPES_ORDERED_TO_GET_SUGGESTION =
             new String[] {
                 Dictionary.TYPE_MAIN,
                 Dictionary.TYPE_USER_HISTORY,
                 Dictionary.TYPE_PERSONALIZATION,
                 Dictionary.TYPE_USER,
-                Dictionary.TYPE_CONTACTS
+                Dictionary.TYPE_CONTACTS,
+                Dictionary.TYPE_CONTEXTUAL
             };
 
+    private static final Map<String, Class<? extends ExpandableBinaryDictionary>>
+            DICT_TYPE_TO_CLASS = CollectionUtils.newHashMap();
+
+    static {
+        DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_USER_HISTORY, UserHistoryDictionary.class);
+        DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_PERSONALIZATION, PersonalizationDictionary.class);
+        DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_USER, UserBinaryDictionary.class);
+        DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_CONTACTS, ContactsBinaryDictionary.class);
+        DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_CONTEXTUAL, ContextualDictionary.class);
+    }
+
+    private static final String DICT_FACTORY_METHOD_NAME = "getDictionary";
+    private static final Class<?>[] DICT_FACTORY_METHOD_ARG_TYPES =
+            new Class[] { Context.class, Locale.class, File.class };
+
+    private static final String[] SUB_DICT_TYPES =
+            Arrays.copyOfRange(DICT_TYPES_ORDERED_TO_GET_SUGGESTION, 1 /* start */,
+                    DICT_TYPES_ORDERED_TO_GET_SUGGESTION.length);
+
     /**
      * Class contains dictionaries for a locale.
      */
     private static class Dictionaries {
         public final Locale mLocale;
-        public final ConcurrentHashMap<String, Dictionary> mDictMap =
-                CollectionUtils.newConcurrentHashMap();
+        private Dictionary mMainDict;
         public final ConcurrentHashMap<String, ExpandableBinaryDictionary> mSubDictMap =
                 CollectionUtils.newConcurrentHashMap();
-        // TODO: Remove sub dictionary members and use mSubDictMap.
-        public final UserBinaryDictionary mUserDictionary;
 
         public Dictionaries() {
             mLocale = null;
-            mUserDictionary = null;
         }
 
         public Dictionaries(final Locale locale, final Dictionary mainDict,
-            final ExpandableBinaryDictionary contactsDict, final UserBinaryDictionary userDict,
-            final ExpandableBinaryDictionary userHistoryDict,
-            final ExpandableBinaryDictionary personalizationDict) {
+                final Map<String, ExpandableBinaryDictionary> subDicts) {
             mLocale = locale;
             // Main dictionary can be asynchronously loaded.
             setMainDict(mainDict);
-            setSubDict(Dictionary.TYPE_CONTACTS, contactsDict);
-            mUserDictionary = userDict;
-            setSubDict(Dictionary.TYPE_USER, mUserDictionary);
-            setSubDict(Dictionary.TYPE_USER_HISTORY, userHistoryDict);
-            setSubDict(Dictionary.TYPE_PERSONALIZATION, personalizationDict);
+            for (final Map.Entry<String, ExpandableBinaryDictionary> entry : subDicts.entrySet()) {
+                setSubDict(entry.getKey(), entry.getValue());
+            }
         }
 
         private void setSubDict(final String dictType, final ExpandableBinaryDictionary dict) {
             if (dict != null) {
-                mDictMap.put(dictType, dict);
                 mSubDictMap.put(dictType, dict);
             }
         }
 
         public void setMainDict(final Dictionary mainDict) {
             // Close old dictionary if exists. Main dictionary can be assigned multiple times.
-            final Dictionary oldDict;
-            if (mainDict != null) {
-                oldDict = mDictMap.put(Dictionary.TYPE_MAIN, mainDict);
-            } else {
-                oldDict = mDictMap.remove(Dictionary.TYPE_MAIN);
-            }
+            final Dictionary oldDict = mMainDict;
+            mMainDict = mainDict;
             if (oldDict != null && mainDict != oldDict) {
                 oldDict.close();
             }
         }
 
-        public Dictionary getMainDict() {
-            return mDictMap.get(Dictionary.TYPE_MAIN);
+        public Dictionary getDict(final String dictType) {
+            if (Dictionary.TYPE_MAIN.equals(dictType)) {
+                return mMainDict;
+            } else {
+                return getSubDict(dictType);
+            }
         }
 
         public ExpandableBinaryDictionary getSubDict(final String dictType) {
@@ -122,12 +138,20 @@
         }
 
         public boolean hasDict(final String dictType) {
-            return mDictMap.containsKey(dictType);
+            if (Dictionary.TYPE_MAIN.equals(dictType)) {
+                return mMainDict != null;
+            } else {
+                return mSubDictMap.containsKey(dictType);
+            }
         }
 
         public void closeDict(final String dictType) {
-            final Dictionary dict = mDictMap.remove(dictType);
-            mSubDictMap.remove(dictType);
+            final Dictionary dict;
+            if (Dictionary.TYPE_MAIN.equals(dictType)) {
+                dict = mMainDict;
+            } else {
+                dict = mSubDictMap.remove(dictType);
+            }
             if (dict != null) {
                 dict.close();
             }
@@ -144,6 +168,26 @@
         return mDictionaries.mLocale;
     }
 
+    private static ExpandableBinaryDictionary getSubDict(final String dictType,
+            final Context context, final Locale locale, final File dictFile) {
+        final Class<? extends ExpandableBinaryDictionary> dictClass =
+                DICT_TYPE_TO_CLASS.get(dictType);
+        if (dictClass == null) {
+            return null;
+        }
+        try {
+            final Method factoryMethod = dictClass.getMethod(DICT_FACTORY_METHOD_NAME,
+                    DICT_FACTORY_METHOD_ARG_TYPES);
+            final Object dict = factoryMethod.invoke(null /* obj */,
+                    new Object[] { context, locale, dictFile });
+            return (ExpandableBinaryDictionary) dict;
+        } catch (final NoSuchMethodException | SecurityException | IllegalAccessException
+                | IllegalArgumentException | InvocationTargetException e) {
+            Log.e(TAG, "Cannot create dictionary: " + dictType, e);
+            return null;
+        }
+    }
+
     public void resetDictionaries(final Context context, final Locale newLocale,
             final boolean useContactsDict, final boolean usePersonalizedDicts,
             final boolean forceReloadMainDictionary,
@@ -151,67 +195,50 @@
         final boolean localeHasBeenChanged = !newLocale.equals(mDictionaries.mLocale);
         // We always try to have the main dictionary. Other dictionaries can be unused.
         final boolean reloadMainDictionary = localeHasBeenChanged || forceReloadMainDictionary;
-        final boolean closeContactsDictionary = localeHasBeenChanged || !useContactsDict;
-        final boolean closeUserDictionary = localeHasBeenChanged;
-        final boolean closeUserHistoryDictionary = localeHasBeenChanged || !usePersonalizedDicts;
-        final boolean closePersonalizationDictionary =
-                localeHasBeenChanged || !usePersonalizedDicts;
+        // TODO: Make subDictTypesToUse configurable by resource or a static final list.
+        final Set<String> subDictTypesToUse = CollectionUtils.newHashSet();
+        if (useContactsDict) {
+            subDictTypesToUse.add(Dictionary.TYPE_CONTACTS);
+        }
+        subDictTypesToUse.add(Dictionary.TYPE_USER);
+        if (usePersonalizedDicts) {
+            subDictTypesToUse.add(Dictionary.TYPE_USER_HISTORY);
+            subDictTypesToUse.add(Dictionary.TYPE_PERSONALIZATION);
+            subDictTypesToUse.add(Dictionary.TYPE_CONTEXTUAL);
+        }
 
         final Dictionary newMainDict;
         if (reloadMainDictionary) {
             // The main dictionary will be asynchronously loaded.
             newMainDict = null;
         } else {
-            newMainDict = mDictionaries.getMainDict();
+            newMainDict = mDictionaries.getDict(Dictionary.TYPE_MAIN);
         }
 
-        // Open or move contacts dictionary.
-        final ExpandableBinaryDictionary newContactsDict;
-        if (!closeContactsDictionary && mDictionaries.hasDict(Dictionary.TYPE_CONTACTS)) {
-            newContactsDict = mDictionaries.getSubDict(Dictionary.TYPE_CONTACTS);
-        } else if (useContactsDict) {
-            newContactsDict = new ContactsBinaryDictionary(context, newLocale);
-        } else {
-            newContactsDict = null;
-        }
-
-        // Open or move user dictionary.
-        final UserBinaryDictionary newUserDictionary;
-        if (!closeUserDictionary && mDictionaries.hasDict(Dictionary.TYPE_USER)) {
-            newUserDictionary = mDictionaries.mUserDictionary;
-        } else {
-            newUserDictionary = new UserBinaryDictionary(context, newLocale);
-        }
-
-        // Open or move user history dictionary.
-        final ExpandableBinaryDictionary newUserHistoryDict;
-        if (!closeUserHistoryDictionary && mDictionaries.hasDict(Dictionary.TYPE_USER_HISTORY)) {
-            newUserHistoryDict = mDictionaries.getSubDict(Dictionary.TYPE_USER_HISTORY);
-        } else if (usePersonalizedDicts) {
-            newUserHistoryDict = PersonalizationHelper.getUserHistoryDictionary(context, newLocale);
-        } else {
-            newUserHistoryDict = null;
-        }
-
-        // Open or move personalization dictionary.
-        final ExpandableBinaryDictionary newPersonalizationDict;
-        if (!closePersonalizationDictionary
-                && mDictionaries.hasDict(Dictionary.TYPE_PERSONALIZATION)) {
-            newPersonalizationDict = mDictionaries.getSubDict(Dictionary.TYPE_PERSONALIZATION);
-        } else if (usePersonalizedDicts) {
-            newPersonalizationDict =
-                    PersonalizationHelper.getPersonalizationDictionary(context, newLocale);
-        } else {
-            newPersonalizationDict = null;
+        final Map<String, ExpandableBinaryDictionary> subDicts = CollectionUtils.newHashMap();
+        for (final String dictType : SUB_DICT_TYPES) {
+            if (!subDictTypesToUse.contains(dictType)) {
+                // This dictionary will not be used.
+                continue;
+            }
+            final ExpandableBinaryDictionary dict;
+            if (!localeHasBeenChanged && mDictionaries.hasDict(dictType)) {
+                // Continue to use current dictionary.
+                dict = mDictionaries.getSubDict(dictType);
+            } else {
+                // Start to use new dictionary.
+                dict = getSubDict(dictType, context, newLocale, null /* dictFile */);
+            }
+            subDicts.put(dictType, dict);
         }
 
         // Replace Dictionaries.
-        final Dictionaries newDictionaries = new Dictionaries(newLocale, newMainDict,
-                newContactsDict,  newUserDictionary, newUserHistoryDict, newPersonalizationDict);
+        final Dictionaries newDictionaries = new Dictionaries(newLocale, newMainDict, subDicts);
         final Dictionaries oldDictionaries;
         synchronized (mLock) {
             oldDictionaries = mDictionaries;
             mDictionaries = newDictionaries;
+            mIsUserDictEnabled = UserBinaryDictionary.isEnabled(context);
             if (reloadMainDictionary) {
                 asyncReloadMainDictionary(context, newLocale, listener);
             }
@@ -219,24 +246,15 @@
         if (listener != null) {
             listener.onUpdateMainDictionaryAvailability(hasInitializedMainDictionary());
         }
-
         // Clean up old dictionaries.
         if (reloadMainDictionary) {
             oldDictionaries.closeDict(Dictionary.TYPE_MAIN);
         }
-        if (closeContactsDictionary) {
-            oldDictionaries.closeDict(Dictionary.TYPE_CONTACTS);
+        for (final String dictType : SUB_DICT_TYPES) {
+            if (localeHasBeenChanged || !subDictTypesToUse.contains(dictType)) {
+                oldDictionaries.closeDict(dictType);
+            }
         }
-        if (closeUserDictionary) {
-            oldDictionaries.closeDict(Dictionary.TYPE_USER);
-        }
-        if (closeUserHistoryDictionary) {
-            oldDictionaries.closeDict(Dictionary.TYPE_USER_HISTORY);
-        }
-        if (closePersonalizationDictionary) {
-            oldDictionaries.closeDict(Dictionary.TYPE_PERSONALIZATION);
-        }
-        oldDictionaries.mDictMap.clear();
         oldDictionaries.mSubDictMap.clear();
     }
 
@@ -270,52 +288,28 @@
             final ArrayList<String> dictionaryTypes, final HashMap<String, File> dictionaryFiles,
             final Map<String, Map<String, String>> additionalDictAttributes) {
         Dictionary mainDictionary = null;
-        ContactsBinaryDictionary contactsDictionary = null;
-        UserBinaryDictionary userDictionary = null;
-        UserHistoryDictionary userHistoryDictionary = null;
-        PersonalizationDictionary personalizationDictionary = null;
+        final Map<String, ExpandableBinaryDictionary> subDicts = CollectionUtils.newHashMap();
 
         for (final String dictType : dictionaryTypes) {
             if (dictType.equals(Dictionary.TYPE_MAIN)) {
                 mainDictionary = DictionaryFactory.createMainDictionaryFromManager(context, locale);
-            } else if (dictType.equals(Dictionary.TYPE_USER_HISTORY)) {
-                userHistoryDictionary =
-                        PersonalizationHelper.getUserHistoryDictionary(context, locale);
-                // Staring with an empty user history dictionary for testing.
-                // Testing program may populate this dictionary before actual testing.
-                userHistoryDictionary.reloadDictionaryIfRequired();
-                userHistoryDictionary.waitAllTasksForTests();
-                if (additionalDictAttributes.containsKey(dictType)) {
-                    userHistoryDictionary.clearAndFlushDictionaryWithAdditionalAttributes(
-                            additionalDictAttributes.get(dictType));
-                }
-            } else if (dictType.equals(Dictionary.TYPE_PERSONALIZATION)) {
-                personalizationDictionary =
-                        PersonalizationHelper.getPersonalizationDictionary(context, locale);
-                // Staring with an empty personalization dictionary for testing.
-                // Testing program may populate this dictionary before actual testing.
-                personalizationDictionary.reloadDictionaryIfRequired();
-                personalizationDictionary.waitAllTasksForTests();
-                if (additionalDictAttributes.containsKey(dictType)) {
-                    personalizationDictionary.clearAndFlushDictionaryWithAdditionalAttributes(
-                            additionalDictAttributes.get(dictType));
-                }
-            } else if (dictType.equals(Dictionary.TYPE_USER)) {
-                final File file = dictionaryFiles.get(dictType);
-                userDictionary = new UserBinaryDictionary(context, locale, file);
-                userDictionary.reloadDictionaryIfRequired();
-                userDictionary.waitAllTasksForTests();
-            } else if (dictType.equals(Dictionary.TYPE_CONTACTS)) {
-                final File file = dictionaryFiles.get(dictType);
-                contactsDictionary = new ContactsBinaryDictionary(context, locale, file);
-                contactsDictionary.reloadDictionaryIfRequired();
-                contactsDictionary.waitAllTasksForTests();
             } else {
-                throw new RuntimeException("Unknown dictionary type: " + dictType);
+                final File dictFile = dictionaryFiles.get(dictType);
+                final ExpandableBinaryDictionary dict = getSubDict(
+                        dictType, context, locale, dictFile);
+                if (additionalDictAttributes.containsKey(dictType)) {
+                    dict.clearAndFlushDictionaryWithAdditionalAttributes(
+                            additionalDictAttributes.get(dictType));
+                }
+                if (dict == null) {
+                    throw new RuntimeException("Unknown dictionary type: " + dictType);
+                }
+                dict.reloadDictionaryIfRequired();
+                dict.waitAllTasksForTests();
+                subDicts.put(dictType, dict);
             }
         }
-        mDictionaries = new Dictionaries(locale, mainDictionary, contactsDictionary,
-                userDictionary, userHistoryDictionary, personalizationDictionary);
+        mDictionaries = new Dictionaries(locale, mainDictionary, subDicts);
     }
 
     public void closeDictionaries() {
@@ -324,15 +318,15 @@
             dictionaries = mDictionaries;
             mDictionaries = new Dictionaries();
         }
-        for (final Dictionary dict : dictionaries.mDictMap.values()) {
-            dict.close();
+        for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTION) {
+            dictionaries.closeDict(dictType);
         }
     }
 
     // The main dictionary could have been loaded asynchronously.  Don't cache the return value
     // of this method.
     public boolean hasInitializedMainDictionary() {
-        final Dictionary mainDict = mDictionaries.getMainDict();
+        final Dictionary mainDict = mDictionaries.getDict(Dictionary.TYPE_MAIN);
         return mainDict != null && mainDict.isInitialized();
     }
 
@@ -364,48 +358,58 @@
     }
 
     public boolean isUserDictionaryEnabled() {
-        final UserBinaryDictionary userDictionary = mDictionaries.mUserDictionary;
-        if (userDictionary == null) {
-            return false;
-        }
-        return userDictionary.mEnabled;
+        return mIsUserDictEnabled;
     }
 
-    public void addWordToUserDictionary(String word) {
-        final UserBinaryDictionary userDictionary = mDictionaries.mUserDictionary;
-        if (userDictionary == null) {
+    public void addWordToUserDictionary(final Context context, final String word) {
+        final Locale locale = getLocale();
+        if (locale == null) {
             return;
         }
-        userDictionary.addWordToUserDictionary(word);
+        UserBinaryDictionary.addWordToUserDictionary(context, locale, word);
     }
 
     public void addToUserHistory(final String suggestion, final boolean wasAutoCapitalized,
-            final String previousWord, final int timeStampInSeconds) {
+            final String previousWord, final int timeStampInSeconds,
+            final boolean blockPotentiallyOffensive) {
         final Dictionaries dictionaries = mDictionaries;
+        final String[] words = suggestion.split(Constants.WORD_SEPARATOR);
+        for (int i = 0; i < words.length; i++) {
+            final String currentWord = words[i];
+            final String prevWord = (i == 0) ? previousWord : words[i - 1];
+            final boolean wasCurrentWordAutoCapitalized = (i == 0) ? wasAutoCapitalized : false;
+            addWordToUserHistory(dictionaries, prevWord, currentWord,
+                    wasCurrentWordAutoCapitalized, timeStampInSeconds, blockPotentiallyOffensive);
+        }
+    }
+
+    private void addWordToUserHistory(final Dictionaries dictionaries, final String prevWord,
+            final String word, final boolean wasAutoCapitalized, final int timeStampInSeconds,
+            final boolean blockPotentiallyOffensive) {
         final ExpandableBinaryDictionary userHistoryDictionary =
                 dictionaries.getSubDict(Dictionary.TYPE_USER_HISTORY);
         if (userHistoryDictionary == null) {
             return;
         }
-        final int maxFreq = getMaxFrequency(suggestion);
-        if (maxFreq == 0) {
+        final int maxFreq = getMaxFrequency(word);
+        if (maxFreq == 0 && blockPotentiallyOffensive) {
             return;
         }
-        final String suggestionLowerCase = suggestion.toLowerCase(dictionaries.mLocale);
+        final String lowerCasedWord = word.toLowerCase(dictionaries.mLocale);
         final String secondWord;
         if (wasAutoCapitalized) {
-            if (isValidWord(suggestion, false /* ignoreCase */)
-                    && !isValidWord(suggestionLowerCase, false /* ignoreCase */)) {
+            if (isValidWord(word, false /* ignoreCase */)
+                    && !isValidWord(lowerCasedWord, false /* ignoreCase */)) {
                 // If the word was auto-capitalized and exists only as a capitalized word in the
                 // dictionary, then we must not downcase it before registering it. For example,
                 // the name of the contacts in start-of-sentence position would come here with the
                 // wasAutoCapitalized flag: if we downcase it, we'd register a lower-case version
                 // of that contact's name which would end up popping in suggestions.
-                secondWord = suggestion;
+                secondWord = word;
             } else {
                 // If however the word is not in the dictionary, or exists as a lower-case word
                 // only, then we consider that was a lower-case word that had been auto-capitalized.
-                secondWord = suggestionLowerCase;
+                secondWord = lowerCasedWord;
             }
         } else {
             // HACK: We'd like to avoid adding the capitalized form of common words to the User
@@ -413,20 +417,20 @@
             // consolidation is done.
             // TODO: Remove this hack when ready.
             final int lowerCaseFreqInMainDict = dictionaries.hasDict(Dictionary.TYPE_MAIN) ?
-                    dictionaries.getMainDict().getFrequency(suggestionLowerCase) :
+                    dictionaries.getDict(Dictionary.TYPE_MAIN).getFrequency(lowerCasedWord) :
                             Dictionary.NOT_A_PROBABILITY;
             if (maxFreq < lowerCaseFreqInMainDict
                     && lowerCaseFreqInMainDict >= CAPITALIZED_FORM_MAX_PROBABILITY_FOR_INSERT) {
                 // Use lower cased word as the word can be a distracter of the popular word.
-                secondWord = suggestionLowerCase;
+                secondWord = lowerCasedWord;
             } else {
-                secondWord = suggestion;
+                secondWord = word;
             }
         }
         // We demote unrecognized words (frequency < 0, below) by specifying them as "invalid".
         // We don't add words with 0-frequency (assuming they would be profanity etc.).
         final boolean isValid = maxFreq > 0;
-        UserHistoryDictionary.addToDictionary(userHistoryDictionary, previousWord, secondWord,
+        UserHistoryDictionary.addToDictionary(userHistoryDictionary, prevWord, secondWord,
                 isValid, timeStampInSeconds);
     }
 
@@ -444,12 +448,11 @@
             final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
             final int sessionId, final ArrayList<SuggestedWordInfo> rawSuggestions) {
         final Dictionaries dictionaries = mDictionaries;
-        final Map<String, Dictionary> dictMap = dictionaries.mDictMap;
         final SuggestionResults suggestionResults =
                 new SuggestionResults(dictionaries.mLocale, SuggestedWords.MAX_SUGGESTIONS);
         final float[] languageWeight = new float[] { Dictionary.NOT_A_LANGUAGE_WEIGHT };
-        for (final String dictType : dictTypesOrderedToGetSuggestion) {
-            final Dictionary dictionary = dictMap.get(dictType);
+        for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTION) {
+            final Dictionary dictionary = dictionaries.getDict(dictType);
             if (null == dictionary) continue;
             final ArrayList<SuggestedWordInfo> dictionarySuggestions =
                     dictionary.getSuggestionsWithSessionId(composer, prevWord, proximityInfo,
@@ -465,11 +468,11 @@
     }
 
     public boolean isValidMainDictWord(final String word) {
-        final Dictionaries dictionaries = mDictionaries;
-        if (TextUtils.isEmpty(word) || !dictionaries.hasDict(Dictionary.TYPE_MAIN)) {
+        final Dictionary mainDict = mDictionaries.getDict(Dictionary.TYPE_MAIN);
+        if (TextUtils.isEmpty(word) || mainDict == null) {
             return false;
         }
-        return dictionaries.getMainDict().isValidWord(word);
+        return mainDict.isValidWord(word);
     }
 
     public boolean isValidWord(final String word, final boolean ignoreCase) {
@@ -481,8 +484,8 @@
             return false;
         }
         final String lowerCasedWord = word.toLowerCase(dictionaries.mLocale);
-        final Map<String, Dictionary> dictMap = dictionaries.mDictMap;
-        for (final Dictionary dictionary : dictMap.values()) {
+        for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTION) {
+            final Dictionary dictionary = dictionaries.getDict(dictType);
             // Ideally the passed map would come out of a {@link java.util.concurrent.Future} and
             // would be immutable once it's finished initializing, but concretely a null test is
             // probably good enough for the time being.
@@ -500,8 +503,10 @@
             return Dictionary.NOT_A_PROBABILITY;
         }
         int maxFreq = -1;
-        final Map<String, Dictionary> dictMap = mDictionaries.mDictMap;
-        for (final Dictionary dictionary : dictMap.values()) {
+        final Dictionaries dictionaries = mDictionaries;
+        for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTION) {
+            final Dictionary dictionary = dictionaries.getDict(dictType);
+            if (dictionary == null) continue;
             final int tempFreq = dictionary.getFrequency(word);
             if (tempFreq >= maxFreq) {
                 maxFreq = tempFreq;
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 08f3c63..6818c15 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -92,11 +92,13 @@
     /** Indicates whether a task for reloading the dictionary has been scheduled. */
     private final AtomicBoolean mIsReloading;
 
-    /** Indicates whether the current dictionary needs to be reloaded. */
-    private boolean mNeedsToReload;
+    /** Indicates whether the current dictionary needs to be recreated. */
+    private boolean mNeedsToRecreate;
 
     private final ReentrantReadWriteLock mLock;
 
+    private Map<String, String> mAdditionalAttributeMap = null;
+
     /* A extension for a binary dictionary file. */
     protected static final String DICT_FILE_EXTENSION = ".dict";
 
@@ -105,20 +107,14 @@
      */
     protected abstract void loadInitialContentsLocked();
 
-    /**
-     * Indicates that the source dictionary contents have changed and a rebuild of the binary file
-     * is required. If it returns false, the next reload will only read the current binary
-     * dictionary from file.
-     */
-    protected abstract boolean haveContentsChanged();
-
     private boolean matchesExpectedBinaryDictFormatVersionForThisType(final int formatVersion) {
         return formatVersion == FormatSpec.VERSION4;
     }
 
     private boolean needsToMigrateDictionary(final int formatVersion) {
-        // TODO: Check version.
-        return false;
+        // When we bump up the dictionary format version, the old version should be added to here
+        // for supporting migration. Note that native code has to support reading such formats.
+        return formatVersion == FormatSpec.VERSION4_ONLY_FOR_TESTING;
     }
 
     public boolean isValidDictionaryLocked() {
@@ -145,7 +141,7 @@
         mDictFile = getDictFile(context, dictName, dictFile);
         mBinaryDictionary = null;
         mIsReloading = new AtomicBoolean();
-        mNeedsToReload = false;
+        mNeedsToRecreate = false;
         mLock = new ReentrantReadWriteLock();
     }
 
@@ -196,6 +192,9 @@
 
     protected Map<String, String> getHeaderAttributeMap() {
         HashMap<String, String> attributeMap = new HashMap<String, String>();
+        if (mAdditionalAttributeMap != null) {
+            attributeMap.putAll(mAdditionalAttributeMap);
+        }
         attributeMap.put(DictionaryHeader.DICTIONARY_ID_KEY, mDictName);
         attributeMap.put(DictionaryHeader.DICTIONARY_LOCALE_KEY, mLocale.toString());
         attributeMap.put(DictionaryHeader.DICTIONARY_VERSION_KEY,
@@ -465,7 +464,10 @@
         }
         if (mBinaryDictionary.isValidDictionary()
                 && needsToMigrateDictionary(mBinaryDictionary.getFormatVersion())) {
-            mBinaryDictionary.migrateTo(DICTIONARY_FORMAT_VERSION);
+            if (!mBinaryDictionary.migrateTo(DICTIONARY_FORMAT_VERSION)) {
+                Log.e(TAG, "Dictionary migration failed: " + mDictName);
+                removeBinaryDictionaryLocked();
+            }
         }
     }
 
@@ -481,11 +483,11 @@
     }
 
     /**
-     * Marks that the dictionary needs to be reloaded.
+     * Marks that the dictionary needs to be recreated.
      *
      */
-    protected void setNeedsToReload() {
-        mNeedsToReload = true;
+    protected void setNeedsToRecreate() {
+        mNeedsToRecreate = true;
     }
 
     /**
@@ -503,7 +505,7 @@
      * Returns whether a dictionary reload is required.
      */
     private boolean isReloadRequired() {
-        return mBinaryDictionary == null || mNeedsToReload;
+        return mBinaryDictionary == null || mNeedsToRecreate;
     }
 
     /**
@@ -511,28 +513,28 @@
      */
     private final void asyncReloadDictionary() {
         if (mIsReloading.compareAndSet(false, true)) {
-            mNeedsToReload = false;
             asyncExecuteTaskWithWriteLock(new Runnable() {
                 @Override
                 public void run() {
                     try {
-                        if (!mDictFile.exists() || haveContentsChanged()) {
+                        if (!mDictFile.exists() || mNeedsToRecreate) {
                             // If the dictionary file does not exist or contents have been updated,
                             // generate a new one.
                             createNewDictionaryLocked();
                         } else if (mBinaryDictionary == null) {
                             // Otherwise, load the existing dictionary.
                             loadBinaryDictionaryLocked();
+                            if (mBinaryDictionary != null && !(isValidDictionaryLocked()
+                                    // TODO: remove the check below
+                                    && matchesExpectedBinaryDictFormatVersionForThisType(
+                                            mBinaryDictionary.getFormatVersion()))) {
+                                // Binary dictionary or its format version is not valid. Regenerate
+                                // the dictionary file. createNewDictionaryLocked will remove the
+                                // existing files if appropriate.
+                                createNewDictionaryLocked();
+                            }
                         }
-                        if (mBinaryDictionary != null && !(isValidDictionaryLocked()
-                                // TODO: remove the check below
-                                && matchesExpectedBinaryDictFormatVersionForThisType(
-                                        mBinaryDictionary.getFormatVersion()))) {
-                            // Binary dictionary or its format version is not valid. Regenerate
-                            // the dictionary file. writeBinaryDictionary will remove the
-                            // existing files if appropriate.
-                            createNewDictionaryLocked();
-                        }
+                        mNeedsToRecreate = false;
                     } finally {
                         mIsReloading.set(false);
                     }
@@ -591,6 +593,12 @@
     }
 
     @UsedForTesting
+    public void clearAndFlushDictionaryWithAdditionalAttributes(
+            final Map<String, String> attributeMap) {
+        mAdditionalAttributeMap = attributeMap;
+        clear();
+    }
+
     public void dumpAllWordsForDebug() {
         reloadDictionaryIfRequired();
         asyncExecuteTaskWithLock(mLock.readLock(), new Runnable() {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index f1b1b8d..8a2ed10 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -55,7 +55,6 @@
 import android.view.inputmethod.InputMethodSubtype;
 
 import com.android.inputmethod.accessibility.AccessibilityUtils;
-import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
 import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
 import com.android.inputmethod.dictionarypack.DictionaryPackConstants;
@@ -541,18 +540,6 @@
         refreshPersonalizationDictionarySession();
     }
 
-    private DistracterFilter createDistracterFilter() {
-        final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
-        // TODO: Create Keyboard when mainKeyboardView is null.
-        // TODO: Figure out the most reasonable keyboard for the filter. Refer to the
-        // spellchecker's logic.
-        final Keyboard keyboard = (mainKeyboardView != null) ?
-                mainKeyboardView.getKeyboard() : null;
-        final DistracterFilter distracterFilter = new DistracterFilter(mInputLogic.mSuggest,
-                keyboard);
-        return distracterFilter;
-    }
-
     private void refreshPersonalizationDictionarySession() {
         final DictionaryFacilitatorForSuggest dictionaryFacilitator =
                 mInputLogic.mSuggest.mDictionaryFacilitator;
@@ -734,6 +721,7 @@
         // Note that the calling sequence of onCreate() and onCurrentInputMethodSubtypeChanged()
         // is not guaranteed. It may even be called at the same time on a different thread.
         mSubtypeSwitcher.onSubtypeChanged(subtype);
+        mInputLogic.onSubtypeChanged(SubtypeLocaleUtils.getCombiningRulesExtraValue(subtype));
         loadKeyboard();
     }
 
@@ -809,7 +797,10 @@
 
         // The app calling setText() has the effect of clearing the composing
         // span, so we should reset our state unconditionally, even if restarting is true.
-        mInputLogic.startInput(restarting, editorInfo);
+        // We also tell the input logic about the combining rules for the current subtype, so
+        // it can adjust its combiners if needed.
+        mInputLogic.startInput(restarting, editorInfo,
+                mSubtypeSwitcher.getCombiningRulesExtraValueOfCurrentSubtype());
 
         // Note: the following does a round-trip IPC on the main thread: be careful
         final Locale currentLocale = mSubtypeSwitcher.getCurrentSubtypeLocale();
@@ -1002,10 +993,6 @@
         LatinImeLogger.commit();
         mKeyboardSwitcher.onHideWindow();
 
-        if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
-            AccessibleKeyboardViewProxy.getInstance().onHideWindow();
-        }
-
         if (TRACE) Debug.stopMethodTracing();
         if (isShowingOptionDialog()) {
             mOptionsDialog.dismiss();
@@ -1179,7 +1166,8 @@
         } else {
             wordToEdit = word;
         }
-        mInputLogic.mSuggest.mDictionaryFacilitator.addWordToUserDictionary(wordToEdit);
+        mInputLogic.mSuggest.mDictionaryFacilitator.addWordToUserDictionary(
+                this /* context */, wordToEdit);
     }
 
     // Callback for the {@link SuggestionStripView}, to call when the important notice strip is
@@ -1596,18 +1584,6 @@
     public void onReleaseKey(final int primaryCode, final boolean withSliding) {
         mKeyboardSwitcher.onReleaseKey(primaryCode, withSliding, getCurrentAutoCapsState(),
                 getCurrentRecapitalizeState());
-
-        // If accessibility is on, ensure the user receives keyboard state updates.
-        if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
-            switch (primaryCode) {
-            case Constants.CODE_SHIFT:
-                AccessibleKeyboardViewProxy.getInstance().notifyShiftState();
-                break;
-            case Constants.CODE_SWITCH_ALPHA_SYMBOL:
-                AccessibleKeyboardViewProxy.getInstance().notifySymbolsState();
-                break;
-            }
-        }
     }
 
     private HardwareEventDecoder getHardwareKeyEventDecoder(final int deviceId) {
@@ -1767,6 +1743,11 @@
         mInputLogic.mSuggest.mDictionaryFacilitator.clearPersonalizationDictionary();
     }
 
+    @UsedForTesting
+    /* package for test */ DistracterFilter createDistracterFilter() {
+        return DistracterFilter.createDistracterFilter(mInputLogic.mSuggest, mKeyboardSwitcher);
+    }
+
     public void dumpDictionaryForDebug(final String dictName) {
         final DictionaryFacilitatorForSuggest dictionaryFacilitator =
                 mInputLogic.mSuggest.mDictionaryFacilitator;
diff --git a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
index 2b0be54..64cc562 100644
--- a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
+++ b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
@@ -410,12 +410,21 @@
 
     public boolean shouldOfferSwitchingToNextInputMethod(final IBinder binder,
             boolean defaultValue) {
-        // Use the default value instead on Jelly Bean MR2 and previous where
-        // {@link InputMethodManager#shouldOfferSwitchingToNextInputMethod} isn't yet available
-        // and on KitKat where the API is still just a stub to return true always.
-        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
+        // Use the default value instead on Jelly Bean MR2 and previous, where
+        // {@link InputMethodManager#shouldOfferSwitchingToNextInputMethod} isn't yet available.
+        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2) {
             return defaultValue;
         }
+        // Use the default value instead on KitKat as well, where
+        // {@link InputMethodManager#shouldOfferSwitchingToNextInputMethod} is still just a stub to
+        // return true always.
+        if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
+            // Make sure this is actually KitKat.
+            // TODO: Consider to remove this check once the *next* version becomes available.
+            if (Build.VERSION.CODENAME.equals("REL")) {
+                return defaultValue;
+            }
+        }
         return mImmWrapper.shouldOfferSwitchingToNextInputMethod(binder);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index 0211339..c8a2fb2 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -52,7 +52,6 @@
 
     private /* final */ RichInputMethodManager mRichImm;
     private /* final */ Resources mResources;
-    private /* final */ ConnectivityManager mConnectivityManager;
 
     private final LanguageOnSpacebarHelper mLanguageOnSpacebarHelper =
             new LanguageOnSpacebarHelper();
@@ -111,10 +110,10 @@
         }
         mResources = context.getResources();
         mRichImm = RichInputMethodManager.getInstance();
-        mConnectivityManager = (ConnectivityManager) context.getSystemService(
+        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(
                 Context.CONNECTIVITY_SERVICE);
 
-        final NetworkInfo info = mConnectivityManager.getActiveNetworkInfo();
+        final NetworkInfo info = connectivityManager.getActiveNetworkInfo();
         mIsNetworkConnected = (info != null && info.isConnected());
 
         onSubtypeChanged(getCurrentSubtype());
@@ -327,4 +326,8 @@
                 + DUMMY_EMOJI_SUBTYPE);
         return DUMMY_EMOJI_SUBTYPE;
     }
+
+    public String getCombiningRulesExtraValueOfCurrentSubtype() {
+        return SubtypeLocaleUtils.getCombiningRulesExtraValue(getCurrentSubtype());
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
index 9d9ce01..c8ffbe4 100644
--- a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
@@ -28,8 +28,8 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.compat.UserDictionaryCompatUtils;
-import com.android.inputmethod.latin.utils.LocaleUtils;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 
 import java.io.File;
@@ -51,42 +51,24 @@
     // to auto-correct, so we set this to the highest frequency that won't, i.e. 14.
     private static final int USER_DICT_SHORTCUT_FREQUENCY = 14;
 
-    // TODO: use Words.SHORTCUT when we target JellyBean or above
-    final static String SHORTCUT = "shortcut";
-    private static final String[] PROJECTION_QUERY;
-    static {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-            PROJECTION_QUERY = new String[] {
-                Words.WORD,
-                SHORTCUT,
-                Words.FREQUENCY,
-            };
-        } else {
-            PROJECTION_QUERY = new String[] {
-                Words.WORD,
-                Words.FREQUENCY,
-            };
-        }
-    }
+    private static final String[] PROJECTION_QUERY_WITH_SHORTCUT = new String[] {
+        Words.WORD,
+        Words.SHORTCUT,
+        Words.FREQUENCY,
+    };
+    private static final String[] PROJECTION_QUERY_WITHOUT_SHORTCUT = new String[] {
+        Words.WORD,
+        Words.FREQUENCY,
+    };
 
     private static final String NAME = "userunigram";
 
     private ContentObserver mObserver;
     final private String mLocale;
     final private boolean mAlsoUseMoreRestrictiveLocales;
-    final public boolean mEnabled;
 
-    public UserBinaryDictionary(final Context context, final Locale locale) {
-        this(context, locale, false /* alsoUseMoreRestrictiveLocales */, null /* dictFile */);
-    }
-
-    public UserBinaryDictionary(final Context context, final Locale locale, final File dictFile) {
-        this(context, locale, false /* alsoUseMoreRestrictiveLocales */, dictFile);
-    }
-
-    public UserBinaryDictionary(final Context context, final Locale locale,
-            final boolean alsoUseMoreRestrictiveLocales, final File dictFile) {
-        this(context, locale, alsoUseMoreRestrictiveLocales, dictFile, NAME);
+    private UserBinaryDictionary(final Context context, final Locale locale, final File dictFile) {
+        this(context, locale, false /* alsoUseMoreRestrictiveLocales */, dictFile, NAME);
     }
 
     protected UserBinaryDictionary(final Context context, final Locale locale,
@@ -116,14 +98,19 @@
             // devices. On older versions of the platform, the hook above will be called instead.
             @Override
             public void onChange(final boolean self, final Uri uri) {
-                setNeedsToReload();
+                setNeedsToRecreate();
             }
         };
         cres.registerContentObserver(Words.CONTENT_URI, true, mObserver);
-        mEnabled = readIsEnabled();
         reloadDictionaryIfRequired();
     }
 
+    @UsedForTesting
+    public static UserBinaryDictionary getDictionary(final Context context, final Locale locale,
+            final File dictFile) {
+        return new UserBinaryDictionary(context, locale, dictFile);
+    }
+
     @Override
     public synchronized void close() {
         if (mObserver != null) {
@@ -182,10 +169,29 @@
         } else {
             requestArguments = localeElements;
         }
+        final String requestString = request.toString();
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            try {
+                addWordsFromProjectionLocked(PROJECTION_QUERY_WITH_SHORTCUT, requestString,
+                        requestArguments);
+            } catch (IllegalArgumentException e) {
+                // This may happen on some non-compliant devices where the declared API is JB+ but
+                // the SHORTCUT column is not present for some reason.
+                addWordsFromProjectionLocked(PROJECTION_QUERY_WITHOUT_SHORTCUT, requestString,
+                        requestArguments);
+            }
+        } else {
+            addWordsFromProjectionLocked(PROJECTION_QUERY_WITHOUT_SHORTCUT, requestString,
+                    requestArguments);
+        }
+    }
+
+    private void addWordsFromProjectionLocked(final String[] query, String request,
+            final String[] requestArguments) throws IllegalArgumentException {
         Cursor cursor = null;
         try {
             cursor = mContext.getContentResolver().query(
-                Words.CONTENT_URI, PROJECTION_QUERY, request.toString(), requestArguments, null);
+                    Words.CONTENT_URI, query, request, requestArguments, null);
             addWordsLocked(cursor);
         } catch (final SQLiteException e) {
             Log.e(TAG, "SQLiteException in the remote User dictionary process.", e);
@@ -198,8 +204,8 @@
         }
     }
 
-    private boolean readIsEnabled() {
-        final ContentResolver cr = mContext.getContentResolver();
+    public static boolean isEnabled(final Context context) {
+        final ContentResolver cr = context.getContentResolver();
         final ContentProviderClient client = cr.acquireContentProviderClient(Words.CONTENT_URI);
         if (client != null) {
             client.release();
@@ -212,18 +218,15 @@
     /**
      * Adds a word to the user dictionary and makes it persistent.
      *
+     * @param context the context
+     * @param locale the locale
      * @param word the word to add. If the word is capitalized, then the dictionary will
      * recognize it as a capitalized word when searched.
      */
-    public synchronized void addWordToUserDictionary(final String word) {
+    public static void addWordToUserDictionary(final Context context, final Locale locale,
+            final String word) {
         // Update the user dictionary provider
-        final Locale locale;
-        if (USER_DICTIONARY_ALL_LANGUAGES == mLocale) {
-            locale = null;
-        } else {
-            locale = LocaleUtils.constructLocaleFromString(mLocale);
-        }
-        UserDictionaryCompatUtils.addWord(mContext, word,
+        UserDictionaryCompatUtils.addWord(context, word,
                 HISTORICAL_DEFAULT_USER_DICTIONARY_FREQUENCY, null, locale);
     }
 
@@ -245,7 +248,7 @@
         if (cursor == null) return;
         if (cursor.moveToFirst()) {
             final int indexWord = cursor.getColumnIndex(Words.WORD);
-            final int indexShortcut = hasShortcutColumn ? cursor.getColumnIndex(SHORTCUT) : 0;
+            final int indexShortcut = hasShortcutColumn ? cursor.getColumnIndex(Words.SHORTCUT) : 0;
             final int indexFrequency = cursor.getColumnIndex(Words.FREQUENCY);
             while (!cursor.isAfterLast()) {
                 final String word = cursor.getString(indexWord);
@@ -269,9 +272,4 @@
             }
         }
     }
-
-    @Override
-    protected boolean haveContentsChanged() {
-        return true;
-    }
 }
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index d755195..cdee496 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -41,6 +41,7 @@
     public static final int CAPS_MODE_AUTO_SHIFT_LOCKED = 0x7;
 
     private CombinerChain mCombinerChain;
+    private String mCombiningSpec; // Memory so that we don't uselessly recreate the combiner chain
 
     // The list of events that served to compose this string.
     private final ArrayList<Event> mEvents;
@@ -91,6 +92,21 @@
     }
 
     /**
+     * Restart input with a new combining spec.
+     * @param combiningSpec The spec string for combining. This is found in the extra value.
+     */
+    public void restart(final String combiningSpec) {
+        final String nonNullCombiningSpec = null == combiningSpec ? "" : combiningSpec;
+        if (nonNullCombiningSpec.equals(mCombiningSpec)) {
+            mCombinerChain.reset();
+        } else {
+            mCombinerChain = new CombinerChain(CombinerChain.createCombiners(nonNullCombiningSpec));
+            mCombiningSpec = nonNullCombiningSpec;
+        }
+        reset();
+    }
+
+    /**
      * Clear out the keys registered so far.
      */
     public void reset() {
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index d2100d4..8b795b8 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -97,6 +97,11 @@
     private boolean mIsAutoCorrectionIndicatorOn;
     private long mDoubleSpacePeriodCountdownStart;
 
+    /**
+     * Create a new instance of the input logic.
+     * @param latinIME the instance of the parent LatinIME. We should remove this when we can.
+     * @param suggestionStripViewAccessor an object to access the suggestion strip view.
+     */
     public InputLogic(final LatinIME latinIME,
             final SuggestionStripViewAccessor suggestionStripViewAccessor) {
         mLatinIME = latinIME;
@@ -117,9 +122,12 @@
      *
      * @param restarting whether input is starting in the same field as before. Unused for now.
      * @param editorInfo the editorInfo associated with the editor.
+     * @param combiningSpec the combining spec string for this subtype
      */
-    public void startInput(final boolean restarting, final EditorInfo editorInfo) {
+    public void startInput(final boolean restarting, final EditorInfo editorInfo,
+            final String combiningSpec) {
         mEnteredText = null;
+        mWordComposer.restart(combiningSpec);
         resetComposingState(true /* alsoResetLastComposedWord */);
         mDeleteCount = 0;
         mSpaceState = SpaceState.NONE;
@@ -138,6 +146,14 @@
     }
 
     /**
+     * Call this when the subtype changes.
+     * @param combiningSpec the spec string for the combining rules
+     */
+    public void onSubtypeChanged(final String combiningSpec) {
+        mWordComposer.restart(combiningSpec);
+    }
+
+    /**
      * Clean up the input logic after input is finished.
      */
     public void finishInput() {
@@ -588,7 +604,7 @@
             if (null != candidate
                     && mSuggestedWords.mSequenceNumber >= mAutoCommitSequenceNumber) {
                 if (candidate.mSourceDict.shouldAutoCommit(candidate)) {
-                    final String[] commitParts = candidate.mWord.split(" ", 2);
+                    final String[] commitParts = candidate.mWord.split(Constants.WORD_SEPARATOR, 2);
                     batchPointers.shift(candidate.mIndexOfTouchPointOfSecondWord);
                     promotePhantomSpace(settingsValues);
                     mConnection.commitText(commitParts[0], 0);
@@ -784,11 +800,11 @@
             // TODO: remove this argument
             final LatinIME.UIHandler handler) {
         final int codePoint = inputTransaction.mEvent.mCodePoint;
+        final SettingsValues settingsValues = inputTransaction.mSettingsValues;
         boolean didAutoCorrect = false;
         // We avoid sending spaces in languages without spaces if we were composing.
         final boolean shouldAvoidSendingCode = Constants.CODE_SPACE == codePoint
-                && !inputTransaction.mSettingsValues.mSpacingAndPunctuations
-                        .mCurrentLanguageHasSpaces
+                && !settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces
                 && mWordComposer.isComposingWord();
         if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
             // If we are in the middle of a recorrection, we need to commit the recorrection
@@ -798,13 +814,13 @@
         }
         // isComposingWord() may have changed since we stored wasComposing
         if (mWordComposer.isComposingWord()) {
-            if (inputTransaction.mSettingsValues.mCorrectionEnabled) {
+            if (settingsValues.mCorrectionEnabled) {
                 final String separator = shouldAvoidSendingCode ? LastComposedWord.NOT_A_SEPARATOR
                         : StringUtils.newSingleCodePointString(codePoint);
-                commitCurrentAutoCorrection(inputTransaction.mSettingsValues, separator, handler);
+                commitCurrentAutoCorrection(settingsValues, separator, handler);
                 didAutoCorrect = true;
             } else {
-                commitTyped(inputTransaction.mSettingsValues,
+                commitTyped(settingsValues,
                         StringUtils.newSingleCodePointString(codePoint));
             }
         }
@@ -821,20 +837,23 @@
             // Double quotes behave like they are usually preceded by space iff we are
             // not inside a double quote or after a digit.
             needsPrecedingSpace = !isInsideDoubleQuoteOrAfterDigit;
+        } else if (settingsValues.mSpacingAndPunctuations.isClusteringSymbol(codePoint)
+                && settingsValues.mSpacingAndPunctuations.isClusteringSymbol(
+                        mConnection.getCodePointBeforeCursor())) {
+            needsPrecedingSpace = false;
         } else {
-            needsPrecedingSpace = inputTransaction.mSettingsValues.isUsuallyPrecededBySpace(
-                    codePoint);
+            needsPrecedingSpace = settingsValues.isUsuallyPrecededBySpace(codePoint);
         }
 
         if (needsPrecedingSpace) {
-            promotePhantomSpace(inputTransaction.mSettingsValues);
+            promotePhantomSpace(settingsValues);
         }
         if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
             ResearchLogger.latinIME_handleSeparator(codePoint, mWordComposer.isComposingWord());
         }
 
         if (!shouldAvoidSendingCode) {
-            sendKeyCodePoint(inputTransaction.mSettingsValues, codePoint);
+            sendKeyCodePoint(settingsValues, codePoint);
         }
 
         if (Constants.CODE_SPACE == codePoint) {
@@ -852,7 +871,7 @@
                 swapSwapperAndSpace(inputTransaction);
                 mSpaceState = SpaceState.SWAP_PUNCTUATION;
             } else if ((SpaceState.PHANTOM == inputTransaction.mSpaceState
-                    && inputTransaction.mSettingsValues.isUsuallyFollowedBySpace(codePoint))
+                    && settingsValues.isUsuallyFollowedBySpace(codePoint))
                     || (Constants.CODE_DOUBLE_QUOTE == codePoint
                             && isInsideDoubleQuoteOrAfterDigit)) {
                 // If we are in phantom space state, and the user presses a separator, we want to
@@ -1222,7 +1241,7 @@
         final int timeStampInSeconds = (int)TimeUnit.MILLISECONDS.toSeconds(
                 System.currentTimeMillis());
         mSuggest.mDictionaryFacilitator.addToUserHistory(suggestion, wasAutoCapitalized, prevWord,
-                timeStampInSeconds);
+                timeStampInSeconds, settingsValues.mBlockPotentiallyOffensive);
     }
 
     public void performUpdateSuggestionStripSync(final SettingsValues settingsValues) {
@@ -1943,10 +1962,11 @@
         final CharSequence chosenWordWithSuggestions =
                 SuggestionSpanUtils.getTextWithSuggestionSpan(mLatinIME, chosenWord,
                         suggestedWords);
-        mConnection.commitText(chosenWordWithSuggestions, 1);
-        // TODO: we pass 2 here, but would it be better to move this above and pass 1 instead?
+        // Use the 2nd previous word as the previous word because the 1st previous word is the word
+        // to be committed.
         final String prevWord = mConnection.getNthPreviousWord(
                 settingsValues.mSpacingAndPunctuations, 2);
+        mConnection.commitText(chosenWordWithSuggestions, 1);
         // Add the word to the user history dictionary
         performAdditionToUserHistoryDictionary(settingsValues, chosenWord, prevWord);
         // TODO: figure out here if this is an auto-correct or if the best word is actually
diff --git a/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java b/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java
index f255034..613ff2b 100644
--- a/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java
+++ b/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java
@@ -186,7 +186,12 @@
     // From version 4 on, we use version * 100 + revision as a version number. That allows
     // us to change the format during development while having testing devices remove
     // older files with each upgrade, while still having a readable versioning scheme.
+    // When we bump up the dictionary format version, we should update
+    // ExpandableDictionary.needsToMigrateDictionary() and
+    // ExpandableDictionary.matchesExpectedBinaryDictFormatVersionForThisType().
     public static final int VERSION2 = 2;
+    // Dictionary version used for testing.
+    public static final int VERSION4_ONLY_FOR_TESTING = 399;
     public static final int VERSION4 = 401;
     static final int MINIMUM_SUPPORTED_VERSION = VERSION2;
     static final int MAXIMUM_SUPPORTED_VERSION = VERSION4;
diff --git a/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java
new file mode 100644
index 0000000..96f03f9
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.latin.personalization;
+
+import android.content.Context;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.ExpandableBinaryDictionary;
+
+import java.io.File;
+import java.util.Locale;
+
+public class ContextualDictionary extends ExpandableBinaryDictionary {
+    /* package */ static final String NAME = PersonalizationDictionary.class.getSimpleName();
+
+    private ContextualDictionary(final Context context, final Locale locale,
+            final File dictFile) {
+        super(context, getDictName(NAME, locale, dictFile), locale, Dictionary.TYPE_CONTEXTUAL,
+                dictFile);
+        // Always reset the contents.
+        clear();
+    }
+    @UsedForTesting
+    public static ContextualDictionary getDictionary(final Context context, final Locale locale,
+            final File dictFile) {
+        return new ContextualDictionary(context, locale, dictFile);
+    }
+
+    @Override
+    public boolean isValidWord(final String word) {
+        // Strings out of this dictionary should not be considered existing words.
+        return false;
+    }
+
+    @Override
+    protected void loadInitialContentsLocked() {
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java b/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java
index 352288f..06bdba0 100644
--- a/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java
+++ b/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java
@@ -18,15 +18,11 @@
 
 import android.content.Context;
 
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.Dictionary;
 import com.android.inputmethod.latin.ExpandableBinaryDictionary;
 import com.android.inputmethod.latin.makedict.DictionaryHeader;
-import com.android.inputmethod.latin.utils.LanguageModelParam;
 
 import java.io.File;
-import java.util.ArrayList;
 import java.util.Locale;
 import java.util.Map;
 
@@ -47,8 +43,6 @@
     /** The locale for this dictionary. */
     public final Locale mLocale;
 
-    private Map<String, String> mAdditionalAttributeMap = null;
-
     protected DecayingExpandableBinaryDictionaryBase(final Context context,
             final String dictName, final Locale locale, final String dictionaryType,
             final File dictFile) {
@@ -72,9 +66,6 @@
     @Override
     protected Map<String, String> getHeaderAttributeMap() {
         final Map<String, String> attributeMap = super.getHeaderAttributeMap();
-        if (mAdditionalAttributeMap != null) {
-            attributeMap.putAll(mAdditionalAttributeMap);
-        }
         attributeMap.put(DictionaryHeader.USES_FORGETTING_CURVE_KEY,
                 DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
         attributeMap.put(DictionaryHeader.HAS_HISTORICAL_INFO_KEY,
@@ -83,22 +74,10 @@
     }
 
     @Override
-    protected boolean haveContentsChanged() {
-        return false;
-    }
-
-    @Override
     protected void loadInitialContentsLocked() {
         // No initial contents.
     }
 
-    @UsedForTesting
-    public void clearAndFlushDictionaryWithAdditionalAttributes(
-            final Map<String, String> attributeMap) {
-        mAdditionalAttributeMap = attributeMap;
-        clear();
-    }
-
     /* package */ void runGCIfRequired() {
         runGCIfRequired(false /* mindsBlockByGC */);
     }
diff --git a/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java b/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
index de2744f..221bb9a 100644
--- a/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
+++ b/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
@@ -61,6 +61,7 @@
         final String action = intent.getAction();
         if (action.equals(DICTIONARY_DECAY_INTENT_ACTION)) {
             PersonalizationHelper.runGCOnAllOpenedUserHistoryDictionaries();
+            PersonalizationHelper.runGCOnAllOpenedPersonalizationDictionaries();
         }
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java
index 4afd5b4..1423fce 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.latin.Dictionary;
 
 import java.io.File;
@@ -26,14 +27,16 @@
 public class PersonalizationDictionary extends DecayingExpandableBinaryDictionaryBase {
     /* package */ static final String NAME = PersonalizationDictionary.class.getSimpleName();
 
+    // TODO: Make this constructor private
     /* package */ PersonalizationDictionary(final Context context, final Locale locale) {
-        this(context, locale, null /* dictFile */);
+        super(context, getDictName(NAME, locale, null /* dictFile */), locale,
+                Dictionary.TYPE_PERSONALIZATION, null /* dictFile */);
     }
 
-    public PersonalizationDictionary(final Context context, final Locale locale,
-            final File dictFile) {
-        super(context, getDictName(NAME, locale, dictFile), locale, Dictionary.TYPE_PERSONALIZATION,
-                dictFile);
+    @UsedForTesting
+    public static PersonalizationDictionary getDictionary(final Context context,
+            final Locale locale, final File dictFile) {
+        return PersonalizationHelper.getPersonalizationDictionary(context, locale);
     }
 
     @Override
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
index 7c43182..afacd08 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
@@ -16,7 +16,6 @@
 
 package com.android.inputmethod.latin.personalization;
 
-import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.FileUtils;
 
@@ -66,8 +65,8 @@
         if (TimeUnit.MILLISECONDS.toSeconds(
                 DictionaryDecayBroadcastReciever.DICTIONARY_DECAY_INTERVAL)
                         < currentTimestamp - sCurrentTimestampForTesting) {
-            // TODO: Run GC for both PersonalizationDictionary and UserHistoryDictionary.
             runGCOnAllOpenedUserHistoryDictionaries();
+            runGCOnAllOpenedPersonalizationDictionaries();
         }
     }
 
@@ -75,7 +74,6 @@
         runGCOnAllDictionariesIfRequired(sLangUserHistoryDictCache);
     }
 
-    @UsedForTesting
     public static void runGCOnAllOpenedPersonalizationDictionaries() {
         runGCOnAllDictionariesIfRequired(sLangPersonalizationDictCache);
     }
diff --git a/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java b/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java
index 8a29c35..818cd9a 100644
--- a/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.Dictionary;
 import com.android.inputmethod.latin.ExpandableBinaryDictionary;
@@ -32,14 +33,16 @@
 public class UserHistoryDictionary extends DecayingExpandableBinaryDictionaryBase {
     /* package */ static final String NAME = UserHistoryDictionary.class.getSimpleName();
 
+    // TODO: Make this constructor private
     /* package */ UserHistoryDictionary(final Context context, final Locale locale) {
-        this(context, locale, null /* dictFile */);
+        super(context, getDictName(NAME, locale, null /* dictFile */), locale,
+                Dictionary.TYPE_USER_HISTORY, null /* dictFile */);
     }
 
-    public UserHistoryDictionary(final Context context, final Locale locale,
+    @UsedForTesting
+    public static UserHistoryDictionary getDictionary(final Context context, final Locale locale,
             final File dictFile) {
-        super(context, getDictName(NAME, locale, dictFile), locale, Dictionary.TYPE_USER_HISTORY,
-                dictFile);
+        return PersonalizationHelper.getUserHistoryDictionary(context, locale);
     }
 
     @Override
diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java
index a3aae8c..4e4c888 100644
--- a/java/src/com/android/inputmethod/latin/settings/Settings.java
+++ b/java/src/com/android/inputmethod/latin/settings/Settings.java
@@ -64,7 +64,7 @@
             "pref_show_language_switch_key";
     public static final String PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST =
             "pref_include_other_imes_in_language_switch_list";
-    public static final String PREF_KEYBOARD_LAYOUT = "pref_keyboard_layout_20110916";
+    public static final String PREF_KEYBOARD_THEME = "pref_keyboard_theme";
     public static final String PREF_CUSTOM_INPUT_STYLES = "custom_input_styles";
     // TODO: consolidate key preview dismiss delay with the key preview animation parameters.
     public static final String PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY =
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
index 22cbd20..e1d38e7 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
@@ -37,6 +37,7 @@
 import android.view.inputmethod.InputMethodSubtype;
 
 import com.android.inputmethod.dictionarypack.DictionarySettingsActivity;
+import com.android.inputmethod.keyboard.KeyboardTheme;
 import com.android.inputmethod.latin.AudioAndHapticFeedbackManager;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.SubtypeSwitcher;
@@ -253,11 +254,31 @@
         }
         updateListPreferenceSummaryToCurrentValue(Settings.PREF_SHOW_SUGGESTIONS_SETTING);
         updateListPreferenceSummaryToCurrentValue(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY);
-        updateListPreferenceSummaryToCurrentValue(Settings.PREF_KEYBOARD_LAYOUT);
+        final ListPreference keyboardThemePref = (ListPreference)findPreference(
+                Settings.PREF_KEYBOARD_THEME);
+        if (keyboardThemePref != null) {
+            final KeyboardTheme keyboardTheme = KeyboardTheme.getKeyboardTheme(prefs);
+            final String value = Integer.toString(keyboardTheme.mThemeId);
+            final CharSequence entries[] = keyboardThemePref.getEntries();
+            final int entryIndex = keyboardThemePref.findIndexOfValue(value);
+            keyboardThemePref.setSummary(entryIndex < 0 ? null : entries[entryIndex]);
+            keyboardThemePref.setValue(value);
+        }
         updateCustomInputStylesSummary(prefs, res);
     }
 
     @Override
+    public void onPause() {
+        super.onPause();
+        final SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
+        final ListPreference keyboardThemePref = (ListPreference)findPreference(
+                Settings.PREF_KEYBOARD_THEME);
+        if (keyboardThemePref != null) {
+            KeyboardTheme.saveKeyboardThemeId(keyboardThemePref.getValue(), prefs);
+        }
+    }
+
+    @Override
     public void onDestroy() {
         getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(
                 this);
@@ -287,7 +308,7 @@
         ensureConsistencyOfAutoCorrectionSettings();
         updateListPreferenceSummaryToCurrentValue(Settings.PREF_SHOW_SUGGESTIONS_SETTING);
         updateListPreferenceSummaryToCurrentValue(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY);
-        updateListPreferenceSummaryToCurrentValue(Settings.PREF_KEYBOARD_LAYOUT);
+        updateListPreferenceSummaryToCurrentValue(Settings.PREF_KEYBOARD_THEME);
         refreshEnablingsOfKeypressSoundAndVibrationSettings(prefs, getResources());
     }
 
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
index dde50cc..de2eb95 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
@@ -205,7 +205,8 @@
     }
 
     public boolean isWordCodePoint(final int code) {
-        return Character.isLetter(code) || isWordConnector(code);
+        return Character.isLetter(code) || isWordConnector(code)
+                || Character.COMBINING_SPACING_MARK == Character.getType(code);
     }
 
     public boolean isUsuallyPrecededBySpace(final int code) {
diff --git a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
index 796921f..b8d2a22 100644
--- a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
+++ b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
@@ -30,6 +30,7 @@
 public final class SpacingAndPunctuations {
     private final int[] mSortedSymbolsPrecededBySpace;
     private final int[] mSortedSymbolsFollowedBySpace;
+    private final int[] mSortedSymbolsClusteringTogether;
     private final int[] mSortedWordConnectors;
     public final int[] mSortedWordSeparators;
     public final PunctuationSuggestions mSuggestPuncList;
@@ -46,6 +47,8 @@
         // To be able to binary search the code point. See {@link #isUsuallyFollowedBySpace(int)}.
         mSortedSymbolsFollowedBySpace = StringUtils.toSortedCodePointArray(
                 res.getString(R.string.symbols_followed_by_space));
+        mSortedSymbolsClusteringTogether = StringUtils.toSortedCodePointArray(
+                res.getString(R.string.symbols_clustering_together));
         // To be able to binary search the code point. See {@link #isWordConnector(int)}.
         mSortedWordConnectors = StringUtils.toSortedCodePointArray(
                 res.getString(R.string.symbols_word_connectors));
@@ -85,6 +88,10 @@
         return Arrays.binarySearch(mSortedSymbolsFollowedBySpace, code) >= 0;
     }
 
+    public boolean isClusteringSymbol(final int code) {
+        return Arrays.binarySearch(mSortedSymbolsClusteringTogether, code) >= 0;
+    }
+
     public boolean isSentenceSeparator(final int code) {
         return code == mSentenceSeparator;
     }
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
index 1d84bb5..810bda7 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
@@ -309,9 +309,8 @@
 
         setupWordViewsTextAndColor(suggestedWords, mSuggestionsCountInStrip);
         final TextView centerWordView = mWordViews.get(mCenterPositionInStrip);
-        final int availableStripWidth = placerView.getWidth()
-                - placerView.getPaddingRight() - placerView.getPaddingLeft();
-        final int centerWidth = getSuggestionWidth(mCenterPositionInStrip, availableStripWidth);
+        final int stripWidth = stripView.getWidth();
+        final int centerWidth = getSuggestionWidth(mCenterPositionInStrip, stripWidth);
         final int countInStrip;
         if (suggestedWords.size() == 1 || getTextScaleX(centerWordView.getText(), centerWidth,
                 centerWordView.getPaint()) < MIN_TEXT_XSCALE) {
@@ -319,11 +318,11 @@
             // by consolidating all slots in the strip.
             countInStrip = 1;
             mMoreSuggestionsAvailable = (suggestedWords.size() > countInStrip);
-            layoutWord(mCenterPositionInStrip, availableStripWidth - mPadding);
+            layoutWord(mCenterPositionInStrip, stripWidth - mPadding);
             stripView.addView(centerWordView);
             setLayoutWeight(centerWordView, 1.0f, ViewGroup.LayoutParams.MATCH_PARENT);
             if (SuggestionStripView.DBG) {
-                layoutDebugInfo(mCenterPositionInStrip, placerView, availableStripWidth);
+                layoutDebugInfo(mCenterPositionInStrip, placerView, stripWidth);
             }
         } else {
             countInStrip = mSuggestionsCountInStrip;
@@ -337,7 +336,7 @@
                     x += divider.getMeasuredWidth();
                 }
 
-                final int width = getSuggestionWidth(positionInStrip, availableStripWidth);
+                final int width = getSuggestionWidth(positionInStrip, stripWidth);
                 final TextView wordView = layoutWord(positionInStrip, width);
                 stripView.addView(wordView);
                 setLayoutWeight(wordView, getSuggestionWeight(positionInStrip),
@@ -382,6 +381,7 @@
         }
 
         // Disable this suggestion if the suggestion is null or empty.
+        // TODO: Fix disabled {@link TextView}'s content description.
         wordView.setEnabled(!TextUtils.isEmpty(word));
         final CharSequence text = getEllipsizedText(word, width, wordView.getPaint());
         final float scaleX = getTextScaleX(word, width, wordView.getPaint());
@@ -425,7 +425,9 @@
             final int countInStrip) {
         // Clear all suggestions first
         for (int positionInStrip = 0; positionInStrip < countInStrip; ++positionInStrip) {
-            mWordViews.get(positionInStrip).setText(null);
+            final TextView wordView = mWordViews.get(positionInStrip);
+            wordView.setText(null);
+            wordView.setTag(null);
             // Make this inactive for touches in {@link #layoutWord(int,int)}.
             if (SuggestionStripView.DBG) {
                 mDebugInfoViews.get(positionInStrip).setText(null);
@@ -474,8 +476,8 @@
         return countInStrip;
     }
 
-    public void layoutAddToDictionaryHint(final String word, final ViewGroup addToDictionaryStrip,
-            final int stripWidth) {
+    public void layoutAddToDictionaryHint(final String word, final ViewGroup addToDictionaryStrip) {
+        final int stripWidth = addToDictionaryStrip.getWidth();
         final int width = stripWidth - mDividerWidth - mPadding * 2;
 
         final TextView wordView = (TextView)addToDictionaryStrip.findViewById(R.id.word_to_save);
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
index a0793b1..619804a 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
@@ -18,7 +18,9 @@
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.content.res.TypedArray;
 import android.graphics.Color;
+import android.graphics.drawable.Drawable;
 import android.support.v4.view.ViewCompat;
 import android.text.TextUtils;
 import android.util.AttributeSet;
@@ -31,6 +33,7 @@
 import android.view.View.OnLongClickListener;
 import android.view.ViewGroup;
 import android.view.ViewParent;
+import android.widget.ImageButton;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
@@ -59,12 +62,14 @@
         public void addWordToUserDictionary(String word);
         public void showImportantNoticeContents();
         public void pickSuggestionManually(int index, SuggestedWordInfo word);
+        public void onCodeInput(int primaryCode, int x, int y, boolean isKeyRepeat);
     }
 
     static final boolean DBG = LatinImeLogger.sDBG;
     private static final float DEBUG_INFO_TEXT_SIZE_IN_DIP = 6.0f;
 
     private final ViewGroup mSuggestionsStrip;
+    private final ImageButton mVoiceKey;
     private final ViewGroup mAddToDictionaryStrip;
     private final View mImportantNoticeStrip;
     MainKeyboardView mMainKeyboardView;
@@ -86,39 +91,42 @@
 
     private static class StripVisibilityGroup {
         private final View mSuggestionsStrip;
+        private final View mVoiceKey;
         private final View mAddToDictionaryStrip;
         private final View mImportantNoticeStrip;
 
-        public StripVisibilityGroup(final View suggestionsStrip, final View addToDictionaryStrip,
-                final View importantNoticeStrip) {
+        public StripVisibilityGroup(final View suggestionsStrip, final View voiceKey,
+                final View addToDictionaryStrip, final View importantNoticeStrip) {
             mSuggestionsStrip = suggestionsStrip;
+            mVoiceKey = voiceKey;
             mAddToDictionaryStrip = addToDictionaryStrip;
             mImportantNoticeStrip = importantNoticeStrip;
-            showSuggestionsStrip();
+            showSuggestionsStrip(false /* voiceKeyEnabled */);
         }
 
-        public void setLayoutDirection(final boolean isRtlLanguage) {
-            final int layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL
-                    : ViewCompat.LAYOUT_DIRECTION_LTR;
+        public void setLayoutDirection(final int layoutDirection) {
             ViewCompat.setLayoutDirection(mSuggestionsStrip, layoutDirection);
             ViewCompat.setLayoutDirection(mAddToDictionaryStrip, layoutDirection);
             ViewCompat.setLayoutDirection(mImportantNoticeStrip, layoutDirection);
         }
 
-        public void showSuggestionsStrip() {
+        public void showSuggestionsStrip(final boolean enableVoiceKey) {
             mSuggestionsStrip.setVisibility(VISIBLE);
+            mVoiceKey.setVisibility(enableVoiceKey ? VISIBLE : INVISIBLE);
             mAddToDictionaryStrip.setVisibility(INVISIBLE);
             mImportantNoticeStrip.setVisibility(INVISIBLE);
         }
 
         public void showAddToDictionaryStrip() {
             mSuggestionsStrip.setVisibility(INVISIBLE);
+            mVoiceKey.setVisibility(INVISIBLE);
             mAddToDictionaryStrip.setVisibility(VISIBLE);
             mImportantNoticeStrip.setVisibility(INVISIBLE);
         }
 
-        public void showImportantNoticeStrip() {
+        public void showImportantNoticeStrip(final boolean enableVoiceKey) {
             mSuggestionsStrip.setVisibility(INVISIBLE);
+            mVoiceKey.setVisibility(enableVoiceKey ? VISIBLE : INVISIBLE);
             mAddToDictionaryStrip.setVisibility(INVISIBLE);
             mImportantNoticeStrip.setVisibility(VISIBLE);
         }
@@ -145,10 +153,11 @@
         inflater.inflate(R.layout.suggestions_strip, this);
 
         mSuggestionsStrip = (ViewGroup)findViewById(R.id.suggestions_strip);
+        mVoiceKey = (ImageButton)findViewById(R.id.suggestions_strip_voice_key);
         mAddToDictionaryStrip = (ViewGroup)findViewById(R.id.add_to_dictionary_strip);
         mImportantNoticeStrip = findViewById(R.id.important_notice_strip);
-        mStripVisibilityGroup = new StripVisibilityGroup(mSuggestionsStrip, mAddToDictionaryStrip,
-                mImportantNoticeStrip);
+        mStripVisibilityGroup = new StripVisibilityGroup(mSuggestionsStrip, mVoiceKey,
+                mAddToDictionaryStrip, mImportantNoticeStrip);
 
         for (int pos = 0; pos < SuggestedWords.MAX_SUGGESTIONS; pos++) {
             final TextView word = new TextView(context, null, R.attr.suggestionWordStyle);
@@ -177,6 +186,13 @@
                 R.dimen.config_more_suggestions_modal_tolerance);
         mMoreSuggestionsSlidingDetector = new GestureDetector(
                 context, mMoreSuggestionsSlidingListener);
+
+        final TypedArray keyboardAttr = context.obtainStyledAttributes(attrs,
+                R.styleable.Keyboard, defStyle, R.style.SuggestionStripView);
+        final Drawable iconVoice = keyboardAttr.getDrawable(R.styleable.Keyboard_iconShortcutKey);
+        keyboardAttr.recycle();
+        mVoiceKey.setImageDrawable(iconVoice);
+        mVoiceKey.setOnClickListener(this);
     }
 
     /**
@@ -188,16 +204,30 @@
         mMainKeyboardView = (MainKeyboardView)inputView.findViewById(R.id.keyboard_view);
     }
 
+    private boolean isVoiceKeyEnabled() {
+        if (mMainKeyboardView == null) {
+            return false;
+        }
+        final Keyboard keyboard = mMainKeyboardView.getKeyboard();
+        if (keyboard == null) {
+            return false;
+        }
+        return keyboard.mId.mHasShortcutKey;
+    }
+
     public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) {
         clear();
-        mStripVisibilityGroup.setLayoutDirection(isRtlLanguage);
+        final int layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL
+                : ViewCompat.LAYOUT_DIRECTION_LTR;
+        setLayoutDirection(layoutDirection);
+        mStripVisibilityGroup.setLayoutDirection(layoutDirection);
         mSuggestedWords = suggestedWords;
         mSuggestionsCountInStrip = mLayoutHelper.layoutAndReturnSuggestionCountInStrip(
                 mSuggestedWords, mSuggestionsStrip, this);
         if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
             ResearchLogger.suggestionStripView_setSuggestions(mSuggestedWords);
         }
-        mStripVisibilityGroup.showSuggestionsStrip();
+        mStripVisibilityGroup.showSuggestionsStrip(isVoiceKeyEnabled());
     }
 
     public int setMoreSuggestionsHeight(final int remainingHeight) {
@@ -209,7 +239,7 @@
     }
 
     public void showAddToDictionaryHint(final String word) {
-        mLayoutHelper.layoutAddToDictionaryHint(word, mAddToDictionaryStrip, getWidth());
+        mLayoutHelper.layoutAddToDictionaryHint(word, mAddToDictionaryStrip);
         // {@link TextView#setTag()} is used to hold the word to be added to dictionary. The word
         // will be extracted at {@link #onClick(View)}.
         mAddToDictionaryStrip.setTag(word);
@@ -244,7 +274,7 @@
             dismissMoreSuggestionsPanel();
         }
         mLayoutHelper.layoutImportantNotice(mImportantNoticeStrip, importantNoticeTitle);
-        mStripVisibilityGroup.showImportantNoticeStrip();
+        mStripVisibilityGroup.showImportantNoticeStrip(isVoiceKeyEnabled());
         mImportantNoticeStrip.setOnClickListener(this);
         return true;
     }
@@ -252,7 +282,7 @@
     public void clear() {
         mSuggestionsStrip.removeAllViews();
         removeAllDebugInfoViews();
-        mStripVisibilityGroup.showSuggestionsStrip();
+        mStripVisibilityGroup.showSuggestionsStrip(false /* enableVoiceKey */);
         dismissMoreSuggestionsPanel();
     }
 
@@ -415,6 +445,12 @@
             mListener.showImportantNoticeContents();
             return;
         }
+        if (view == mVoiceKey) {
+            mListener.onCodeInput(Constants.CODE_SHORTCUT,
+                    Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE,
+                    false /* isKeyRepeat */);
+            return;
+        }
         final Object tag = view.getTag();
         // {@link String} tag is set at {@link #showAddToDictionaryHint(String,CharSequence)}.
         if (tag instanceof String) {
diff --git a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
index f2a1e52..55cbf79 100644
--- a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
+++ b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
@@ -17,21 +17,35 @@
 package com.android.inputmethod.latin.utils;
 
 import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardSwitcher;
+import com.android.inputmethod.keyboard.MainKeyboardView;
+import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.Suggest;
+import com.android.inputmethod.latin.Suggest.OnGetSuggestedWordsCallback;
+import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.WordComposer;
 
 /**
- * This class is used to prevent distracters/misspellings being added to personalization
+ * This class is used to prevent distracters being added to personalization
  * or user history dictionaries
  */
 public class DistracterFilter {
     private final Suggest mSuggest;
     private final Keyboard mKeyboard;
 
+    // If the score of the top suggestion exceeds this value, the tested word (e.g.,
+    // an OOV, a misspelling, or an in-vocabulary word) would be considered as a distracter to
+    // words in dictionary. The greater the threshold is, the less likely the tested word would
+    // become a distracter, which means the tested word will be more likely to be added to
+    // the dictionary.
+    private static final float DISTRACTER_WORD_SCORE_THRESHOLD = 2.0f;
+
     /**
      * Create a DistracterFilter instance.
      *
      * @param suggest an instance of Suggest which will be used to obtain a list of suggestions
-     *                for a potential distracter/misspelling
+     *                for a potential distracter
      * @param keyboard the keyboard that is currently being used. This information is needed
      *                 when calling mSuggest.getSuggestedWords(...) to obtain a list of suggestions.
      */
@@ -40,9 +54,79 @@
         mKeyboard = keyboard;
     }
 
-    public boolean isDistractorToWordsInDictionaries(final String prevWord,
-            final String targetWord) {
-        // TODO: to be implemented
+    public static DistracterFilter createDistracterFilter(final Suggest suggest,
+            final KeyboardSwitcher keyboardSwitcher) {
+        final MainKeyboardView mainKeyboardView = keyboardSwitcher.getMainKeyboardView();
+        // TODO: Create Keyboard when mainKeyboardView is null.
+        // TODO: Figure out the most reasonable keyboard for the filter. Refer to the
+        // spellchecker's logic.
+        final Keyboard keyboard = (mainKeyboardView != null) ?
+                mainKeyboardView.getKeyboard() : null;
+        final DistracterFilter distracterFilter = new DistracterFilter(suggest, keyboard);
+        return distracterFilter;
+    }
+
+    private static boolean suggestionExceedsDistracterThreshold(
+            final SuggestedWordInfo suggestion, final String consideredWord,
+            final float distracterThreshold) {
+        if (null != suggestion) {
+            final int suggestionScore = suggestion.mScore;
+            final float normalizedScore = BinaryDictionaryUtils.calcNormalizedScore(
+                    consideredWord, suggestion.mWord, suggestionScore);
+            if (normalizedScore > distracterThreshold) {
+                return true;
+            }
+        }
         return false;
     }
+
+    /**
+     * Determine whether a word is a distracter to words in dictionaries.
+     *
+     * @param prevWord the previous word, or null if none.
+     * @param testedWord the word that will be tested to see whether it is a distracter to words
+     *                   in dictionaries.
+     * @return true if testedWord is a distracter, otherwise false.
+     */
+    public boolean isDistracterToWordsInDictionaries(final String prevWord,
+            final String testedWord) {
+        if (mSuggest == null) {
+            return false;
+        }
+
+        final WordComposer composer = new WordComposer();
+        final int[] codePoints = StringUtils.toCodePointArray(testedWord);
+        final int[] coordinates;
+        if (null == mKeyboard) {
+            coordinates = CoordinateUtils.newCoordinateArray(codePoints.length,
+                    Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
+        } else {
+            coordinates = mKeyboard.getCoordinates(codePoints);
+        }
+        composer.setComposingWord(codePoints, coordinates, prevWord);
+
+        final int trailingSingleQuotesCount = composer.trailingSingleQuotesCount();
+        final String consideredWord = trailingSingleQuotesCount > 0 ? testedWord.substring(0,
+                testedWord.length() - trailingSingleQuotesCount) : testedWord;
+        final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<Boolean>();
+        final OnGetSuggestedWordsCallback callback = new OnGetSuggestedWordsCallback() {
+            @Override
+            public void onGetSuggestedWords(final SuggestedWords suggestedWords) {
+                if (suggestedWords != null && suggestedWords.size() > 1) {
+                    // The suggestedWordInfo at 0 is the typed word. The 1st suggestion from
+                    // the decoder is at index 1.
+                    final SuggestedWordInfo firstSuggestion = suggestedWords.getInfo(1);
+                    final boolean hasStrongDistractor = suggestionExceedsDistracterThreshold(
+                            firstSuggestion, consideredWord, DISTRACTER_WORD_SCORE_THRESHOLD);
+                    holder.set(hasStrongDistractor);
+                }
+            }
+        };
+        mSuggest.getSuggestedWords(composer, prevWord, mKeyboard.getProximityInfo(),
+                true /* blockOffensiveWords */, true /* isCorrectionEnbaled */,
+                null /* additionalFeaturesOptions */, 0 /* sessionId */,
+                SuggestedWords.NOT_A_SEQUENCE_NUMBER, callback);
+
+        return holder.get(false /* defaultValue */, Constants.GET_SUGGESTED_WORDS_TIMEOUT);
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java b/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
index 5ce977d..74e7db9 100644
--- a/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
+++ b/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
@@ -80,7 +80,8 @@
     public static ArrayList<LanguageModelParam> createLanguageModelParamsFrom(
             final ArrayList<String> tokens, final int timestamp,
             final DictionaryFacilitatorForSuggest dictionaryFacilitator,
-            final SpacingAndPunctuations spacingAndPunctuations) {
+            final SpacingAndPunctuations spacingAndPunctuations,
+            final DistracterFilter distracterFilter) {
         final ArrayList<LanguageModelParam> languageModelParams =
                 CollectionUtils.newArrayList();
         final int N = tokens.size();
@@ -109,7 +110,8 @@
             }
             final LanguageModelParam languageModelParam =
                     detectWhetherVaildWordOrNotAndGetLanguageModelParam(
-                            prevWord, tempWord, timestamp, dictionaryFacilitator);
+                            prevWord, tempWord, timestamp, dictionaryFacilitator,
+                            distracterFilter);
             if (languageModelParam == null) {
                 continue;
             }
@@ -121,27 +123,36 @@
 
     private static LanguageModelParam detectWhetherVaildWordOrNotAndGetLanguageModelParam(
             final String prevWord, final String targetWord, final int timestamp,
-            final DictionaryFacilitatorForSuggest dictionaryFacilitator) {
+            final DictionaryFacilitatorForSuggest dictionaryFacilitator,
+            final DistracterFilter distracterFilter) {
         final Locale locale = dictionaryFacilitator.getLocale();
         if (locale == null) {
             return null;
         }
-        if (!dictionaryFacilitator.isValidWord(targetWord, true /* ignoreCase */)) {
-            // OOV word.
-            return createAndGetLanguageModelParamOfWord(prevWord, targetWord, timestamp,
-                    false /* isValidWord */, locale);
-        }
+        // TODO: Though targetWord is an IV (in-vocabulary) word, we should still apply
+        // distracterFilter in the following code. If targetWord is a distracter,
+        // it should be filtered out.
         if (dictionaryFacilitator.isValidWord(targetWord, false /* ignoreCase */)) {
             return createAndGetLanguageModelParamOfWord(prevWord, targetWord, timestamp,
                     true /* isValidWord */, locale);
         }
+
         final String lowerCaseTargetWord = targetWord.toLowerCase(locale);
         if (dictionaryFacilitator.isValidWord(lowerCaseTargetWord, false /* ignoreCase */)) {
             // Add the lower-cased word.
             return createAndGetLanguageModelParamOfWord(prevWord, lowerCaseTargetWord,
                     timestamp, true /* isValidWord */, locale);
         }
-        // Treat the word as an OOV word.
+
+        // Treat the word as an OOV word. The following statement checks whether this OOV
+        // is a distracter to words in dictionaries. Being a distracter means the OOV word is
+        // too close to a common word in dictionaries (e.g., the OOV "mot" is very close to "not").
+        // Adding such a word to dictonaries would interfere with entering in-dictionary words. For
+        // example, adding "mot" to dictionaries might interfere with entering "not".
+        // This kind of OOV should be filtered out.
+        if (distracterFilter.isDistracterToWordsInDictionaries(prevWord, targetWord)) {
+            return null;
+        }
         return createAndGetLanguageModelParamOfWord(prevWord, targetWord, timestamp,
                 false /* isValidWord */, locale);
     }
diff --git a/java/src/com/android/inputmethod/latin/utils/PrioritizedSerialExecutor.java b/java/src/com/android/inputmethod/latin/utils/PrioritizedSerialExecutor.java
index a23b3ac..bf38abc 100644
--- a/java/src/com/android/inputmethod/latin/utils/PrioritizedSerialExecutor.java
+++ b/java/src/com/android/inputmethod/latin/utils/PrioritizedSerialExecutor.java
@@ -16,6 +16,8 @@
 
 package com.android.inputmethod.latin.utils;
 
+import com.android.inputmethod.annotations.UsedForTesting;
+
 import java.util.Queue;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.ConcurrentLinkedQueue;
@@ -74,6 +76,7 @@
      * Enqueues the given task into the prioritized task queue.
      * @param r the enqueued task
      */
+    @UsedForTesting
     public void executePrioritized(final Runnable r) {
         synchronized(mLock) {
             if (!mIsShutdown) {
diff --git a/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java b/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
index b37779b..938d271 100644
--- a/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
@@ -324,4 +324,8 @@
     public static boolean isRtlLanguage(final InputMethodSubtype subtype) {
         return isRtlLanguage(getSubtypeLocale(subtype));
     }
+
+    public static String getCombiningRulesExtraValue(final InputMethodSubtype subtype) {
+        return subtype.getExtraValueOf(Constants.Subtype.ExtraValue.COMBINING_RULES);
+    }
 }
diff --git a/native/jni/NativeFileList.mk b/native/jni/NativeFileList.mk
index 34c1907..6ccfec9 100644
--- a/native/jni/NativeFileList.mk
+++ b/native/jni/NativeFileList.mk
@@ -46,23 +46,22 @@
     $(addprefix suggest/policyimpl/dictionary/, \
         header/header_policy.cpp \
         header/header_read_write_utils.cpp \
-        shortcut/shortcut_list_reading_utils.cpp \
         structure/dictionary_structure_with_buffer_policy_factory.cpp) \
-    $(addprefix suggest/policyimpl/dictionary/bigram/, \
-        bigram_list_read_write_utils.cpp \
-        ver4_bigram_list_policy.cpp) \
     $(addprefix suggest/policyimpl/dictionary/structure/pt_common/, \
+        bigram/bigram_list_read_write_utils.cpp \
         dynamic_pt_gc_event_listeners.cpp \
         dynamic_pt_reading_helper.cpp \
         dynamic_pt_reading_utils.cpp \
         dynamic_pt_updating_helper.cpp \
         dynamic_pt_writing_utils.cpp \
-        patricia_trie_reading_utils.cpp) \
+        patricia_trie_reading_utils.cpp \
+        shortcut/shortcut_list_reading_utils.cpp ) \
     $(addprefix suggest/policyimpl/dictionary/structure/v2/, \
         patricia_trie_policy.cpp \
         ver2_patricia_trie_node_reader.cpp \
         ver2_pt_node_array_reader.cpp) \
     $(addprefix suggest/policyimpl/dictionary/structure/v4/, \
+        bigram/ver4_bigram_list_policy.cpp \
         ver4_dict_buffers.cpp \
         ver4_dict_constants.cpp \
         ver4_patricia_trie_node_reader.cpp \
diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
index 9016cae..a55b2da 100644
--- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
+++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
@@ -32,6 +32,7 @@
 #include "suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.h"
 #include "utils/char_utils.h"
 #include "utils/jni_data_utils.h"
+#include "utils/log_utils.h"
 #include "utils/time_keeper.h"
 
 namespace latinime {
@@ -334,8 +335,9 @@
     if (!shortcutTargetCodePoints.empty()) {
         shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability);
     }
+    // Use 1 for count to indicate the word has inputted.
     const UnigramProperty unigramProperty(isNotAWord, isBlacklisted,
-            probability, timestamp, 0 /* level */, 0 /* count */, &shortcuts);
+            probability, timestamp, 0 /* level */, 1 /* count */, &shortcuts);
     dictionary->addUnigramWord(codePoints, codePointCount, &unigramProperty);
 }
 
@@ -351,8 +353,12 @@
     jsize word1Length = env->GetArrayLength(word1);
     int word1CodePoints[word1Length];
     env->GetIntArrayRegion(word1, 0, word1Length, word1CodePoints);
-    dictionary->addBigramWords(word0CodePoints, word0Length, word1CodePoints,
-            word1Length, probability, timestamp);
+    const std::vector<int> bigramTargetCodePoints(
+            word1CodePoints, word1CodePoints + word1Length);
+    // Use 1 for count to indicate the bigram has inputted.
+    const BigramProperty bigramProperty(&bigramTargetCodePoints, probability,
+            timestamp, 0 /* level */, 1 /* count */);
+    dictionary->addBigramWords(word0CodePoints, word0Length, &bigramProperty);
 }
 
 static void latinime_BinaryDictionary_removeBigramWords(JNIEnv *env, jclass clazz, jlong dict,
@@ -435,13 +441,18 @@
                     env->GetIntField(languageModelParam, shortcutProbabilityFieldId);
             shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability);
         }
+        // Use 1 for count to indicate the word has inputted.
         const UnigramProperty unigramProperty(isNotAWord, isBlacklisted,
-                unigramProbability, timestamp, 0 /* level */, 0 /* count */, &shortcuts);
+                unigramProbability, timestamp, 0 /* level */, 1 /* count */, &shortcuts);
         dictionary->addUnigramWord(word1CodePoints, word1Length, &unigramProperty);
         if (word0) {
             jint bigramProbability = env->GetIntField(languageModelParam, bigramProbabilityFieldId);
-            dictionary->addBigramWords(word0CodePoints, word0Length, word1CodePoints, word1Length,
-                    bigramProbability, timestamp);
+            const std::vector<int> bigramTargetCodePoints(
+                    word1CodePoints, word1CodePoints + word1Length);
+            // Use 1 for count to indicate the bigram has inputted.
+            const BigramProperty bigramProperty(&bigramTargetCodePoints, bigramProbability,
+                    timestamp, 0 /* level */, 1 /* count */);
+            dictionary->addBigramWords(word0CodePoints, word0Length, &bigramProperty);
         }
         if (dictionary->needsToRunGC(true /* mindsBlockByGC */)) {
             return i + 1;
@@ -489,6 +500,85 @@
     return dictionary->getDictionaryStructurePolicy()->isCorrupted();
 }
 
+static DictionaryStructureWithBufferPolicy::StructurePolicyPtr runGCAndGetNewStructurePolicy(
+        DictionaryStructureWithBufferPolicy::StructurePolicyPtr structurePolicy,
+        const char *const dictFilePath) {
+    structurePolicy->flushWithGC(dictFilePath);
+    structurePolicy.release();
+    return DictionaryStructureWithBufferPolicyFactory::newPolicyForExistingDictFile(
+            dictFilePath, 0 /* offset */, 0 /* size */, true /* isUpdatable */);
+}
+
+static bool latinime_BinaryDictionary_migrateNative(JNIEnv *env, jclass clazz, jlong dict,
+        jstring dictFilePath, jlong newFormatVersion) {
+    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+    if (!dictionary) {
+        return false;
+    }
+    const jsize filePathUtf8Length = env->GetStringUTFLength(dictFilePath);
+    char dictFilePathChars[filePathUtf8Length + 1];
+    env->GetStringUTFRegion(dictFilePath, 0, env->GetStringLength(dictFilePath), dictFilePathChars);
+    dictFilePathChars[filePathUtf8Length] = '\0';
+
+    const DictionaryHeaderStructurePolicy *const headerPolicy =
+            dictionary->getDictionaryStructurePolicy()->getHeaderStructurePolicy();
+    DictionaryStructureWithBufferPolicy::StructurePolicyPtr dictionaryStructureWithBufferPolicy =
+            DictionaryStructureWithBufferPolicyFactory::newPolicyForOnMemoryDict(
+                    newFormatVersion, *headerPolicy->getLocale(), headerPolicy->getAttributeMap());
+    if (!dictionaryStructureWithBufferPolicy) {
+        LogUtils::logToJava(env, "Cannot migrate header.");
+        return false;
+    }
+
+    // TODO: Migrate historical information.
+    int wordCodePoints[MAX_WORD_LENGTH];
+    int token = 0;
+    // Add unigrams.
+    do {
+        token = dictionary->getNextWordAndNextToken(token, wordCodePoints);
+        const int wordLength = CharUtils::getCodePointCount(MAX_WORD_LENGTH, wordCodePoints);
+        const WordProperty wordProperty = dictionary->getWordProperty(wordCodePoints, wordLength);
+        if (dictionaryStructureWithBufferPolicy->needsToRunGC(true /* mindsBlockByGC */)) {
+            dictionaryStructureWithBufferPolicy = runGCAndGetNewStructurePolicy(
+                    std::move(dictionaryStructureWithBufferPolicy), dictFilePathChars);
+            if (!dictionaryStructureWithBufferPolicy) {
+                LogUtils::logToJava(env, "Cannot open dict after GC.");
+                return false;
+            }
+        }
+        if (!dictionaryStructureWithBufferPolicy->addUnigramWord(wordCodePoints, wordLength,
+                wordProperty.getUnigramProperty())) {
+            LogUtils::logToJava(env, "Cannot add unigram to the new dict.");
+            return false;
+        }
+    } while (token != 0);
+
+    // Add bigrams.
+    do {
+        token = dictionary->getNextWordAndNextToken(token, wordCodePoints);
+        const int wordLength = CharUtils::getCodePointCount(MAX_WORD_LENGTH, wordCodePoints);
+        const WordProperty wordProperty = dictionary->getWordProperty(wordCodePoints, wordLength);
+        if (dictionaryStructureWithBufferPolicy->needsToRunGC(true /* mindsBlockByGC */)) {
+            dictionaryStructureWithBufferPolicy = runGCAndGetNewStructurePolicy(
+                    std::move(dictionaryStructureWithBufferPolicy), dictFilePathChars);
+            if (!dictionaryStructureWithBufferPolicy) {
+                LogUtils::logToJava(env, "Cannot open dict after GC.");
+                return false;
+            }
+        }
+        for (const BigramProperty &bigramProperty : *wordProperty.getBigramProperties()) {
+            if (!dictionaryStructureWithBufferPolicy->addBigramWords(wordCodePoints, wordLength,
+                    &bigramProperty)) {
+                LogUtils::logToJava(env, "Cannot add bigram to the new dict.");
+                return false;
+            }
+        }
+    } while (token != 0);
+    // Save to File.
+    dictionaryStructureWithBufferPolicy->flushWithGC(dictFilePathChars);
+    return true;
+}
+
 static const JNINativeMethod sMethods[] = {
     {
         const_cast<char *>("openNative"),
@@ -591,6 +681,11 @@
         const_cast<char *>("isCorruptedNative"),
         const_cast<char *>("(J)Z"),
         reinterpret_cast<void *>(latinime_BinaryDictionary_isCorruptedNative)
+    },
+    {
+        const_cast<char *>("migrateNative"),
+        const_cast<char *>("(JLjava/lang/String;J)Z"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_migrateNative)
     }
 };
 
diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h
index 761063f..a80c975 100644
--- a/native/jni/src/defines.h
+++ b/native/jni/src/defines.h
@@ -293,13 +293,6 @@
 #define M_PI_F 3.14159265f
 #define MAX_PERCENTILE 100
 
-// Number of base-10 digits in the largest integer + 1 to leave room for a zero terminator.
-// As such, this is the maximum number of characters will be needed to represent an int as a
-// string, including the terminator; this is used as the size of a string buffer large enough to
-// hold any value that is intended to fit in an integer, e.g. in the code that reads the header
-// of the binary dictionary where a {key,value} string pair scheme is used.
-#define LARGEST_INT_DIGIT_COUNT 11
-
 #define NOT_A_CODE_POINT (-1)
 #define NOT_A_DISTANCE (-1)
 #define NOT_A_COORDINATE (-1)
diff --git a/native/jni/src/suggest/core/dictionary/dictionary.cpp b/native/jni/src/suggest/core/dictionary/dictionary.cpp
index e288413..fdc8936 100644
--- a/native/jni/src/suggest/core/dictionary/dictionary.cpp
+++ b/native/jni/src/suggest/core/dictionary/dictionary.cpp
@@ -88,11 +88,10 @@
     mDictionaryStructureWithBufferPolicy->addUnigramWord(word, length, unigramProperty);
 }
 
-void Dictionary::addBigramWords(const int *const word0, const int length0, const int *const word1,
-        const int length1, const int probability, const int timestamp) {
+void Dictionary::addBigramWords(const int *const word0, const int length0,
+        const BigramProperty *const bigramProperty) {
     TimeKeeper::setCurrentTime();
-    mDictionaryStructureWithBufferPolicy->addBigramWords(word0, length0, word1, length1,
-            probability, timestamp);
+    mDictionaryStructureWithBufferPolicy->addBigramWords(word0, length0, bigramProperty);
 }
 
 void Dictionary::removeBigramWords(const int *const word0, const int length0,
diff --git a/native/jni/src/suggest/core/dictionary/dictionary.h b/native/jni/src/suggest/core/dictionary/dictionary.h
index b6149b3..f0a7e5b 100644
--- a/native/jni/src/suggest/core/dictionary/dictionary.h
+++ b/native/jni/src/suggest/core/dictionary/dictionary.h
@@ -76,8 +76,8 @@
     void addUnigramWord(const int *const codePoints, const int codePointCount,
             const UnigramProperty *const unigramProperty);
 
-    void addBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1, const int probability, const int timestamp);
+    void addBigramWords(const int *const word0, const int length0,
+            const BigramProperty *const bigramProperty);
 
     void removeBigramWords(const int *const word0, const int length0, const int *const word1,
             const int length1);
diff --git a/native/jni/src/suggest/core/dictionary/property/word_property.h b/native/jni/src/suggest/core/dictionary/property/word_property.h
index 5519a91..aa3e0b6 100644
--- a/native/jni/src/suggest/core/dictionary/property/word_property.h
+++ b/native/jni/src/suggest/core/dictionary/property/word_property.h
@@ -42,6 +42,14 @@
             jintArray outProbabilityInfo, jobject outBigramTargets, jobject outBigramProbabilities,
             jobject outShortcutTargets, jobject outShortcutProbabilities) const;
 
+    const UnigramProperty *getUnigramProperty() const {
+        return &mUnigramProperty;
+    }
+
+    const std::vector<BigramProperty> *getBigramProperties() const {
+        return &mBigrams;
+    }
+
  private:
     // Default copy constructor is used for using as a return value.
     DISALLOW_ASSIGNMENT_OPERATOR(WordProperty);
diff --git a/native/jni/src/suggest/core/layout/proximity_info.cpp b/native/jni/src/suggest/core/layout/proximity_info.cpp
index c40a2bd..4c75a18 100644
--- a/native/jni/src/suggest/core/layout/proximity_info.cpp
+++ b/native/jni/src/suggest/core/layout/proximity_info.cpp
@@ -226,7 +226,7 @@
 // When the referencePointY is NOT_A_COORDINATE, this method calculates the return value without
 // using the line segment.
 int ProximityInfo::getKeyCenterYOfKeyIdG(
-        const int keyId,  const int referencePointY, const bool isGeometric) const {
+        const int keyId, const int referencePointY, const bool isGeometric) const {
     // TODO: Remove "isGeometric" and have separate "proximity_info"s for gesture and typing.
     if (keyId < 0) {
         return 0;
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state_utils.h b/native/jni/src/suggest/core/layout/proximity_info_state_utils.h
index 71e83a8..211a797 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state_utils.h
+++ b/native/jni/src/suggest/core/layout/proximity_info_state_utils.h
@@ -56,7 +56,7 @@
             const std::vector<int> *const sampledLengthCache,
             const std::vector<int> *const sampledInputIndice,
             std::vector<float> *sampledSpeedRates, std::vector<float> *sampledDirections);
-    static void refreshBeelineSpeedRates(const int mostCommonKeyWidth,  const float averageSpeed,
+    static void refreshBeelineSpeedRates(const int mostCommonKeyWidth, const float averageSpeed,
             const int inputSize, const int *const xCoordinates, const int *const yCoordinates,
             const int *times, const int sampledInputSize,
             const std::vector<int> *const sampledInputXs,
diff --git a/native/jni/src/suggest/core/policy/dictionary_header_structure_policy.h b/native/jni/src/suggest/core/policy/dictionary_header_structure_policy.h
index a8dab9f..845e629 100644
--- a/native/jni/src/suggest/core/policy/dictionary_header_structure_policy.h
+++ b/native/jni/src/suggest/core/policy/dictionary_header_structure_policy.h
@@ -49,6 +49,8 @@
 
     virtual bool shouldBoostExactMatches() const = 0;
 
+    virtual const std::vector<int> *getLocale() const = 0;
+
  protected:
     DictionaryHeaderStructurePolicy() {}
 
diff --git a/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h b/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h
index 807f9b8..ce5a49f 100644
--- a/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h
+++ b/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h
@@ -73,8 +73,8 @@
             const UnigramProperty *const unigramProperty) = 0;
 
     // Returns whether the update was success or not.
-    virtual bool addBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1, const int probability, const int timestamp) = 0;
+    virtual bool addBigramWords(const int *const word0, const int length0,
+            const BigramProperty *const bigramProperty) = 0;
 
     // Returns whether the update was success or not.
     virtual bool removeBigramWords(const int *const word0, const int length0,
diff --git a/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h b/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h
index 251a719..da24302 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h
@@ -139,6 +139,8 @@
         switch (mDictFormatVersion) {
             case FormatUtils::VERSION_2:
                 return FormatUtils::VERSION_2;
+            case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
+                return FormatUtils::VERSION_4_ONLY_FOR_TESTING;
             case FormatUtils::VERSION_4:
                 return FormatUtils::VERSION_4;
             default:
@@ -238,6 +240,10 @@
             const int unigramCount, const int bigramCount, const int extendedRegionSize,
             DictionaryHeaderStructurePolicy::AttributeMap *outAttributeMap) const;
 
+    AK_FORCE_INLINE const std::vector<int> *getLocale() const {
+        return &mLocale;
+    }
+
  private:
     DISALLOW_COPY_AND_ASSIGN(HeaderPolicy);
 
diff --git a/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.cpp
index d20accf..2a9028a 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.cpp
@@ -26,6 +26,13 @@
 
 namespace latinime {
 
+// Number of base-10 digits in the largest integer + 1 to leave room for a zero terminator.
+// As such, this is the maximum number of characters will be needed to represent an int as a
+// string, including the terminator; this is used as the size of a string buffer large enough to
+// hold any value that is intended to fit in an integer, e.g. in the code that reads the header
+// of the binary dictionary where a {key,value} string pair scheme is used.
+const int HeaderReadWriteUtils::LARGEST_INT_DIGIT_COUNT = 11;
+
 const int HeaderReadWriteUtils::MAX_ATTRIBUTE_KEY_LENGTH = 256;
 const int HeaderReadWriteUtils::MAX_ATTRIBUTE_VALUE_LENGTH = 256;
 
@@ -91,8 +98,9 @@
         case FormatUtils::VERSION_2:
             // Version 2 dictionary writing is not supported.
             return false;
+        case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
         case FormatUtils::VERSION_4:
-            return buffer->writeUintAndAdvancePosition(FormatUtils::VERSION_4 /* data */,
+            return buffer->writeUintAndAdvancePosition(version /* data */,
                     HEADER_DICTIONARY_VERSION_SIZE, writingPos);
         default:
             return false;
@@ -154,8 +162,8 @@
 /* static */ void HeaderReadWriteUtils::setIntAttributeInner(AttributeMap *const headerAttributes,
         const AttributeMap::key_type *const key, const int value) {
     AttributeMap::mapped_type valueVector;
-    char charBuf[LARGEST_INT_DIGIT_COUNT + 1];
-    snprintf(charBuf, LARGEST_INT_DIGIT_COUNT + 1, "%d", value);
+    char charBuf[LARGEST_INT_DIGIT_COUNT];
+    snprintf(charBuf, sizeof(charBuf), "%d", value);
     insertCharactersIntoVector(charBuf, &valueVector);
     (*headerAttributes)[*key] = valueVector;
 }
diff --git a/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.h b/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.h
index a6b4c4e..9b90488 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.h
@@ -92,6 +92,7 @@
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(HeaderReadWriteUtils);
 
+    static const int LARGEST_INT_DIGIT_COUNT;
     static const int MAX_ATTRIBUTE_KEY_LENGTH;
     static const int MAX_ATTRIBUTE_VALUE_LENGTH;
 
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.cpp
index be7e43b..c4d1860 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.cpp
@@ -52,9 +52,11 @@
         DictionaryStructureWithBufferPolicyFactory:: newPolicyForOnMemoryDict(
                 const int formatVersion, const std::vector<int> &locale,
                 const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap) {
-    switch (formatVersion) {
+    FormatUtils::FORMAT_VERSION dictFormatVersion = FormatUtils::getFormatVersion(formatVersion);
+    switch (dictFormatVersion) {
+        case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
         case FormatUtils::VERSION_4: {
-            HeaderPolicy headerPolicy(FormatUtils::VERSION_4, locale, attributeMap);
+            HeaderPolicy headerPolicy(dictFormatVersion, locale, attributeMap);
             Ver4DictBuffers::Ver4DictBuffersPtr dictBuffers =
                     Ver4DictBuffers::createVer4DictBuffers(&headerPolicy,
                             Ver4DictConstants::MAX_DICT_EXTENDED_REGION_SIZE);
@@ -87,11 +89,13 @@
     if (!mmappedBuffer) {
         return DictionaryStructureWithBufferPolicy::StructurePolicyPtr(nullptr);
     }
-    switch (FormatUtils::detectFormatVersion(mmappedBuffer->getBuffer(),
-            mmappedBuffer->getBufferSize())) {
+    const FormatUtils::FORMAT_VERSION formatVersion = FormatUtils::detectFormatVersion(
+            mmappedBuffer->getBuffer(), mmappedBuffer->getBufferSize());
+    switch (formatVersion) {
         case FormatUtils::VERSION_2:
             AKLOGE("Given path is a directory but the format is version 2. path: %s", path);
             break;
+        case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
         case FormatUtils::VERSION_4: {
             const int dictDirPathBufSize = strlen(headerFilePath) + 1 /* terminator */;
             char dictPath[dictDirPathBufSize];
@@ -102,7 +106,8 @@
                 return DictionaryStructureWithBufferPolicy::StructurePolicyPtr(nullptr);
             }
             Ver4DictBuffers::Ver4DictBuffersPtr dictBuffers(
-                    Ver4DictBuffers::openVer4DictBuffers(dictPath, std::move(mmappedBuffer)));
+                    Ver4DictBuffers::openVer4DictBuffers(dictPath, std::move(mmappedBuffer),
+                            formatVersion));
             if (!dictBuffers || !dictBuffers->isValid()) {
                 AKLOGE("DICT: The dictionary doesn't satisfy ver4 format requirements. path: %s",
                         path);
@@ -135,6 +140,7 @@
         case FormatUtils::VERSION_2:
             return DictionaryStructureWithBufferPolicy::StructurePolicyPtr(
                     new PatriciaTriePolicy(std::move(mmappedBuffer)));
+        case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
         case FormatUtils::VERSION_4:
             AKLOGE("Given path is a file but the format is version 4. path: %s", path);
             break;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.cpp
similarity index 96%
rename from native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.cpp
rename to native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.cpp
index 7d0d096..08b4e0b 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h"
 
 #include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
 #include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h
similarity index 100%
rename from native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h
rename to native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.cpp
index e02dd55..9e57585 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.cpp
@@ -16,6 +16,7 @@
 
 #include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h"
 
+#include "suggest/core/dictionary/property/unigram_property.h"
 #include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h"
 #include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h"
 #include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
@@ -29,9 +30,8 @@
 
 bool DynamicPtUpdatingHelper::addUnigramWord(
         DynamicPtReadingHelper *const readingHelper,
-        const int *const wordCodePoints, const int codePointCount, const int probability,
-        const bool isNotAWord, const bool isBlacklisted, const int timestamp,
-        bool *const outAddedNewUnigram) {
+        const int *const wordCodePoints, const int codePointCount,
+        const UnigramProperty *const unigramProperty, bool *const outAddedNewUnigram) {
     int parentPos = NOT_A_DICT_POS;
     while (!readingHelper->isEnd()) {
         const PtNodeParams ptNodeParams(readingHelper->getPtNodeParams());
@@ -53,20 +53,18 @@
             if (nextIndex >= codePointCount || !readingHelper->isMatchedCodePoint(ptNodeParams, j,
                     wordCodePoints[matchedCodePointCount + j])) {
                 *outAddedNewUnigram = true;
-                return reallocatePtNodeAndAddNewPtNodes(&ptNodeParams, j, isNotAWord, isBlacklisted,
-                        probability, timestamp, wordCodePoints + matchedCodePointCount,
+                return reallocatePtNodeAndAddNewPtNodes(&ptNodeParams, j, unigramProperty,
+                        wordCodePoints + matchedCodePointCount,
                         codePointCount - matchedCodePointCount);
             }
         }
         // All characters are matched.
         if (codePointCount == readingHelper->getTotalCodePointCount(ptNodeParams)) {
-            return setPtNodeProbability(&ptNodeParams, isNotAWord, isBlacklisted, probability,
-                    timestamp, outAddedNewUnigram);
+            return setPtNodeProbability(&ptNodeParams, unigramProperty, outAddedNewUnigram);
         }
         if (!ptNodeParams.hasChildren()) {
             *outAddedNewUnigram = true;
-            return createChildrenPtNodeArrayAndAChildPtNode(&ptNodeParams,
-                    isNotAWord, isBlacklisted, probability, timestamp,
+            return createChildrenPtNodeArrayAndAChildPtNode(&ptNodeParams, unigramProperty,
                     wordCodePoints + readingHelper->getTotalCodePointCount(ptNodeParams),
                     codePointCount - readingHelper->getTotalCodePointCount(ptNodeParams));
         }
@@ -83,17 +81,17 @@
     return createAndInsertNodeIntoPtNodeArray(parentPos,
             wordCodePoints + readingHelper->getPrevTotalCodePointCount(),
             codePointCount - readingHelper->getPrevTotalCodePointCount(),
-            isNotAWord, isBlacklisted, probability, timestamp, &pos);
+            unigramProperty, &pos);
 }
 
 bool DynamicPtUpdatingHelper::addBigramWords(const int word0Pos, const int word1Pos,
-        const int probability, const int timestamp, bool *const outAddedNewBigram) {
+        const BigramProperty *const bigramProperty, bool *const outAddedNewBigram) {
     const PtNodeParams sourcePtNodeParams(
             mPtNodeReader->fetchNodeInfoInBufferFromPtNodePos(word0Pos));
     const PtNodeParams targetPtNodeParams(
             mPtNodeReader->fetchNodeInfoInBufferFromPtNodePos(word1Pos));
-    return mPtNodeWriter->addNewBigramEntry(&sourcePtNodeParams, &targetPtNodeParams, probability,
-            timestamp, outAddedNewBigram);
+    return mPtNodeWriter->addNewBigramEntry(&sourcePtNodeParams, &targetPtNodeParams,
+            bigramProperty, outAddedNewBigram);
 }
 
 // Remove a bigram relation from word0Pos to word1Pos.
@@ -115,36 +113,34 @@
 
 bool DynamicPtUpdatingHelper::createAndInsertNodeIntoPtNodeArray(const int parentPos,
         const int *const nodeCodePoints, const int nodeCodePointCount,
-        const bool isNotAWord, const bool isBlacklisted, const int probability,
-        const int timestamp,  int *const forwardLinkFieldPos) {
+        const UnigramProperty *const unigramProperty, int *const forwardLinkFieldPos) {
     const int newPtNodeArrayPos = mBuffer->getTailPosition();
     if (!DynamicPtWritingUtils::writeForwardLinkPositionAndAdvancePosition(mBuffer,
             newPtNodeArrayPos, forwardLinkFieldPos)) {
         return false;
     }
     return createNewPtNodeArrayWithAChildPtNode(parentPos, nodeCodePoints, nodeCodePointCount,
-            isNotAWord, isBlacklisted, probability, timestamp);
+            unigramProperty);
 }
 
-bool DynamicPtUpdatingHelper::setPtNodeProbability(
-        const PtNodeParams *const originalPtNodeParams, const bool isNotAWord,
-        const bool isBlacklisted, const int probability, const int timestamp,
-        bool *const outAddedNewUnigram) {
+bool DynamicPtUpdatingHelper::setPtNodeProbability(const PtNodeParams *const originalPtNodeParams,
+        const UnigramProperty *const unigramProperty, bool *const outAddedNewUnigram) {
     if (originalPtNodeParams->isTerminal()) {
         // Overwrites the probability.
         *outAddedNewUnigram = false;
-        return mPtNodeWriter->updatePtNodeProbability(originalPtNodeParams, probability, timestamp);
+        return mPtNodeWriter->updatePtNodeUnigramProperty(originalPtNodeParams, unigramProperty);
     } else {
         // Make the node terminal and write the probability.
         *outAddedNewUnigram = true;
         const int movedPos = mBuffer->getTailPosition();
         int writingPos = movedPos;
         const PtNodeParams ptNodeParamsToWrite(getUpdatedPtNodeParams(originalPtNodeParams,
-                isNotAWord, isBlacklisted, true /* isTerminal */,
-                originalPtNodeParams->getParentPos(), originalPtNodeParams->getCodePointCount(),
-                originalPtNodeParams->getCodePoints(), probability));
+                unigramProperty->isNotAWord(), unigramProperty->isBlacklisted(),
+                true /* isTerminal */, originalPtNodeParams->getParentPos(),
+                originalPtNodeParams->getCodePointCount(), originalPtNodeParams->getCodePoints(),
+                unigramProperty->getProbability()));
         if (!mPtNodeWriter->writeNewTerminalPtNodeAndAdvancePosition(&ptNodeParamsToWrite,
-                timestamp, &writingPos)) {
+                unigramProperty, &writingPos)) {
             return false;
         }
         if (!mPtNodeWriter->markPtNodeAsMoved(originalPtNodeParams, movedPos, movedPos)) {
@@ -155,31 +151,30 @@
 }
 
 bool DynamicPtUpdatingHelper::createChildrenPtNodeArrayAndAChildPtNode(
-        const PtNodeParams *const parentPtNodeParams, const bool isNotAWord,
-        const bool isBlacklisted, const int probability, const int timestamp,
+        const PtNodeParams *const parentPtNodeParams, const UnigramProperty *const unigramProperty,
         const int *const codePoints, const int codePointCount) {
     const int newPtNodeArrayPos = mBuffer->getTailPosition();
     if (!mPtNodeWriter->updateChildrenPosition(parentPtNodeParams, newPtNodeArrayPos)) {
         return false;
     }
     return createNewPtNodeArrayWithAChildPtNode(parentPtNodeParams->getHeadPos(), codePoints,
-            codePointCount, isNotAWord, isBlacklisted, probability, timestamp);
+            codePointCount, unigramProperty);
 }
 
 bool DynamicPtUpdatingHelper::createNewPtNodeArrayWithAChildPtNode(
         const int parentPtNodePos, const int *const nodeCodePoints, const int nodeCodePointCount,
-        const bool isNotAWord, const bool isBlacklisted, const int probability,
-        const int timestamp) {
+        const UnigramProperty *const unigramProperty) {
     int writingPos = mBuffer->getTailPosition();
     if (!DynamicPtWritingUtils::writePtNodeArraySizeAndAdvancePosition(mBuffer,
             1 /* arraySize */, &writingPos)) {
         return false;
     }
     const PtNodeParams ptNodeParamsToWrite(getPtNodeParamsForNewPtNode(
-            isNotAWord, isBlacklisted, true /* isTerminal */,
-            parentPtNodePos, nodeCodePointCount, nodeCodePoints, probability));
-    if (!mPtNodeWriter->writeNewTerminalPtNodeAndAdvancePosition(&ptNodeParamsToWrite, timestamp,
-            &writingPos)) {
+            unigramProperty->isNotAWord(), unigramProperty->isBlacklisted(), true /* isTerminal */,
+            parentPtNodePos, nodeCodePointCount, nodeCodePoints,
+            unigramProperty->getProbability()));
+    if (!mPtNodeWriter->writeNewTerminalPtNodeAndAdvancePosition(&ptNodeParamsToWrite,
+            unigramProperty, &writingPos)) {
         return false;
     }
     if (!DynamicPtWritingUtils::writeForwardLinkPositionAndAdvancePosition(mBuffer,
@@ -192,13 +187,13 @@
 // Returns whether the dictionary updating was succeeded or not.
 bool DynamicPtUpdatingHelper::reallocatePtNodeAndAddNewPtNodes(
         const PtNodeParams *const reallocatingPtNodeParams, const int overlappingCodePointCount,
-        const bool isNotAWord, const bool isBlacklisted, const int probabilityOfNewPtNode,
-        const int timestamp, const int *const newNodeCodePoints, const int newNodeCodePointCount) {
+        const UnigramProperty *const unigramProperty, const int *const newNodeCodePoints,
+        const int newNodeCodePointCount) {
     // When addsExtraChild is true, split the reallocating PtNode and add new child.
     // Reallocating PtNode: abcde, newNode: abcxy.
     // abc (1st, not terminal) __ de (2nd)
     //                         \_ xy (extra child, terminal)
-    // Otherwise, this method makes 1st part terminal and write probabilityOfNewPtNode.
+    // Otherwise, this method makes 1st part terminal and write information in unigramProperty.
     // Reallocating PtNode: abcde, newNode: abc.
     // abc (1st, terminal) __ de (2nd)
     const bool addsExtraChild = newNodeCodePointCount > overlappingCodePointCount;
@@ -216,11 +211,12 @@
         }
     } else {
         const PtNodeParams ptNodeParamsToWrite(getPtNodeParamsForNewPtNode(
-                isNotAWord, isBlacklisted, true /* isTerminal */,
-                reallocatingPtNodeParams->getParentPos(), overlappingCodePointCount,
-                reallocatingPtNodeParams->getCodePoints(), probabilityOfNewPtNode));
+                unigramProperty->isNotAWord(), unigramProperty->isBlacklisted(),
+                true /* isTerminal */, reallocatingPtNodeParams->getParentPos(),
+                overlappingCodePointCount, reallocatingPtNodeParams->getCodePoints(),
+                unigramProperty->getProbability()));
         if (!mPtNodeWriter->writeNewTerminalPtNodeAndAdvancePosition(&ptNodeParamsToWrite,
-                timestamp, &writingPos)) {
+                unigramProperty, &writingPos)) {
             return false;
         }
     }
@@ -244,11 +240,12 @@
     }
     if (addsExtraChild) {
         const PtNodeParams extraChildPtNodeParams(getPtNodeParamsForNewPtNode(
-                isNotAWord, isBlacklisted, true /* isTerminal */,
-                firstPartOfReallocatedPtNodePos, newNodeCodePointCount - overlappingCodePointCount,
-                newNodeCodePoints + overlappingCodePointCount, probabilityOfNewPtNode));
+                unigramProperty->isNotAWord(), unigramProperty->isBlacklisted(),
+                true /* isTerminal */, firstPartOfReallocatedPtNodePos,
+                newNodeCodePointCount - overlappingCodePointCount,
+                newNodeCodePoints + overlappingCodePointCount, unigramProperty->getProbability()));
         if (!mPtNodeWriter->writeNewTerminalPtNodeAndAdvancePosition(&extraChildPtNodeParams,
-                timestamp, &writingPos)) {
+                unigramProperty, &writingPos)) {
             return false;
         }
     }
@@ -269,8 +266,8 @@
 }
 
 const PtNodeParams DynamicPtUpdatingHelper::getUpdatedPtNodeParams(
-        const PtNodeParams *const originalPtNodeParams, const bool isNotAWord,
-        const bool isBlacklisted, const bool isTerminal, const int parentPos,
+        const PtNodeParams *const originalPtNodeParams,
+        const bool isNotAWord, const bool isBlacklisted, const bool isTerminal, const int parentPos,
         const int codePointCount, const int *const codePoints, const int probability) const {
     const PatriciaTrieReadingUtils::NodeFlags flags = PatriciaTrieReadingUtils::createAndGetFlags(
             isBlacklisted, isNotAWord, isTerminal, originalPtNodeParams->hasShortcutTargets(),
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h
index 9b28152..f10d15a 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h
@@ -22,10 +22,12 @@
 
 namespace latinime {
 
+class BigramProperty;
 class BufferWithExtendableBuffer;
 class DynamicPtReadingHelper;
 class PtNodeReader;
 class PtNodeWriter;
+class UnigramProperty;
 
 class DynamicPtUpdatingHelper {
  public:
@@ -37,13 +39,12 @@
 
     // Add a word to the dictionary. If the word already exists, update the probability.
     bool addUnigramWord(DynamicPtReadingHelper *const readingHelper,
-            const int *const wordCodePoints, const int codePointCount, const int probability,
-            const bool isNotAWord, const bool isBlacklisted, const int timestamp,
-            bool *const outAddedNewUnigram);
+            const int *const wordCodePoints, const int codePointCount,
+            const UnigramProperty *const unigramProperty, bool *const outAddedNewUnigram);
 
     // Add a bigram relation from word0Pos to word1Pos.
-    bool addBigramWords(const int word0Pos, const int word1Pos, const int probability,
-            const int timestamp, bool *const outAddedNewBigram);
+    bool addBigramWords(const int word0Pos, const int word1Pos,
+            const BigramProperty *const bigramProperty, bool *const outAddedNewBigram);
 
     // Remove a bigram relation from word0Pos to word1Pos.
     bool removeBigramWords(const int word0Pos, const int word1Pos);
@@ -62,25 +63,22 @@
     PtNodeWriter *const mPtNodeWriter;
 
     bool createAndInsertNodeIntoPtNodeArray(const int parentPos, const int *const nodeCodePoints,
-            const int nodeCodePointCount, const bool isNotAWord, const bool isBlacklisted,
-            const int probability, const int timestamp, int *const forwardLinkFieldPos);
+            const int nodeCodePointCount, const UnigramProperty *const unigramProperty,
+            int *const forwardLinkFieldPos);
 
-    bool setPtNodeProbability(const PtNodeParams *const originalPtNodeParams, const bool isNotAWord,
-            const bool isBlacklisted, const int probability, const int timestamp,
-            bool *const outAddedNewUnigram);
+    bool setPtNodeProbability(const PtNodeParams *const originalPtNodeParams,
+            const UnigramProperty *const unigramProperty, bool *const outAddedNewUnigram);
 
     bool createChildrenPtNodeArrayAndAChildPtNode(const PtNodeParams *const parentPtNodeParams,
-            const bool isNotAWord, const bool isBlacklisted, const int probability,
-            const int timestamp, const int *const codePoints, const int codePointCount);
+            const UnigramProperty *const unigramProperty, const int *const codePoints,
+            const int codePointCount);
 
     bool createNewPtNodeArrayWithAChildPtNode(const int parentPos, const int *const nodeCodePoints,
-            const int nodeCodePointCount, const bool isNotAWord, const bool isBlacklisted,
-            const int probability, const int timestamp);
+            const int nodeCodePointCount, const UnigramProperty *const unigramProperty);
 
     bool reallocatePtNodeAndAddNewPtNodes(
             const PtNodeParams *const reallocatingPtNodeParams, const int overlappingCodePointCount,
-            const bool isNotAWord, const bool isBlacklisted, const int probabilityOfNewPtNode,
-            const int timestamp, const int *const newNodeCodePoints,
+            const UnigramProperty *const unigramProperty, const int *const newNodeCodePoints,
             const int newNodeCodePointCount);
 
     const PtNodeParams getUpdatedPtNodeParams(const PtNodeParams *const originalPtNodeParams,
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h
index e843f07..a8029f7 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h
@@ -24,6 +24,9 @@
 
 namespace latinime {
 
+class BigramProperty;
+class UnigramProperty;
+
 // Interface class used to write PtNode information.
 class PtNodeWriter {
  public:
@@ -51,8 +54,8 @@
     virtual bool markPtNodeAsWillBecomeNonTerminal(
             const PtNodeParams *const toBeUpdatedPtNodeParams) = 0;
 
-    virtual bool updatePtNodeProbability(const PtNodeParams *const toBeUpdatedPtNodeParams,
-            const int probability, const int timestamp) = 0;
+    virtual bool updatePtNodeUnigramProperty(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const UnigramProperty *const unigramProperty) = 0;
 
     virtual bool updatePtNodeProbabilityAndGetNeedsToKeepPtNodeAfterGC(
             const PtNodeParams *const toBeUpdatedPtNodeParams,
@@ -65,10 +68,10 @@
             int *const ptNodeWritingPos) = 0;
 
     virtual bool writeNewTerminalPtNodeAndAdvancePosition(const PtNodeParams *const ptNodeParams,
-            const int timestamp, int *const ptNodeWritingPos) = 0;
+            const UnigramProperty *const unigramProperty, int *const ptNodeWritingPos) = 0;
 
     virtual bool addNewBigramEntry(const PtNodeParams *const sourcePtNodeParams,
-            const PtNodeParams *const targetPtNodeParam, const int probability, const int timestamp,
+            const PtNodeParams *const targetPtNodeParam, const BigramProperty *const bigramProperty,
             bool *const outAddedNewBigram) = 0;
 
     virtual bool removeBigramEntry(const PtNodeParams *const sourcePtNodeParams,
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.cpp
similarity index 90%
rename from native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.cpp
rename to native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.cpp
index 847dcde..91c7694 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h"
 
 #include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
 
@@ -44,7 +44,7 @@
 }
 
 /* static */ int ShortcutListReadingUtils::readShortcutTarget(
-        const uint8_t *const dictRoot, const int maxLength,  int *const outWord, int *const pos) {
+        const uint8_t *const dictRoot, const int maxLength, int *const outWord, int *const pos) {
     return ByteArrayUtils::readStringAndAdvancePosition(dictRoot, maxLength, outWord, pos);
 }
 
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h
similarity index 100%
rename from native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h
rename to native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/bigram/bigram_list_policy.h
similarity index 94%
rename from native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_policy.h
rename to native/jni/src/suggest/policyimpl/dictionary/structure/v2/bigram/bigram_list_policy.h
index a898e2a..00bb502 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/bigram/bigram_list_policy.h
@@ -21,7 +21,7 @@
 
 #include "defines.h"
 #include "suggest/core/policy/dictionary_bigrams_structure_policy.h"
-#include "suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h"
 
 namespace latinime {
 
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h
index 85f4660..54d1e0f 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h
@@ -22,9 +22,9 @@
 
 #include "defines.h"
 #include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
-#include "suggest/policyimpl/dictionary/bigram/bigram_list_policy.h"
 #include "suggest/policyimpl/dictionary/header/header_policy.h"
-#include "suggest/policyimpl/dictionary/shortcut/shortcut_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v2/bigram/bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v2/shortcut/shortcut_list_policy.h"
 #include "suggest/policyimpl/dictionary/structure/v2/ver2_patricia_trie_node_reader.h"
 #include "suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.h"
 #include "suggest/policyimpl/dictionary/utils/format_utils.h"
@@ -88,8 +88,8 @@
         return false;
     }
 
-    bool addBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1, const int probability, const int timestamp) {
+    bool addBigramWords(const int *const word0, const int length0,
+            const BigramProperty *const bigramProperty) {
         // This method should not be called for non-updatable dictionary.
         AKLOGI("Warning: addBigramWords() is called for non-updatable dictionary.");
         return false;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/shortcut/shortcut_list_policy.h
similarity index 95%
rename from native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_policy.h
rename to native/jni/src/suggest/policyimpl/dictionary/structure/v2/shortcut/shortcut_list_policy.h
index 6d2b477..8e16ccc 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/shortcut/shortcut_list_policy.h
@@ -21,7 +21,7 @@
 
 #include "defines.h"
 #include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
-#include "suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h"
 
 namespace latinime {
 
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/ver4_bigram_list_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.cpp
similarity index 67%
rename from native/jni/src/suggest/policyimpl/dictionary/bigram/ver4_bigram_list_policy.cpp
rename to native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.cpp
index 5df2096..7a52fd1 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/bigram/ver4_bigram_list_policy.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.cpp
@@ -14,10 +14,11 @@
  * limitations under the License.
  */
 
-#include "suggest/policyimpl/dictionary/bigram/ver4_bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h"
 
-#include "suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h"
+#include "suggest/core/dictionary/property/bigram_property.h"
 #include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h"
 #include "suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h"
 #include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
 #include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
@@ -49,13 +50,18 @@
 }
 
 bool Ver4BigramListPolicy::addNewEntry(const int terminalId, const int newTargetTerminalId,
-        const int newProbability, const int timestamp, bool *const outAddedNewEntry) {
+        const BigramProperty *const bigramProperty, bool *const outAddedNewEntry) {
+    // 1. The word has no bigrams yet.
+    // 2. The word has bigrams, and there is the target in the list.
+    // 3. The word has bigrams, and there is an invalid entry that can be reclaimed.
+    // 4. The word has bigrams. We have to append new bigram entry to the list.
+    // 5. Same as 4, but the list is the last entry of the content file.
     if (outAddedNewEntry) {
         *outAddedNewEntry = false;
     }
     const int bigramListPos = mBigramDictContent->getBigramListHeadPos(terminalId);
     if (bigramListPos == NOT_A_DICT_POS) {
-        // Updating PtNode doesn't have a bigram list.
+        // Case 1. PtNode that doesn't have a bigram list.
         // Create new bigram list.
         if (!mBigramDictContent->createNewBigramList(terminalId)) {
             return false;
@@ -63,7 +69,7 @@
         const BigramEntry newBigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
                 newTargetTerminalId);
         const BigramEntry bigramEntryToWrite = createUpdatedBigramEntryFrom(&newBigramEntry,
-                newProbability, timestamp);
+                bigramProperty);
         // Write an entry.
         const int writingPos =  mBigramDictContent->getBigramListHeadPos(terminalId);
         if (!mBigramDictContent->writeBigramEntry(&bigramEntryToWrite, writingPos)) {
@@ -75,42 +81,55 @@
         return true;
     }
 
-    const int entryPosToUpdate = getEntryPosToUpdate(newTargetTerminalId, bigramListPos);
-    if (entryPosToUpdate != NOT_A_DICT_POS) {
-        // Overwrite existing entry.
-        const BigramEntry originalBigramEntry =
-                mBigramDictContent->getBigramEntry(entryPosToUpdate);
-        if (!originalBigramEntry.isValid()) {
-            // Reuse invalid entry.
-            if (outAddedNewEntry) {
-                *outAddedNewEntry = true;
+    int tailEntryPos = NOT_A_DICT_POS;
+    const int entryPosToUpdate = getEntryPosToUpdate(newTargetTerminalId, bigramListPos,
+            &tailEntryPos);
+    if (tailEntryPos != NOT_A_DICT_POS || entryPosToUpdate == NOT_A_DICT_POS) {
+        // Case 4, 5.
+        // Add new entry to the bigram list.
+        if (tailEntryPos == NOT_A_DICT_POS) {
+            // Case 4. Create new bigram list.
+            if (!mBigramDictContent->createNewBigramList(terminalId)) {
+                return false;
+            }
+            const int destPos = mBigramDictContent->getBigramListHeadPos(terminalId);
+            // Copy existing bigram list.
+            if (!mBigramDictContent->copyBigramList(bigramListPos, destPos, &tailEntryPos)) {
+                return false;
             }
         }
-        const BigramEntry updatedBigramEntry =
-                originalBigramEntry.updateTargetTerminalIdAndGetEntry(newTargetTerminalId);
+        // Write new entry at the tail position of the bigram content.
+        const BigramEntry newBigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
+                newTargetTerminalId);
         const BigramEntry bigramEntryToWrite = createUpdatedBigramEntryFrom(
-                &updatedBigramEntry, newProbability, timestamp);
-        return mBigramDictContent->writeBigramEntry(&bigramEntryToWrite, entryPosToUpdate);
+                &newBigramEntry, bigramProperty);
+        if (!mBigramDictContent->writeBigramEntryAtTail(&bigramEntryToWrite)) {
+            return false;
+        }
+        // Update has next flag of the tail entry.
+        if (!updateHasNextFlag(true /* hasNext */, tailEntryPos)) {
+            return false;
+        }
+        if (outAddedNewEntry) {
+            *outAddedNewEntry = true;
+        }
+        return true;
     }
 
-    // Add new entry to the bigram list.
-    // Create new bigram list.
-    if (!mBigramDictContent->createNewBigramList(terminalId)) {
-        return false;
+    // Case 2. Overwrite the existing entry. Case 3. Reclaim and reuse the existing invalid entry.
+    const BigramEntry originalBigramEntry = mBigramDictContent->getBigramEntry(entryPosToUpdate);
+    if (!originalBigramEntry.isValid()) {
+        // Case 3. Reuse the existing invalid entry. outAddedNewEntry is false when an existing
+        // entry is updated.
+        if (outAddedNewEntry) {
+            *outAddedNewEntry = true;
+        }
     }
-    // Write new entry at a head position of the bigram list.
-    int writingPos = mBigramDictContent->getBigramListHeadPos(terminalId);
-    const BigramEntry newBigramEntry(true /* hasNext */, NOT_A_PROBABILITY, newTargetTerminalId);
+    const BigramEntry updatedBigramEntry =
+            originalBigramEntry.updateTargetTerminalIdAndGetEntry(newTargetTerminalId);
     const BigramEntry bigramEntryToWrite = createUpdatedBigramEntryFrom(
-            &newBigramEntry, newProbability, timestamp);
-    if (!mBigramDictContent->writeBigramEntryAndAdvancePosition(&bigramEntryToWrite, &writingPos)) {
-        return false;
-    }
-    if (outAddedNewEntry) {
-        *outAddedNewEntry = true;
-    }
-    // Append existing entries by copying.
-    return mBigramDictContent->copyBigramList(bigramListPos, writingPos);
+            &updatedBigramEntry, bigramProperty);
+    return mBigramDictContent->writeBigramEntry(&bigramEntryToWrite, entryPosToUpdate);
 }
 
 bool Ver4BigramListPolicy::removeEntry(const int terminalId, const int targetTerminalId) {
@@ -119,7 +138,8 @@
         // Bigram list doesn't exist.
         return false;
     }
-    const int entryPosToUpdate = getEntryPosToUpdate(targetTerminalId, bigramListPos);
+    const int entryPosToUpdate = getEntryPosToUpdate(targetTerminalId, bigramListPos,
+            nullptr /* outTailEntryPos */);
     if (entryPosToUpdate == NOT_A_DICT_POS) {
         // Bigram entry doesn't exist.
         return false;
@@ -204,7 +224,10 @@
 }
 
 int Ver4BigramListPolicy::getEntryPosToUpdate(const int targetTerminalIdToFind,
-        const int bigramListPos) const {
+        const int bigramListPos, int *const outTailEntryPos) const {
+    if (outTailEntryPos) {
+        *outTailEntryPos = NOT_A_DICT_POS;
+    }
     bool hasNext = true;
     int invalidEntryPos = NOT_A_DICT_POS;
     int readingPos = bigramListPos;
@@ -220,23 +243,36 @@
             // Invalid entry that can be reused is found.
             invalidEntryPos = entryPos;
         }
+        if (!hasNext && mBigramDictContent->isContentTailPos(readingPos)) {
+            if (outTailEntryPos) {
+                *outTailEntryPos = entryPos;
+            }
+        }
     }
     return invalidEntryPos;
 }
 
 const BigramEntry Ver4BigramListPolicy::createUpdatedBigramEntryFrom(
-        const BigramEntry *const originalBigramEntry, const int newProbability,
-        const int timestamp) const {
+        const BigramEntry *const originalBigramEntry,
+        const BigramProperty *const bigramProperty) const {
     // TODO: Consolidate historical info and probability.
     if (mHeaderPolicy->hasHistoricalInfoOfWords()) {
+        const HistoricalInfo historicalInfoForUpdate(bigramProperty->getTimestamp(),
+                bigramProperty->getLevel(), bigramProperty->getCount());
         const HistoricalInfo updatedHistoricalInfo =
                 ForgettingCurveUtils::createUpdatedHistoricalInfo(
-                        originalBigramEntry->getHistoricalInfo(), newProbability, timestamp,
-                        mHeaderPolicy);
+                        originalBigramEntry->getHistoricalInfo(), bigramProperty->getProbability(),
+                        &historicalInfoForUpdate, mHeaderPolicy);
         return originalBigramEntry->updateHistoricalInfoAndGetEntry(&updatedHistoricalInfo);
     } else {
-        return originalBigramEntry->updateProbabilityAndGetEntry(newProbability);
+        return originalBigramEntry->updateProbabilityAndGetEntry(bigramProperty->getProbability());
     }
 }
 
+bool Ver4BigramListPolicy::updateHasNextFlag(const bool hasNext, const int bigramEntryPos) {
+    const BigramEntry bigramEntry = mBigramDictContent->getBigramEntry(bigramEntryPos);
+    const BigramEntry updatedBigramEntry = bigramEntry.updateHasNextAndGetEntry(hasNext);
+    return mBigramDictContent->writeBigramEntry(&updatedBigramEntry, bigramEntryPos);
+}
+
 } // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/ver4_bigram_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h
similarity index 88%
rename from native/jni/src/suggest/policyimpl/dictionary/bigram/ver4_bigram_list_policy.h
rename to native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h
index 5b6c5a1..1613941 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/bigram/ver4_bigram_list_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h
@@ -24,6 +24,7 @@
 namespace latinime {
 
 class BigramDictContent;
+class BigramProperty;
 class HeaderPolicy;
 class TerminalPositionLookupTable;
 
@@ -43,8 +44,8 @@
         // Do nothing because we don't need to skip bigram lists in ver4 dictionaries.
     }
 
-    bool addNewEntry(const int terminalId, const int newTargetTerminalId, const int newProbability,
-            const int timestamp, bool *const outAddedNewEntry);
+    bool addNewEntry(const int terminalId, const int newTargetTerminalId,
+            const BigramProperty *const bigramProperty, bool *const outAddedNewEntry);
 
     bool removeEntry(const int terminalId, const int targetTerminalId);
 
@@ -56,10 +57,13 @@
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4BigramListPolicy);
 
-    int getEntryPosToUpdate(const int targetTerminalIdToFind, const int bigramListPos) const;
+    int getEntryPosToUpdate(const int targetTerminalIdToFind, const int bigramListPos,
+            int *const outTailEntryPos) const;
 
     const BigramEntry createUpdatedBigramEntryFrom(const BigramEntry *const originalBigramEntry,
-            const int newProbability, const int timestamp) const;
+            const BigramProperty *const bigramProperty) const;
+
+    bool updateHasNextFlag(const bool hasNext, const int bigramEntryPos);
 
     BigramDictContent *const mBigramDictContent;
     const TerminalPositionLookupTable *const mTerminalPositionLookupTable;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.cpp
index 279f5b3..56f19db 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.cpp
@@ -113,13 +113,17 @@
     return true;
 }
 
-bool BigramDictContent::copyBigramList(const int bigramListPos, const int toPos) {
+bool BigramDictContent::copyBigramList(const int bigramListPos, const int toPos,
+        int *const outTailEntryPos) {
     int readingPos = bigramListPos;
     int writingPos = toPos;
     bool hasNext = true;
     while (hasNext) {
         const BigramEntry bigramEntry = getBigramEntryAndAdvancePosition(&readingPos);
         hasNext = bigramEntry.hasNext();
+        if (!hasNext) {
+            *outTailEntryPos = writingPos;
+        }
         if (!writeBigramEntryAndAdvancePosition(&bigramEntry, &writingPos)) {
             AKLOGE("Cannot write bigram entry to copy. pos: %d", writingPos);
             return false;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h
index ba2a052..944e0f9 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h
@@ -58,6 +58,11 @@
         return addressLookupTable->get(terminalId);
     }
 
+    bool writeBigramEntryAtTail(const BigramEntry *const bigramEntryToWrite) {
+        int writingPos = getContentBuffer()->getTailPosition();
+        return writeBigramEntryAndAdvancePosition(bigramEntryToWrite, &writingPos);
+    }
+
     bool writeBigramEntry(const BigramEntry *const bigramEntryToWrite, const int entryWritingPos) {
         int writingPos = entryWritingPos;
         return writeBigramEntryAndAdvancePosition(bigramEntryToWrite, &writingPos);
@@ -71,7 +76,7 @@
         return getUpdatableAddressLookupTable()->set(terminalId, bigramListPos);
     }
 
-    bool copyBigramList(const int bigramListPos, const int toPos);
+    bool copyBigramList(const int bigramListPos, const int toPos, int *const outTailEntryPos);
 
     bool flushToFile(const char *const dictPath) const {
         return flush(dictPath, Ver4DictConstants::BIGRAM_LOOKUP_TABLE_FILE_EXTENSION,
@@ -83,6 +88,10 @@
             const BigramDictContent *const originalBigramDictContent,
             int *const outBigramEntryCount);
 
+    bool isContentTailPos(const int pos) const {
+        return pos == getContentBuffer()->getTailPosition();
+    }
+
  private:
     DISALLOW_COPY_AND_ASSIGN(BigramDictContent);
 
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/ver4_shortcut_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h
similarity index 97%
rename from native/jni/src/suggest/policyimpl/dictionary/shortcut/ver4_shortcut_list_policy.h
rename to native/jni/src/suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h
index fe98461..7902735 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/shortcut/ver4_shortcut_list_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h
@@ -19,7 +19,7 @@
 
 #include "defines.h"
 #include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
-#include "suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h"
 #include "suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.h"
 #include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
 
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.cpp
index 95f6544..77ed38b 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.cpp
@@ -27,7 +27,8 @@
 namespace latinime {
 
 /* static */ Ver4DictBuffers::Ver4DictBuffersPtr Ver4DictBuffers::openVer4DictBuffers(
-        const char *const dictPath, MmappedBuffer::MmappedBufferPtr headerBuffer) {
+        const char *const dictPath, MmappedBuffer::MmappedBufferPtr headerBuffer,
+        const FormatUtils::FORMAT_VERSION formatVersion) {
     if (!headerBuffer) {
         ASSERT(false);
         AKLOGE("The header buffer must be valid to open ver4 dict buffers.");
@@ -35,7 +36,8 @@
     }
     // TODO: take only dictDirPath, and open both header and trie files in the constructor below
     const bool isUpdatable = headerBuffer->isUpdatable();
-    return Ver4DictBuffersPtr(new Ver4DictBuffers(dictPath, std::move(headerBuffer), isUpdatable));
+    return Ver4DictBuffersPtr(new Ver4DictBuffers(dictPath, std::move(headerBuffer), isUpdatable,
+            formatVersion));
 }
 
 bool Ver4DictBuffers::flushHeaderAndDictBuffers(const char *const dictDirPath,
@@ -113,11 +115,12 @@
 }
 
 Ver4DictBuffers::Ver4DictBuffers(const char *const dictPath,
-        MmappedBuffer::MmappedBufferPtr headerBuffer, const bool isUpdatable)
+        MmappedBuffer::MmappedBufferPtr headerBuffer, const bool isUpdatable,
+        const FormatUtils::FORMAT_VERSION formatVersion)
         : mHeaderBuffer(std::move(headerBuffer)),
           mDictBuffer(MmappedBuffer::openBuffer(dictPath,
                   Ver4DictConstants::TRIE_FILE_EXTENSION, isUpdatable)),
-          mHeaderPolicy(mHeaderBuffer->getBuffer(), FormatUtils::VERSION_4),
+          mHeaderPolicy(mHeaderBuffer->getBuffer(), formatVersion),
           mExpandableHeaderBuffer(mHeaderBuffer ? mHeaderBuffer->getBuffer() : nullptr,
                   mHeaderPolicy.getSize(),
                   BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h
index fc41432..df177c1 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h
@@ -36,7 +36,8 @@
     typedef std::unique_ptr<Ver4DictBuffers> Ver4DictBuffersPtr;
 
     static Ver4DictBuffersPtr openVer4DictBuffers(const char *const dictDirPath,
-            MmappedBuffer::MmappedBufferPtr headerBuffer);
+            MmappedBuffer::MmappedBufferPtr headerBuffer,
+            const FormatUtils::FORMAT_VERSION formatVersion);
 
     static AK_FORCE_INLINE Ver4DictBuffersPtr createVer4DictBuffers(
             const HeaderPolicy *const headerPolicy, const int maxTrieSize) {
@@ -120,7 +121,8 @@
     DISALLOW_COPY_AND_ASSIGN(Ver4DictBuffers);
 
     Ver4DictBuffers(const char *const dictDirPath,
-            const MmappedBuffer::MmappedBufferPtr headerBuffer, const bool isUpdatable);
+            const MmappedBuffer::MmappedBufferPtr headerBuffer, const bool isUpdatable,
+            const FormatUtils::FORMAT_VERSION formatVersion);
 
     Ver4DictBuffers(const HeaderPolicy *const headerPolicy, const int maxTrieSize);
 
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.cpp
index 67420a2..0a435e9 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.cpp
@@ -95,4 +95,4 @@
     }
 }
 
-}
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp
index 38ff42f..f89d3d7 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp
@@ -16,13 +16,14 @@
 
 #include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h"
 
-#include "suggest/policyimpl/dictionary/bigram/ver4_bigram_list_policy.h"
+#include "suggest/core/dictionary/property/unigram_property.h"
 #include "suggest/policyimpl/dictionary/header/header_policy.h"
-#include "suggest/policyimpl/dictionary/shortcut/ver4_shortcut_list_policy.h"
 #include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h"
 #include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h"
 #include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h"
 #include "suggest/policyimpl/dictionary/structure/v4/content/probability_entry.h"
+#include "suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h"
 #include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h"
 #include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h"
 #include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
@@ -75,7 +76,7 @@
             PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
     const PatriciaTrieReadingUtils::NodeFlags updatedFlags =
             DynamicPtReadingUtils::updateAndGetFlags(originalFlags, true /* isMoved */,
-                    false /* isDeleted */,  false /* willBecomeNonTerminal */);
+                    false /* isDeleted */, false /* willBecomeNonTerminal */);
     int writingPos = toBeUpdatedPtNodeParams->getHeadPos();
     // Update flags.
     if (!DynamicPtWritingUtils::writeFlagsAndAdvancePosition(mTrieBuffer, updatedFlags,
@@ -133,9 +134,11 @@
             &writingPos);
 }
 
-bool Ver4PatriciaTrieNodeWriter::updatePtNodeProbability(
-        const PtNodeParams *const toBeUpdatedPtNodeParams, const int newProbability,
-        const int timestamp) {
+bool Ver4PatriciaTrieNodeWriter::updatePtNodeUnigramProperty(
+        const PtNodeParams *const toBeUpdatedPtNodeParams,
+        const UnigramProperty *const unigramProperty) {
+    // Update probability and historical information.
+    // TODO: Update other information in the unigram property.
     if (!toBeUpdatedPtNodeParams->isTerminal()) {
         return false;
     }
@@ -143,7 +146,7 @@
             mBuffers->getProbabilityDictContent()->getProbabilityEntry(
                     toBeUpdatedPtNodeParams->getTerminalId());
     const ProbabilityEntry probabilityEntry = createUpdatedEntryFrom(&originalProbabilityEntry,
-            newProbability, timestamp);
+            unigramProperty);
     return mBuffers->getMutableProbabilityDictContent()->setProbabilityEntry(
             toBeUpdatedPtNodeParams->getTerminalId(), &probabilityEntry);
 }
@@ -204,7 +207,8 @@
 
 
 bool Ver4PatriciaTrieNodeWriter::writeNewTerminalPtNodeAndAdvancePosition(
-        const PtNodeParams *const ptNodeParams, const int timestamp, int *const ptNodeWritingPos) {
+        const PtNodeParams *const ptNodeParams, const UnigramProperty *const unigramProperty,
+        int *const ptNodeWritingPos) {
     int terminalId = Ver4DictConstants::NOT_A_TERMINAL_ID;
     if (!writePtNodeAndGetTerminalIdAndAdvancePosition(ptNodeParams, &terminalId,
             ptNodeWritingPos)) {
@@ -213,17 +217,16 @@
     // Write probability.
     ProbabilityEntry newProbabilityEntry;
     const ProbabilityEntry probabilityEntryToWrite = createUpdatedEntryFrom(
-            &newProbabilityEntry, ptNodeParams->getProbability(), timestamp);
+            &newProbabilityEntry, unigramProperty);
     return mBuffers->getMutableProbabilityDictContent()->setProbabilityEntry(terminalId,
             &probabilityEntryToWrite);
 }
 
 bool Ver4PatriciaTrieNodeWriter::addNewBigramEntry(
-        const PtNodeParams *const sourcePtNodeParams,
-        const PtNodeParams *const targetPtNodeParam, const int probability, const int timestamp,
-        bool *const outAddedNewBigram) {
+        const PtNodeParams *const sourcePtNodeParams, const PtNodeParams *const targetPtNodeParam,
+        const BigramProperty *const bigramProperty, bool *const outAddedNewBigram) {
     if (!mBigramPolicy->addNewEntry(sourcePtNodeParams->getTerminalId(),
-            targetPtNodeParam->getTerminalId(), probability, timestamp, outAddedNewBigram)) {
+            targetPtNodeParam->getTerminalId(), bigramProperty, outAddedNewBigram)) {
         AKLOGE("Cannot add new bigram entry. terminalId: %d, targetTerminalId: %d",
                 sourcePtNodeParams->getTerminalId(), targetPtNodeParam->getTerminalId());
         return false;
@@ -379,18 +382,21 @@
 }
 
 const ProbabilityEntry Ver4PatriciaTrieNodeWriter::createUpdatedEntryFrom(
-        const ProbabilityEntry *const originalProbabilityEntry, const int newProbability,
-        const int timestamp) const {
+        const ProbabilityEntry *const originalProbabilityEntry,
+        const UnigramProperty *const unigramProperty) const {
     // TODO: Consolidate historical info and probability.
     if (mHeaderPolicy->hasHistoricalInfoOfWords()) {
+        const HistoricalInfo historicalInfoForUpdate(unigramProperty->getTimestamp(),
+                unigramProperty->getLevel(), unigramProperty->getCount());
         const HistoricalInfo updatedHistoricalInfo =
                 ForgettingCurveUtils::createUpdatedHistoricalInfo(
-                        originalProbabilityEntry->getHistoricalInfo(), newProbability, timestamp,
-                        mHeaderPolicy);
+                        originalProbabilityEntry->getHistoricalInfo(),
+                        unigramProperty->getProbability(), &historicalInfoForUpdate, mHeaderPolicy);
         return originalProbabilityEntry->createEntryWithUpdatedHistoricalInfo(
                 &updatedHistoricalInfo);
     } else {
-        return originalProbabilityEntry->createEntryWithUpdatedProbability(newProbability);
+        return originalProbabilityEntry->createEntryWithUpdatedProbability(
+                unigramProperty->getProbability());
     }
 }
 
@@ -409,4 +415,4 @@
     return true;
 }
 
-}
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h
index b2b0504..e90bc44 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h
@@ -57,8 +57,8 @@
     virtual bool markPtNodeAsWillBecomeNonTerminal(
             const PtNodeParams *const toBeUpdatedPtNodeParams);
 
-    virtual bool updatePtNodeProbability(const PtNodeParams *const toBeUpdatedPtNodeParams,
-            const int newProbability, const int timestamp);
+    virtual bool updatePtNodeUnigramProperty(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const UnigramProperty *const unigramProperty);
 
     virtual bool updatePtNodeProbabilityAndGetNeedsToKeepPtNodeAfterGC(
             const PtNodeParams *const toBeUpdatedPtNodeParams, bool *const outNeedsToKeepPtNode);
@@ -73,10 +73,10 @@
             int *const ptNodeWritingPos);
 
     virtual bool writeNewTerminalPtNodeAndAdvancePosition(const PtNodeParams *const ptNodeParams,
-            const int timestamp, int *const ptNodeWritingPos);
+            const UnigramProperty *const unigramProperty, int *const ptNodeWritingPos);
 
     virtual bool addNewBigramEntry(const PtNodeParams *const sourcePtNodeParams,
-            const PtNodeParams *const targetPtNodeParam, const int probability, const int timestamp,
+            const PtNodeParams *const targetPtNodeParam, const BigramProperty *const bigramProperty,
             bool *const outAddedNewBigram);
 
     virtual bool removeBigramEntry(const PtNodeParams *const sourcePtNodeParams,
@@ -102,11 +102,12 @@
             const PtNodeParams *const ptNodeParams, int *const outTerminalId,
             int *const ptNodeWritingPos);
 
-    // Create updated probability entry using given probability and timestamp. In addition to the
+    // Create updated probability entry using given unigram property. In addition to the
     // probability, this method updates historical information if needed.
+    // TODO: Update flags belonging to the unigram property.
     const ProbabilityEntry createUpdatedEntryFrom(
-            const ProbabilityEntry *const originalProbabilityEntry, const int newProbability,
-            const int timestamp) const;
+            const ProbabilityEntry *const originalProbabilityEntry,
+            const UnigramProperty *const unigramProperty) const;
 
     bool updatePtNodeFlags(const int ptNodePos, const bool isBlacklisted, const bool isNotAWord,
             const bool isTerminal, const bool hasShortcutTargets, const bool hasBigrams,
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
index f8587f5..8373dc5 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
@@ -183,9 +183,7 @@
     readingHelper.initWithPtNodeArrayPos(getRootPosition());
     bool addedNewUnigram = false;
     if (mUpdatingHelper.addUnigramWord(&readingHelper, word, length,
-            unigramProperty->getProbability(), unigramProperty->isNotAWord(),
-            unigramProperty->isBlacklisted(), unigramProperty->getTimestamp(),
-            &addedNewUnigram)) {
+            unigramProperty, &addedNewUnigram)) {
         if (addedNewUnigram) {
             mUnigramCount++;
         }
@@ -215,8 +213,7 @@
 }
 
 bool Ver4PatriciaTriePolicy::addBigramWords(const int *const word0, const int length0,
-        const int *const word1, const int length1, const int probability,
-        const int timestamp) {
+        const BigramProperty *const bigramProperty) {
     if (!mBuffers->isUpdatable()) {
         AKLOGI("Warning: addBigramWords() is called for non-updatable dictionary.");
         return false;
@@ -226,9 +223,10 @@
                 mDictBuffer->getTailPosition());
         return false;
     }
-    if (length0 > MAX_WORD_LENGTH || length1 > MAX_WORD_LENGTH) {
+    if (length0 > MAX_WORD_LENGTH
+            || bigramProperty->getTargetCodePoints()->size() > MAX_WORD_LENGTH) {
         AKLOGE("Either src word or target word is too long to insert the bigram to the dictionary. "
-                "length0: %d, length1: %d", length0, length1);
+                "length0: %d, length1: %d", length0, bigramProperty->getTargetCodePoints()->size());
         return false;
     }
     const int word0Pos = getTerminalPtNodePositionOfWord(word0, length0,
@@ -236,14 +234,14 @@
     if (word0Pos == NOT_A_DICT_POS) {
         return false;
     }
-    const int word1Pos = getTerminalPtNodePositionOfWord(word1, length1,
-            false /* forceLowerCaseSearch */);
+    const int word1Pos = getTerminalPtNodePositionOfWord(
+            bigramProperty->getTargetCodePoints()->data(),
+            bigramProperty->getTargetCodePoints()->size(), false /* forceLowerCaseSearch */);
     if (word1Pos == NOT_A_DICT_POS) {
         return false;
     }
     bool addedNewBigram = false;
-    if (mUpdatingHelper.addBigramWords(word0Pos, word1Pos, probability, timestamp,
-            &addedNewBigram)) {
+    if (mUpdatingHelper.addBigramWords(word0Pos, word1Pos, bigramProperty, &addedNewBigram)) {
         if (addedNewBigram) {
             mBigramCount++;
         }
@@ -431,6 +429,9 @@
 }
 
 int Ver4PatriciaTriePolicy::getNextWordAndNextToken(const int token, int *const outCodePoints) {
+    // TODO: Return code point count like other methods.
+    // Null termination.
+    outCodePoints[0] = 0;
     if (token == 0) {
         mTerminalPtNodePositionsForIteratingWords.clear();
         DynamicPtReadingHelper::TraversePolicyToGetAllTerminalPtNodePositions traversePolicy(
@@ -447,8 +448,13 @@
     }
     const int terminalPtNodePos = mTerminalPtNodePositionsForIteratingWords[token];
     int unigramProbability = NOT_A_PROBABILITY;
-    getCodePointsAndProbabilityAndReturnCodePointCount(terminalPtNodePos, MAX_WORD_LENGTH,
-            outCodePoints, &unigramProbability);
+    const int codePointCount = getCodePointsAndProbabilityAndReturnCodePointCount(
+            terminalPtNodePos, MAX_WORD_LENGTH, outCodePoints, &unigramProbability);
+    if (codePointCount < MAX_WORD_LENGTH) {
+        // Null termination. outCodePoints have to be null terminated or contain MAX_WORD_LENGTH
+        // code points.
+        outCodePoints[codePointCount] = 0;
+    }
     const int nextToken = token + 1;
     if (nextToken >= terminalPtNodePositionsVectorSize) {
         // All words have been iterated.
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h
index 8f981de..b785764 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h
@@ -21,10 +21,10 @@
 
 #include "defines.h"
 #include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
-#include "suggest/policyimpl/dictionary/bigram/ver4_bigram_list_policy.h"
 #include "suggest/policyimpl/dictionary/header/header_policy.h"
-#include "suggest/policyimpl/dictionary/shortcut/ver4_shortcut_list_policy.h"
 #include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h"
+#include "suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h"
 #include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h"
 #include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h"
 #include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h"
@@ -93,8 +93,8 @@
     bool addUnigramWord(const int *const word, const int length,
             const UnigramProperty *const unigramProperty);
 
-    bool addBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1, const int probability, const int timestamp);
+    bool addBigramWords(const int *const word0, const int length0,
+            const BigramProperty *const bigramProperty);
 
     bool removeBigramWords(const int *const word0, const int length0, const int *const word1,
             const int length1);
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.cpp
index 12298d9..f31c502 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.cpp
@@ -19,9 +19,9 @@
 #include <cstring>
 #include <queue>
 
-#include "suggest/policyimpl/dictionary/bigram/ver4_bigram_list_policy.h"
 #include "suggest/policyimpl/dictionary/header/header_policy.h"
-#include "suggest/policyimpl/dictionary/shortcut/ver4_shortcut_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h"
 #include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h"
 #include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
 #include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h"
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h b/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h
index 23cbe3a..a2e88a4 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h
@@ -37,13 +37,13 @@
     BufferWithExtendableBuffer(uint8_t *const originalBuffer, const int originalBufferSize,
             const int maxAdditionalBufferSize)
             : mOriginalBuffer(originalBuffer), mOriginalBufferSize(originalBufferSize),
-              mAdditionalBuffer(EXTEND_ADDITIONAL_BUFFER_SIZE_STEP), mUsedAdditionalBufferSize(0),
+              mAdditionalBuffer(0), mUsedAdditionalBufferSize(0),
               mMaxAdditionalBufferSize(maxAdditionalBufferSize) {}
 
     // Without original buffer.
     BufferWithExtendableBuffer(const int maxAdditionalBufferSize)
             : mOriginalBuffer(0), mOriginalBufferSize(0),
-              mAdditionalBuffer(EXTEND_ADDITIONAL_BUFFER_SIZE_STEP), mUsedAdditionalBufferSize(0),
+              mAdditionalBuffer(0), mUsedAdditionalBufferSize(0),
               mMaxAdditionalBufferSize(maxAdditionalBufferSize) {}
 
     AK_FORCE_INLINE int getTailPosition() const {
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp
index 87fa599..7bc7b0a 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp
@@ -34,9 +34,12 @@
         const int dictVersion, const std::vector<int> localeAsCodePointVector,
         const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap) {
     TimeKeeper::setCurrentTime();
-    switch (dictVersion) {
+    const FormatUtils::FORMAT_VERSION formatVersion = FormatUtils::getFormatVersion(dictVersion);
+    switch (formatVersion) {
+        case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
         case FormatUtils::VERSION_4:
-            return createEmptyV4DictFile(filePath, localeAsCodePointVector, attributeMap);
+            return createEmptyV4DictFile(filePath, localeAsCodePointVector, attributeMap,
+                    formatVersion);
         default:
             AKLOGE("Cannot create dictionary %s because format version %d is not supported.",
                     filePath, dictVersion);
@@ -46,8 +49,9 @@
 
 /* static */ bool DictFileWritingUtils::createEmptyV4DictFile(const char *const dirPath,
         const std::vector<int> localeAsCodePointVector,
-        const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap) {
-    HeaderPolicy headerPolicy(FormatUtils::VERSION_4, localeAsCodePointVector, attributeMap);
+        const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap,
+        const FormatUtils::FORMAT_VERSION formatVersion) {
+    HeaderPolicy headerPolicy(formatVersion, localeAsCodePointVector, attributeMap);
     Ver4DictBuffers::Ver4DictBuffersPtr dictBuffers(
             Ver4DictBuffers::createVer4DictBuffers(&headerPolicy,
                     Ver4DictConstants::MAX_DICT_EXTENDED_REGION_SIZE));
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h
index 54ec651..a822989 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h
@@ -21,6 +21,7 @@
 
 #include "defines.h"
 #include "suggest/policyimpl/dictionary/header/header_read_write_utils.h"
+#include "suggest/policyimpl/dictionary/utils/format_utils.h"
 
 namespace latinime {
 
@@ -46,7 +47,8 @@
 
     static bool createEmptyV4DictFile(const char *const filePath,
             const std::vector<int> localeAsCodePointVector,
-            const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap);
+            const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap,
+            const FormatUtils::FORMAT_VERSION formatVersion);
 
     static bool flushBufferToFile(const char *const filePath,
             const BufferWithExtendableBuffer *const buffer);
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.cpp
index c7d3df9..fed0ae7 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.cpp
@@ -30,7 +30,7 @@
 const int ForgettingCurveUtils::DECAY_INTERVAL_SECONDS = 2 * 60 * 60;
 
 const int ForgettingCurveUtils::MAX_LEVEL = 3;
-const int ForgettingCurveUtils::MIN_VALID_LEVEL = 1;
+const int ForgettingCurveUtils::MIN_VISIBLE_LEVEL = 1;
 const int ForgettingCurveUtils::MAX_ELAPSED_TIME_STEP_COUNT = 15;
 const int ForgettingCurveUtils::DISCARD_LEVEL_ZERO_ENTRY_TIME_STEP_COUNT_THRESHOLD = 14;
 
@@ -41,25 +41,34 @@
 
 // TODO: Revise the logic to decide the initial probability depending on the given probability.
 /* static */ const HistoricalInfo ForgettingCurveUtils::createUpdatedHistoricalInfo(
-        const HistoricalInfo *const originalHistoricalInfo,
-        const int newProbability, const int timestamp, const HeaderPolicy *const headerPolicy) {
+        const HistoricalInfo *const originalHistoricalInfo, const int newProbability,
+        const HistoricalInfo *const newHistoricalInfo, const HeaderPolicy *const headerPolicy) {
+    const int timestamp = newHistoricalInfo->getTimeStamp();
     if (newProbability != NOT_A_PROBABILITY && originalHistoricalInfo->getLevel() == 0) {
-        return HistoricalInfo(timestamp, MIN_VALID_LEVEL /* level */, 0 /* count */);
-    } else if (!originalHistoricalInfo->isValid()) {
+        // Add entry as a valid word.
+        const int level = clampToVisibleEntryLevelRange(newHistoricalInfo->getLevel());
+        const int count = clampToValidCountRange(newHistoricalInfo->getCount(), headerPolicy);
+        return HistoricalInfo(timestamp, level, count);
+    } else if (!originalHistoricalInfo->isValid()
+            || originalHistoricalInfo->getLevel() < newHistoricalInfo->getLevel()
+            || (originalHistoricalInfo->getLevel() == newHistoricalInfo->getLevel()
+                    && originalHistoricalInfo->getCount() < newHistoricalInfo->getCount())) {
         // Initial information.
-        return HistoricalInfo(timestamp, 0 /* level */, 1 /* count */);
+        const int level = clampToValidLevelRange(newHistoricalInfo->getLevel());
+        const int count = clampToValidCountRange(newHistoricalInfo->getCount(), headerPolicy);
+        return HistoricalInfo(timestamp, level, count);
     } else {
         const int updatedCount = originalHistoricalInfo->getCount() + 1;
         if (updatedCount >= headerPolicy->getForgettingCurveOccurrencesToLevelUp()) {
             // The count exceeds the max value the level can be incremented.
             if (originalHistoricalInfo->getLevel() >= MAX_LEVEL) {
                 // The level is already max.
-                return HistoricalInfo(timestamp, originalHistoricalInfo->getLevel(),
-                        originalHistoricalInfo->getCount());
+                return HistoricalInfo(timestamp,
+                        originalHistoricalInfo->getLevel(), originalHistoricalInfo->getCount());
             } else {
                 // Level up.
-                return HistoricalInfo(timestamp, originalHistoricalInfo->getLevel() + 1,
-                        0 /* count */);
+                return HistoricalInfo(timestamp,
+                        originalHistoricalInfo->getLevel() + 1, 0 /* count */);
             }
         } else {
             return HistoricalInfo(timestamp, originalHistoricalInfo->getLevel(), updatedCount);
@@ -73,8 +82,8 @@
             headerPolicy->getForgettingCurveDurationToLevelDown());
     return sProbabilityTable.getProbability(
             headerPolicy->getForgettingCurveProbabilityValuesTableId(),
-            std::min(std::max(historicalInfo->getLevel(), 0), MAX_LEVEL),
-            std::min(std::max(elapsedTimeStepCount, 0), MAX_ELAPSED_TIME_STEP_COUNT));
+            clampToValidLevelRange(historicalInfo->getLevel()),
+            clampToValidTimeStepCountRange(elapsedTimeStepCount));
 }
 
 /* static */ int ForgettingCurveUtils::getProbability(const int unigramProbability,
@@ -155,6 +164,23 @@
     return elapsedTimeInSeconds / timeStepDurationInSeconds;
 }
 
+/* static */ int ForgettingCurveUtils::clampToVisibleEntryLevelRange(const int level) {
+    return std::min(std::max(level, MIN_VISIBLE_LEVEL), MAX_LEVEL);
+}
+
+/* static */ int ForgettingCurveUtils::clampToValidCountRange(const int count,
+        const HeaderPolicy *const headerPolicy) {
+    return std::min(std::max(count, 0), headerPolicy->getForgettingCurveOccurrencesToLevelUp() - 1);
+}
+
+/* static */ int ForgettingCurveUtils::clampToValidLevelRange(const int level) {
+    return std::min(std::max(level, 0), MAX_LEVEL);
+}
+
+/* static */ int ForgettingCurveUtils::clampToValidTimeStepCountRange(const int timeStepCount) {
+    return std::min(std::max(timeStepCount, 0), MAX_ELAPSED_TIME_STEP_COUNT);
+}
+
 const int ForgettingCurveUtils::ProbabilityTable::PROBABILITY_TABLE_COUNT = 4;
 const int ForgettingCurveUtils::ProbabilityTable::WEAK_PROBABILITY_TABLE_ID = 0;
 const int ForgettingCurveUtils::ProbabilityTable::MODEST_PROBABILITY_TABLE_ID = 1;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h b/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h
index bb86909..3ff80ae 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h
@@ -30,7 +30,7 @@
  public:
     static const HistoricalInfo createUpdatedHistoricalInfo(
             const HistoricalInfo *const originalHistoricalInfo, const int newProbability,
-            const int timestamp, const HeaderPolicy *const headerPolicy);
+            const HistoricalInfo *const newHistoricalInfo, const HeaderPolicy *const headerPolicy);
 
     static const HistoricalInfo createHistoricalInfoToSave(
             const HistoricalInfo *const originalHistoricalInfo,
@@ -93,7 +93,7 @@
     static const int DECAY_INTERVAL_SECONDS;
 
     static const int MAX_LEVEL;
-    static const int MIN_VALID_LEVEL;
+    static const int MIN_VISIBLE_LEVEL;
     static const int MAX_ELAPSED_TIME_STEP_COUNT;
     static const int DISCARD_LEVEL_ZERO_ENTRY_TIME_STEP_COUNT_THRESHOLD;
 
@@ -103,8 +103,11 @@
     static const ProbabilityTable sProbabilityTable;
 
     static int backoff(const int unigramProbability);
-
     static int getElapsedTimeStepCount(const int timestamp, const int durationToLevelDown);
+    static int clampToVisibleEntryLevelRange(const int level);
+    static int clampToValidLevelRange(const int level);
+    static int clampToValidCountRange(const int count, const HeaderPolicy *const headerPolicy);
+    static int clampToValidTimeStepCountRange(const int timeStepCount);
 };
 } // namespace latinime
 #endif /* LATINIME_FORGETTING_CURVE_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.cpp
index cd3c403..a8518cd 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.cpp
@@ -25,6 +25,18 @@
 // Magic number (4 bytes), version (2 bytes), flags (2 bytes), header size (4 bytes) = 12
 const int FormatUtils::DICTIONARY_MINIMUM_SIZE = 12;
 
+/* static */ FormatUtils::FORMAT_VERSION FormatUtils::getFormatVersion(const int formatVersion) {
+    switch (formatVersion) {
+        case VERSION_2:
+            return VERSION_2;
+        case VERSION_4_ONLY_FOR_TESTING:
+            return VERSION_4_ONLY_FOR_TESTING;
+        case VERSION_4:
+            return VERSION_4;
+        default:
+            return UNKNOWN_VERSION;
+    }
+}
 /* static */ FormatUtils::FORMAT_VERSION FormatUtils::detectFormatVersion(
         const uint8_t *const dict, const int dictSize) {
     // The magic number is stored big-endian.
@@ -46,6 +58,8 @@
             // same so we use them for both here.
             if (ByteArrayUtils::readUint16(dict, 4) == VERSION_2) {
                 return VERSION_2;
+            } else if (ByteArrayUtils::readUint16(dict, 4) == VERSION_4_ONLY_FOR_TESTING) {
+                return VERSION_4_ONLY_FOR_TESTING;
             } else if (ByteArrayUtils::readUint16(dict, 4) == VERSION_4) {
                 return VERSION_4;
             } else {
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.h b/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.h
index 759b1c9..20dfb9d 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.h
@@ -31,6 +31,7 @@
     enum FORMAT_VERSION {
         // These MUST have the same values as the relevant constants in FormatSpec.java.
         VERSION_2 = 2,
+        VERSION_4_ONLY_FOR_TESTING = 399,
         VERSION_4 = 401,
         UNKNOWN_VERSION = -1
     };
@@ -39,6 +40,7 @@
     // unsupported or obsolete dictionary formats.
     static const uint32_t MAGIC_NUMBER;
 
+    static FORMAT_VERSION getFormatVersion(const int formatVersion);
     static FORMAT_VERSION detectFormatVersion(const uint8_t *const dict, const int dictSize);
 
  private:
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
index e4aaf03..13955b8 100644
--- a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
@@ -25,7 +25,7 @@
 
 @SmallTest
 public class KeyboardLayoutSetSubtypesCountTests extends KeyboardLayoutSetTestsBase {
-    private static final int NUMBER_OF_SUBTYPES = 70;
+    private static final int NUMBER_OF_SUBTYPES = 71;
     private static final int NUMBER_OF_ASCII_CAPABLE_SUBTYPES = 45;
     private static final int NUMBER_OF_PREDEFINED_ADDITIONAL_SUBTYPES = 2;
 
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java
index 0fb6ff2..75bd609 100644
--- a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.preference.PreferenceManager;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.view.ContextThemeWrapper;
@@ -40,9 +41,6 @@
 
 @SmallTest
 public class KeyboardLayoutSetTestsBase extends AndroidTestCase {
-    private static final KeyboardTheme DEFAULT_KEYBOARD_THEME =
-            KeyboardTheme.getDefaultKeyboardTheme();
-
     // All input method subtypes of LatinIME.
     private final ArrayList<InputMethodSubtype> mAllSubtypesList = CollectionUtils.newArrayList();
     private final ArrayList<InputMethodSubtype> mAsciiCapableSubtypesList =
@@ -58,7 +56,9 @@
         super.setUp();
         mScreenMetrics = mContext.getResources().getInteger(R.integer.config_screen_metrics);
 
-        mThemeContext = new ContextThemeWrapper(mContext, DEFAULT_KEYBOARD_THEME.mStyleId);
+        final KeyboardTheme keyboardTheme = KeyboardTheme.getKeyboardTheme(
+                PreferenceManager.getDefaultSharedPreferences(mContext));
+        mThemeContext = new ContextThemeWrapper(mContext, keyboardTheme.mStyleId);
         RichInputMethodManager.init(mThemeContext);
         final RichInputMethodManager richImm = RichInputMethodManager.getInstance();
 
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
new file mode 100644
index 0000000..9b532fe
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.keyboard;
+
+import android.content.SharedPreferences;
+import android.os.Build.VERSION_CODES;
+import android.preference.PreferenceManager;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+@SmallTest
+public class KeyboardThemeTests extends AndroidTestCase {
+    private SharedPreferences mPrefs;
+
+    private static final int THEME_ID_NULL = -1;
+    private static final int THEME_ID_ICS = KeyboardTheme.THEME_ID_ICS;
+    private static final int THEME_ID_KLP = KeyboardTheme.THEME_ID_KLP;
+    private static final int THEME_ID_LMP = KeyboardTheme.THEME_ID_LMP;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
+    }
+
+    private void assertDefaultKeyboardTheme(final int sdkVersion, final int oldThemeId,
+            final int expectedThemeId) {
+        if (oldThemeId == THEME_ID_NULL) {
+            mPrefs.edit().remove(KeyboardTheme.KITKAT_KEYBOARD_THEME_KEY).apply();
+        } else {
+            final String themeIdString = Integer.toString(oldThemeId);
+            mPrefs.edit().putString(KeyboardTheme.KITKAT_KEYBOARD_THEME_KEY, themeIdString).apply();
+        }
+        final KeyboardTheme defaultTheme =
+                KeyboardTheme.getDefaultKeyboardTheme(mPrefs, sdkVersion);
+        assertNotNull(defaultTheme);
+        assertEquals(expectedThemeId, defaultTheme.mThemeId);
+        assertFalse(mPrefs.contains(KeyboardTheme.KITKAT_KEYBOARD_THEME_KEY));
+    }
+
+    private void assertDefaultKeyboardThemeICS(final int sdkVersion) {
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_ICS);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
+    }
+
+    private void assertDefaultKeyboardThemeKLP(final int sdkVersion) {
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_KLP);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
+    }
+
+    private void assertDefaultKeyboardThemeLMP(final int sdkVersion) {
+        // Forced to switch to LMP theme.
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_LMP);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_LMP);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_LMP);
+    }
+
+    public void testDefaultKeyboardThemeICS() {
+        assertDefaultKeyboardThemeICS(VERSION_CODES.ICE_CREAM_SANDWICH);
+        assertDefaultKeyboardThemeICS(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
+    }
+
+    public void testDefaultKeyboardThemeJB() {
+        assertDefaultKeyboardThemeICS(VERSION_CODES.JELLY_BEAN);
+        assertDefaultKeyboardThemeICS(VERSION_CODES.JELLY_BEAN_MR1);
+        assertDefaultKeyboardThemeICS(VERSION_CODES.JELLY_BEAN_MR2);
+    }
+
+    public void testDefaultKeyboardThemeKLP() {
+        assertDefaultKeyboardThemeKLP(VERSION_CODES.KITKAT);
+    }
+
+    public void testDefaultKeyboardThemeLMP() {
+        // TODO: Update this constant once the *next* version becomes available.
+        assertDefaultKeyboardThemeLMP(VERSION_CODES.CUR_DEVELOPMENT);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java b/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java
index 99cf6e5..7ba1d78 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java
@@ -51,7 +51,7 @@
 
         @Override
         public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
-            return isPhone ? joinKeys(key("q", SHORTCUT_KEY, SETTINGS_KEY)) : joinKeys(key("/"));
+            return isPhone ? joinKeys(key("q", SETTINGS_KEY)) : joinKeys(key("/"));
         }
 
         @Override
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java b/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
index a007089..16d2f86 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
@@ -91,7 +91,7 @@
 
         @Override
         public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
-            return joinKeys(SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
+            return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
         }
 
         @Override
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java b/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java
index afd26e4..cf20149 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java
@@ -16,29 +16,12 @@
 
 package com.android.inputmethod.keyboard.layout;
 
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.SIGN_ANUSVARA;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.SIGN_CANDRABINDU;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.SIGN_NUKTA;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.SIGN_VIRAMA;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.SIGN_VISARGA;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_AA;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_AI;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_AU;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_CANDRA_E;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_CANDRA_O;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_E;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_I;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_II;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_O;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_U;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_UU;
-import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.VOWEL_SIGN_VOCALIC_R;
+import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.*;
 
 import com.android.inputmethod.keyboard.layout.Hindi.HindiCustomizer;
 import com.android.inputmethod.keyboard.layout.Hindi.HindiSymbols;
 import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
 import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
-import com.android.inputmethod.latin.Constants;
 
 import java.util.Locale;
 
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
index 4123a22..e4e9554 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
@@ -29,7 +29,6 @@
  * The base class of keyboard layout.
  */
 public abstract class LayoutBase extends AbstractLayoutBase {
-
     /**
      * This class is used to customize common keyboard layout to language specific layout.
      */
@@ -152,7 +151,7 @@
          *         keyboard.
          */
         public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
-            return joinKeys(SPACE_KEY);
+            return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY);
         }
 
         /**
@@ -161,7 +160,8 @@
          * @return the array of {@link ExpectedKey} that should be placed at left of the spacebar.
          */
         public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
-            return isPhone ? joinKeys(key(",", SETTINGS_KEY)) : joinKeys("/");
+            // U+002C: "," COMMA
+            return isPhone ? joinKeys(key("\u002C", SETTINGS_KEY)) : joinKeys("/");
         }
 
         /**
@@ -306,6 +306,10 @@
 
     /**
      * Get common alphabet layout. This layout doesn't contain any special keys.
+     *
+     * A keyboard layout is an array of rows, and a row consists of an array of
+     * {@link ExpectedKey}s. Each row may have different number of {@link ExpectedKey}s.
+     *
      * @param isPhone true if requesting phone's layout.
      * @return the common alphabet keyboard layout.
      */
@@ -313,6 +317,10 @@
 
     /**
      * Get common alphabet shifted layout. This layout doesn't contain any special keys.
+     *
+     * A keyboard layout is an array of rows, and a row consists of an array of
+     * {@link ExpectedKey}s. Each row may have different number of {@link ExpectedKey}s.
+     *
      * @param isPhone true if requesting phone's layout.
      * @param elementId the element id of the requesting shifted mode.
      * @return the common alphabet shifted keyboard layout.
@@ -327,9 +335,13 @@
 
     /**
      * Get the complete expected keyboard layout.
+     *
+     * A keyboard layout is an array of rows, and a row consists of an array of
+     * {@link ExpectedKey}s. Each row may have different number of {@link ExpectedKey}s.
+     *
      * @param isPhone true if requesting phone's layout.
      * @param elementId the element id of the requesting keyboard mode.
-     * @return
+     * @return the keyboard layout of the <code>elementId</code>.
      */
     public ExpectedKey[][] getLayout(final boolean isPhone, final int elementId) {
         if (elementId == KeyboardId.ELEMENT_SYMBOLS) {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Marathi.java b/tests/src/com/android/inputmethod/keyboard/layout/Marathi.java
new file mode 100644
index 0000000..00cf838
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Marathi.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.*;
+
+import com.android.inputmethod.keyboard.layout.Hindi.HindiCustomizer;
+import com.android.inputmethod.keyboard.layout.Hindi.HindiSymbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * The Marathi keyboard.
+ */
+public final class Marathi extends LayoutBase {
+    private static final String LAYOUT_NAME = "marathi";
+
+    public Marathi(final LayoutCustomizer customizer) {
+        super(customizer, HindiSymbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class MarathiCustomizer extends HindiCustomizer {
+        public MarathiCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+094C: "ौ" DEVANAGARI VOWEL SIGN AU
+                    // U+0914: "औ" DEVANAGARI LETTER AU
+                    // U+0967: "१" DEVANAGARI DIGIT ONE
+                    key(VOWEL_SIGN_AU, "\u094C", joinMoreKeys("\u0914", "\u0967", "1")),
+                    // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
+                    // U+0910: "ऐ" DEVANAGARI LETTER AI
+                    // U+0968: "२" DEVANAGARI DIGIT TWO
+                    key(VOWEL_SIGN_AI, "\u0948", joinMoreKeys("\u0910", "\u0968", "2")),
+                    // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
+                    // U+0906: "आ" DEVANAGARI LETTER AA
+                    // U+0969: "३" DEVANAGARI DIGIT THREE
+                    key(VOWEL_SIGN_AA, "\u093E", joinMoreKeys("\u0906", "\u0969", "3")),
+                    // U+0940: "ी" DEVANAGARI VOWEL SIGN II
+                    // U+0908: "ई" DEVANAGARI LETTER II
+                    // U+096A: "४" DEVANAGARI DIGIT FOUR
+                    key(VOWEL_SIGN_II, "\u0940", joinMoreKeys("\u0908", "\u096A", "4")),
+                    // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
+                    // U+090A: "ऊ" DEVANAGARI LETTER UU
+                    // U+096B: "५" DEVANAGARI DIGIT FIVE
+                    key(VOWEL_SIGN_UU, "\u0942", joinMoreKeys("\u090A", "\u096B", "5")),
+                    // U+092C: "ब" DEVANAGARI LETTER BA
+                    // U+092D: "भ" DEVANAGARI LETTER BHA
+                    // U+096C: "६" DEVANAGARI DIGIT SIX
+                    key("\u092C", joinMoreKeys("\u092D", "\u096C", "6")),
+                    // U+0939: "ह" DEVANAGARI LETTER HA
+                    // U+096D: "७" DEVANAGARI DIGIT SEVEN
+                    key("\u0939", joinMoreKeys("\u096D", "7")),
+                    // U+0917: "ग" DEVANAGARI LETTER GA
+                    // U+0918: "घ" DEVANAGARI LETTER GHA
+                    // U+096E: "८" DEVANAGARI DIGIT EIGHT
+                    key("\u0917", joinMoreKeys("\u0918", "\u096E", "8")),
+                    // U+0926: "द" DEVANAGARI LETTER DA
+                    // U+0927: "ध" DEVANAGARI LETTER DHA
+                    // U+096F: "९" DEVANAGARI DIGIT NINE
+                    key("\u0926", joinMoreKeys("\u0927", "\u096F", "9")),
+                    // U+091C: "ज" DEVANAGARI LETTER JA
+                    // U+091D: "झ" DEVANAGARI LETTER JHA
+                    // U+091C/U+094D/U+091E:
+                    //     "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER NYA
+                    // U+0966: "०" DEVANAGARI DIGIT ZERO
+                    key("\u091C", joinMoreKeys("\u091D", "\u091C\u094D\u091E", "\u0966", "0")),
+                    // U+0921: "ड" DEVANAGARI LETTER DDA
+                    // U+0922: "ढ" DEVANAGARI LETTER DDHA
+                    key("\u0921", moreKey("\u0922")))
+            .setKeysOfRow(2,
+                    // U+094B: "ो" DEVANAGARI VOWEL SIGN O
+                    // U+0913: "ओ" DEVANAGARI LETTER O
+                    key(VOWEL_SIGN_O, "\u094B", moreKey("\u0913")),
+                    // U+0947: "े" DEVANAGARI VOWEL SIGN E
+                    // U+090F: "ए" DEVANAGARI LETTER SHORT E
+                    key(VOWEL_SIGN_E, "\u0947", moreKey("\u090F")),
+                    // U+094D: "्" DEVANAGARI SIGN VIRAMA
+                    // U+0905: "अ" DEVANAGARI LETTER A
+                    key(SIGN_VIRAMA, "\u094D", moreKey("\u0905")),
+                    // U+093F: "ि" DEVANAGARI VOWEL SIGN I
+                    // U+0907: "इ" DEVANAGARI LETTER I
+                    key(VOWEL_SIGN_I, "\u093F", moreKey("\u0907")),
+                    // U+0941: "ु" DEVANAGARI VOWEL SIGN U
+                    // U+0909: "उ" DEVANAGARI LETTER U
+                    key(VOWEL_SIGN_U, "\u0941", moreKey("\u0909")),
+                    // U+092A: "प" DEVANAGARI LETTER PA
+                    // U+092B: "फ" DEVANAGARI LETTER PHA
+                    key("\u092A", moreKey("\u092B")),
+                    // U+0930: "र" DEVANAGARI LETTER RA
+                    // U+0931: "ऱ" DEVANAGARI LETTER RRA
+                    // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                    // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
+                    key("\u0930", joinMoreKeys(
+                            "\u0931", "\u090B", moreKey(VOWEL_SIGN_VOCALIC_R, "\u0943"))),
+                    // U+0915: "क" DEVANAGARI LETTER KA
+                    // U+0916: "ख" DEVANAGARI LETTER KHA
+                    key("\u0915", moreKey("\u0916")),
+                    // U+0924: "त" DEVANAGARI LETTER TA
+                    // U+0925: "थ" DEVANAGARI LETTER THA
+                    // U+0924/U+094D/U+0930:
+                    //     "त्र" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    key("\u0924", joinMoreKeys("\u0925", "\u0924\u094D\u0930")),
+                    // U+091A: "च" DEVANAGARI LETTER CA
+                    // U+091B: "छ" DEVANAGARI LETTER CHA
+                    key("\u091A", moreKey("\u091B")),
+                    // U+091F: "ट" DEVANAGARI LETTER TTA
+                    // U+0920: "ठ" DEVANAGARI LETTER TTHA
+                    key("\u091F", moreKey("\u0920")))
+            .setKeysOfRow(3,
+                    // U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O
+                    // U+0911: "ऑ" DEVANAGARI LETTER CANDRA O
+                    key(VOWEL_SIGN_CANDRA_O, "\u0949", moreKey("\u0911")),
+                    // U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E
+                    // U+090D: "ऍ" DEVANAGARI LETTER CANDRA E
+                    key(VOWEL_SIGN_CANDRA_E, "\u0945", moreKey("\u090D")),
+                    // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
+                    // U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+                    // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+                    key(SIGN_ANUSVARA, "\u0902", joinMoreKeys(
+                            moreKey(SIGN_VISARGA, "\u0903"), moreKey(SIGN_CANDRABINDU, "\u0901"))),
+                    // U+092E: "म" DEVANAGARI LETTER MA
+                    "\u092E",
+                    // U+0928: "न" DEVANAGARI LETTER NA
+                    // U+0923: "ण" DEVANAGARI LETTER NNA
+                    // U+091E: "ञ" DEVANAGARI LETTER NYA
+                    // U+0919: "ङ" DEVANAGARI LETTER NGA
+                    key("\u0928", joinMoreKeys("\u0923", "\u091E", "\u0919")),
+                    // U+0935: "व" DEVANAGARI LETTER VA
+                    "\u0935",
+                    // U+0932: "ल" DEVANAGARI LETTER LA
+                    // U+0933: "ळ" DEVANAGARI LETTER LLA
+                    key("\u0932", moreKey("\u0933")),
+                    // U+0938: "स" DEVANAGARI LETTER SA
+                    // U+0936: "श" DEVANAGARI LETTER SHA
+                    // U+0937: "ष" DEVANAGARI LETTER SSA
+                    // U+0936/U+094D/U+0930:
+                    //     "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    key("\u0938", joinMoreKeys("\u0936", "\u0937", "\u0936\u094D\u0930")),
+                    // U+092F: "य" DEVANAGARI LETTER YA
+                    "\u092F",
+                    // U+0915/U+094D/U+0937:
+                    //     "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA
+                    "\u0915\u094D\u0937")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java b/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
index 7048dbb..7933d07 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
@@ -47,7 +47,7 @@
 
         @Override
         public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
-            return joinKeys(SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
+            return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
         }
 
         // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractKeyboardBuilder.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractKeyboardBuilder.java
index 3365b92..6e72104 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractKeyboardBuilder.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractKeyboardBuilder.java
@@ -21,9 +21,9 @@
 /**
  * This class builds a keyboard that is a two dimensional array of elements <code>E</code>.
  *
- * A keyboard consists of array of rows, and a row consists of array of elements. Each row may have
- * different number of elements. A element of a keyboard can be specified by a row number and a
- * column number, both numbers starts from 1.
+ * A keyboard consists of an array of rows, and a row consists of an array of elements. Each row
+ * may have different number of elements. A element of a keyboard can be specified by a row number
+ * and a column number, both numbers starts from 1.
  *
  * @param <E> the type of a keyboard element. A keyboard element must be an immutable object.
  */
@@ -39,8 +39,7 @@
     abstract E[][] newArrayOfArray(final int size);
 
     /**
-     * Construct a builder filled with the default element.
-     * @param dimensions the integer array of each row's size.
+     * Construct an empty builder.
      */
     AbstractKeyboardBuilder() {
         mRows = newArrayOfArray(0);
@@ -80,7 +79,7 @@
      * Get the current contents of the specified row.
      * @param row the row number to get the contents.
      * @return the array of elements at row number <code>row</code>.
-     * @throws {@link RuntimeException} if <code>row</code> is illegal.
+     * @throws RuntimeException if <code>row</code> is illegal.
      */
     E[] getRowAt(final int row) {
         final int rowIndex = row - 1;
@@ -94,7 +93,7 @@
      * Set an array of elements to the specified row.
      * @param row the row number to set <code>elements</code>.
      * @param elements the array of elements to set at row number <code>row</code>.
-     * @throws {@link RuntimeException} if <code>row</code> is illegal.
+     * @throws RuntimeException if <code>row</code> is illegal.
      */
     void setRowAt(final int row, final E[] elements) {
         final int rowIndex = row - 1;
@@ -114,7 +113,7 @@
      * @param element the element to set or insert at <code>row,column</code>.
      * @param insert if true, the <code>element</code> is inserted at <code>row,column</code>.
      *        Otherwise the <code>element</code> replace the element at <code>row,column</code>.
-     * @throws {@link RuntimeException} if <code>row</code> or <code>column</code> is illegal.
+     * @throws RuntimeException if <code>row</code> or <code>column</code> is illegal.
      */
     void setElementAt(final int row, final int column, final E element, final boolean insert) {
         final E[] elements = getRowAt(row);
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
index 6176f6a..9e0039d 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
@@ -19,7 +19,6 @@
 import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
 import com.android.inputmethod.keyboard.layout.expected.ExpectedKey.ExpectedAdditionalMoreKey;
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.utils.StringUtils;
 
 /**
  * Base class to create an expected keyboard for unit test.
@@ -109,6 +108,8 @@
     // Icon ids.
     private static final int ICON_DELETE = KeyboardIconsSet.getIconId(
             KeyboardIconsSet.NAME_DELETE_KEY);
+    private static final int ICON_SPACE = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_SPACE_KEY);
     private static final int ICON_TAB = KeyboardIconsSet.getIconId(
             KeyboardIconsSet.NAME_TAB_KEY);
     private static final int ICON_SHORTCUT = KeyboardIconsSet.getIconId(
@@ -131,6 +132,5 @@
             ICON_LANGUAGE_SWITCH, Constants.CODE_LANGUAGE_SWITCH);
     public static final ExpectedKey ENTER_KEY = key(ICON_ENTER, Constants.CODE_ENTER);
     public static final ExpectedKey EMOJI_KEY = key(ICON_EMOJI, Constants.CODE_EMOJI);
-    public static final ExpectedKey SPACE_KEY = key(
-            StringUtils.newSingleCodePointString(Constants.CODE_SPACE));
+    public static final ExpectedKey SPACE_KEY = key(ICON_SPACE, Constants.CODE_SPACE);
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/ActualKeyboardBuilder.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/ActualKeyboardBuilder.java
index 26d2e2a..d0fea58 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/expected/ActualKeyboardBuilder.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/ActualKeyboardBuilder.java
@@ -28,6 +28,9 @@
 
 /**
  * This class builds an actual keyboard for unit test.
+ *
+ * An actual keyboard is an array of rows, and a row consists of an array of {@link Key}s.
+ * Each row may have different number of {@link Key}s.
  */
 public final class ActualKeyboardBuilder extends AbstractKeyboardBuilder<Key> {
     private static ArrayList<Key> filterOutSpacer(final List<Key> keys) {
@@ -43,7 +46,8 @@
 
     /**
      * Create the keyboard that consists of the array of rows of the actual keyboard's keys.
-     * @param sortedKeys the sorted list of keys of the actual keyboard.
+     * @param sortedKeys keys list of the actual keyboard that is sorted from top-left to
+     * bottom-right.
      * @return the actual keyboard grouped with rows.
      */
     public static Key[][] buildKeyboard(final List<Key> sortedKeys) {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java
index f068ad1..e06d34d 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java
@@ -24,6 +24,11 @@
 
 /**
  * This class builds an expected keyboard for unit test.
+ *
+ * An expected keyboard is an array of rows, and a row consists of an array of {@link ExpectedKey}s.
+ * Each row may have different number of {@link ExpectedKey}s. While building an expected keyboard,
+ * an {@link ExpectedKey} can be specified by a row number and a column number, both numbers starts
+ * from 1.
  */
 public final class ExpectedKeyboardBuilder extends AbstractKeyboardBuilder<ExpectedKey> {
     public ExpectedKeyboardBuilder() {
@@ -212,7 +217,7 @@
      * @param keys the array of keys to insert at <code>row,column</code>. Each key can be
      *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
      * @return this builder.
-     * @throws {@link RuntimeException} if <code>row</code> or <code>column</code> is illegal.
+     * @throws RuntimeException if <code>row</code> or <code>column</code> is illegal.
      */
     public ExpectedKeyboardBuilder insertKeysAtRow(final int row, final int column,
             final Object ... keys) {
@@ -229,7 +234,7 @@
      * @param keys the array of keys to add on the left most of the row. Each key can be
      *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
      * @return this builder.
-     * @throws {@link RuntimeException} if <code>row</code> is illegal.
+     * @throws RuntimeException if <code>row</code> is illegal.
      */
     public ExpectedKeyboardBuilder addKeysOnTheLeftOfRow(final int row,
             final Object ... keys) {
@@ -247,7 +252,7 @@
      * @param keys the array of keys to add on the right most of the row. Each key can be
      *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
      * @return this builder.
-     * @throws {@link RuntimeException} if <code>row</code> is illegal.
+     * @throws RuntimeException if <code>row</code> is illegal.
      */
     public ExpectedKeyboardBuilder addKeysOnTheRightOfRow(final int row,
             final Object ... keys) {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/EnglishCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/EnglishCustomizer.java
index 29264ff..3e82f65 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/EnglishCustomizer.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/EnglishCustomizer.java
@@ -27,34 +27,34 @@
     @Override
     public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
         return builder
-                // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
                 // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+                // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
                 // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
                 // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
                 // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
-                .setMoreKeysOf("e", "\u00E8", "\u00E9", "\u00EA", "\u00EB", "\u0113")
+                .setMoreKeysOf("e", "\u00E9", "\u00E8", "\u00EA", "\u00EB", "\u0113")
+                // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
                 // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
                 // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
                 // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-                // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
                 // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
-                .setMoreKeysOf("u", "\u00FB", "\u00FC", "\u00F9", "\u00FA", "\u016B")
+                .setMoreKeysOf("u", "\u00FA", "\u00FB", "\u00FC", "\u00F9", "\u016B")
+                // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
                 // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
                 // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-                // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
                 // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
                 // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-                .setMoreKeysOf("i", "\u00EE", "\u00EF", "\u00ED", "\u012B", "\u00EC")
+                .setMoreKeysOf("i", "\u00ED", "\u00EE", "\u00EF", "\u012B", "\u00EC")
+                // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
                 // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
                 // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
                 // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-                // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
                 // U+0153: "œ" LATIN SMALL LIGATURE OE
                 // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
                 // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
                 // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
                 .setMoreKeysOf("o",
-                        "\u00F4", "\u00F6", "\u00F2", "\u00F3", "\u0153", "\u00F8", "\u014D",
+                        "\u00F3", "\u00F4", "\u00F6", "\u00F2", "\u0153", "\u00F8", "\u014D",
                         "\u00F5")
                 // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
                 // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/LayoutTestsBase.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/LayoutTestsBase.java
index 4002c49..d4e8fb6 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/LayoutTestsBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/LayoutTestsBase.java
@@ -51,7 +51,10 @@
         mSubtype = getSubtype(mLayout.getLocale(), mLayout.getName());
         mLogTag = SubtypeLocaleUtils.getSubtypeNameForLogging(mSubtype) + "/"
                 + (isPhone() ? "phone" : "tablet");
-        mKeyboardLayoutSet = createKeyboardLayoutSet(mSubtype, null /* editorInfo */);
+        // TODO: Test with language switch key enabled and disabled.
+        mKeyboardLayoutSet = createKeyboardLayoutSet(mSubtype, null /* editorInfo */,
+                true /* isShortcutImeEnabled */, true /* showsVoiceInputKey */,
+                true /* isLanguageSwitchKeyEnabled */);
     }
 
     // Those helper methods have a lower case name to be readable when defining expected keyboard
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMarathiIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMarathiIN.java
new file mode 100644
index 0000000..b937629
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMarathiIN.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Marathi;
+import com.android.inputmethod.keyboard.layout.Marathi.MarathiCustomizer;
+
+import java.util.Locale;
+
+/**
+ * mr_IN: Marathi (India)/marathi
+ */
+@SmallTest
+public final class TestsMarathiIN extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("mr", "IN");
+    private static final LayoutBase LAYOUT = new Marathi(new MarathiCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java
index ae2205b..35d9a4e 100644
--- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java
+++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java
@@ -93,15 +93,17 @@
 
     private File createEmptyDictionaryAndGetFile(final String dictId,
             final int formatVersion) throws IOException {
-        if (formatVersion == FormatSpec.VERSION4) {
-            return createEmptyVer4DictionaryAndGetFile(dictId);
+        if (formatVersion == FormatSpec.VERSION4
+                || formatVersion == FormatSpec.VERSION4_ONLY_FOR_TESTING) {
+            return createEmptyVer4DictionaryAndGetFile(dictId, formatVersion);
         } else {
             throw new IOException("Dictionary format version " + formatVersion
                     + " is not supported.");
         }
     }
 
-    private File createEmptyVer4DictionaryAndGetFile(final String dictId) throws IOException {
+    private File createEmptyVer4DictionaryAndGetFile(final String dictId, final int formatVersion)
+            throws IOException {
         final File file = File.createTempFile(dictId, TEST_DICT_FILE_EXTENSION,
                 getContext().getCacheDir());
         FileUtils.deleteRecursively(file);
@@ -113,7 +115,7 @@
                 DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
         attributeMap.put(DictionaryHeader.HAS_HISTORICAL_INFO_KEY,
                 DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
-        if (BinaryDictionaryUtils.createEmptyDictFile(file.getAbsolutePath(), FormatSpec.VERSION4,
+        if (BinaryDictionaryUtils.createEmptyDictFile(file.getAbsolutePath(), formatVersion,
                 LocaleUtils.constructLocaleFromString(TEST_LOCALE), attributeMap)) {
             return file;
         } else {
@@ -562,4 +564,51 @@
             }
         }
     }
+
+    public void testDictMigration() {
+        testDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, FormatSpec.VERSION4);
+    }
+
+    private void testDictMigration(final int fromFormatVersion, final int toFormatVersion) {
+        setCurrentTimeForTestMode(mCurrentTime);
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", fromFormatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        addUnigramWord(binaryDictionary, "aaa", DUMMY_PROBABILITY);
+        assertTrue(binaryDictionary.isValidWord("aaa"));
+        addUnigramWord(binaryDictionary, "bbb", Dictionary.NOT_A_PROBABILITY);
+        assertFalse(binaryDictionary.isValidWord("bbb"));
+        addUnigramWord(binaryDictionary, "ccc", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "ccc", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "ccc", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "ccc", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "ccc", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "abc", DUMMY_PROBABILITY);
+        addBigramWords(binaryDictionary, "aaa", "abc", DUMMY_PROBABILITY);
+        assertTrue(binaryDictionary.isValidBigram("aaa", "abc"));
+        addBigramWords(binaryDictionary, "aaa", "bbb", Dictionary.NOT_A_PROBABILITY);
+        assertFalse(binaryDictionary.isValidBigram("aaa", "bbb"));
+
+        assertEquals(fromFormatVersion, binaryDictionary.getFormatVersion());
+        assertTrue(binaryDictionary.migrateTo(toFormatVersion));
+        assertTrue(binaryDictionary.isValidDictionary());
+        assertEquals(toFormatVersion, binaryDictionary.getFormatVersion());
+        assertTrue(binaryDictionary.isValidWord("aaa"));
+        assertFalse(binaryDictionary.isValidWord("bbb"));
+        assertTrue(binaryDictionary.getFrequency("aaa") < binaryDictionary.getFrequency("ccc"));
+        addUnigramWord(binaryDictionary, "bbb", Dictionary.NOT_A_PROBABILITY);
+        assertTrue(binaryDictionary.isValidWord("bbb"));
+        assertTrue(binaryDictionary.isValidBigram("aaa", "abc"));
+        assertFalse(binaryDictionary.isValidBigram("aaa", "bbb"));
+        addBigramWords(binaryDictionary, "aaa", "bbb", Dictionary.NOT_A_PROBABILITY);
+        assertTrue(binaryDictionary.isValidBigram("aaa", "bbb"));
+        binaryDictionary.close();
+        dictFile.delete();
+    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
index 0fb0fa5..770e76e 100644
--- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
@@ -46,21 +46,23 @@
 
     private File createEmptyDictionaryAndGetFile(final String dictId,
             final int formatVersion) throws IOException {
-       if (formatVersion == FormatSpec.VERSION4) {
-            return createEmptyVer4DictionaryAndGetFile(dictId);
+        if (formatVersion == FormatSpec.VERSION4
+                || formatVersion == FormatSpec.VERSION4_ONLY_FOR_TESTING) {
+            return createEmptyVer4DictionaryAndGetFile(dictId, formatVersion);
         } else {
             throw new IOException("Dictionary format version " + formatVersion
                     + " is not supported.");
         }
     }
 
-    private File createEmptyVer4DictionaryAndGetFile(final String dictId) throws IOException {
+    private File createEmptyVer4DictionaryAndGetFile(final String dictId,
+            final int formatVersion) throws IOException {
         final File file = File.createTempFile(dictId, TEST_DICT_FILE_EXTENSION,
                 getContext().getCacheDir());
         file.delete();
         file.mkdir();
         Map<String, String> attributeMap = new HashMap<String, String>();
-        if (BinaryDictionaryUtils.createEmptyDictFile(file.getAbsolutePath(), FormatSpec.VERSION4,
+        if (BinaryDictionaryUtils.createEmptyDictFile(file.getAbsolutePath(), formatVersion,
                 Locale.ENGLISH, attributeMap)) {
             return file;
         } else {
@@ -1223,4 +1225,121 @@
             }
         }
     }
+
+    public void testDictMigration() {
+        testDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, FormatSpec.VERSION4);
+    }
+
+    private void testDictMigration(final int fromFormatVersion, final int toFormatVersion) {
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", fromFormatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        final int unigramProbability = 100;
+        addUnigramWord(binaryDictionary, "aaa", unigramProbability);
+        addUnigramWord(binaryDictionary, "bbb", unigramProbability);
+        final int bigramProbability = 10;
+        addBigramWords(binaryDictionary, "aaa", "bbb", bigramProbability);
+        final int shortcutProbability = 10;
+        binaryDictionary.addUnigramWord("ccc", unigramProbability, "xxx", shortcutProbability,
+                false /* isNotAWord */, false /* isBlacklisted */, 0 /* timestamp */);
+        binaryDictionary.addUnigramWord("ddd", unigramProbability, null /* shortcutTarget */,
+                Dictionary.NOT_A_PROBABILITY, true /* isNotAWord */,
+                true /* isBlacklisted */, 0 /* timestamp */);
+        assertEquals(unigramProbability, binaryDictionary.getFrequency("aaa"));
+        assertEquals(unigramProbability, binaryDictionary.getFrequency("bbb"));
+        assertTrue(binaryDictionary.isValidBigram("aaa", "bbb"));
+        assertEquals(fromFormatVersion, binaryDictionary.getFormatVersion());
+        assertTrue(binaryDictionary.migrateTo(toFormatVersion));
+        assertTrue(binaryDictionary.isValidDictionary());
+        assertEquals(toFormatVersion, binaryDictionary.getFormatVersion());
+        assertEquals(unigramProbability, binaryDictionary.getFrequency("aaa"));
+        assertEquals(unigramProbability, binaryDictionary.getFrequency("bbb"));
+        // TODO: Add tests for bigram frequency when the implementation gets ready.
+        assertTrue(binaryDictionary.isValidBigram("aaa", "bbb"));
+        WordProperty wordProperty = binaryDictionary.getWordProperty("ccc");
+        assertEquals(1, wordProperty.mShortcutTargets.size());
+        assertEquals("xxx", wordProperty.mShortcutTargets.get(0).mWord);
+        wordProperty = binaryDictionary.getWordProperty("ddd");
+        assertTrue(wordProperty.mIsBlacklistEntry);
+        assertTrue(wordProperty.mIsNotAWord);
+    }
+
+    public void testLargeDictMigration() {
+        testLargeDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, FormatSpec.VERSION4);
+    }
+
+    private void testLargeDictMigration(final int fromFormatVersion, final int toFormatVersion) {
+        final int UNIGRAM_COUNT = 3000;
+        final int BIGRAM_COUNT = 3000;
+        final int codePointSetSize = 50;
+        final long seed = System.currentTimeMillis();
+        final Random random = new Random(seed);
+
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", fromFormatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+
+        final ArrayList<String> words = new ArrayList<String>();
+        final ArrayList<Pair<String, String>> bigrams = new ArrayList<Pair<String,String>>();
+        final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
+        final HashMap<String, Integer> unigramProbabilities = new HashMap<String, Integer>();
+        final HashMap<Pair<String, String>, Integer> bigramProbabilities =
+                new HashMap<Pair<String, String>, Integer>();
+
+        for (int i = 0; i < UNIGRAM_COUNT; i++) {
+            final String word = CodePointUtils.generateWord(random, codePointSet);
+            final int unigramProbability = random.nextInt(0xFF);
+            addUnigramWord(binaryDictionary, word, unigramProbability);
+            if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+            words.add(word);
+            unigramProbabilities.put(word, unigramProbability);
+        }
+
+        for (int i = 0; i < BIGRAM_COUNT; i++) {
+            final int word0Index = random.nextInt(words.size());
+            final int word1Index = random.nextInt(words.size());
+            if (word0Index == word1Index) {
+                continue;
+            }
+            final String word0 = words.get(word0Index);
+            final String word1 = words.get(word1Index);
+            final int bigramProbability = random.nextInt(0xF);
+            binaryDictionary.addBigramWords(word0, word1, bigramProbability,
+                    BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+            if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+            final Pair<String, String> bigram = new Pair<String, String>(word0, word1);
+            bigrams.add(bigram);
+            bigramProbabilities.put(bigram, bigramProbability);
+        }
+        assertTrue(binaryDictionary.migrateTo(toFormatVersion));
+
+        for (final String word : words) {
+            assertEquals((int)unigramProbabilities.get(word), binaryDictionary.getFrequency(word));
+        }
+        assertEquals(unigramProbabilities.size(), Integer.parseInt(
+                binaryDictionary.getPropertyForTest(BinaryDictionary.UNIGRAM_COUNT_QUERY)));
+
+        for (final Pair<String, String> bigram : bigrams) {
+            // TODO: Add tests for bigram frequency when the implementation gets ready.
+            assertTrue(binaryDictionary.isValidBigram(bigram.first, bigram.second));
+        }
+        assertEquals(bigramProbabilities.size(), Integer.parseInt(
+                binaryDictionary.getPropertyForTest(BinaryDictionary.BIGRAM_COUNT_QUERY)));
+    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java b/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java
new file mode 100644
index 0000000..186542a
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.test.suitebuilder.annotation.LargeTest;
+
+import com.android.inputmethod.latin.utils.DistracterFilter;
+
+/**
+ * Unit test for DistracterFilter
+ */
+@LargeTest
+public class DistracterFilterTest extends InputTestsBase {
+    private DistracterFilter mDistracterFilter;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mDistracterFilter = mLatinIME.createDistracterFilter();
+    }
+
+    public void testIsDistractorToWordsInDictionaries() {
+        final String EMPTY_PREV_WORD = null;
+        String typedWord = "alot";
+        // For this test case, we consider "alot" is a distracter to "a lot".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(EMPTY_PREV_WORD, typedWord));
+
+        typedWord = "mot";
+        // For this test case, we consider "mot" is a distracter to "not".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(EMPTY_PREV_WORD, typedWord));
+
+        typedWord = "wierd";
+        // For this test case, we consider "wierd" is a distracter to "weird".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(EMPTY_PREV_WORD, typedWord));
+
+        typedWord = "hoe";
+        // For this test case, we consider "hoe" is a distracter to "how".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(EMPTY_PREV_WORD, typedWord));
+
+        typedWord = "nit";
+        // For this test case, we consider "nit" is a distracter to "not".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(EMPTY_PREV_WORD, typedWord));
+
+        typedWord = "ill";
+        // For this test case, we consider "ill" is a distracter to "I'll".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(EMPTY_PREV_WORD, typedWord));
+
+        typedWord = "asdfd";
+        // For this test case, we consider "asdfd" is not a distracter to any word in dictionaries.
+        assertFalse(
+                mDistracterFilter.isDistracterToWordsInDictionaries(EMPTY_PREV_WORD, typedWord));
+
+        typedWord = "thank";
+        // For this test case, we consider "thank" is not a distracter to any other word
+        // in dictionaries.
+        assertFalse(
+                mDistracterFilter.isDistracterToWordsInDictionaries(EMPTY_PREV_WORD, typedWord));
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTests.java b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
index d2dd292..29423e8 100644
--- a/tests/src/com/android/inputmethod/latin/InputLogicTests.java
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
@@ -334,6 +334,18 @@
         assertEquals("manual pick then separator", EXPECTED_RESULT, mEditText.getText().toString());
     }
 
+    // This test matches the one in InputLogicTestsNonEnglish. In some non-English languages,
+    // ! and ? are clustering punctuation signs.
+    public void testClusteringPunctuation() {
+        final String WORD1_TO_TYPE = "test";
+        final String WORD2_TO_TYPE = "!!?!:!";
+        final String EXPECTED_RESULT = "test!!?!:!";
+        type(WORD1_TO_TYPE);
+        pickSuggestionManually(0, WORD1_TO_TYPE);
+        type(WORD2_TO_TYPE);
+        assertEquals("clustering punctuation", EXPECTED_RESULT, mEditText.getText().toString());
+    }
+
     public void testManualPickThenStripperThenPick() {
         final String WORD_TO_TYPE = "this";
         final String STRIPPER = "\n";
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTestsNonEnglish.java b/tests/src/com/android/inputmethod/latin/InputLogicTestsNonEnglish.java
index 1257ae2..68b6ee6 100644
--- a/tests/src/com/android/inputmethod/latin/InputLogicTestsNonEnglish.java
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTestsNonEnglish.java
@@ -45,6 +45,19 @@
                 mEditText.getText().toString());
     }
 
+    public void testClusteringPunctuationForFrench() {
+        final String WORD1_TO_TYPE = "test";
+        final String WORD2_TO_TYPE = "!!?!:!";
+        // In English, the expected result would be "test!!?!:!"
+        final String EXPECTED_RESULT = "test !!?! : !";
+        changeLanguage("fr");
+        type(WORD1_TO_TYPE);
+        pickSuggestionManually(0, WORD1_TO_TYPE);
+        type(WORD2_TO_TYPE);
+        assertEquals("clustering punctuation for French", EXPECTED_RESULT,
+                mEditText.getText().toString());
+    }
+
     public void testWordThenSpaceThenPunctuationFromStripTwiceForFrench() {
         final String WORD_TO_TYPE = "test ";
         final String PUNCTUATION_FROM_STRIP = "!";
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTestsReorderingMyanmar.java b/tests/src/com/android/inputmethod/latin/InputLogicTestsReorderingMyanmar.java
new file mode 100644
index 0000000..b3f2819
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTestsReorderingMyanmar.java
@@ -0,0 +1,232 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Pair;
+
+/*
+ * Relevant characters for this test :
+ * Spurs the need to reorder :
+ * U+1031 MYANMAR VOWEL SIGN E : ေ
+ * U+1004 U+103A U+1039 Kinzi. It's a compound character.
+ *
+ * List of consonants :
+ * U+1000 MYANMAR LETTER KA က
+ * U+1001 MYANMAR LETTER KHA ခ
+ * U+1002 MYANMAR LETTER GA ဂ
+ * U+1003 MYANMAR LETTER GHA ဃ
+ * U+1004 MYANMAR LETTER NGA င
+ * U+1005 MYANMAR LETTER CA စ
+ * U+1006 MYANMAR LETTER CHA ဆ
+ * U+1007 MYANMAR LETTER JA ဇ
+ * U+1008 MYANMAR LETTER JHA ဈ
+ * U+1009 MYANMAR LETTER NYA ဉ
+ * U+100A MYANMAR LETTER NNYA ည
+ * U+100B MYANMAR LETTER TTA ဋ
+ * U+100C MYANMAR LETTER TTHA ဌ
+ * U+100D MYANMAR LETTER DDA ဍ
+ * U+100E MYANMAR LETTER DDHA ဎ
+ * U+100F MYANMAR LETTER NNA ဏ
+ * U+1010 MYANMAR LETTER TA တ
+ * U+1011 MYANMAR LETTER THA ထ
+ * U+1012 MYANMAR LETTER DA ဒ
+ * U+1013 MYANMAR LETTER DHA ဓ
+ * U+1014 MYANMAR LETTER NA န
+ * U+1015 MYANMAR LETTER PA ပ
+ * U+1016 MYANMAR LETTER PHA ဖ
+ * U+1017 MYANMAR LETTER BA ဗ
+ * U+1018 MYANMAR LETTER BHA ဘ
+ * U+1019 MYANMAR LETTER MA မ
+ * U+101A MYANMAR LETTER YA ယ
+ * U+101B MYANMAR LETTER RA ရ
+ * U+101C MYANMAR LETTER LA လ
+ * U+101D MYANMAR LETTER WA ဝ
+ * U+101E MYANMAR LETTER SA သ
+ * U+101F MYANMAR LETTER HA ဟ
+ * U+1020 MYANMAR LETTER LLA ဠ
+ * U+103F MYANMAR LETTER GREAT SA ဿ
+ *
+ * List of medials :
+ * U+103B MYANMAR CONSONANT SIGN MEDIAL YA ျ
+ * U+103C MYANMAR CONSONANT SIGN MEDIAL RA ြ
+ * U+103D MYANMAR CONSONANT SIGN MEDIAL WA ွ
+ * U+103E MYANMAR CONSONANT SIGN MEDIAL HA ှ
+ * U+105E MYANMAR CONSONANT SIGN MON MEDIAL NA ၞ
+ * U+105F MYANMAR CONSONANT SIGN MON MEDIAL MA ၟ
+ * U+1060 MYANMAR CONSONANT SIGN MON MEDIAL LA ၠ
+ * U+1082 MYANMAR CONSONANT SIGN SHAN MEDIAL WA ႂ
+ *
+ * Other relevant characters :
+ * U+200C ZERO WIDTH NON-JOINER
+ * U+200B ZERO WIDTH SPACE
+ */
+
+@LargeTest
+public class InputLogicTestsReorderingMyanmar extends InputTestsBase {
+    // The tests are formatted as follows.
+    // Each test is an entry in the array of Pair arrays.
+
+    // One test is an array of pairs. Each pair contains, in the `first' member,
+    // the code points that the next key press should contain. In the `second'
+    // member is stored the string that should be in the text view after this
+    // key press.
+
+    private static final Pair[][] TESTS = {
+
+        // Tests for U+1031 MYANMAR VOWEL SIGN E : ေ
+        new Pair[] { // Type : U+1031 U+1000 U+101F ေ က ဟ
+            Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
+            Pair.create(new int[] { 0x1000 }, "\u1000\u1031"), // ကေ
+            Pair.create(new int[] { 0x101F }, "\u1000\u1031\u101F") // ကေဟ
+        },
+
+        new Pair[] { // Type : U+1000 U+1031 U+101F က ေ ဟ
+            Pair.create(new int[] { 0x1000 }, "\u1000"), // က
+            Pair.create(new int[] { 0x1031 }, "\u1000\u200B\u1031"), // က‌ေ
+            Pair.create(new int[] { 0x101F }, "\u1000\u101F\u1031") // ကဟေ
+        },
+
+        new Pair[] { // Type : U+1031 U+101D U+103E U+1018 ေ ဝ ှ ဘ
+            Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
+            Pair.create(new int[] { 0x101D }, "\u101D\u1031"), // ဝေ
+            Pair.create(new int[] { 0x103E }, "\u101D\u103E\u1031"), // ဝှေ
+            Pair.create(new int[] { 0x1018 }, "\u101D\u103E\u1031\u1018") // ဝှေဘ
+        },
+
+        new Pair[] { // Type : U+1031 U+1014 U+1031 U+1000 U+102C U+1004 U+103A U+1038 U+101C
+            // U+102C U+1038 U+104B ေ န ေ က ာ င ် း လ ာ း ။
+            Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
+            Pair.create(new int[] { 0x1014 }, "\u1014\u1031"), // နေ
+            Pair.create(new int[] { 0x1031 }, "\u1014\u1031\u1031"), // နေ‌ေ
+            Pair.create(new int[] { 0x1000 }, "\u1014\u1031\u1000\u1031"), // နေကေ
+            Pair.create(new int[] { 0x102C }, "\u1014\u1031\u1000\u1031\u102C"), // နေကော
+            Pair.create(new int[] { 0x1004 }, "\u1014\u1031\u1000\u1031\u102C\u1004"), // နေကောင
+            Pair.create(new int[] { 0x103A }, // နေကောင်
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A"),
+            Pair.create(new int[] { 0x1038 }, // နေကောင်း
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038"),
+            Pair.create(new int[] { 0x101C }, // နေကောင်းလ
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C"),
+            Pair.create(new int[] { 0x102C }, // နေကောင်းလာ
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C\u102C"),
+            Pair.create(new int[] { 0x1038 }, // နေကောင်းလား
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C\u102C\u1038"),
+            Pair.create(new int[] { 0x104B }, // နေကောင်းလား။
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C\u102C\u1038\u104B")
+        },
+
+        new Pair[] { // Type : U+1031 U+1031 U+1031 U+1000 ေ ေ ေ က
+            Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
+            Pair.create(new int[] { 0x1031 }, "\u1031\u1031"), // ေေ
+            Pair.create(new int[] { 0x1031 }, "\u1031\u1031\u1031"), // U+1031ေေေ
+            Pair.create(new int[] { 0x1000 }, "\u1031\u1031\u1000\u1031") // ေေကေ
+        },
+
+        new Pair[] { // Type : U+1031 U+1001 U+103B U+103D U+1038 ေ ခ ျ ွ း
+            Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
+            Pair.create(new int[] { 0x1001 }, "\u1001\u1031"), // ခေ
+            Pair.create(new int[] { 0x103B }, "\u1001\u103B\u1031"), // ချေ
+            Pair.create(new int[] { 0x103D }, "\u1001\u103B\u103D\u1031"), // ချွေ
+            Pair.create(new int[] { 0x1038 }, "\u1001\u103B\u103D\u1031\u1038") // ချွေး
+        },
+
+        // Tests for Kinzi U+1004 U+103A U+1039 :
+
+        /* Kinzi reordering is not implemented yet. Uncomment these tests when it is.
+
+        new Pair[] { // Type : U+1021 U+1002 (U+1004 U+103A U+1039)
+            // U+101C U+1014 U+103A အ ဂ (င ် ္) လ န ်
+            Pair.create(new int[] { 0x1021 }, "\u1021"), // အ
+            Pair.create(new int[] { 0x1002 }, "\u1021\u1002"), // အဂ
+            Pair.create(new int[] { 0x1004, 0x103A, 0x1039 }, // အင်္ဂ
+                    "\u1021\u1004\u103A\u1039\u1002"),
+            Pair.create(new int[] { 0x101C }, // အင်္ဂလ
+                    "\u1021\u1004\u103A\u1039\u1002\u101C"),
+            Pair.create(new int[] { 0x1014 }, // အင်္ဂလန
+                    "\u1021\u1004\u103A\u1039\u1002\u101C\u1014"),
+            Pair.create(new int[] { 0x103A }, // အင်္ဂလန်
+                    "\u1021\u1004\u103A\u1039\u1002\u101C\u1014\u103A")
+        },
+
+        new Pair[] { //Type : kinzi after a whole syllable U+101E U+1001 U+103B U+102D U+102F
+            // (U+1004 U+103A U+1039) U+1004 U+103A U+1038 သ ခ ျ ိ ု င ် ္ င ် း
+            Pair.create(new int[] { 0x101E }, "\u101E"), // သခ
+            Pair.create(new int[] { 0x1001 }, "\u101E\u1001"), // သခ
+            Pair.create(new int[] { 0x103B }, "\u101E\u1001\u103B"), // သချ
+            Pair.create(new int[] { 0x102D }, "\u101E\u1001\u103B\u102D"), // သချိ
+            Pair.create(new int[] { 0x102F }, "\u101E\u1001\u103B\u102D\u102F"), // သချို
+            Pair.create(new int[] { 0x1004, 0x103A, 0x1039}, // သင်္ချို
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F"),
+            Pair.create(new int[] { 0x1004 }, // သင်္ချိုင
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004"),
+            Pair.create(new int[] { 0x103A }, // သင်္ချိုင်
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A"),
+            Pair.create(new int[] { 0x1038 }, // သင်္ချိုင်း
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A\u1038")
+        },
+
+        new Pair[] { // Type : kinzi after the consonant U+101E U+1001 (U+1004 U+103A U+1039)
+            // U+103B U+102D U+102F U+1004 U+103A U+1038 သ ခ င ် ္ ျ ိ ု င ် း
+            Pair.create(new int[] { 0x101E }, "\u101E"), // သခ
+            Pair.create(new int[] { 0x1001 }, "\u101E\u1001"), // သခ
+            Pair.create(new int[] { 0x1004, 0x103A, 0x1039 }, // သင်္ခ
+                    "\u101E\u1004\u103A\u1039\u1001"),
+            Pair.create(new int[] { 0x103B }, // သင်္ချ
+                    "\u101E\u1004\u103A\u1039\u1001\u103B"),
+            Pair.create(new int[] { 0x102D }, // သင်္ချိ
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D"),
+            Pair.create(new int[] { 0x102F }, // သင်္ချို
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F"),
+            Pair.create(new int[] { 0x1004 }, // သင်္ချိုင
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004"),
+            Pair.create(new int[] { 0x103A }, // သင်္ချိုင်
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A"),
+            Pair.create(new int[] { 0x1038 }, // သင်္ချိုင်း
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A\u1038")
+        },
+        */
+    };
+
+    private void doMyanmarTest(final int testNumber, final Pair[] test) {
+        int stepNumber = 0;
+        for (final Pair<int[], String> step : test) {
+            ++stepNumber;
+            final int[] input = step.first;
+            final String expectedResult = step.second;
+            if (input.length > 1) {
+                mLatinIME.onTextInput(new String(input, 0, input.length));
+            } else {
+                type(input[0]);
+            }
+            assertEquals("Myanmar reordering test " + testNumber + ", step " + stepNumber,
+                    expectedResult, mEditText.getText().toString());
+        }
+    }
+
+    public void testMyanmarReordering() {
+        int testNumber = 0;
+        changeLanguage("mm_MY");
+        for (final Pair[] test : TESTS) {
+            // Small trick to reset LatinIME : setText("") and send updateSelection with values
+            // LatinIME has never seen, and cursor pos 0,0.
+            mEditText.setText("");
+            mLatinIME.onUpdateSelection(1, 1, 0, 0, -1, -1);
+            doMyanmarTest(++testNumber, test);
+        }
+    }
+}
diff --git a/tools/dicttool/compat/com/android/inputmethod/event/CombinerChain.java b/tools/dicttool/compat/com/android/inputmethod/event/CombinerChain.java
index b68df1c..47f781e 100644
--- a/tools/dicttool/compat/com/android/inputmethod/event/CombinerChain.java
+++ b/tools/dicttool/compat/com/android/inputmethod/event/CombinerChain.java
@@ -20,6 +20,13 @@
 
 import java.util.ArrayList;
 
+/**
+ * Compatibility class that stands in for the combiner chain in LatinIME.
+ *
+ * This is not used by dicttool, it's just needed by the dependency chain.
+ */
+// TODO: there should not be a dependency to this in dicttool, so there
+// should be a sensible way to separate them cleanly.
 public class CombinerChain {
     private StringBuilder mComposingWord = new StringBuilder();
     public CombinerChain(final Combiner... combinerList) {}
@@ -35,4 +42,9 @@
     public void reset() {
         mComposingWord.setLength(0);
     }
+
+    public static Combiner[] createCombiners(final String spec) {
+        // Dicttool never uses a combiner at all, so we just return a zero-sized array.
+        return new Combiner[0];
+    }
 }
diff --git a/tools/make-keyboard-text/res/values-en/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-en/donottranslate-more-keys.xml
index 7998bf1..c22edba 100644
--- a/tools/make-keyboard-text/res/values-en/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-en/donottranslate-more-keys.xml
@@ -27,33 +27,33 @@
          U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
          U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
     <string name="morekeys_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
-    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
          U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
          U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
          U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
-    <string name="morekeys_e">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0113;</string>
-    <!-- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+    <string name="morekeys_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0113;</string>
+    <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
          U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
          U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
          U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE -->
-    <string name="morekeys_i">&#x00EE;,&#x00EF;,&#x00ED;,&#x012B;,&#x00EC;</string>
-    <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+    <string name="morekeys_i">&#x00ED;,&#x00EE;,&#x00EF;,&#x012B;,&#x00EC;</string>
+    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
          U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
          U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
          U+0153: "œ" LATIN SMALL LIGATURE OE
          U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
          U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
          U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE -->
-    <string name="morekeys_o">&#x00F4;,&#x00F6;,&#x00F2;,&#x00F3;,&#x0153;,&#x00F8;,&#x014D;,&#x00F5;</string>
-    <!-- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+    <string name="morekeys_o">&#x00F3;,&#x00F4;,&#x00F6;,&#x00F2;,&#x0153;,&#x00F8;,&#x014D;,&#x00F5;</string>
+    <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
          U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
          U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
          U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
-    <string name="morekeys_u">&#x00FB;,&#x00FC;,&#x00F9;,&#x00FA;,&#x016B;</string>
+    <string name="morekeys_u">&#x00FA;,&#x00FB;,&#x00FC;,&#x00F9;,&#x016B;</string>
     <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
     <string name="morekeys_s">&#x00DF;</string>
     <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
diff --git a/tools/make-keyboard-text/res/values-mr-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-mr-rIN/donottranslate-more-keys.xml
new file mode 100644
index 0000000..19db16d
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-mr-rIN/donottranslate-more-keys.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0915: "क" DEVANAGARI LETTER KA
+         U+0916: "ख" DEVANAGARI LETTER KHA
+         U+0917: "ग" DEVANAGARI LETTER GA -->
+    <string name="keylabel_to_alpha">&#x0915;&#x0916;&#x0917;</string>
+    <!-- U+0967: "१" DEVANAGARI DIGIT ONE -->
+    <string name="keyspec_symbols_1">&#x0967;</string>
+    <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
+    <string name="keyspec_symbols_2">&#x0968;</string>
+    <!-- U+0969: "३" DEVANAGARI DIGIT THREE -->
+    <string name="keyspec_symbols_3">&#x0969;</string>
+    <!-- U+096A: "४" DEVANAGARI DIGIT FOUR -->
+    <string name="keyspec_symbols_4">&#x096A;</string>
+    <!-- U+096B: "५" DEVANAGARI DIGIT FIVE -->
+    <string name="keyspec_symbols_5">&#x096B;</string>
+    <!-- U+096C: "६" DEVANAGARI DIGIT SIX -->
+    <string name="keyspec_symbols_6">&#x096C;</string>
+    <!-- U+096D: "७" DEVANAGARI DIGIT SEVEN -->
+    <string name="keyspec_symbols_7">&#x096D;</string>
+    <!-- U+096E: "८" DEVANAGARI DIGIT EIGHT -->
+    <string name="keyspec_symbols_8">&#x096E;</string>
+    <!-- U+096F: "९" DEVANAGARI DIGIT NINE -->
+    <string name="keyspec_symbols_9">&#x096F;</string>
+    <!-- U+0966: "०" DEVANAGARI DIGIT ZERO -->
+    <string name="keyspec_symbols_0">&#x0966;</string>
+    <!-- Label for "switch to symbols" key. -->
+    <string name="keylabel_to_symbol">?&#x0967;&#x0968;&#x0969;</string>
+    <string name="additional_morekeys_symbols_1">1</string>
+    <string name="additional_morekeys_symbols_2">2</string>
+    <string name="additional_morekeys_symbols_3">3</string>
+    <string name="additional_morekeys_symbols_4">4</string>
+    <string name="additional_morekeys_symbols_5">5</string>
+    <string name="additional_morekeys_symbols_6">6</string>
+    <string name="additional_morekeys_symbols_7">7</string>
+    <string name="additional_morekeys_symbols_8">8</string>
+    <string name="additional_morekeys_symbols_9">9</string>
+    <string name="additional_morekeys_symbols_0">0</string>
+    <!-- U+20B9: "₹" INDIAN RUPEE SIGN -->
+    <string name="keyspec_currency">&#x20B9;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-zu/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-zu/donottranslate-more-keys.xml
index f9150f3..2c5df0c 100644
--- a/tools/make-keyboard-text/res/values-zu/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-zu/donottranslate-more-keys.xml
@@ -28,33 +28,33 @@
          U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
          U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
     <string name="morekeys_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
-    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
          U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
          U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
          U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
-    <string name="morekeys_e">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0113;</string>
-    <!-- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+    <string name="morekeys_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0113;</string>
+    <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
          U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
          U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
          U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE -->
-    <string name="morekeys_i">&#x00EE;,&#x00EF;,&#x00ED;,&#x012B;,&#x00EC;</string>
-    <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+    <string name="morekeys_i">&#x00ED;,&#x00EE;,&#x00EF;,&#x012B;,&#x00EC;</string>
+    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
          U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
          U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
          U+0153: "œ" LATIN SMALL LIGATURE OE
          U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
          U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
          U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE -->
-    <string name="morekeys_o">&#x00F4;,&#x00F6;,&#x00F2;,&#x00F3;,&#x0153;,&#x00F8;,&#x014D;,&#x00F5;</string>
-    <!-- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+    <string name="morekeys_o">&#x00F3;,&#x00F4;,&#x00F6;,&#x00F2;,&#x0153;,&#x00F8;,&#x014D;,&#x00F5;</string>
+    <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
          U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
          U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
          U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
-    <string name="morekeys_u">&#x00FB;,&#x00FC;,&#x00F9;,&#x00FA;,&#x016B;</string>
+    <string name="morekeys_u">&#x00FA;,&#x00FB;,&#x00FC;,&#x00F9;,&#x016B;</string>
     <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
     <string name="morekeys_s">&#x00DF;</string>
     <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
