Merge "Import translations. DO NOT MERGE"
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png
deleted file mode 100644
index 1163290..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
deleted file mode 100644
index 207c90d..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png
deleted file mode 100644
index cdd6c8b..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png
deleted file mode 100644
index d842174..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
deleted file mode 100644
index 671d4e5..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_settings_language.png b/java/res/drawable-hdpi/ic_settings_language.png
deleted file mode 100644
index f635b2e..0000000
--- a/java/res/drawable-hdpi/ic_settings_language.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_background.9.png b/java/res/drawable-hdpi/keyboard_background.9.png
deleted file mode 100644
index d57463f..0000000
--- a/java/res/drawable-hdpi/keyboard_background.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_dark_background.9.png b/java/res/drawable-hdpi/keyboard_background_gb.9.png
similarity index 100%
rename from java/res/drawable-hdpi/keyboard_dark_background.9.png
rename to java/res/drawable-hdpi/keyboard_background_gb.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_background_holo.9.png b/java/res/drawable-hdpi/keyboard_background_ics.9.png
similarity index 100%
rename from java/res/drawable-hdpi/keyboard_background_holo.9.png
rename to java/res/drawable-hdpi/keyboard_background_ics.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_gb.9.png
similarity index 100%
rename from java/res/drawable-hdpi/keyboard_popup_panel_background.9.png
rename to java/res/drawable-hdpi/keyboard_popup_panel_background_gb.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png
similarity index 100%
rename from java/res/drawable-hdpi/keyboard_suggest_strip.9.png
rename to java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_delete.png b/java/res/drawable-hdpi/sym_bkeyboard_delete.png
deleted file mode 100644
index 1d24cc8..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_delete.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_label_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_label_mic.png
deleted file mode 100644
index 25702cf..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_label_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_mic.png
deleted file mode 100644
index 512f460..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_return.png b/java/res/drawable-hdpi/sym_bkeyboard_return.png
deleted file mode 100644
index 426e159..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_return.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_search.png b/java/res/drawable-hdpi/sym_bkeyboard_search.png
deleted file mode 100644
index 1b6f884..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_search.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_settings.png b/java/res/drawable-hdpi/sym_bkeyboard_settings.png
deleted file mode 100644
index 08ba18f..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_settings.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_shift.png b/java/res/drawable-hdpi/sym_bkeyboard_shift.png
deleted file mode 100644
index 5a22dd3..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_shift.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png b/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png
deleted file mode 100644
index 5664491..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_space.png b/java/res/drawable-hdpi/sym_bkeyboard_space.png
deleted file mode 100644
index cd0ebe2..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_space.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_tab.png b/java/res/drawable-hdpi/sym_bkeyboard_tab.png
deleted file mode 100644
index 3466e12..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_tab.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_voice_off.png b/java/res/drawable-hdpi/sym_bkeyboard_voice_off.png
deleted file mode 100644
index 081a130..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_voice_off.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_space_led.9.png b/java/res/drawable-hdpi/sym_keyboard_space_led_gb.9.png
similarity index 100%
rename from java/res/drawable-hdpi/sym_keyboard_space_led.9.png
rename to java/res/drawable-hdpi/sym_keyboard_space_led_gb.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png
deleted file mode 100644
index 4b1a78c..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png
deleted file mode 100644
index 697683e..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_stone.9.png
deleted file mode 100644
index cdd6c8b..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_stone.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_stone.9.png
deleted file mode 100644
index d842174..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_stone.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png
deleted file mode 100644
index 73cf35d..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_settings_language.png b/java/res/drawable-mdpi/ic_settings_language.png
deleted file mode 100644
index f8aca67..0000000
--- a/java/res/drawable-mdpi/ic_settings_language.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_background.9.png b/java/res/drawable-mdpi/keyboard_background.9.png
deleted file mode 100644
index 2bd4b62..0000000
--- a/java/res/drawable-mdpi/keyboard_background.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_dark_background.9.png b/java/res/drawable-mdpi/keyboard_background_gb.9.png
similarity index 100%
rename from java/res/drawable-mdpi/keyboard_dark_background.9.png
rename to java/res/drawable-mdpi/keyboard_background_gb.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_background_holo.9.png b/java/res/drawable-mdpi/keyboard_background_ics.9.png
similarity index 100%
rename from java/res/drawable-mdpi/keyboard_background_holo.9.png
rename to java/res/drawable-mdpi/keyboard_background_ics.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_gb.9.png
similarity index 100%
rename from java/res/drawable-mdpi/keyboard_popup_panel_background.9.png
rename to java/res/drawable-mdpi/keyboard_popup_panel_background_gb.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_suggest_strip.9.png b/java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png
similarity index 100%
rename from java/res/drawable-mdpi/keyboard_suggest_strip.9.png
rename to java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_delete.png b/java/res/drawable-mdpi/sym_bkeyboard_delete.png
deleted file mode 100644
index 1a5ff43..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_delete.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_label_mic.png b/java/res/drawable-mdpi/sym_bkeyboard_label_mic.png
deleted file mode 100644
index 7f0b135..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_label_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_mic.png b/java/res/drawable-mdpi/sym_bkeyboard_mic.png
deleted file mode 100644
index a6cb1cc..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_return.png b/java/res/drawable-mdpi/sym_bkeyboard_return.png
deleted file mode 100644
index e76225d..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_return.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_search.png b/java/res/drawable-mdpi/sym_bkeyboard_search.png
deleted file mode 100644
index 1f18015..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_search.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_settings.png b/java/res/drawable-mdpi/sym_bkeyboard_settings.png
deleted file mode 100644
index 08ba18f..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_settings.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_shift.png b/java/res/drawable-mdpi/sym_bkeyboard_shift.png
deleted file mode 100644
index c981188..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_shift.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_shift_locked.png b/java/res/drawable-mdpi/sym_bkeyboard_shift_locked.png
deleted file mode 100644
index b8cebd0..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_shift_locked.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_space.png b/java/res/drawable-mdpi/sym_bkeyboard_space.png
deleted file mode 100644
index 4da7ee8..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_space.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_tab.png b/java/res/drawable-mdpi/sym_bkeyboard_tab.png
deleted file mode 100644
index 2cb991c..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_tab.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_voice_off.png b/java/res/drawable-mdpi/sym_bkeyboard_voice_off.png
deleted file mode 100644
index 081a130..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_voice_off.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_space_led.9.png b/java/res/drawable-mdpi/sym_keyboard_space_led_gb.9.png
similarity index 100%
rename from java/res/drawable-mdpi/sym_keyboard_space_led.9.png
rename to java/res/drawable-mdpi/sym_keyboard_space_led_gb.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_normal.9.png
deleted file mode 100644
index f7e32f7..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png
deleted file mode 100644
index df3b5ba..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png
deleted file mode 100644
index dec2193..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png
deleted file mode 100644
index 3c77b3c..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png
deleted file mode 100644
index 5cdfc42..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_settings_language.png b/java/res/drawable-xhdpi/ic_settings_language.png
deleted file mode 100644
index 2c42db3..0000000
--- a/java/res/drawable-xhdpi/ic_settings_language.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_background.9.png b/java/res/drawable-xhdpi/keyboard_background.9.png
deleted file mode 100644
index 2639963..0000000
--- a/java/res/drawable-xhdpi/keyboard_background.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_dark_background.9.png b/java/res/drawable-xhdpi/keyboard_background_gb.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/keyboard_dark_background.9.png
rename to java/res/drawable-xhdpi/keyboard_background_gb.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_background_ics.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/keyboard_background_holo.9.png
rename to java/res/drawable-xhdpi/keyboard_background_ics.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_gb.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/keyboard_popup_panel_background.9.png
rename to java/res/drawable-xhdpi/keyboard_popup_panel_background_gb.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip.9.png b/java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/keyboard_suggest_strip.9.png
rename to java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_delete.png b/java/res/drawable-xhdpi/sym_bkeyboard_delete.png
deleted file mode 100644
index b84ee76..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_delete.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_label_mic.png b/java/res/drawable-xhdpi/sym_bkeyboard_label_mic.png
deleted file mode 100644
index 9bd1d65..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_label_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_mic.png b/java/res/drawable-xhdpi/sym_bkeyboard_mic.png
deleted file mode 100644
index 8c3f11d..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_return.png b/java/res/drawable-xhdpi/sym_bkeyboard_return.png
deleted file mode 100644
index 1632ecd..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_return.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_search.png b/java/res/drawable-xhdpi/sym_bkeyboard_search.png
deleted file mode 100644
index 69d8b22..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_search.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_settings.png b/java/res/drawable-xhdpi/sym_bkeyboard_settings.png
deleted file mode 100644
index 050154a..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_settings.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_shift.png b/java/res/drawable-xhdpi/sym_bkeyboard_shift.png
deleted file mode 100644
index d15d11a..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_shift.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_shift_locked.png b/java/res/drawable-xhdpi/sym_bkeyboard_shift_locked.png
deleted file mode 100644
index 83b287f..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_shift_locked.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_space.png b/java/res/drawable-xhdpi/sym_bkeyboard_space.png
deleted file mode 100644
index 5ca62c7..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_space.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_tab.png b/java/res/drawable-xhdpi/sym_bkeyboard_tab.png
deleted file mode 100644
index 6ca1997..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_tab.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_voice_off.png b/java/res/drawable-xhdpi/sym_bkeyboard_voice_off.png
deleted file mode 100644
index fc6a4eb..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_voice_off.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_space_led.9.png b/java/res/drawable-xhdpi/sym_keyboard_space_led_gb.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/sym_keyboard_space_led.9.png
rename to java/res/drawable-xhdpi/sym_keyboard_space_led_gb.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_background_holo.9.png b/java/res/drawable-xxhdpi/keyboard_background_ics.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/keyboard_background_holo.9.png
rename to java/res/drawable-xxhdpi/keyboard_background_ics.9.png
Binary files differ
diff --git a/java/res/drawable/btn_keyboard_key.xml b/java/res/drawable/btn_keyboard_key.xml
deleted file mode 100644
index 112ac26..0000000
--- a/java/res/drawable/btn_keyboard_key.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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">
-    <!-- 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_pressed_on" />
-    <item android:state_checkable="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed_off" />
-    <item android:state_checkable="true" android:state_checked="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_on" />
-    <item android:state_checkable="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_off" />
-
-    <!-- Empty background keys. -->
-    <item android:state_empty="true"
-          android:drawable="@drawable/transparent" />
-
-    <!-- Normal keys. -->
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_pressed" />
-    <item android:drawable="@drawable/btn_keyboard_key_normal" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key3.xml b/java/res/drawable/btn_keyboard_key3.xml
deleted file mode 100644
index 080b1f3..0000000
--- a/java/res/drawable/btn_keyboard_key3.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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">
-    <!-- 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_pressed_on" />
-    <item android:state_checkable="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_fulltrans_normal" />
-    <item android:state_checkable="true" android:state_checked="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_on" />
-    <item android:state_checkable="true"
-          android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" />
-
-    <!-- Empty background keys. -->
-    <item android:state_empty="true"
-          android:drawable="@drawable/transparent" />
-
-    <!-- Normal keys. -->
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_fulltrans_normal" />
-    <item android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_gingerbread.xml b/java/res/drawable/btn_keyboard_key_gb.xml
similarity index 100%
rename from java/res/drawable/btn_keyboard_key_gingerbread.xml
rename to java/res/drawable/btn_keyboard_key_gb.xml
diff --git a/java/res/drawable/btn_keyboard_key_popup.xml b/java/res/drawable/btn_keyboard_key_popup_gb.xml
similarity index 100%
rename from java/res/drawable/btn_keyboard_key_popup.xml
rename to java/res/drawable/btn_keyboard_key_popup_gb.xml
diff --git a/java/res/drawable/btn_keyboard_key_stone.xml b/java/res/drawable/btn_keyboard_key_stone.xml
deleted file mode 100644
index 70a2ad4..0000000
--- a/java/res/drawable/btn_keyboard_key_stone.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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="@drawable/btn_keyboard_key_fulltrans_pressed" />
-    <item android:state_single="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_stone" />
-
-    <!-- Action keys. -->
-    <item android:state_active="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" />
-    <item android:state_active="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_stone" />
-
-    <!-- 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_normal_on_stone" />
-    <item android:state_checkable="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_off_stone" />
-    <item android:state_checkable="true" android:state_checked="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_on_stone" />
-    <item android:state_checkable="true"
-          android:drawable="@drawable/btn_keyboard_key_normal_off_stone" />
-
-    <!-- Empty background keys. -->
-    <item android:state_empty="true"
-          android:drawable="@drawable/transparent" />
-
-    <!-- Normal keys. -->
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" />
-    <item android:drawable="@drawable/btn_keyboard_key_normal_stone" />
-</selector>
diff --git a/java/res/drawable/btn_suggestion.xml b/java/res/drawable/btn_suggestion_gb.xml
similarity index 100%
rename from java/res/drawable/btn_suggestion.xml
rename to java/res/drawable/btn_suggestion_gb.xml
diff --git a/java/res/drawable/keyboard_key_feedback.xml b/java/res/drawable/keyboard_key_feedback_gb.xml
similarity index 100%
rename from java/res/drawable/keyboard_key_feedback.xml
rename to java/res/drawable/keyboard_key_feedback_gb.xml
diff --git a/java/res/layout/hint_add_to_dictionary.xml b/java/res/layout/hint_add_to_dictionary.xml
index 73de44f..63d4001 100644
--- a/java/res/layout/hint_add_to_dictionary.xml
+++ b/java/res/layout/hint_add_to_dictionary.xml
@@ -33,4 +33,4 @@
     android:clickable="false"
     android:singleLine="true"
     android:ellipsize="none"
-    style="?attr/suggestionBackgroundStyle" />
+    android:background="?attr/suggestionBackground" />
diff --git a/java/res/layout/input_view.xml b/java/res/layout/input_view.xml
index 78217b0..51133b2 100644
--- a/java/res/layout/input_view.xml
+++ b/java/res/layout/input_view.xml
@@ -34,6 +34,7 @@
         android:layout_height="@dimen/suggestions_strip_height"
         android:paddingRight="@dimen/suggestions_strip_padding"
         android:paddingLeft="@dimen/suggestions_strip_padding"
+        android:background="?attr/suggestionStripBackground"
         style="?attr/suggestionStripViewStyle" />
     <!-- To ensure that key preview popup is correctly placed when the current system locale is
          one of RTL locales, layoutDirection="ltr" is needed in the SDK version 17+. -->
diff --git a/java/res/layout/key_preview.xml b/java/res/layout/key_preview_gb.xml
similarity index 93%
rename from java/res/layout/key_preview.xml
rename to java/res/layout/key_preview_gb.xml
index 2fcd0c4..2f2a321 100644
--- a/java/res/layout/key_preview.xml
+++ b/java/res/layout/key_preview_gb.xml
@@ -21,7 +21,7 @@
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:background="@drawable/keyboard_key_feedback"
+    android:background="@drawable/keyboard_key_feedback_gb"
     android:minWidth="32dp"
     android:gravity="center"
 />
diff --git a/java/res/layout/more_keys_keyboard.xml b/java/res/layout/more_keys_keyboard.xml
index 6b2464b..cab3abc 100644
--- a/java/res/layout/more_keys_keyboard.xml
+++ b/java/res/layout/more_keys_keyboard.xml
@@ -17,17 +17,17 @@
 ** limitations under the License.
 */
 -->
+
 <LinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        style="?attr/moreKeysKeyboardPanelStyle"
-        >
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
+    android:background="?attr/moreKeysKeyboardBackground"
+>
     <com.android.inputmethod.keyboard.MoreKeysKeyboardView
-            xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-            android:id="@+id/more_keys_keyboard_view"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            />
+        xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+        android:id="@+id/more_keys_keyboard_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
 </LinearLayout>
diff --git a/java/res/layout/more_suggestions.xml b/java/res/layout/more_suggestions.xml
index b41bb8a..0ec0ed1 100644
--- a/java/res/layout/more_suggestions.xml
+++ b/java/res/layout/more_suggestions.xml
@@ -17,21 +17,21 @@
 ** limitations under the License.
 */
 -->
+
 <LinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
+    android:background="?attr/moreKeysKeyboardBackground"
+>
+    <com.android.inputmethod.latin.suggestions.MoreSuggestionsView
+        xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+        android:id="@+id/more_suggestions_view"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        style="?attr/moreKeysKeyboardPanelStyle"
-        >
-    <com.android.inputmethod.latin.suggestions.MoreSuggestionsView
-            xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-            android:id="@+id/more_suggestions_view"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            latin:keyLetterSize="@dimen/suggestion_text_size"
-            latin:keyLabelSize="@dimen/suggestion_text_size"
-            latin:keyHintLetterRatio="@fraction/more_suggestions_info_ratio"
-            latin:keyHintLetterColor="@android:color/white"
-            />
+        latin:keyLetterSize="@dimen/suggestion_text_size"
+        latin:keyLabelSize="@dimen/suggestion_text_size"
+        latin:keyHintLetterRatio="@fraction/more_suggestions_info_ratio"
+        latin:keyHintLetterColor="@android:color/white" />
 </LinearLayout>
diff --git a/java/res/layout/suggestion_info.xml b/java/res/layout/suggestion_info.xml
index a4ad6df..8b0ee34 100644
--- a/java/res/layout/suggestion_info.xml
+++ b/java/res/layout/suggestion_info.xml
@@ -24,4 +24,4 @@
     android:layout_height="wrap_content"
     android:textSize="6dp"
     android:textColor="@android:color/white"
-    style="?attr/suggestionBackgroundStyle" />
+    android:background="?attr/suggestionBackground" />
diff --git a/java/res/layout/suggestion_word.xml b/java/res/layout/suggestion_word.xml
index fa00e04..e32e695 100644
--- a/java/res/layout/suggestion_word.xml
+++ b/java/res/layout/suggestion_word.xml
@@ -36,4 +36,4 @@
     android:clickable="false"
     android:singleLine="true"
     android:ellipsize="none"
-    style="?attr/suggestionBackgroundStyle" />
+    android:background="?attr/suggestionBackground" />
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index d411cb9..c954e60 100644
--- a/java/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
@@ -26,14 +26,8 @@
     <!-- key_height + key_bottom_gap = popup_key_height -->
     <dimen name="popup_key_height">44.8dp</dimen>
 
-    <fraction name="keyboard_top_padding">1.818%p</fraction>
-    <fraction name="keyboard_bottom_padding">0.0%p</fraction>
-    <fraction name="key_bottom_gap">4.330%p</fraction>
-    <fraction name="key_horizontal_gap">0.405%p</fraction>
-
-    <fraction name="key_bottom_gap_stone">5.010%p</fraction>
-    <fraction name="key_horizontal_gap_stone">1.159%p</fraction>
-
+    <fraction name="keyboard_top_padding_gb">1.818%p</fraction>
+    <fraction name="keyboard_bottom_padding_gb">0.0%p</fraction>
     <fraction name="key_bottom_gap_gb">5.941%p</fraction>
     <fraction name="key_horizontal_gap_gb">0.997%p</fraction>
 
@@ -53,7 +47,7 @@
     <fraction name="key_uppercase_letter_ratio">40%</fraction>
     <fraction name="key_preview_text_ratio">90%</fraction>
     <fraction name="spacebar_text_ratio">40.000%</fraction>
-    <dimen name="key_preview_offset">0.0dp</dimen>
+    <dimen name="key_preview_offset_gb">0.0dp</dimen>
 
     <!-- For 5-row keyboard -->
     <fraction name="key_bottom_gap_5row">3.20%p</fraction>
@@ -72,7 +66,7 @@
     <!-- popup_key_height x 1.2 -->
     <dimen name="more_keys_keyboard_slide_allowance">53.76dp</dimen>
     <!-- popup_key_height x -1.0 -->
-    <dimen name="more_keys_keyboard_vertical_correction">-44.8dp</dimen>
+    <dimen name="more_keys_keyboard_vertical_correction_gb">-44.8dp</dimen>
 
     <!-- Gesture floating preview text parameters -->
     <dimen name="gesture_floating_preview_text_size">23dp</dimen>
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index 51c710f..cda462f 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -24,20 +24,15 @@
     <dimen name="keyboardHeight">283.5dp</dimen>
     <fraction name="minKeyboardHeight">45%p</fraction>
 
-    <fraction name="keyboard_top_padding">2.444%p</fraction>
-    <fraction name="keyboard_bottom_padding">0.0%p</fraction>
-    <fraction name="key_bottom_gap">4.911%p</fraction>
-    <fraction name="key_horizontal_gap">1.284%p</fraction>
-
-    <fraction name="key_bottom_gap_stone">4.355%p</fraction>
-    <fraction name="key_horizontal_gap_stone">1.505%p</fraction>
-
+    <fraction name="keyboard_top_padding_gb">2.444%p</fraction>
+    <fraction name="keyboard_bottom_padding_gb">0.0%p</fraction>
     <fraction name="key_bottom_gap_gb">5.200%p</fraction>
     <fraction name="key_horizontal_gap_gb">1.447%p</fraction>
 
+    <fraction name="keyboard_top_padding_ics">2.727%p</fraction>
+    <fraction name="keyboard_bottom_padding_ics">0.0%p</fraction>
     <fraction name="key_bottom_gap_ics">4.5%p</fraction>
     <fraction name="key_horizontal_gap_ics">0.9%p</fraction>
-    <fraction name="keyboard_bottom_padding_ics">0.0%p</fraction>
 
     <dimen name="popup_key_height">81.9dp</dimen>
 
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml
index 8265651..93862a7 100644
--- a/java/res/values-sw600dp/config.xml
+++ b/java/res/values-sw600dp/config.xml
@@ -28,8 +28,6 @@
     <bool name="config_auto_correction_spacebar_led_enabled">false</bool>
     <!-- The language is never displayed if == 0, always displayed if < 0 -->
     <integer name="config_delay_before_fadeout_language_on_spacebar">1200</integer>
-    <!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. -->
-    <string name="config_default_keyboard_theme_index" translatable="false">5</string>
     <integer name="config_max_more_keys_column">5</integer>
     <!--
         Configuration for MainKeyboardView
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 75b476c..7dfd0b1 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -27,27 +27,22 @@
 
     <dimen name="popup_key_height">63.0dp</dimen>
 
-    <fraction name="keyboard_top_padding">2.291%p</fraction>
-    <fraction name="keyboard_bottom_padding">0.0%p</fraction>
-    <fraction name="key_bottom_gap">3.750%p</fraction>
-    <fraction name="key_horizontal_gap">1.857%p</fraction>
-
-    <fraction name="key_bottom_gap_stone">3.75%p</fraction>
-    <fraction name="key_horizontal_gap_stone">1.602%p</fraction>
-
+    <fraction name="keyboard_top_padding_gb">2.291%p</fraction>
+    <fraction name="keyboard_bottom_padding_gb">0.0%p</fraction>
     <fraction name="key_bottom_gap_gb">4.625%p</fraction>
     <fraction name="key_horizontal_gap_gb">2.113%p</fraction>
 
+    <fraction name="keyboard_top_padding_ics">2.335%p</fraction>
+    <fraction name="keyboard_bottom_padding_ics">4.0%p</fraction>
     <fraction name="key_bottom_gap_ics">4.5%p</fraction>
     <fraction name="key_horizontal_gap_ics">1.565%p</fraction>
-    <fraction name="keyboard_bottom_padding_ics">4.0%p</fraction>
 
     <dimen name="more_keys_keyboard_key_horizontal_padding">6dp</dimen>
     <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
     <!-- popup_key_height x 1.2 -->
     <dimen name="more_keys_keyboard_slide_allowance">98.3dp</dimen>
     <!-- popup_key_height x -1.0 -->
-    <dimen name="more_keys_keyboard_vertical_correction">-81.9dp</dimen>
+    <dimen name="more_keys_keyboard_vertical_correction_gb">-81.9dp</dimen>
 
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_padding">6dp</dimen>
@@ -64,7 +59,7 @@
     <fraction name="key_preview_text_ratio">50%</fraction>
     <fraction name="spacebar_text_ratio">28.0%</fraction>
     <dimen name="key_preview_height">94.5dp</dimen>
-    <dimen name="key_preview_offset">16.0dp</dimen>
+    <dimen name="key_preview_offset_gb">16.0dp</dimen>
 
     <!-- For 5-row keyboard -->
     <fraction name="key_bottom_gap_5row">3.20%p</fraction>
diff --git a/java/res/values-sw600dp/touch-position-correction.xml b/java/res/values-sw600dp/touch-position-correction.xml
index f77d3ae..df07c12 100644
--- a/java/res/values-sw600dp/touch-position-correction.xml
+++ b/java/res/values-sw600dp/touch-position-correction.xml
@@ -37,7 +37,7 @@
     </string-array>
 
     <string-array
-        name="touch_position_correction_data_gingerbread"
+        name="touch_position_correction_data_gb"
         translatable="false"
     >
         <!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo)
@@ -48,7 +48,7 @@
     </string-array>
 
     <string-array
-        name="touch_position_correction_data_ice_cream_sandwich"
+        name="touch_position_correction_data_ics"
         translatable="false"
     >
         <!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo)
diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index f4a57ff..0a70480 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -24,15 +24,8 @@
     <dimen name="keyboardHeight">365.4dp</dimen>
     <fraction name="minKeyboardHeight">45%p</fraction>
 
-    <fraction name="keyboard_top_padding">1.896%p</fraction>
-    <fraction name="keyboard_bottom_padding">0.0%p</fraction>
-
-    <fraction name="key_bottom_gap">4.103%p</fraction>
-    <fraction name="key_horizontal_gap">1.034%p</fraction>
-
-    <fraction name="key_bottom_gap_stone">3.379%p</fraction>
-    <fraction name="key_horizontal_gap_stone">1.062%p</fraction>
-
+    <fraction name="keyboard_top_padding_gb">1.896%p</fraction>
+    <fraction name="keyboard_bottom_padding_gb">0.0%p</fraction>
     <fraction name="key_bottom_gap_gb">3.896%p</fraction>
     <fraction name="key_horizontal_gap_gb">1.195%p</fraction>
 
diff --git a/java/res/values-sw768dp/config.xml b/java/res/values-sw768dp/config.xml
index 97f11cb..e1c07d6 100644
--- a/java/res/values-sw768dp/config.xml
+++ b/java/res/values-sw768dp/config.xml
@@ -26,8 +26,6 @@
     <bool name="config_default_key_preview_popup">false</bool>
     <bool name="config_default_sound_enabled">true</bool>
     <bool name="config_auto_correction_spacebar_led_enabled">false</bool>
-    <!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. -->
-    <string name="config_default_keyboard_theme_index" translatable="false">5</string>
     <integer name="config_max_more_keys_column">5</integer>
     <!--
         Configuration for MainKeyboardView
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index 91251f5..877e83b 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -25,18 +25,12 @@
     <fraction name="maxKeyboardHeight">46%p</fraction>
     <fraction name="minKeyboardHeight">-35.0%p</fraction>
 
-    <fraction name="keyboard_top_padding">2.291%p</fraction>
-    <fraction name="keyboard_bottom_padding">0.0%p</fraction>
-
-    <fraction name="key_bottom_gap">4.270%p</fraction>
-    <fraction name="key_horizontal_gap">1.551%p</fraction>
-
-    <fraction name="key_bottom_gap_stone">3.75%p</fraction>
-    <fraction name="key_horizontal_gap_stone">1.059%p</fraction>
-
+    <fraction name="keyboard_top_padding_gb">2.291%p</fraction>
+    <fraction name="keyboard_bottom_padding_gb">0.0%p</fraction>
     <fraction name="key_bottom_gap_gb">4.687%p</fraction>
     <fraction name="key_horizontal_gap_gb">1.272%p</fraction>
 
+    <fraction name="keyboard_top_padding_ics">2.335%p</fraction>
     <fraction name="keyboard_bottom_padding_ics">0.0%p</fraction>
     <fraction name="key_bottom_gap_ics">3.312%p</fraction>
     <fraction name="key_horizontal_gap_ics">1.066%p</fraction>
@@ -48,7 +42,7 @@
     <!-- popup_key_height x 1.2 -->
     <dimen name="more_keys_keyboard_slide_allowance">98.3dp</dimen>
     <!-- popup_key_height x -1.0 -->
-    <dimen name="more_keys_keyboard_vertical_correction">-81.9dp</dimen>
+    <dimen name="more_keys_keyboard_vertical_correction_gb">-81.9dp</dimen>
 
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_padding">6dp</dimen>
@@ -65,7 +59,7 @@
     <fraction name="key_preview_text_ratio">50%</fraction>
     <fraction name="spacebar_text_ratio">29.03%</fraction>
     <dimen name="key_preview_height">94.5dp</dimen>
-    <dimen name="key_preview_offset">16.0dp</dimen>
+    <dimen name="key_preview_offset_gb">16.0dp</dimen>
 
     <!-- For 5-row keyboard -->
     <fraction name="key_bottom_gap_5row">2.95%p</fraction>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 7ebaf75..159a64a 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -1,17 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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.
+<!--
+/*
+**
+** Copyright 2010, 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>
@@ -26,11 +30,12 @@
         <attr name="moreKeysKeyboardStyle" format="reference" />
         <!-- MoreKeysKeyboardView style -->
         <attr name="moreKeysKeyboardViewStyle" format="reference" />
-        <attr name="moreKeysKeyboardPanelStyle" format="reference" />
         <!-- Suggestions strip style -->
         <attr name="suggestionStripViewStyle" format="reference" />
-        <attr name="moreSuggestionsViewStyle" format="reference" />
-        <attr name="suggestionBackgroundStyle" format="reference" />
+        <!-- Styled attributes for android:background -->
+        <attr name="moreKeysKeyboardBackground" format="reference" />
+        <attr name="suggestionStripBackground" format="reference" />
+        <attr name="suggestionBackground" format="reference" />
     </declare-styleable>
 
     <declare-styleable name="KeyboardView">
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 598a5d0..ea762f9 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -1,44 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
+<!--
+/*
+**
+** 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.
+*/
 -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Color resources for default, and Gingerbread theme. -->
-    <color name="highlight_color_default">#FFFCAE00</color>
-    <color name="highlight_translucent_color_default">#99FCAE00</color>
-    <color name="key_text_color_default">@android:color/white</color>
-    <color name="key_text_shadow_color_default">#BB000000</color>
-    <color name="key_text_inactivated_color_default">@android:color/white</color>
-    <color name="key_hint_letter_color_default">#80000000</color>
-    <color name="key_hint_label_color_default">#E0E0E4E5</color>
-    <color name="key_shifted_letter_hint_inactivated_color_default">#66E0E4E5</color>
-    <color name="key_shifted_letter_hint_activated_color_default">#CCE0E4E5</color>
-    <color name="spacebar_text_color_default">#FFC0C0C0</color>
-    <color name="spacebar_text_shadow_color_default">#80000000</color>
-    <color name="typed_word_color_default">@android:color/white</color>
-    <color name="gesture_floating_preview_color_default">#C0000000</color>
-    <!-- Color resources for Stone theme. -->
-    <color name="key_text_color_stone">@android:color/black</color>
-    <color name="key_text_shadow_color_stone">@android:color/white</color>
-    <color name="key_text_inactivated_color_stone">#FF808080</color>
-    <color name="key_hint_letter_color_stone">#80000000</color>
-    <color name="key_hint_label_color_stone">#E0000000</color>
-    <color name="key_shifted_letter_hint_inactivated_color_stone">#66000000</color>
-    <color name="key_shifted_letter_hint_activated_color_stone">#CC000000</color>
-    <color name="spacebar_text_color_stone">@android:color/black</color>
-    <color name="spacebar_text_shadow_color_stone">#D0FFFFFF</color>
+    <!-- Color resources for Gingerbread theme. -->
+    <color name="highlight_color_gb">#FFFCAE00</color>
+    <color name="typed_word_color_gb">@android:color/white</color>
+    <color name="highlight_translucent_color_gb">#99FCAE00</color>
+    <color name="key_text_color_gb">@android:color/white</color>
+    <color name="key_text_shadow_color_gb">#BB000000</color>
+    <color name="key_text_inactivated_color_gb">#66E0E4E5</color>
+    <color name="key_hint_letter_color_gb">#80000000</color>
+    <color name="key_hint_label_color_gb">#E0E0E4E5</color>
+    <color name="key_shifted_letter_hint_inactivated_color_gb">#66E0E4E5</color>
+    <color name="key_shifted_letter_hint_activated_color_gb">#CCE0E4E5</color>
+    <color name="spacebar_text_color_gb">#FFC0C0C0</color>
+    <color name="spacebar_text_shadow_color_gb">#80000000</color>
+    <color name="gesture_floating_preview_color_gb">#C0000000</color>
     <!-- Color resources for IceCreamSandwich theme. -->
     <!-- android:color/holo_blue_light value is #FF33B5E5 -->
     <color name="highlight_color_ics">#FF33B5E5</color>
@@ -54,6 +48,7 @@
     <color name="key_shifted_letter_hint_activated_color_ics">@android:color/white</color>
     <color name="spacebar_text_color_ics">#FFC0C0C0</color>
     <color name="spacebar_text_shadow_color_ics">#80000000</color>
+    <color name="gesture_floating_preview_color_ics">#C0000000</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.xml b/java/res/values/config.xml
index d3a21f2..465d52c 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -42,7 +42,7 @@
     <integer name="config_keyboard_grid_height">16</integer>
     <integer name="config_double_space_period_timeout">1100</integer>
     <!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. -->
-    <string name="config_default_keyboard_theme_index" translatable="false">5</string>
+    <string name="config_default_keyboard_theme_index" translatable="false">0</string>
     <integer name="config_max_more_keys_column">5</integer>
 
     <!--
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index bb5f0bb..599af12 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -29,18 +29,11 @@
 
     <dimen name="more_keys_keyboard_key_horizontal_padding">8dp</dimen>
 
-    <fraction name="keyboard_top_padding">1.556%p</fraction>
-    <fraction name="keyboard_bottom_padding">4.669%p</fraction>
     <fraction name="keyboard_left_padding">0%p</fraction>
     <fraction name="keyboard_right_padding">0%p</fraction>
-    <fraction name="key_bottom_gap">6.250%p</fraction>
-    <fraction name="key_horizontal_gap">1.352%p</fraction>
 
-    <fraction name="keyboard_top_padding_stone">1.556%p</fraction>
-    <fraction name="keyboard_bottom_padding_stone">0.778%p</fraction>
-    <fraction name="key_bottom_gap_stone">7.506%p</fraction>
-    <fraction name="key_horizontal_gap_stone">1.739%p</fraction>
-
+    <fraction name="keyboard_top_padding_gb">1.556%p</fraction>
+    <fraction name="keyboard_bottom_padding_gb">4.669%p</fraction>
     <fraction name="key_bottom_gap_gb">6.495%p</fraction>
     <fraction name="key_horizontal_gap_gb">1.971%p</fraction>
 
@@ -48,13 +41,12 @@
     <fraction name="keyboard_bottom_padding_ics">4.669%p</fraction>
     <fraction name="key_bottom_gap_ics">6.127%p</fraction>
     <fraction name="key_horizontal_gap_ics">1.739%p</fraction>
-    <dimen name="more_keys_keyboard_horizontal_edges_padding_ics">4dp</dimen>
 
     <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
     <!-- popup_key_height x 1.2 -->
     <dimen name="more_keys_keyboard_slide_allowance">63.36dp</dimen>
     <!-- popup_key_height x -1.0 -->
-    <dimen name="more_keys_keyboard_vertical_correction">-52.8dp</dimen>
+    <dimen name="more_keys_keyboard_vertical_correction_gb">-52.8dp</dimen>
     <dimen name="keyboard_vertical_correction">0.0dp</dimen>
 
     <fraction name="key_letter_ratio">55%</fraction>
@@ -67,7 +59,7 @@
     <fraction name="key_preview_text_ratio">82%</fraction>
     <fraction name="spacebar_text_ratio">33.735%</fraction>
     <dimen name="key_preview_height">80dp</dimen>
-    <dimen name="key_preview_offset">-8.0dp</dimen>
+    <dimen name="key_preview_offset_gb">-8.0dp</dimen>
 
     <dimen name="key_label_horizontal_padding">4dp</dimen>
     <dimen name="key_hint_letter_padding">1dp</dimen>
diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index 8983536..52ebe16 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -98,29 +98,17 @@
     <string name="prefs_force_non_distinct_multitouch">Force non-distinct multitouch</string>
 
     <!-- Keyboard theme names -->
-    <string name="layout_basic">Basic</string>
-    <string name="layout_high_contrast">Basic (High Contrast)</string>
-    <string name="layout_stone_bold">Stone (bold)</string>
-    <string name="layout_stone_normal">Stone (normal)</string>
     <string name="layout_gingerbread">Gingerbread</string>
     <string name="layout_ics">IceCreamSandwich</string>
 
     <!-- For keyboard theme switcher dialog -->
     <string-array name="keyboard_layout_modes">
-        <item>@string/layout_basic</item>
-        <item>@string/layout_high_contrast</item>
-        <item>@string/layout_stone_normal</item>
-        <item>@string/layout_stone_bold</item>
-        <item>@string/layout_gingerbread</item>
         <item>@string/layout_ics</item>
+        <item>@string/layout_gingerbread</item>
     </string-array>
     <string-array name="keyboard_layout_modes_values">
         <item>0</item>
         <item>1</item>
-        <item>2</item>
-        <item>3</item>
-        <item>4</item>
-        <item>5</item>
     </string-array>
 
     <!-- Subtype locale display name exceptions.
diff --git a/java/res/values/emoji-categories.xml b/java/res/values/emoji-categories.xml
index 734a7a7..99d7b23 100644
--- a/java/res/values/emoji-categories.xml
+++ b/java/res/values/emoji-categories.xml
@@ -1,17 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
+<!--
+/*
+**
+** Copyright 2013, 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.
+*/
 -->
 
 <!-- Note: This emoji code point list is valid prior to JB-MR2 (API < 18).
diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml
deleted file mode 100644
index c1b1b65..0000000
--- a/java/res/values/keyboard-icons-black.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <style name="KeyboardIcons.Black">
-        <!-- Keyboard icons -->
-        <!-- TODO: The following holo icon for phone (drawable-hdpi and drawable-xhdpi) are too
-             ambiguous.
-             sym_bkeyboard_voice_off
-          -->
-        <item name="iconShiftKey">@drawable/sym_bkeyboard_shift</item>
-        <item name="iconDeleteKey">@drawable/sym_bkeyboard_delete</item>
-        <item name="iconSettingsKey">@drawable/sym_bkeyboard_settings</item>
-        <item name="iconSpaceKey">@drawable/sym_bkeyboard_space</item>
-        <item name="iconEnterKey">@drawable/sym_bkeyboard_return</item>
-        <item name="iconSearchKey">@drawable/sym_bkeyboard_search</item>
-        <item name="iconTabKey">@drawable/sym_bkeyboard_tab</item>
-        <item name="iconShortcutKey">@drawable/sym_bkeyboard_mic</item>
-        <item name="iconShortcutForLabel">@drawable/sym_bkeyboard_label_mic</item>
-        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_bkeyboard_space</item>
-        <item name="iconShiftKeyShifted">@drawable/sym_bkeyboard_shift_locked</item>
-        <item name="iconShortcutKeyDisabled">@drawable/sym_bkeyboard_voice_off</item>
-        <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item>
-        <!-- TODO: Needs dedicated black theme globe icon -->
-        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item>
-        <!-- TODO: Needs dedicated black theme ZWNJ and ZWJ icons -->
-        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo</item>
-        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo</item>
-        <item name="iconEmojiKey">@drawable/ic_emoji_light</item>
-    </style>
-</resources>
diff --git a/java/res/values/keyboard-icons-ics.xml b/java/res/values/keyboard-icons-ics.xml
deleted file mode 100644
index 5ada27a..0000000
--- a/java/res/values/keyboard-icons-ics.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <style name="KeyboardIcons.IceCreamSandwich">
-        <!-- 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</item>
-        <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo</item>
-        <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo</item>
-        <item name="iconSpaceKey">@null</item>
-        <item name="iconEnterKey">@drawable/sym_keyboard_return_holo</item>
-        <item name="iconSearchKey">@drawable/sym_keyboard_search_holo</item>
-        <item name="iconTabKey">@drawable/sym_keyboard_tab_holo</item>
-        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo</item>
-        <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic_holo</item>
-        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo</item>
-        <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo</item>
-        <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo</item>
-        <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item>
-        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item>
-        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo</item>
-        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo</item>
-        <item name="iconEmojiKey">@drawable/ic_emoji_light</item>
-    </style>
-</resources>
diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml
deleted file mode 100644
index 7c6de42..0000000
--- a/java/res/values/keyboard-icons-white.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <style name="KeyboardIcons">
-        <!-- Keyboard icons -->
-        <item name="iconShiftKey">@drawable/sym_keyboard_shift</item>
-        <item name="iconDeleteKey">@drawable/sym_keyboard_delete</item>
-        <item name="iconSettingsKey">@drawable/sym_keyboard_settings</item>
-        <item name="iconSpaceKey">@drawable/sym_keyboard_space</item>
-        <item name="iconEnterKey">@drawable/sym_keyboard_return</item>ZZ
-        <item name="iconSearchKey">@drawable/sym_keyboard_search</item>
-        <item name="iconTabKey">@drawable/sym_keyboard_tab</item>
-        <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item>
-        <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic</item>
-        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space</item>
-        <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked</item>
-        <!-- TODO: Needs non-holo disabled shortcut icon drawable -->
-        <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo</item>
-        <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item>
-        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item>
-        <!-- TODO: Needs dedicated black theme ZWNJ and ZWJ icons -->
-        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo</item>
-        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo</item>
-        <item name="iconEmojiKey">@drawable/ic_emoji_dark</item>
-    </style>
-</resources>
diff --git a/java/res/values/setup-styles.xml b/java/res/values/setup-styles.xml
index 1ffe8ca..c968b2f 100644
--- a/java/res/values/setup-styles.xml
+++ b/java/res/values/setup-styles.xml
@@ -1,17 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
+<!--
+/*
+**
+** Copyright 2013, 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">
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
deleted file mode 100644
index d175a12..0000000
--- a/java/res/values/styles.xml
+++ /dev/null
@@ -1,412 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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">
-    <!-- Theme "Basic" -->
-    <style name="Keyboard">
-        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
-        <item name="themeId">0</item>
-        <item name="touchPositionCorrectionData">@array/touch_position_correction_data_default</item>
-        <item name="rowHeight">25%p</item>
-        <item name="moreKeysTemplate">@xml/kbd_more_keys_keyboard_template</item>
-        <item name="keyboardTopPadding">@fraction/keyboard_top_padding</item>
-        <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding</item>
-        <item name="keyboardLeftPadding">@fraction/keyboard_left_padding</item>
-        <item name="keyboardRightPadding">@fraction/keyboard_right_padding</item>
-        <item name="horizontalGap">@fraction/key_horizontal_gap</item>
-        <item name="verticalGap">@fraction/key_bottom_gap</item>
-        <item name="maxMoreKeysColumn">@integer/config_max_more_keys_column</item>
-    </style>
-    <style name="KeyboardView">
-        <item name="android:background">@drawable/keyboard_background</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key</item>
-        <item name="keyLetterSize">@fraction/key_letter_ratio</item>
-        <item name="keyLargeLetterRatio">@fraction/key_large_letter_ratio</item>
-        <item name="keyLabelSize">@fraction/key_label_ratio</item>
-        <item name="keyLargeLabelRatio">@fraction/key_large_label_ratio</item>
-        <item name="keyHintLetterRatio">@fraction/key_hint_letter_ratio</item>
-        <item name="keyHintLabelRatio">@fraction/key_hint_label_ratio</item>
-        <item name="keyShiftedLetterHintRatio">@fraction/key_uppercase_letter_ratio</item>
-        <item name="keyTypeface">normal</item>
-        <item name="keyTextColor">@color/key_text_color_default</item>
-        <item name="keyTextInactivatedColor">@color/key_text_color_default</item>
-        <item name="keyHintLetterColor">@color/key_hint_letter_color_default</item>
-        <item name="keyHintLabelColor">@color/key_hint_label_color_default</item>
-        <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_default</item>
-        <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_default</item>
-        <item name="keyLabelHorizontalPadding">@dimen/key_label_horizontal_padding</item>
-        <item name="keyHintLetterPadding">@dimen/key_hint_letter_padding</item>
-        <item name="keyPopupHintLetterPadding">@dimen/key_popup_hint_letter_padding</item>
-        <item name="keyShiftedLetterHintPadding">@dimen/key_uppercase_letter_padding</item>
-        <item name="keyPreviewTextColor">@color/key_text_color_default</item>
-        <item name="keyPreviewTextRatio">@fraction/key_preview_text_ratio</item>
-        <item name="verticalCorrection">@dimen/keyboard_vertical_correction</item>
-        <item name="keyTextShadowColor">@color/key_text_shadow_color_default</item>
-        <item name="keyTextShadowRadius">2.75</item>
-        <item name="backgroundDimAlpha">128</item>
-        <item name="gestureFloatingPreviewTextSize">@dimen/gesture_floating_preview_text_size</item>
-        <item name="gestureFloatingPreviewTextColor">@color/highlight_color_default</item>
-        <item name="gestureFloatingPreviewTextOffset">@dimen/gesture_floating_preview_text_offset</item>
-        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_default</item>
-        <item name="gestureFloatingPreviewHorizontalPadding">@dimen/gesture_floating_preview_horizontal_padding</item>
-        <item name="gestureFloatingPreviewVerticalPadding">@dimen/gesture_floating_preview_vertical_padding</item>
-        <item name="gestureFloatingPreviewRoundRadius">@dimen/gesture_floating_preview_round_radius</item>
-        <item name="gestureTrailMinSamplingDistance">@dimen/gesture_trail_min_sampling_distance</item>
-        <item name="gestureTrailMaxInterpolationAngularThreshold">@integer/gesture_trail_max_interpolation_angular_threshold</item>
-        <item name="gestureTrailMaxInterpolationDistanceThreshold">@dimen/gesture_trail_max_interpolation_distance_threshold</item>
-        <item name="gestureTrailMaxInterpolationSegments">@integer/gesture_trail_max_interpolation_segments</item>
-        <item name="gestureTrailFadeoutStartDelay">@integer/config_gesture_trail_fadeout_start_delay</item>
-        <item name="gestureTrailFadeoutDuration">@integer/config_gesture_trail_fadeout_duration</item>
-        <item name="gestureTrailUpdateInterval">@integer/config_gesture_trail_update_interval</item>
-        <item name="gestureTrailColor">@color/highlight_color_default</item>
-        <item name="gestureTrailStartWidth">@dimen/gesture_trail_start_width</item>
-        <item name="gestureTrailEndWidth">@dimen/gesture_trail_end_width</item>
-        <item name="gestureTrailBodyRatio">@integer/gesture_trail_body_ratio</item>
-        <item name="gestureTrailShadowRatio">@integer/gesture_trail_shadow_ratio</item>
-        <!-- Common attributes of MainKeyboardView -->
-        <item name="keyHysteresisDistance">@dimen/config_key_hysteresis_distance</item>
-        <item name="keyHysteresisDistanceForSlidingModifier">@dimen/config_key_hysteresis_distance_for_sliding_modifier</item>
-        <item name="touchNoiseThresholdTime">@integer/config_touch_noise_threshold_time</item>
-        <item name="touchNoiseThresholdDistance">@dimen/config_touch_noise_threshold_distance</item>
-        <item name="slidingKeyInputEnable">@bool/config_sliding_key_input_enabled</item>
-        <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_default</item>
-        <item name="slidingKeyInputPreviewWidth">@dimen/config_sliding_key_input_preview_width</item>
-        <item name="slidingKeyInputPreviewBodyRatio">@integer/config_sliding_key_input_preview_body_ratio</item>
-        <item name="slidingKeyInputPreviewShadowRatio">@integer/config_sliding_key_input_preview_shadow_ratio</item>
-        <item name="keyRepeatStartTimeout">@integer/config_key_repeat_start_timeout</item>
-        <item name="keyRepeatInterval">@integer/config_key_repeat_interval</item>
-        <item name="longPressShiftLockTimeout">@integer/config_longpress_shift_lock_timeout</item>
-        <item name="ignoreAltCodeKeyTimeout">@integer/config_ignore_alt_code_key_timeout</item>
-        <item name="keyPreviewLayout">@layout/key_preview</item>
-        <item name="keyPreviewOffset">@dimen/key_preview_offset</item>
-        <item name="keyPreviewHeight">@dimen/key_preview_height</item>
-        <item name="keyPreviewLingerTimeout">@integer/config_key_preview_linger_timeout</item>
-        <item name="moreKeysKeyboardLayout">@layout/more_keys_keyboard</item>
-        <item name="showMoreKeysKeyboardAtTouchedPoint">@bool/config_show_more_keys_keyboard_at_touched_point</item>
-        <item name="languageOnSpacebarFinalAlpha">@integer/config_language_on_spacebar_final_alpha</item>
-        <item name="languageOnSpacebarFadeoutAnimator">@anim/language_on_spacebar_fadeout</item>
-        <!-- Remove animations for now because it could drain a non-negligible amount of battery while typing.
-        <item name="altCodeKeyWhileTypingFadeoutAnimator">@anim/alt_code_key_while_typing_fadeout</item>
-        <item name="altCodeKeyWhileTypingFadeinAnimator">@anim/alt_code_key_while_typing_fadein</item>
-        -->
-        <!-- Common attributes of MainKeyboardView for gesture typing detection and recognition -->
-        <item name="gestureFloatingPreviewTextLingerTimeout">@integer/config_gesture_floating_preview_text_linger_timeout</item>
-        <item name="gestureStaticTimeThresholdAfterFastTyping">@integer/config_gesture_static_time_threshold_after_fast_typing</item>
-        <item name="gestureDetectFastMoveSpeedThreshold">@fraction/config_gesture_detect_fast_move_speed_threshold</item>
-        <item name="gestureDynamicThresholdDecayDuration">@integer/config_gesture_dynamic_threshold_decay_duration</item>
-        <item name="gestureDynamicTimeThresholdFrom">@integer/config_gesture_dynamic_time_threshold_from</item>
-        <item name="gestureDynamicTimeThresholdTo">@integer/config_gesture_dynamic_time_threshold_to</item>
-        <item name="gestureDynamicDistanceThresholdFrom">@fraction/config_gesture_dynamic_distance_threshold_from</item>
-        <item name="gestureDynamicDistanceThresholdTo">@fraction/config_gesture_dynamic_distance_threshold_to</item>
-        <item name="gestureSamplingMinimumDistance">@fraction/config_gesture_sampling_minimum_distance</item>
-        <item name="gestureRecognitionMinimumTime">@integer/config_gesture_recognition_minimum_time</item>
-        <item name="gestureRecognitionUpdateTime">@integer/config_gesture_recognition_update_time</item>
-        <item name="gestureRecognitionSpeedThreshold">@fraction/config_gesture_recognition_speed_threshold</item>
-        <item name="suppressKeyPreviewAfterBatchInputDuration">@integer/config_suppress_key_preview_after_batch_input_duration</item>
-    </style>
-    <style
-        name="MainKeyboardView"
-        parent="KeyboardView">
-        <item name="autoCorrectionSpacebarLedEnabled">true</item>
-        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
-        <item name="spacebarTextRatio">@fraction/spacebar_text_ratio</item>
-        <item name="spacebarTextColor">@color/spacebar_text_color_default</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_default</item>
-    </style>
-    <style
-        name="MoreKeysKeyboard"
-        parent="Keyboard"
-    >
-        <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"
-        parent="KeyboardView"
-    >
-        <item name="keyBackground">@drawable/btn_keyboard_key_popup</item>
-        <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction</item>
-    </style>
-    <style name="MoreKeysKeyboardPanelStyle">
-        <item name="android:background">@drawable/keyboard_popup_panel_background</item>
-    </style>
-    <style
-        name="SuggestionStripViewStyle"
-    >
-        <item name="android:background">@drawable/keyboard_suggest_strip</item>
-        <item name="suggestionStripOption">autoCorrectBold|validTypedWordBold</item>
-        <item name="colorValidTypedWord">@color/highlight_color_default</item>
-        <item name="colorTypedWord">@color/typed_word_color_default</item>
-        <item name="colorAutoCorrect">@color/highlight_color_default</item>
-        <item name="colorSuggested">@color/highlight_color_default</item>
-        <item name="alphaObsoleted">50%</item>
-        <item name="suggestionsCountInStrip">@integer/suggestions_count_in_strip</item>
-        <item name="centerSuggestionPercentile">@fraction/center_suggestion_percentile</item>
-        <item name="maxMoreSuggestionsRow">@integer/max_more_suggestions_row</item>
-        <item name="minMoreSuggestionsWidth">@fraction/min_more_suggestions_width</item>
-    </style>
-    <style
-        name="MoreSuggestionsViewStyle"
-        parent="MoreKeysKeyboardView"
-    >
-    </style>
-    <style name="SuggestionBackgroundStyle">
-        <item name="android:background">@drawable/btn_suggestion</item>
-    </style>
-    <!-- Theme "Basic high contrast" -->
-    <style
-        name="Keyboard.HighContrast"
-        parent="Keyboard"
-    >
-        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
-        <item name="themeId">1</item>
-    </style>
-    <style
-        name="KeyboardView.HighContrast"
-        parent="KeyboardView"
-    >
-        <item name="android:background">@android:color/black</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key3</item>
-    </style>
-    <style
-        name="MainKeyboardView.HighContrast"
-        parent="KeyboardView.HighContrast"
-    >
-        <item name="autoCorrectionSpacebarLedEnabled">true</item>
-        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
-        <item name="spacebarTextRatio">@fraction/spacebar_text_ratio</item>
-        <item name="spacebarTextColor">@color/spacebar_text_color_default</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_default</item>
-    </style>
-    <!-- Theme "Stone" -->
-    <style
-        name="Keyboard.Stone"
-        parent="Keyboard"
-    >
-        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
-        <item name="themeId">6</item>
-        <item name="keyboardTopPadding">@fraction/keyboard_top_padding_stone</item>
-        <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding_stone</item>
-        <item name="horizontalGap">@fraction/key_horizontal_gap_stone</item>
-        <item name="verticalGap">@fraction/key_bottom_gap_stone</item>
-    </style>
-    <style
-        name="KeyboardView.Stone"
-        parent="KeyboardView"
-    >
-        <item name="keyBackground">@drawable/btn_keyboard_key_stone</item>
-        <item name="keyTextColor">@color/key_text_color_stone</item>
-        <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_stone</item>
-        <item name="keyHintLetterColor">@color/key_hint_letter_color_stone</item>
-        <item name="keyHintLabelColor">@color/key_hint_label_color_stone</item>
-        <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_stone</item>
-        <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_stone</item>
-        <item name="keyTextShadowColor">@color/key_text_shadow_color_stone</item>
-    </style>
-    <style
-        name="MainKeyboardView.Stone"
-        parent="KeyboardView.Stone"
-    >
-        <item name="autoCorrectionSpacebarLedEnabled">true</item>
-        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
-        <item name="spacebarTextRatio">@fraction/spacebar_text_ratio</item>
-        <item name="spacebarTextColor">@color/spacebar_text_color_stone</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_stone</item>
-    </style>
-    <style
-        name="MoreKeysKeyboard.Stone"
-        parent="Keyboard.Stone"
-    >
-        <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.Stone"
-        parent="MoreKeysKeyboardView"
-    >
-        <item name="keyBackground">@drawable/btn_keyboard_key_stone</item>
-        <item name="keyTextColor">@color/key_text_color_stone</item>
-        <item name="keyTextShadowColor">@color/key_text_shadow_color_stone</item>
-    </style>
-    <!-- Theme "Stone bold" -->
-    <style
-        name="Keyboard.Stone.Bold"
-        parent="Keyboard.Stone"
-    >
-        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
-        <item name="themeId">7</item>
-    </style>
-    <style
-        name="KeyboardView.Stone.Bold"
-        parent="KeyboardView.Stone"
-    >
-        <item name="keyTypeface">bold</item>
-    </style>
-    <style
-        name="MainKeyboardView.Stone.Bold"
-        parent="KeyboardView.Stone.Bold"
-    >
-        <item name="autoCorrectionSpacebarLedEnabled">true</item>
-        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
-        <item name="spacebarTextRatio">@fraction/spacebar_text_ratio</item>
-        <item name="spacebarTextColor">@color/spacebar_text_color_stone</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_stone</item>
-    </style>
-    <!-- Theme "Gingerbread" -->
-    <style
-        name="Keyboard.Gingerbread"
-        parent="Keyboard"
-    >
-        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
-        <item name="themeId">8</item>
-        <item name="touchPositionCorrectionData">@array/touch_position_correction_data_gingerbread</item>
-        <item name="horizontalGap">@fraction/key_horizontal_gap_gb</item>
-        <item name="verticalGap">@fraction/key_bottom_gap_gb</item>
-    </style>
-    <style
-        name="KeyboardView.Gingerbread"
-        parent="KeyboardView"
-    >
-        <item name="android:background">@drawable/keyboard_dark_background</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key_gingerbread</item>
-        <item name="keyTypeface">bold</item>
-    </style>
-    <style
-        name="MainKeyboardView.Gingerbread"
-        parent="KeyboardView.Gingerbread"
-    >
-        <item name="autoCorrectionSpacebarLedEnabled">true</item>
-        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
-        <item name="spacebarTextRatio">@fraction/spacebar_text_ratio</item>
-        <item name="spacebarTextColor">@color/spacebar_text_color_default</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_default</item>
-    </style>
-    <style
-        name="MoreKeysKeyboard.Gingerbread"
-        parent="Keyboard.Gingerbread"
-    >
-        <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.Gingerbread"
-        parent="MoreKeysKeyboardView"
-    >
-        <item name="android:background">@null</item>
-    </style>
-    <!-- Theme "IceCreamSandwich" -->
-    <style
-        name="Keyboard.IceCreamSandwich"
-        parent="Keyboard"
-    >
-        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
-        <item name="themeId">5</item>
-        <item name="keyboardTopPadding">@fraction/keyboard_top_padding_ics</item>
-        <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding_ics</item>
-        <item name="horizontalGap">@fraction/key_horizontal_gap_ics</item>
-        <item name="verticalGap">@fraction/key_bottom_gap_ics</item>
-        <item name="touchPositionCorrectionData">@array/touch_position_correction_data_ice_cream_sandwich</item>
-    </style>
-    <style
-        name="KeyboardView.IceCreamSandwich"
-        parent="KeyboardView"
-    >
-        <item name="android:background">@drawable/keyboard_background_holo</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key_ics</item>
-        <item name="keyTypeface">bold</item>
-        <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_ics</item>
-        <item name="keyHintLetterColor">@color/key_hint_letter_color_ics</item>
-        <item name="keyHintLabelColor">@color/key_hint_label_color_ics</item>
-        <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_ics</item>
-        <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_ics</item>
-        <item name="keyPreviewLayout">@layout/key_preview_ics</item>
-        <item name="keyPreviewTextColor">@color/key_text_color_ics</item>
-        <item name="keyPreviewOffset">@dimen/key_preview_offset_ics</item>
-        <item name="keyTextShadowColor">@color/key_text_shadow_color_ics</item>
-        <item name="keyTextShadowRadius">0.0</item>
-        <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_ics</item>
-        <item name="gestureFloatingPreviewTextColor">@color/highlight_color_ics</item>
-        <item name="gestureTrailColor">@color/highlight_color_ics</item>
-    </style>
-    <style
-        name="MainKeyboardView.IceCreamSandwich"
-        parent="KeyboardView.IceCreamSandwich"
-    >
-        <item name="autoCorrectionSpacebarLedEnabled">false</item>
-        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
-        <item name="spacebarTextRatio">@fraction/spacebar_text_ratio</item>
-        <item name="spacebarTextColor">@color/spacebar_text_color_ics</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_ics</item>
-    </style>
-    <style
-        name="MoreKeysKeyboard.IceCreamSandwich"
-        parent="Keyboard.IceCreamSandwich"
-    >
-        <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.IceCreamSandwich"
-        parent="MoreKeysKeyboardView"
-    >
-        <item name="android:background">@null</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key_popup_ics</item>
-        <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction_ics</item>
-    </style>
-    <style name="MoreKeysKeyboardPanelStyle.IceCreamSandwich">
-        <item name="android:background">@drawable/keyboard_popup_panel_background_holo</item>
-    </style>
-    <style
-        name="SuggestionStripViewStyle.IceCreamSandwich"
-    >
-        <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
-        <item name="suggestionStripOption">autoCorrectBold|validTypedWordBold</item>
-        <item name="colorValidTypedWord">@color/typed_word_color_ics</item>
-        <item name="colorTypedWord">@color/typed_word_color_ics</item>
-        <item name="colorAutoCorrect">@color/highlight_color_ics</item>
-        <item name="colorSuggested">@color/suggested_word_color_ics</item>
-        <item name="alphaObsoleted">70%</item>
-        <item name="suggestionsCountInStrip">@integer/suggestions_count_in_strip</item>
-        <item name="centerSuggestionPercentile">@fraction/center_suggestion_percentile</item>
-        <item name="maxMoreSuggestionsRow">@integer/max_more_suggestions_row</item>
-        <item name="minMoreSuggestionsWidth">@fraction/min_more_suggestions_width</item>
-    </style>
-    <style
-        name="MoreSuggestionsViewStyle.IceCreamSandwich"
-        parent="MoreKeysKeyboardView.IceCreamSandwich"
-    >
-    </style>
-    <style name="SuggestionBackgroundStyle.IceCreamSandwich">
-        <item name="android:background">@drawable/btn_suggestion_ics</item>
-    </style>
-    <style
-        name="SuggestionPreviewBackgroundStyle.IceCreamSandwich"
-        parent="MoreKeysKeyboardPanelStyle.IceCreamSandwich"
-    >
-    </style>
-    <style name="MoreKeysKeyboardAnimation">
-        <item name="android:windowEnterAnimation">@anim/more_keys_keyboard_fadein</item>
-        <item name="android:windowExitAnimation">@anim/more_keys_keyboard_fadeout</item>
-    </style>
-</resources>
diff --git a/java/res/values/themes-basic-highcontrast.xml b/java/res/values/themes-basic-highcontrast.xml
deleted file mode 100644
index e81d473..0000000
--- a/java/res/values/themes-basic-highcontrast.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <style name="KeyboardTheme.HighContrast" parent="KeyboardIcons">
-        <item name="keyboardStyle">@style/Keyboard.HighContrast</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.HighContrast</item>
-        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.HighContrast</item>
-        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard</item>
-        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView</item>
-        <item name="moreKeysKeyboardPanelStyle">@style/MoreKeysKeyboardPanelStyle</item>
-        <item name="suggestionStripViewStyle">@style/SuggestionStripViewStyle</item>
-        <item name="moreSuggestionsViewStyle">@style/MoreSuggestionsViewStyle</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
-    </style>
-</resources>
diff --git a/java/res/values/themes-basic.xml b/java/res/values/themes-basic.xml
deleted file mode 100644
index c44f0f6..0000000
--- a/java/res/values/themes-basic.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <style name="KeyboardTheme" parent="KeyboardIcons">
-        <item name="keyboardStyle">@style/Keyboard</item>
-        <item name="keyboardViewStyle">@style/KeyboardView</item>
-        <item name="mainKeyboardViewStyle">@style/MainKeyboardView</item>
-        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard</item>
-        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView</item>
-        <item name="moreKeysKeyboardPanelStyle">@style/MoreKeysKeyboardPanelStyle</item>
-        <item name="suggestionStripViewStyle">@style/SuggestionStripViewStyle</item>
-        <item name="moreSuggestionsViewStyle">@style/MoreSuggestionsViewStyle</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
-    </style>
-</resources>
diff --git a/java/res/values/themes-common.xml b/java/res/values/themes-common.xml
new file mode 100644
index 0000000..c9334ce
--- /dev/null
+++ b/java/res/values/themes-common.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, 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" />
+    <!-- Default theme values -->
+    <style name="Keyboard">
+        <item name="touchPositionCorrectionData">@array/touch_position_correction_data_default</item>
+        <item name="rowHeight">25%p</item>
+        <item name="moreKeysTemplate">@xml/kbd_more_keys_keyboard_template</item>
+        <item name="keyboardLeftPadding">@fraction/keyboard_left_padding</item>
+        <item name="keyboardRightPadding">@fraction/keyboard_right_padding</item>
+        <item name="maxMoreKeysColumn">@integer/config_max_more_keys_column</item>
+    </style>
+    <style name="KeyboardView">
+        <item name="keyLetterSize">@fraction/key_letter_ratio</item>
+        <item name="keyLargeLetterRatio">@fraction/key_large_letter_ratio</item>
+        <item name="keyLabelSize">@fraction/key_label_ratio</item>
+        <item name="keyLargeLabelRatio">@fraction/key_large_label_ratio</item>
+        <item name="keyHintLetterRatio">@fraction/key_hint_letter_ratio</item>
+        <item name="keyHintLabelRatio">@fraction/key_hint_label_ratio</item>
+        <item name="keyShiftedLetterHintRatio">@fraction/key_uppercase_letter_ratio</item>
+        <item name="keyTypeface">normal</item>
+        <item name="keyLabelHorizontalPadding">@dimen/key_label_horizontal_padding</item>
+        <item name="keyHintLetterPadding">@dimen/key_hint_letter_padding</item>
+        <item name="keyPopupHintLetterPadding">@dimen/key_popup_hint_letter_padding</item>
+        <item name="keyShiftedLetterHintPadding">@dimen/key_uppercase_letter_padding</item>
+        <item name="keyPreviewTextRatio">@fraction/key_preview_text_ratio</item>
+        <item name="verticalCorrection">@dimen/keyboard_vertical_correction</item>
+        <item name="backgroundDimAlpha">128</item>
+        <item name="gestureFloatingPreviewTextSize">@dimen/gesture_floating_preview_text_size</item>
+        <item name="gestureFloatingPreviewTextOffset">@dimen/gesture_floating_preview_text_offset</item>
+        <item name="gestureFloatingPreviewHorizontalPadding">@dimen/gesture_floating_preview_horizontal_padding</item>
+        <item name="gestureFloatingPreviewVerticalPadding">@dimen/gesture_floating_preview_vertical_padding</item>
+        <item name="gestureFloatingPreviewRoundRadius">@dimen/gesture_floating_preview_round_radius</item>
+        <item name="gestureTrailMinSamplingDistance">@dimen/gesture_trail_min_sampling_distance</item>
+        <item name="gestureTrailMaxInterpolationAngularThreshold">@integer/gesture_trail_max_interpolation_angular_threshold</item>
+        <item name="gestureTrailMaxInterpolationDistanceThreshold">@dimen/gesture_trail_max_interpolation_distance_threshold</item>
+        <item name="gestureTrailMaxInterpolationSegments">@integer/gesture_trail_max_interpolation_segments</item>
+        <item name="gestureTrailFadeoutStartDelay">@integer/config_gesture_trail_fadeout_start_delay</item>
+        <item name="gestureTrailFadeoutDuration">@integer/config_gesture_trail_fadeout_duration</item>
+        <item name="gestureTrailUpdateInterval">@integer/config_gesture_trail_update_interval</item>
+        <item name="gestureTrailStartWidth">@dimen/gesture_trail_start_width</item>
+        <item name="gestureTrailEndWidth">@dimen/gesture_trail_end_width</item>
+        <item name="gestureTrailBodyRatio">@integer/gesture_trail_body_ratio</item>
+        <item name="gestureTrailShadowRatio">@integer/gesture_trail_shadow_ratio</item>
+        <!-- Common attributes of MainKeyboardView -->
+        <item name="keyHysteresisDistance">@dimen/config_key_hysteresis_distance</item>
+        <item name="keyHysteresisDistanceForSlidingModifier">@dimen/config_key_hysteresis_distance_for_sliding_modifier</item>
+        <item name="touchNoiseThresholdTime">@integer/config_touch_noise_threshold_time</item>
+        <item name="touchNoiseThresholdDistance">@dimen/config_touch_noise_threshold_distance</item>
+        <item name="slidingKeyInputEnable">@bool/config_sliding_key_input_enabled</item>
+        <item name="slidingKeyInputPreviewWidth">@dimen/config_sliding_key_input_preview_width</item>
+        <item name="slidingKeyInputPreviewBodyRatio">@integer/config_sliding_key_input_preview_body_ratio</item>
+        <item name="slidingKeyInputPreviewShadowRatio">@integer/config_sliding_key_input_preview_shadow_ratio</item>
+        <item name="keyRepeatStartTimeout">@integer/config_key_repeat_start_timeout</item>
+        <item name="keyRepeatInterval">@integer/config_key_repeat_interval</item>
+        <item name="longPressShiftLockTimeout">@integer/config_longpress_shift_lock_timeout</item>
+        <item name="ignoreAltCodeKeyTimeout">@integer/config_ignore_alt_code_key_timeout</item>
+        <item name="keyPreviewHeight">@dimen/key_preview_height</item>
+        <item name="keyPreviewLingerTimeout">@integer/config_key_preview_linger_timeout</item>
+        <item name="moreKeysKeyboardLayout">@layout/more_keys_keyboard</item>
+        <item name="showMoreKeysKeyboardAtTouchedPoint">@bool/config_show_more_keys_keyboard_at_touched_point</item>
+        <item name="spacebarTextRatio">@fraction/spacebar_text_ratio</item>
+        <item name="languageOnSpacebarFinalAlpha">@integer/config_language_on_spacebar_final_alpha</item>
+        <item name="languageOnSpacebarFadeoutAnimator">@anim/language_on_spacebar_fadeout</item>
+        <!-- Remove animations for now because it could drain a non-negligible amount of battery while typing.
+        <item name="altCodeKeyWhileTypingFadeoutAnimator">@anim/alt_code_key_while_typing_fadeout</item>
+        <item name="altCodeKeyWhileTypingFadeinAnimator">@anim/alt_code_key_while_typing_fadein</item>
+        -->
+        <!-- Common attributes of MainKeyboardView for gesture typing detection and recognition -->
+        <item name="gestureFloatingPreviewTextLingerTimeout">@integer/config_gesture_floating_preview_text_linger_timeout</item>
+        <item name="gestureStaticTimeThresholdAfterFastTyping">@integer/config_gesture_static_time_threshold_after_fast_typing</item>
+        <item name="gestureDetectFastMoveSpeedThreshold">@fraction/config_gesture_detect_fast_move_speed_threshold</item>
+        <item name="gestureDynamicThresholdDecayDuration">@integer/config_gesture_dynamic_threshold_decay_duration</item>
+        <item name="gestureDynamicTimeThresholdFrom">@integer/config_gesture_dynamic_time_threshold_from</item>
+        <item name="gestureDynamicTimeThresholdTo">@integer/config_gesture_dynamic_time_threshold_to</item>
+        <item name="gestureDynamicDistanceThresholdFrom">@fraction/config_gesture_dynamic_distance_threshold_from</item>
+        <item name="gestureDynamicDistanceThresholdTo">@fraction/config_gesture_dynamic_distance_threshold_to</item>
+        <item name="gestureSamplingMinimumDistance">@fraction/config_gesture_sampling_minimum_distance</item>
+        <item name="gestureRecognitionMinimumTime">@integer/config_gesture_recognition_minimum_time</item>
+        <item name="gestureRecognitionUpdateTime">@integer/config_gesture_recognition_update_time</item>
+        <item name="gestureRecognitionSpeedThreshold">@fraction/config_gesture_recognition_speed_threshold</item>
+        <item name="suppressKeyPreviewAfterBatchInputDuration">@integer/config_suppress_key_preview_after_batch_input_duration</item>
+    </style>
+    <style name="MainKeyboardView" />
+    <style name="MoreKeysKeyboard" />
+    <style name="MoreKeysKeyboardView" />
+    <style
+        name="SuggestionStripView"
+    >
+        <item name="suggestionsCountInStrip">@integer/suggestions_count_in_strip</item>
+        <item name="centerSuggestionPercentile">@fraction/center_suggestion_percentile</item>
+        <item name="maxMoreSuggestionsRow">@integer/max_more_suggestions_row</item>
+        <item name="minMoreSuggestionsWidth">@fraction/min_more_suggestions_width</item>
+    </style>
+</resources>
diff --git a/java/res/values/themes-gb.xml b/java/res/values/themes-gb.xml
new file mode 100644
index 0000000..b430eea
--- /dev/null
+++ b/java/res/values/themes-gb.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <style name="KeyboardTheme.GB" parent="KeyboardIcons.GB">
+        <item name="keyboardStyle">@style/Keyboard.GB</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.GB</item>
+        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.GB</item>
+        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.GB</item>
+        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.GB</item>
+        <item name="suggestionStripViewStyle">@style/SuggestionStripView.GB</item>
+        <item name="moreKeysKeyboardBackground">@drawable/keyboard_popup_panel_background_gb</item>
+        <item name="suggestionStripBackground">@drawable/keyboard_suggest_strip_gb</item>
+        <item name="suggestionBackground">@drawable/btn_suggestion_gb</item>
+    </style>
+    <style name="KeyboardIcons.GB">
+        <!-- Keyboard icons -->
+        <item name="iconShiftKey">@drawable/sym_keyboard_shift</item>
+        <item name="iconDeleteKey">@drawable/sym_keyboard_delete</item>
+        <item name="iconSettingsKey">@drawable/sym_keyboard_settings</item>
+        <item name="iconSpaceKey">@drawable/sym_keyboard_space</item>
+        <item name="iconEnterKey">@drawable/sym_keyboard_return</item>
+        <item name="iconSearchKey">@drawable/sym_keyboard_search</item>
+        <item name="iconTabKey">@drawable/sym_keyboard_tab</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item>
+        <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic</item>
+        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space</item>
+        <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked</item>
+        <!-- TODO: Needs non-holo disabled shortcut icon drawable -->
+        <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo</item>
+        <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item>
+        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item>
+        <!-- TODO: Needs dedicated black theme ZWNJ and ZWJ icons -->
+        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo</item>
+        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo</item>
+        <item name="iconEmojiKey">@drawable/ic_emoji_dark</item>
+    </style>
+    <style
+        name="Keyboard.GB"
+        parent="Keyboard"
+    >
+        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
+        <item name="themeId">1</item>
+        <item name="touchPositionCorrectionData">@array/touch_position_correction_data_gb</item>
+        <item name="keyboardTopPadding">@fraction/keyboard_top_padding_gb</item>
+        <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding_gb</item>
+        <item name="horizontalGap">@fraction/key_horizontal_gap_gb</item>
+        <item name="verticalGap">@fraction/key_bottom_gap_gb</item>
+    </style>
+    <style
+        name="KeyboardView.GB"
+        parent="KeyboardView"
+    >
+        <item name="android:background">@drawable/keyboard_background_gb</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_gb</item>
+        <item name="keyTypeface">bold</item>
+        <item name="keyTextColor">@color/key_text_color_gb</item>
+        <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_gb</item>
+        <item name="keyHintLetterColor">@color/key_hint_letter_color_gb</item>
+        <item name="keyHintLabelColor">@color/key_hint_label_color_gb</item>
+        <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_gb</item>
+        <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_gb</item>
+        <item name="keyPreviewTextColor">@color/key_text_color_gb</item>
+        <item name="keyTextShadowColor">@color/key_text_shadow_color_gb</item>
+        <item name="keyTextShadowRadius">2.75</item>
+    </style>
+    <style
+        name="MainKeyboardView.GB"
+        parent="KeyboardView.GB"
+    >
+        <item name="keyPreviewLayout">@layout/key_preview_gb</item>
+        <item name="keyPreviewOffset">@dimen/key_preview_offset_gb</item>
+        <item name="gestureFloatingPreviewTextColor">@color/highlight_color_gb</item>
+        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_gb</item>
+        <item name="gestureTrailColor">@color/highlight_color_gb</item>
+        <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_gb</item>
+        <item name="autoCorrectionSpacebarLedEnabled">true</item>
+        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_gb</item>
+        <item name="spacebarTextColor">@color/spacebar_text_color_gb</item>
+        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_gb</item>
+    </style>
+    <style
+        name="MoreKeysKeyboard.GB"
+        parent="Keyboard.GB"
+    >
+        <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.GB"
+        parent="KeyboardView.GB"
+    >
+        <item name="android:background">@null</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_popup_gb</item>
+        <item name="keyTypeface">normal</item>
+        <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction_gb</item>
+    </style>
+    <style
+        name="SuggestionStripView.GB"
+        parent="SuggestionStripView"
+    >
+        <item name="suggestionStripOption">autoCorrectBold|validTypedWordBold</item>
+        <item name="colorValidTypedWord">@color/highlight_color_gb</item>
+        <item name="colorTypedWord">@color/typed_word_color_gb</item>
+        <item name="colorAutoCorrect">@color/highlight_color_gb</item>
+        <item name="colorSuggested">@color/highlight_color_gb</item>
+        <item name="alphaObsoleted">50%</item>
+    </style>
+</resources>
diff --git a/java/res/values/themes-gingerbread.xml b/java/res/values/themes-gingerbread.xml
deleted file mode 100644
index 129afdf..0000000
--- a/java/res/values/themes-gingerbread.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <style name="KeyboardTheme.Gingerbread" parent="KeyboardIcons">
-        <item name="keyboardStyle">@style/Keyboard.Gingerbread</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.Gingerbread</item>
-        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.Gingerbread</item>
-        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.Gingerbread</item>
-        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.Gingerbread</item>
-        <item name="moreKeysKeyboardPanelStyle">@style/MoreKeysKeyboardPanelStyle</item>
-        <item name="suggestionStripViewStyle">@style/SuggestionStripViewStyle</item>
-        <item name="moreSuggestionsViewStyle">@style/MoreSuggestionsViewStyle</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
-    </style>
-</resources>
diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml
index 1264831..5ca0665 100644
--- a/java/res/values/themes-ics.xml
+++ b/java/res/values/themes-ics.xml
@@ -1,29 +1,133 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
 -->
 
 <resources>
-    <style name="KeyboardTheme.IceCreamSandwich" parent="KeyboardIcons.IceCreamSandwich">
-        <item name="keyboardStyle">@style/Keyboard.IceCreamSandwich</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.IceCreamSandwich</item>
-        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.IceCreamSandwich</item>
-        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.IceCreamSandwich</item>
-        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.IceCreamSandwich</item>
-        <item name="moreKeysKeyboardPanelStyle">@style/MoreKeysKeyboardPanelStyle.IceCreamSandwich</item>
-        <item name="suggestionStripViewStyle">@style/SuggestionStripViewStyle.IceCreamSandwich</item>
-        <item name="moreSuggestionsViewStyle">@style/MoreSuggestionsViewStyle.IceCreamSandwich</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.IceCreamSandwich</item>
+    <style name="KeyboardTheme.ICS" parent="KeyboardIcons.ICS">
+        <item name="keyboardStyle">@style/Keyboard.ICS</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.ICS</item>
+        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.ICS</item>
+        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.ICS</item>
+        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.ICS</item>
+        <item name="suggestionStripViewStyle">@style/SuggestionStripView.ICS</item>
+        <item name="moreKeysKeyboardBackground">@drawable/keyboard_popup_panel_background_holo</item>
+        <item name="suggestionStripBackground">@drawable/keyboard_suggest_strip_holo</item>
+        <item name="suggestionBackground">@drawable/btn_suggestion_ics</item>
+    </style>
+    <style name="KeyboardIcons.ICS">
+        <!-- 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</item>
+        <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo</item>
+        <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo</item>
+        <item name="iconSpaceKey">@null</item>
+        <item name="iconEnterKey">@drawable/sym_keyboard_return_holo</item>
+        <item name="iconSearchKey">@drawable/sym_keyboard_search_holo</item>
+        <item name="iconTabKey">@drawable/sym_keyboard_tab_holo</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo</item>
+        <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic_holo</item>
+        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo</item>
+        <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo</item>
+        <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo</item>
+        <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item>
+        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item>
+        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo</item>
+        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo</item>
+        <item name="iconEmojiKey">@drawable/ic_emoji_light</item>
+    </style>
+    <style
+        name="Keyboard.ICS"
+        parent="Keyboard"
+    >
+        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
+        <item name="themeId">0</item>
+        <item name="keyboardTopPadding">@fraction/keyboard_top_padding_ics</item>
+        <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding_ics</item>
+        <item name="horizontalGap">@fraction/key_horizontal_gap_ics</item>
+        <item name="verticalGap">@fraction/key_bottom_gap_ics</item>
+        <item name="touchPositionCorrectionData">@array/touch_position_correction_data_ics</item>
+    </style>
+    <style
+        name="KeyboardView.ICS"
+        parent="KeyboardView"
+    >
+        <item name="android:background">@drawable/keyboard_background_ics</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_ics</item>
+        <item name="keyTypeface">bold</item>
+        <item name="keyTextColor">@color/key_text_color_ics</item>
+        <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_ics</item>
+        <item name="keyHintLetterColor">@color/key_hint_letter_color_ics</item>
+        <item name="keyHintLabelColor">@color/key_hint_label_color_ics</item>
+        <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_ics</item>
+        <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_ics</item>
+        <item name="keyPreviewTextColor">@color/key_text_color_ics</item>
+        <item name="keyTextShadowColor">@color/key_text_shadow_color_ics</item>
+        <item name="keyTextShadowRadius">0.0</item>
+    </style>
+    <style
+        name="MainKeyboardView.ICS"
+        parent="KeyboardView.ICS"
+    >
+        <item name="keyPreviewLayout">@layout/key_preview_ics</item>
+        <item name="keyPreviewOffset">@dimen/key_preview_offset_ics</item>
+        <item name="gestureFloatingPreviewTextColor">@color/highlight_color_ics</item>
+        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_ics</item>
+        <item name="gestureTrailColor">@color/highlight_color_ics</item>
+        <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_ics</item>
+        <item name="autoCorrectionSpacebarLedEnabled">false</item>
+        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
+        <item name="spacebarTextColor">@color/spacebar_text_color_ics</item>
+        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_ics</item>
+    </style>
+    <style
+        name="MoreKeysKeyboard.ICS"
+        parent="Keyboard.ICS"
+    >
+        <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.ICS"
+        parent="KeyboardView.ICS"
+    >
+        <item name="android:background">@null</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_popup_ics</item>
+        <item name="keyTypeface">normal</item>
+        <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction_ics</item>
+    </style>
+    <style
+        name="SuggestionStripView.ICS"
+        parent="SuggestionStripView"
+    >
+        <item name="suggestionStripOption">autoCorrectBold|validTypedWordBold</item>
+        <item name="colorValidTypedWord">@color/typed_word_color_ics</item>
+        <item name="colorTypedWord">@color/typed_word_color_ics</item>
+        <item name="colorAutoCorrect">@color/highlight_color_ics</item>
+        <item name="colorSuggested">@color/suggested_word_color_ics</item>
+        <item name="alphaObsoleted">70%</item>
+    </style>
+    <style name="MoreKeysKeyboardAnimation">
+        <item name="android:windowEnterAnimation">@anim/more_keys_keyboard_fadein</item>
+        <item name="android:windowExitAnimation">@anim/more_keys_keyboard_fadeout</item>
     </style>
 </resources>
diff --git a/java/res/values/themes-stone-bold.xml b/java/res/values/themes-stone-bold.xml
deleted file mode 100644
index 196f3ef..0000000
--- a/java/res/values/themes-stone-bold.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <style name="KeyboardTheme.Stone.Bold" parent="KeyboardIcons.Black">
-        <item name="keyboardStyle">@style/Keyboard.Stone.Bold</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.Stone.Bold</item>
-        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.Stone.Bold</item>
-        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.Stone</item>
-        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.Stone</item>
-        <item name="moreKeysKeyboardPanelStyle">@style/MoreKeysKeyboardPanelStyle</item>
-        <item name="suggestionStripViewStyle">@style/SuggestionStripViewStyle</item>
-        <item name="moreSuggestionsViewStyle">@style/MoreSuggestionsViewStyle</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
-    </style>
-</resources>
diff --git a/java/res/values/themes-stone.xml b/java/res/values/themes-stone.xml
deleted file mode 100644
index d0d35c2..0000000
--- a/java/res/values/themes-stone.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <style name="KeyboardTheme.Stone" parent="KeyboardIcons.Black">
-        <item name="keyboardStyle">@style/Keyboard.Stone</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.Stone</item>
-        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.Stone</item>
-        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.Stone</item>
-        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.Stone</item>
-        <item name="moreKeysKeyboardPanelStyle">@style/MoreKeysKeyboardPanelStyle</item>
-        <item name="suggestionStripViewStyle">@style/SuggestionStripViewStyle</item>
-        <item name="moreSuggestionsViewStyle">@style/MoreSuggestionsViewStyle</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
-    </style>
-</resources>
diff --git a/java/res/values/touch-position-correction.xml b/java/res/values/touch-position-correction.xml
index 7df86f4..9df517b 100644
--- a/java/res/values/touch-position-correction.xml
+++ b/java/res/values/touch-position-correction.xml
@@ -37,7 +37,7 @@
     </string-array>
 
     <string-array
-        name="touch_position_correction_data_gingerbread"
+        name="touch_position_correction_data_gb"
         translatable="false"
     >
         <!-- First row -->
@@ -57,7 +57,7 @@
     </string-array>
 
     <string-array
-        name="touch_position_correction_data_ice_cream_sandwich"
+        name="touch_position_correction_data_ics"
         translatable="false"
     >
         <!-- First row -->
diff --git a/java/res/xml/key_symbols_period.xml b/java/res/xml/key_symbols_period.xml
index a1ab1a9..6efc9de 100644
--- a/java/res/xml/key_symbols_period.xml
+++ b/java/res/xml/key_symbols_period.xml
@@ -27,7 +27,7 @@
          U+00A9: "©" COPYRIGHT SIGN
          U+00A7: "§" SECTION SIGN
          U+00B6: "¶" PILCROW SIGN
-         U+2026: "…" HORIZONTAL ELLIPSIS
+         U+002C: "," COMMA
          U+2022: "•" BULLET -->
     <!-- U+00B0: "°" DEGREE SIGN
          U+2032: "′" PRIME
@@ -36,11 +36,12 @@
          U+2193: "↓" DOWNWARDS ARROW
          U+2190: "←" LEFTWARDS ARROW
          U+2192: "→" RIGHTWARDS ARROW
-         U+03C0: "π" GREEK SMALL LETTER PI -->
+         U+2026: "…" HORIZONTAL ELLIPSIS -->
     <!-- U+0394: "Δ" GREEK CAPITAL LETTER DELTA
-         U+03A0: "Π" GREEK CAPITAL LETTER PI -->
+         U+03A0: "Π" GREEK CAPITAL LETTER PI
+         U+03C0: "π" GREEK SMALL LETTER PI -->
     <Key
         latin:keyLabel="."
         latin:keyLabelFlags="hasPopupHint"
-        latin:moreKeys="!fixedColumnOrder!8,&#x2105;,&#x2122;,&#x00AE;,&#x00A9;,&#x00A7;,&#x00B6;,&#x2026;,&#x2022;,&#x00B0;,&#x2032;,&#x2033;,&#x2191;,&#x2193;,&#x2190;,&#x2192;,&#x03C0;,!text/more_keys_for_bullet,&#x0394;,&#x03A0;" />
+        latin:moreKeys="!fixedColumnOrder!8,&#x2105;,&#x2122;,&#x00AE;,&#x00A9;,&#x00A7;,&#x00B6;,\\,,&#x2022;,&#x00B0;,&#x2032;,&#x2033;,&#x2191;,&#x2193;,&#x2190;,&#x2192;,&#x2026;,!text/more_keys_for_bullet,&#x0394;,&#x03A0;,&#x03C0;" />
 </merge>
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 4313467..098c8b3 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -58,12 +58,8 @@
     }
 
     private static final KeyboardTheme[] KEYBOARD_THEMES = {
-        new KeyboardTheme(0, R.style.KeyboardTheme),
-        new KeyboardTheme(1, R.style.KeyboardTheme_HighContrast),
-        new KeyboardTheme(6, R.style.KeyboardTheme_Stone),
-        new KeyboardTheme(7, R.style.KeyboardTheme_Stone_Bold),
-        new KeyboardTheme(8, R.style.KeyboardTheme_Gingerbread),
-        new KeyboardTheme(5, R.style.KeyboardTheme_IceCreamSandwich),
+        new KeyboardTheme(0, R.style.KeyboardTheme_ICS),
+        new KeyboardTheme(1, R.style.KeyboardTheme_GB),
     };
 
     private SubtypeSwitcher mSubtypeSwitcher;
@@ -121,8 +117,9 @@
         } catch (NumberFormatException e) {
             // Format error, keyboard theme is default to 0.
         }
-        Log.w(TAG, "Illegal keyboard theme in preference: " + themeIndex + ", default to 0");
-        return KEYBOARD_THEMES[0];
+        Log.w(TAG, "Illegal keyboard theme in preference: " + themeIndex + ", default to "
+                + defaultIndex);
+        return KEYBOARD_THEMES[Integer.valueOf(defaultIndex)];
     }
 
     private void setContextThemeWrapper(final Context context, final KeyboardTheme keyboardTheme) {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/ScrollKeyboardView.java b/java/src/com/android/inputmethod/keyboard/internal/ScrollKeyboardView.java
new file mode 100644
index 0000000..2628f59
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/ScrollKeyboardView.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2013 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.internal;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.widget.ScrollView;
+import android.widget.Scroller;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.KeyDetector;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardView;
+import com.android.inputmethod.latin.R;
+
+/**
+ * This is an extended {@link KeyboardView} class that hosts a scroll keyboard.
+ * Multi-touch unsupported. No {@link PointerTracker}s. No gesture support.
+ */
+public final class ScrollKeyboardView extends KeyboardView implements
+        ScrollViewWithNotifier.ScrollListener, GestureDetector.OnGestureListener {
+    private static final boolean PAGINATION = false;
+
+    public interface OnKeyClickListener {
+        public void onKeyClick(Key key);
+    }
+
+    private static final OnKeyClickListener EMPTY_LISTENER = new OnKeyClickListener() {
+        @Override
+        public void onKeyClick(final Key key) {}
+    };
+
+    private OnKeyClickListener mListener = EMPTY_LISTENER;
+    private final KeyDetector mKeyDetector = new KeyDetector(0.0f /*keyHysteresisDistance */);
+    private final GestureDetector mGestureDetector;
+
+    private final Scroller mScroller;
+    private ScrollViewWithNotifier mScrollView;
+
+    public ScrollKeyboardView(final Context context, final AttributeSet attrs) {
+        this(context, attrs, R.attr.keyboardViewStyle);
+    }
+
+    public ScrollKeyboardView(final Context context, final AttributeSet attrs, final int defStyle) {
+        super(context, attrs, defStyle);
+        mGestureDetector = new GestureDetector(context, this);
+        mGestureDetector.setIsLongpressEnabled(false /* isLongpressEnabled */);
+        mScroller = new Scroller(context);
+    }
+
+    public void setScrollView(final ScrollViewWithNotifier scrollView) {
+        mScrollView = scrollView;
+        scrollView.setScrollListener(this);
+    }
+
+    private final Runnable mScrollTask = new Runnable() {
+        @Override
+        public void run() {
+            final Scroller scroller = mScroller;
+            final ScrollView scrollView = mScrollView;
+            scroller.computeScrollOffset();
+            scrollView.scrollTo(0, scroller.getCurrY());
+            if (!scroller.isFinished()) {
+                scrollView.post(this);
+            }
+        }
+    };
+
+    // {@link ScrollViewWithNotified#ScrollListener} methods.
+    @Override
+    public void notifyScrollChanged(final int scrollX, final int scrollY, final int oldX,
+            final int oldY) {
+        if (PAGINATION) {
+            mScroller.forceFinished(true /* finished */);
+            mScrollView.removeCallbacks(mScrollTask);
+            final int currentTop = mScrollView.getScrollY();
+            final int pageHeight = getKeyboard().mBaseHeight;
+            final int lastPageNo = currentTop / pageHeight;
+            final int lastPageTop = lastPageNo * pageHeight;
+            final int nextPageNo = lastPageNo + 1;
+            final int nextPageTop = Math.min(nextPageNo * pageHeight, getHeight() - pageHeight);
+            final int scrollTo = (currentTop - lastPageTop) < (nextPageTop - currentTop)
+                    ? lastPageTop : nextPageTop;
+            final int deltaY = scrollTo - currentTop;
+            mScroller.startScroll(0, currentTop, 0, deltaY, 300);
+            mScrollView.post(mScrollTask);
+        }
+    }
+
+    @Override
+    public void notifyOverScrolled(final int scrollX, final int scrollY, final boolean clampedX,
+            final boolean clampedY) {
+        releaseCurrentKey();
+    }
+
+    public void setOnKeyClickListener(final OnKeyClickListener listener) {
+        mListener = listener;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setKeyboard(final Keyboard keyboard) {
+        super.setKeyboard(keyboard);
+        mKeyDetector.setKeyboard(keyboard, 0 /* correctionX */, 0 /* correctionY */);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean onTouchEvent(final MotionEvent e) {
+        if (mGestureDetector.onTouchEvent(e)) {
+            return true;
+        }
+        final Key key = getKey(e);
+        if (key != null && key != mCurrentKey) {
+            releaseCurrentKey();
+        }
+        return true;
+    }
+
+    // {@link GestureDetector#OnGestureListener} methods.
+    private Key mCurrentKey;
+
+    private Key getKey(final MotionEvent e) {
+        final int index = e.getActionIndex();
+        final int x = (int)e.getX(index);
+        final int y = (int)e.getY(index);
+        return mKeyDetector.detectHitKey(x, y);
+    }
+
+    public void releaseCurrentKey() {
+        final Key currentKey = mCurrentKey;
+        if (currentKey == null) {
+            return;
+        }
+        currentKey.onReleased();
+        invalidateKey(currentKey);
+        mCurrentKey = null;
+    }
+
+    @Override
+    public boolean onDown(final MotionEvent e) {
+        final Key key = getKey(e);
+        releaseCurrentKey();
+        mCurrentKey = key;
+        if (key == null) {
+            return false;
+        }
+        // TODO: May call {@link KeyboardActionListener#onPressKey(int,int,boolean)}.
+        key.onPressed();
+        invalidateKey(key);
+        return false;
+    }
+
+    @Override
+    public void onShowPress(final MotionEvent e) {
+        // User feedback is done at {@link #onDown(MotionEvent)}.
+    }
+
+    @Override
+    public boolean onSingleTapUp(final MotionEvent e) {
+        final Key key = getKey(e);
+        releaseCurrentKey();
+        if (key == null) {
+            return false;
+        }
+        // TODO: May call {@link KeyboardActionListener#onReleaseKey(int,boolean)}.
+        key.onReleased();
+        invalidateKey(key);
+        mListener.onKeyClick(key);
+        return true;
+    }
+
+    @Override
+    public boolean onScroll(final MotionEvent e1, final MotionEvent e2, final float distanceX,
+           final float distanceY) {
+        releaseCurrentKey();
+        return false;
+    }
+
+    @Override
+    public boolean onFling(final MotionEvent e1, final MotionEvent e2, final float velocityX,
+            final float velocityY) {
+        releaseCurrentKey();
+        return false;
+    }
+
+    @Override
+    public void onLongPress(final MotionEvent e) {
+        // Long press detection of {@link #mGestureDetector} is disabled and not used.
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/ScrollViewWithNotifier.java b/java/src/com/android/inputmethod/keyboard/internal/ScrollViewWithNotifier.java
new file mode 100644
index 0000000..d1ccdc7
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/ScrollViewWithNotifier.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2013 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.internal;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.ScrollView;
+
+/**
+ * This is an extended {@link ScrollView} that can notify
+ * {@link ScrollView#onScrollChanged(int,int,int,int} and
+ * {@link ScrollView#onOverScrolled(int,int,int,int)} to a content view.
+ */
+public class ScrollViewWithNotifier extends ScrollView {
+    private ScrollListener mScrollListener = EMPTY_LISTER;
+
+    public interface ScrollListener {
+        public void notifyScrollChanged(int scrollX, int scrollY, int oldX, int oldY);
+        public void notifyOverScrolled(int scrollX, int scrollY, boolean clampedX,
+                boolean clampedY);
+    }
+
+    private static final ScrollListener EMPTY_LISTER = new ScrollListener() {
+        @Override
+        public void notifyScrollChanged(int scrollX, int scrollY, int oldX, int oldY) {}
+        @Override
+        public void notifyOverScrolled(int scrollX, int scrollY, boolean clampedX,
+                boolean clampedY) {}
+    };
+
+    public ScrollViewWithNotifier(final Context context, final AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected void onScrollChanged(final int scrollX, final int scrollY, final int oldX,
+            final int oldY) {
+        super.onScrollChanged(scrollX, scrollY, oldX, oldY);
+        mScrollListener.notifyScrollChanged(scrollX, scrollY, oldX, oldY);
+    }
+
+    @Override
+    protected void onOverScrolled(final int scrollX, final int scrollY, final boolean clampedX,
+            final boolean clampedY) {
+        super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
+        mScrollListener.notifyOverScrolled(scrollX, scrollY, clampedX, clampedY);
+    }
+
+    public void setScrollListener(final ScrollListener listener) {
+        mScrollListener = listener;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index d585b5c..0ebe377 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -34,7 +34,7 @@
     private static final String TAG = MoreSuggestionsView.class.getSimpleName();
 
     public MoreSuggestionsView(final Context context, final AttributeSet attrs) {
-        this(context, attrs, R.attr.moreSuggestionsViewStyle);
+        this(context, attrs, R.attr.moreKeysKeyboardViewStyle);
     }
 
     public MoreSuggestionsView(final Context context, final AttributeSet attrs,
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
index ed08125..aca2492 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
@@ -122,7 +122,7 @@
         mSuggestionsStripHeight = res.getDimensionPixelSize(R.dimen.suggestions_strip_height);
 
         final TypedArray a = context.obtainStyledAttributes(attrs,
-                R.styleable.SuggestionStripView, defStyle, R.style.SuggestionStripViewStyle);
+                R.styleable.SuggestionStripView, defStyle, R.style.SuggestionStripView);
         mSuggestionStripOption = a.getInt(
                 R.styleable.SuggestionStripView_suggestionStripOption, 0);
         mAlphaObsoleted = ResourceUtils.getFraction(a,
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.h
new file mode 100644
index 0000000..513878e
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#ifndef LATINIME_DYNAMIC_BIGRAM_LIST_POLICY_H
+#define LATINIME_DYNAMIC_BIGRAM_LIST_POLICY_H
+
+#include <stdint.h>
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_bigrams_structure_policy.h"
+#include "suggest/policyimpl/dictionary/bigram/bigram_list_reading_utils.h"
+#include "suggest/policyimpl/dictionary/utils/extendable_buffer.h"
+
+namespace latinime {
+
+/*
+ * This is a dynamic version of BigramListPolicy and supports an additional buffer.
+ */
+class DynamicBigramListPolicy : public DictionaryBigramsStructurePolicy {
+ public:
+    DynamicBigramListPolicy(const uint8_t *const bigramsBuf, const int bufSize,
+            const ExtendableBuffer *const additionalBuffer)
+            : mDictRoot(bigramsBuf), mBufSize(bufSize), mAdditionalBuffer(additionalBuffer) {}
+
+    ~DynamicBigramListPolicy() {}
+
+    void getNextBigram(int *const outBigramPos, int *const outProbability, bool *const outHasNext,
+            int *const pos) const {
+        const bool usesAdditionalBuffer = *pos >= mBufSize;
+        const uint8_t *const buffer = (usesAdditionalBuffer) ?
+                mAdditionalBuffer->getBuffer() : mDictRoot;
+        if (usesAdditionalBuffer) {
+            *pos -= mBufSize;
+        }
+        const BigramListReadingUtils::BigramFlags flags =
+                BigramListReadingUtils::getFlagsAndForwardPointer(buffer, pos);
+        *outBigramPos = BigramListReadingUtils::getBigramAddressAndForwardPointer(
+                buffer, flags, pos);
+        if (usesAdditionalBuffer) {
+            *outBigramPos += mBufSize;
+        }
+        *outProbability = BigramListReadingUtils::getProbabilityFromFlags(flags);
+        *outHasNext = BigramListReadingUtils::hasNext(flags);
+        if (usesAdditionalBuffer) {
+            *pos += mBufSize;
+        }
+    }
+
+    void skipAllBigrams(int *const pos) const {
+        if (*pos >= mBufSize) {
+            *pos -= mBufSize;
+            BigramListReadingUtils::skipExistingBigrams(mAdditionalBuffer->getBuffer(), pos);
+            *pos += mBufSize;
+        } else {
+            BigramListReadingUtils::skipExistingBigrams(mDictRoot, pos);
+        }
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicBigramListPolicy);
+
+    const uint8_t *const mDictRoot;
+    const int mBufSize;
+    const ExtendableBuffer *const mAdditionalBuffer;
+};
+} // namespace latinime
+#endif // LATINIME_DYNAMIC_BIGRAM_LIST_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.cpp b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.cpp
index 77a85c8..c427ebe 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.cpp
@@ -19,34 +19,44 @@
 #include "suggest/core/policy/dictionary_bigrams_structure_policy.h"
 #include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
 #include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/utils/extendable_buffer.h"
 
 namespace latinime {
 
 void DynamicPatriciaTrieNodeReader::fetchNodeInfoFromBufferAndProcessMovedNode(const int nodePos,
         const int maxCodePointCount, int *const outCodePoints) {
-    int pos = nodePos;
-    mFlags = PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(mDictRoot, &pos);
+    const bool usesAdditionalBuffer = nodePos >= mOriginalDictSize;
+    const uint8_t *const dictBuf =
+            usesAdditionalBuffer ? mExtendableBuffer->getBuffer() : mDictRoot;
+    int pos = (usesAdditionalBuffer) ? nodePos - mOriginalDictSize : nodePos;
+    mFlags = PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
     const int parentPos =
-            DynamicPatriciaTrieReadingUtils::getParentPosAndAdvancePosition(mDictRoot, &pos);
+            DynamicPatriciaTrieReadingUtils::getParentPosAndAdvancePosition(dictBuf, &pos);
     mParentPos = (parentPos != 0) ? mNodePos + parentPos : NOT_A_DICT_POS;
     if (outCodePoints != 0) {
         mCodePointCount = PatriciaTrieReadingUtils::getCharsAndAdvancePosition(
-                mDictRoot, mFlags, maxCodePointCount, outCodePoints, &pos);
+                dictBuf, mFlags, maxCodePointCount, outCodePoints, &pos);
     } else {
         mCodePointCount = PatriciaTrieReadingUtils::skipCharacters(
-                mDictRoot, mFlags, MAX_WORD_LENGTH, &pos);
+                dictBuf, mFlags, MAX_WORD_LENGTH, &pos);
     }
     if (isTerminal()) {
-        mProbability = PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot, &pos);
+        mProbability = PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(dictBuf, &pos);
     } else {
         mProbability = NOT_A_PROBABILITY;
     }
     if (hasChildren()) {
         mChildrenPos = DynamicPatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(
-                mDictRoot, mFlags, &pos);
+                dictBuf, mFlags, &pos);
+        if (usesAdditionalBuffer && mChildrenPos != NOT_A_DICT_POS) {
+            mChildrenPos += mOriginalDictSize;
+        }
     } else {
         mChildrenPos = NOT_A_DICT_POS;
     }
+    if (usesAdditionalBuffer) {
+        pos += mOriginalDictSize;
+    }
     if (PatriciaTrieReadingUtils::hasShortcutTargets(mFlags)) {
         mShortcutPos = pos;
         mShortcutsPolicy->skipAllShortcuts(&pos);
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h
index e990809..2a63628 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h
@@ -27,6 +27,7 @@
 
 class DictionaryBigramsStructurePolicy;
 class DictionaryShortcutsStructurePolicy;
+class ExtendableBuffer;
 
 /*
  * This class is used for helping to read nodes of dynamic patricia trie. This class handles moved
@@ -34,12 +35,14 @@
  */
 class DynamicPatriciaTrieNodeReader {
  public:
-    DynamicPatriciaTrieNodeReader(const uint8_t *const dictRoot,
+    DynamicPatriciaTrieNodeReader(const uint8_t *const dictRoot, const int originalDictSize,
+            const ExtendableBuffer *const extendableBuffer,
             const DictionaryBigramsStructurePolicy *const bigramsPolicy,
             const DictionaryShortcutsStructurePolicy *const shortcutsPolicy)
-            : mDictRoot(dictRoot), mBigramsPolicy(bigramsPolicy),
+            : mDictRoot(dictRoot), mOriginalDictSize(originalDictSize),
+              mExtendableBuffer(extendableBuffer), mBigramsPolicy(bigramsPolicy),
               mShortcutsPolicy(shortcutsPolicy), mNodePos(NOT_A_VALID_WORD_POS), mFlags(0),
-              mParentPos(NOT_A_DICT_POS), mCodePointCount(0), mProbability(NOT_A_PROBABILITY),
+              mParentPos(NOT_A_DICT_POS),  mCodePointCount(0), mProbability(NOT_A_PROBABILITY),
               mChildrenPos(NOT_A_DICT_POS), mShortcutPos(NOT_A_DICT_POS),
               mBigramPos(NOT_A_DICT_POS), mSiblingPos(NOT_A_VALID_WORD_POS) {}
 
@@ -123,6 +126,8 @@
 
     // TODO: Consolidate mDictRoot.
     const uint8_t *const mDictRoot;
+    const int mOriginalDictSize;
+    const ExtendableBuffer *const mExtendableBuffer;
     const DictionaryBigramsStructurePolicy *const mBigramsPolicy;
     const DictionaryShortcutsStructurePolicy *const mShortcutsPolicy;
     int mNodePos;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp
index 89e0cd4..b244dd0 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp
@@ -33,8 +33,8 @@
     if (!dicNode->hasChildren()) {
         return;
     }
-    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, getBigramsStructurePolicy(),
-            getShortcutsStructurePolicy());
+    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, mOriginalDictSize, &mExtendableBuffer,
+            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
     int mergedNodeCodePoints[MAX_WORD_LENGTH];
     int nextPos = dicNode->getChildrenPos();
     int totalChildCount = 0;
@@ -79,8 +79,8 @@
     int mergedNodeCodePoints[maxCodePointCount];
     int codePointCount = 0;
 
-    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, getBigramsStructurePolicy(),
-            getShortcutsStructurePolicy());
+    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, mOriginalDictSize, &mExtendableBuffer,
+            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
     // First, read terminal node and get its probability.
     nodeReader.fetchNodeInfoFromBufferAndGetNodeCodePoints(nodePos, maxCodePointCount,
             mergedNodeCodePoints);
@@ -124,8 +124,8 @@
     int mergedNodeCodePoints[MAX_WORD_LENGTH];
     int currentLength = 0;
     int pos = getRootPosition();
-    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, getBigramsStructurePolicy(),
-            getShortcutsStructurePolicy());
+    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, mOriginalDictSize, &mExtendableBuffer,
+            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
     while (currentLength < length) {
         // When foundMatchedNode becomes true, currentLength is increased at least once.
         bool foundMatchedNode = false;
@@ -198,8 +198,8 @@
     if (nodePos == NOT_A_VALID_WORD_POS) {
         return NOT_A_PROBABILITY;
     }
-    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, getBigramsStructurePolicy(),
-            getShortcutsStructurePolicy());
+    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, mOriginalDictSize, &mExtendableBuffer,
+            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
     nodeReader.fetchNodeInfoFromBuffer(nodePos);
     if (nodeReader.isDeleted() || nodeReader.isBlacklisted() || nodeReader.isNotAWord()) {
         return NOT_A_PROBABILITY;
@@ -211,8 +211,8 @@
     if (nodePos == NOT_A_VALID_WORD_POS) {
         return NOT_A_DICT_POS;
     }
-    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, getBigramsStructurePolicy(),
-            getShortcutsStructurePolicy());
+    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, mOriginalDictSize, &mExtendableBuffer,
+            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
     nodeReader.fetchNodeInfoFromBuffer(nodePos);
     if (nodeReader.isDeleted()) {
         return NOT_A_DICT_POS;
@@ -224,8 +224,8 @@
     if (nodePos == NOT_A_VALID_WORD_POS) {
         return NOT_A_DICT_POS;
     }
-    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, getBigramsStructurePolicy(),
-            getShortcutsStructurePolicy());
+    DynamicPatriciaTrieNodeReader nodeReader(mDictRoot, mOriginalDictSize, &mExtendableBuffer,
+            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
     nodeReader.fetchNodeInfoFromBuffer(nodePos);
     if (nodeReader.isDeleted()) {
         return NOT_A_DICT_POS;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.h
index 0e5920f..73b9632 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.h
@@ -21,9 +21,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/bigram/dynamic_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/shortcut/dynamic_shortcut_list_policy.h"
 #include "suggest/policyimpl/dictionary/utils/extendable_buffer.h"
 #include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
 
@@ -37,7 +37,9 @@
     DynamicPatriciaTriePolicy(const MmappedBuffer *const buffer)
             : mBuffer(buffer), mExtendableBuffer(), mHeaderPolicy(mBuffer->getBuffer()),
               mDictRoot(mBuffer->getBuffer() + mHeaderPolicy.getSize()),
-              mBigramListPolicy(mDictRoot), mShortcutListPolicy(mDictRoot) {}
+              mOriginalDictSize(mBuffer->getBufferSize() - mHeaderPolicy.getSize()),
+              mBigramListPolicy(mDictRoot, mOriginalDictSize, &mExtendableBuffer),
+              mShortcutListPolicy(mDictRoot, mOriginalDictSize, &mExtendableBuffer) {}
 
     ~DynamicPatriciaTriePolicy() {
         delete mBuffer;
@@ -93,8 +95,9 @@
     // TODO: Consolidate mDictRoot.
     // CAVEAT!: Be careful about array out of bound access with mDictRoot
     const uint8_t *const mDictRoot;
-    const BigramListPolicy mBigramListPolicy;
-    const ShortcutListPolicy mShortcutListPolicy;
+    const int mOriginalDictSize;
+    const DynamicBigramListPolicy mBigramListPolicy;
+    const DynamicShortcutListPolicy mShortcutListPolicy;
 };
 } // namespace latinime
 #endif // LATINIME_DYNAMIC_PATRICIA_TRIE_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h
new file mode 100644
index 0000000..fdaf18f
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#ifndef LATINIME_DYNAMIC_SHORTCUT_LIST_POLICY_H
+#define LATINIME_DYNAMIC_SHORTCUT_LIST_POLICY_H
+
+#include <stdint.h>
+
+#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/utils/extendable_buffer.h"
+
+namespace latinime {
+
+/*
+ * This is a dynamic version of ShortcutListPolicy and supports an additional buffer.
+ */
+class DynamicShortcutListPolicy : public DictionaryShortcutsStructurePolicy {
+ public:
+    DynamicShortcutListPolicy(const uint8_t *const shortcutBuf, const int bufSize,
+            const ExtendableBuffer *const additionalBuffer)
+            : mShortcutsBuf(shortcutBuf), mBufSize(bufSize), mAdditionalBuffer(additionalBuffer) {}
+
+    ~DynamicShortcutListPolicy() {}
+
+    int getStartPos(const int pos) const {
+        if (pos == NOT_A_DICT_POS) {
+            return NOT_A_DICT_POS;
+        }
+        return pos + ShortcutListReadingUtils::getShortcutListSizeFieldSize();
+    }
+
+    void getNextShortcut(const int maxCodePointCount, int *const outCodePoint,
+            int *const outCodePointCount, bool *const outIsWhitelist, bool *const outHasNext,
+            int *const pos) const {
+        const bool usesAdditionalBuffer = *pos >= mBufSize;
+        const uint8_t *const buffer = usesAdditionalBuffer
+                ? mAdditionalBuffer->getBuffer() : mShortcutsBuf;
+        if (usesAdditionalBuffer) {
+            *pos -= mBufSize;
+        }
+        const ShortcutListReadingUtils::ShortcutFlags flags =
+                ShortcutListReadingUtils::getFlagsAndForwardPointer(buffer, pos);
+        if (outHasNext) {
+            *outHasNext = ShortcutListReadingUtils::hasNext(flags);
+        }
+        if (outIsWhitelist) {
+            *outIsWhitelist = ShortcutListReadingUtils::isWhitelist(flags);
+        }
+        if (outCodePoint) {
+            *outCodePointCount = ShortcutListReadingUtils::readShortcutTarget(
+                    buffer, maxCodePointCount, outCodePoint, pos);
+        }
+        if (usesAdditionalBuffer) {
+            *pos += mBufSize;
+        }
+    }
+
+    void skipAllShortcuts(int *const pos) const {
+        if (*pos >= mBufSize) {
+            *pos -= mBufSize;
+            const int shortcutListSize = ShortcutListReadingUtils
+                    ::getShortcutListSizeAndForwardPointer(mAdditionalBuffer->getBuffer(), pos);
+            *pos += mBufSize + shortcutListSize;
+        } else {
+            const int shortcutListSize = ShortcutListReadingUtils
+                    ::getShortcutListSizeAndForwardPointer(mShortcutsBuf, pos);
+            *pos += shortcutListSize;
+        }
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicShortcutListPolicy);
+
+    const uint8_t *const mShortcutsBuf;
+    const int mBufSize;
+    const ExtendableBuffer *const mAdditionalBuffer;
+};
+} // namespace latinime
+#endif // LATINIME_DYNAMIC_SHORTCUT_LIST_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h b/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h
index b5bb964..5f4f240 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h
@@ -50,6 +50,10 @@
                 - SHORTCUT_LIST_SIZE_FIELD_SIZE;
     }
 
+    static AK_FORCE_INLINE int getShortcutListSizeFieldSize() {
+        return SHORTCUT_LIST_SIZE_FIELD_SIZE;
+    }
+
     static AK_FORCE_INLINE void skipShortcuts(const uint8_t *const dictRoot, int *const pos) {
         const int shortcutListSize = getShortcutListSizeAndForwardPointer(dictRoot, pos);
         *pos += shortcutListSize;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/extendable_buffer.h b/native/jni/src/suggest/policyimpl/dictionary/utils/extendable_buffer.h
index d902d19..5c75027 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/extendable_buffer.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/extendable_buffer.h
@@ -30,12 +30,12 @@
  public:
     ExtendableBuffer() : mBuffer(INITIAL_BUFFER_SIZE), mUsedSize(0) {}
 
-   AK_FORCE_INLINE uint8_t *getBuffer() {
+    AK_FORCE_INLINE const uint8_t *getBuffer() const {
         return  &mBuffer[0];
     }
 
     // Return if the buffer is successfully extended or not.
-   AK_FORCE_INLINE bool extendBuffer() {
+    AK_FORCE_INLINE bool extendBuffer() {
         if (mBuffer.size() + EXTEND_BUFFER_SIZE_STEP > MAX_BUFFER_SIZE) {
             return false;
         }