Reset to 9bd6dac4708ad94fd0257c53e977df62b152e20c

The bulk merge from -bayo to klp-dev should not have been merged to master.

Change-Id: I527a03a76f5247e4939a672f27c314dc11cbb854
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 31945d0..a9474a0 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -26,14 +26,14 @@
         <attr name="keyboardViewStyle" format="reference" />
         <!-- MainKeyboardView style -->
         <attr name="mainKeyboardViewStyle" format="reference" />
+        <!-- Key preview text view style -->
+        <attr name="keyPreviewTextViewStyle" format="reference"/>
         <!-- EmojiPalettesView style -->
         <attr name="emojiPalettesViewStyle" format="reference" />
         <!-- MoreKeysKeyboard style -->
         <attr name="moreKeysKeyboardStyle" format="reference" />
         <!-- MoreKeysKeyboardView style -->
         <attr name="moreKeysKeyboardViewStyle" format="reference" />
-        <!-- MoreKeysKeyboardView container style -->
-        <attr name="moreKeysKeyboardContainerStyle" format="reference" />
         <!-- Suggestions strip style -->
         <attr name="suggestionStripViewStyle" format="reference" />
         <!-- Suggestion word style -->
@@ -41,9 +41,9 @@
     </declare-styleable>
 
     <declare-styleable name="KeyboardView">
-        <!-- Image for the key. This image needs to be a StateListDrawable, with the following
-             possible states: normal, pressed, checkable, checkable+pressed, checkable+checked,
-             checkable+checked+pressed. -->
+        <!-- Image for the key. This image needs to be a {@link StateListDrawable}, with the
+             following possible states: normal, pressed, checkable, checkable+pressed,
+             checkable+checked, checkable+checked+pressed. -->
         <attr name="keyBackground" format="reference" />
         <!-- Image for the functional key used in Emoji layout. -->
         <attr name="keyBackgroundEmojiFunctional" format="reference" />
@@ -72,9 +72,11 @@
         <attr name="autoCorrectionSpacebarLedEnabled" format="boolean" />
         <attr name="autoCorrectionSpacebarLedIcon" format="reference" />
         <!-- Size of the text for spacebar language label, in the proportion of key height. -->
-        <attr name="spacebarTextRatio" format="fraction" />
-        <attr name="spacebarTextColor" format="color" />
-        <attr name="spacebarTextShadowColor" format="color" />
+        <attr name="languageOnSpacebarTextRatio" format="fraction" />
+        <attr name="languageOnSpacebarTextColor" format="color" />
+        <attr name="languageOnSpacebarTextShadowColor" format="color" />
+        <!-- Background image for the spacebar. -->
+        <attr name="spacebarBackground" format="reference" />
         <!-- Fadeout animator for spacebar language label. -->
         <attr name="languageOnSpacebarFinalAlpha" format="integer" />
         <attr name="languageOnSpacebarFadeoutAnimator" format="reference" />
@@ -89,8 +91,8 @@
         <attr name="touchNoiseThresholdTime" format="integer" />
         <!-- Touch noise threshold distance in millimeter -->
         <attr name="touchNoiseThresholdDistance" format="dimension" />
-        <!-- Sliding key input enable -->
-        <attr name="slidingKeyInputEnable" format="boolean" />
+        <!-- Enable key selection by dragging finger -->
+        <attr name="keySelectionByDraggingFinger" format="boolean" />
         <attr name="slidingKeyInputPreviewColor" format="color" />
         <attr name="slidingKeyInputPreviewWidth" format="dimension" />
         <attr name="slidingKeyInputPreviewBodyRatio" format="integer" />
@@ -109,6 +111,10 @@
         <attr name="keyPreviewOffset" format="dimension" />
         <!-- Height of the key press feedback popup. -->
         <attr name="keyPreviewHeight" format="dimension" />
+        <!-- Duration of key preview popup zoom in animation in millisecond -->
+        <attr name="keyPreviewZoomInDuration" format="integer" />
+        <!-- Duration of key preview popup zoom out animation in millisecond -->
+        <attr name="keyPreviewZoomOutDuration" format="integer" />
         <!-- Delay after key releasing and key press feedback dismissing in millisecond -->
         <attr name="keyPreviewLingerTimeout" format="integer" />
         <!-- Layout resource for more keys keyboard -->
@@ -217,7 +223,6 @@
         <attr name="iconSearchKey" format="reference" />
         <attr name="iconTabKey" format="reference" />
         <attr name="iconShortcutKey" format="reference" />
-        <attr name="iconShortcutForLabel" format="reference" />
         <attr name="iconSpaceKeyForNumberLayout" format="reference" />
         <attr name="iconShiftKeyShifted" format="reference" />
         <attr name="iconShortcutKeyDisabled" format="reference" />
@@ -276,6 +281,8 @@
         <attr name="keyLabel" format="string" />
         <!-- The hint label to display on the key in conjunction with the label. -->
         <attr name="keyHintLabel" format="string" />
+        <!-- The vertical adjustment of key hint label in proportion to its height. -->
+        <attr name="keyHintLabelVerticalAdjustment" format="fraction" />
         <!-- The key label flags. -->
         <attr name="keyLabelFlags" format="integer">
             <!-- This should be aligned with Key.LABEL_FLAGS__* -->
@@ -292,17 +299,20 @@
             <flag name="hasPopupHint" value="0x200" />
             <flag name="hasShiftedLetterHint" value="0x400" />
             <flag name="hasHintLabel" value="0x800" />
+            <!-- These two flags are currently unused. Leave these for possible future use. -->
             <flag name="withIconLeft" value="0x1000" />
             <flag name="withIconRight" value="0x2000" />
             <flag name="autoXScale" value="0x4000" />
+            <!-- The autoScale value implies autoXScale bit on to optimize scaling code path. -->
+            <flag name="autoScale" value="0xc000" />
             <!-- If true, character case of code, altCode, moreKeys, keyOutputText, keyLabel,
                  or keyHintLabel will never be subject to change. -->
-            <flag name="preserveCase" value="0x8000" />
+            <flag name="preserveCase" value="0x10000" />
             <!-- If true, use keyShiftedLetterHintActivatedColor for the shifted letter hint and
                  keyTextInactivatedColor for the primary key top label. -->
-            <flag name="shiftedLetterActivated" value="0x10000" />
+            <flag name="shiftedLetterActivated" value="0x20000" />
             <!-- If true, use EditorInfo.actionLabel for the key label. -->
-            <flag name="fromCustomActionLabel" value="0x20000" />
+            <flag name="fromCustomActionLabel" value="0x40000" />
             <!-- If true, disable keyHintLabel. -->
             <flag name="disableKeyHintLabel" value="0x40000000" />
             <!-- If true, disable additionalMoreKeys. -->
@@ -415,8 +425,7 @@
         <attr name="navigatePrevious" format="boolean" />
         <attr name="passwordInput" format="boolean" />
         <attr name="clobberSettingsKey" format="boolean" />
-        <attr name="shortcutKeyEnabled" format="boolean" />
-        <attr name="shortcutKeyOnSymbols" format="boolean" />
+        <attr name="supportsSwitchingToShortcutIme" format="boolean" />
         <attr name="hasShortcutKey" format="boolean" />
         <attr name="languageSwitchKeyEnabled" format="boolean" />
         <attr name="isMultiLine" format="boolean" />
diff --git a/java/res/values/config-auto-correction-thresholds.xml b/java/res/values/config-auto-correction-thresholds.xml
new file mode 100644
index 0000000..7d94a42
--- /dev/null
+++ b/java/res/values/config-auto-correction-thresholds.xml
@@ -0,0 +1,57 @@
+<?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>
+    <!-- The array of auto correction threshold values. -->
+    <string-array name="auto_correction_threshold_values" translatable="false">
+        <!-- Off, When auto correction setting is Off, this value is not used. -->
+        <item>floatMaxValue</item>
+        <!-- Modest : Suggestion whose normalized score is greater than this value
+             will be subject to auto-correction. -->
+        <item>0.185</item>
+        <!-- Aggressive -->
+        <item>0.067</item>
+        <!-- Very Aggressive : Suggestion whose normalized score is greater than this value
+             will be subject to auto-correction. "floatNegativeInfinity" is a special marker
+             string for Float.NEGATIVE_INFINITY -->
+        <item>floatNegativeInfinity</item>
+    </string-array>
+
+    <!-- The index of the auto correction threshold values array. -->
+    <string name="auto_correction_threshold_mode_index_off" translatable="false">0</string>
+    <string name="auto_correction_threshold_mode_index_modest" translatable="false">1</string>
+    <string name="auto_correction_threshold_mode_index_aggressive" translatable="false">2</string>
+    <string name="auto_correction_threshold_mode_index_very_aggressive" translatable="false">3</string>
+
+    <!-- The array of the auto correction threshold settings values. -->
+    <string-array name="auto_correction_threshold_mode_indexes" translatable="false">
+      <item>@string/auto_correction_threshold_mode_index_off</item>
+      <item>@string/auto_correction_threshold_mode_index_modest</item>
+      <item>@string/auto_correction_threshold_mode_index_aggressive</item>
+      <item>@string/auto_correction_threshold_mode_index_very_aggressive</item>
+    </string-array>
+    <!-- The array of the human readable auto correction threshold settings entries. -->
+    <string-array name="auto_correction_threshold_modes" translatable="false">
+      <item>@string/auto_correction_threshold_mode_off</item>
+      <item>@string/auto_correction_threshold_mode_modest</item>
+      <item>@string/auto_correction_threshold_mode_aggressive</item>
+      <item>@string/auto_correction_threshold_mode_very_aggressive</item>
+    </string-array>
+</resources>
diff --git a/java/res/values/config-common.xml b/java/res/values/config-common.xml
new file mode 100644
index 0000000..ab16a90
--- /dev/null
+++ b/java/res/values/config-common.xml
@@ -0,0 +1,142 @@
+<?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>
+    <bool name="config_block_potentially_offensive">true</bool>
+    <!-- Default value for next word prediction: after entering a word and a space only, should we look
+         at input history to suggest a hopefully helpful suggestions for the next word? -->
+    <bool name="config_default_next_word_prediction">true</bool>
+
+    <!-- This configuration is an index of  {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. -->
+    <string name="config_default_keyboard_theme_index" translatable="false">2</string>
+
+    <integer name="config_delay_update_shift_state">100</integer>
+    <integer name="config_double_space_period_timeout">1100</integer>
+
+    <integer name="config_key_repeat_start_timeout">400</integer>
+    <integer name="config_key_repeat_interval">50</integer>
+
+    <integer name="config_ignore_alt_code_key_timeout">350</integer>
+
+    <integer name="config_key_preview_zoom_in_duration">35</integer>
+    <integer name="config_key_preview_zoom_out_duration">40</integer>
+    <integer name="config_key_preview_linger_timeout">70</integer>
+    <!-- Suppress showing key preview duration after batch input in millisecond -->
+    <integer name="config_suppress_key_preview_after_batch_input_duration">1000</integer>
+
+    <bool name="config_default_vibration_enabled">true</bool>
+    <integer name="config_max_vibration_duration">100</integer>
+
+    <integer name="config_default_longpress_key_timeout">300</integer>
+    <integer name="config_max_longpress_timeout">700</integer>
+    <integer name="config_min_longpress_timeout">100</integer>
+    <integer name="config_longpress_timeout_step">10</integer>
+    <integer name="config_max_more_keys_column">5</integer>
+    <integer name="config_more_keys_keyboard_fadein_anim_time">0</integer>
+    <integer name="config_more_keys_keyboard_fadeout_anim_time">100</integer>
+
+    <!-- Long pressing shift will invoke caps-lock if > 0, never invoke caps-lock if == 0 -->
+    <integer name="config_longpress_shift_lock_timeout">1200</integer>
+
+    <!-- Sliding key input preview parameters -->
+    <dimen name="config_sliding_key_input_preview_width">8.0dp</dimen>
+    <!-- Percentages of sliding key input preview body and shadow, in proportion to the width.
+         A negative value of the shadow ratio disables drawing shadow. -->
+    <!-- TODO: May use the shadow to alleviate rugged trail drawing. -->
+    <integer name="config_sliding_key_input_preview_body_ratio">100</integer>
+    <integer name="config_sliding_key_input_preview_shadow_ratio">-1</integer>
+    <dimen name="config_key_hysteresis_distance_for_sliding_modifier">8.0dp</dimen>
+
+    <integer name="config_language_on_spacebar_final_alpha">128</integer>
+    <dimen name="config_language_on_spacebar_horizontal_margin">1dp</dimen>
+
+    <integer name="config_gesture_floating_preview_text_linger_timeout">200</integer>
+    <integer name="config_gesture_trail_fadeout_start_delay">100</integer>
+    <integer name="config_gesture_trail_fadeout_duration">800</integer>
+    <integer name="config_gesture_trail_update_interval">20</integer>
+    <!-- Static threshold for gesture after fast typing (msec) -->
+    <integer name="config_gesture_static_time_threshold_after_fast_typing">500</integer>
+    <!-- Static threshold for starting gesture detection (keyWidth%/sec) -->
+    <fraction name="config_gesture_detect_fast_move_speed_threshold">150%</fraction>
+    <!-- Dynamic threshold for gesture after fast typing (msec) -->
+    <integer name="config_gesture_dynamic_threshold_decay_duration">450</integer>
+    <!-- Time based threshold values for gesture detection (msec) -->
+    <integer name="config_gesture_dynamic_time_threshold_from">300</integer>
+    <integer name="config_gesture_dynamic_time_threshold_to">20</integer>
+    <!-- Distance based threshold values for gesture detection (keyWidth%/sec) -->
+    <fraction name="config_gesture_dynamic_distance_threshold_from">600%</fraction>
+    <fraction name="config_gesture_dynamic_distance_threshold_to">50%</fraction>
+    <!-- Parameter for gesture sampling (keyWidth%/sec) -->
+    <fraction name="config_gesture_sampling_minimum_distance">16.6666%</fraction>
+    <!-- Parameters for gesture recognition (msec) and (keyWidth%/sec) -->
+    <integer name="config_gesture_recognition_minimum_time">100</integer>
+    <integer name="config_gesture_recognition_update_time">100</integer>
+    <fraction name="config_gesture_recognition_speed_threshold">550%</fraction>
+
+    <integer name="config_keyboard_grid_width">32</integer>
+    <integer name="config_keyboard_grid_height">16</integer>
+    <dimen name="config_touch_noise_threshold_distance">12.6dp</dimen>
+    <integer name="config_touch_noise_threshold_time">40</integer>
+
+    <!-- Common keyboard configuration. -->
+    <fraction name="config_keyboard_left_padding">0%p</fraction>
+    <fraction name="config_keyboard_right_padding">0%p</fraction>
+    <dimen name="config_keyboard_vertical_correction">0.0dp</dimen>
+
+    <!-- Common key top visual configuration. -->
+    <dimen name="config_key_popup_hint_letter_padding">2dp</dimen>
+
+    <!-- Common suggestion strip configuration. -->
+    <integer name="config_suggestions_count_in_strip">3</integer>
+    <fraction name="config_center_suggestion_percentile">36%</fraction>
+    <integer name="config_delay_update_suggestions">100</integer>
+    <integer name="config_delay_update_old_suggestions">300</integer>
+
+    <!-- Common more suggestions configuraion. -->
+    <dimen name="config_more_suggestions_key_horizontal_padding">12dp</dimen>
+    <dimen name="config_more_suggestions_bottom_gap">6dp</dimen>
+    <dimen name="config_more_suggestions_modal_tolerance">32.0dp</dimen>
+    <fraction name="config_more_suggestions_info_ratio">18%</fraction>
+
+    <!-- Common gesture trail parameters -->
+    <!-- Minimum distance between gesture trail sampling points. -->
+    <dimen name="config_gesture_trail_min_sampling_distance">9.6dp</dimen>
+    <!-- Maximum angular threshold between gesture trails interpolation segments in degree. -->
+    <integer name="config_gesture_trail_max_interpolation_angular_threshold">15</integer>
+    <!-- Maximum distance threshold between gesture trails interpolation segments. -->
+    <dimen name="config_gesture_trail_max_interpolation_distance_threshold">16.0dp</dimen>
+    <!-- Maximum number of gesture trail interpolation segments. -->
+    <integer name="config_gesture_trail_max_interpolation_segments">6</integer>
+    <dimen name="config_gesture_trail_start_width">10.0dp</dimen>
+    <dimen name="config_gesture_trail_end_width">2.5dp</dimen>
+    <!-- Percentages of gesture preview taril body and shadow, in proportion to the trail width.
+         A negative value of the shadow ratio disables drawing shadow. -->
+    <!-- TODO: May use the shadow to alleviate rugged trail drawing. -->
+    <integer name="config_gesture_trail_body_ratio">100</integer>
+    <integer name="config_gesture_trail_shadow_ratio">-1</integer>
+
+    <!-- Common configuration of Emoji keyboard -->
+    <dimen name="config_emoji_category_page_id_height">3dp</dimen>
+
+    <!-- Inset used in Accessibility mode to avoid accidental key presses when a finger slides off the screen. -->
+    <dimen name="config_accessibility_edge_slop">8dp</dimen>
+
+    <integer name="config_user_dictionary_max_word_length">48</integer>
+</resources>
diff --git a/java/res/values/config-dictionary-pack.xml b/java/res/values/config-dictionary-pack.xml
new file mode 100644
index 0000000..d076af4
--- /dev/null
+++ b/java/res/values/config-dictionary-pack.xml
@@ -0,0 +1,30 @@
+<?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.
+*/
+-->
+
+<!-- Configuration values for Dictionary pack. -->
+<resources>
+    <!-- Settings for the dictionary pack -->
+    <bool name="allow_over_metered">false</bool>
+    <bool name="allow_over_roaming">false</bool>
+    <bool name="dict_downloads_visible_in_download_UI">false</bool>
+    <bool name="metadata_downloads_visible_in_download_UI">false</bool>
+    <bool name="display_notification_for_auto_update">false</bool>
+    <bool name="display_notification_for_user_requested_update">false</bool>
+</resources>
diff --git a/java/res/values/config-screen-metrics.xml b/java/res/values/config-screen-metrics.xml
new file mode 100644
index 0000000..7b98706
--- /dev/null
+++ b/java/res/values/config-screen-metrics.xml
@@ -0,0 +1,29 @@
+<?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>
+    <!--  Screen metrics for logging.
+            0 = "small phone screen"
+            1 = "large phone screen"
+            2 = "large tablet screen"
+            3 = "small tablet screen"
+    -->
+    <integer name="log_screen_metrics">0</integer>
+</resources>
diff --git a/java/res/values/config-spacing-and-punctuations.xml b/java/res/values/config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..f10f810
--- /dev/null
+++ b/java/res/values/config-spacing-and-punctuations.xml
@@ -0,0 +1,39 @@
+<?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:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- TODO: these settings depend on the language. They should be put either in the dictionary
+         header, or in the subtype maybe? -->
+    <!-- Symbols that are suggested between words -->
+    <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",(,),\',-,/,@,_</string>
+    <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
+    <string name="symbols_preceded_by_space" translatable="false">([{&amp;</string>
+    <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
+    <string name="symbols_followed_by_space" translatable="false">.,;:!?)]}&amp;</string>
+    <!-- Symbols that separate words -->
+    <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
+    <string name="symbols_word_separators" translatable="false">"&#x0009;&#x0020;\n"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"</string>
+    <!-- Word connectors -->
+    <string name="symbols_word_connectors" translatable="false">\'-</string>
+    <!-- The sentence separator code point, for capitalization -->
+    <!-- U+002E: "." FULL STOP   ; 2Eh = 46d -->
+    <integer name="sentence_separator" translatable="false">46</integer>
+    <!-- Whether this language uses spaces between words -->
+    <bool name="current_language_has_spaces">true</bool>
+</resources>
diff --git a/java/res/values/config-spellchecker-thresholds.xml b/java/res/values/config-spellchecker-thresholds.xml
new file mode 100644
index 0000000..e99ba66
--- /dev/null
+++ b/java/res/values/config-spellchecker-thresholds.xml
@@ -0,0 +1,25 @@
+<?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>
+    <!-- Threshold of the normalized score of the best suggestion for the spell checker to declare
+         a word to be "recommended" -->
+    <string name="spellchecker_recommended_threshold_value" translatable="false">0.11</string>
+</resources>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 61779d4..698efa9 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -18,120 +18,92 @@
 */
 -->
 
+<!-- Configuration values for Small Phone Portrait. -->
 <resources>
     <bool name="config_use_fullscreen_mode">false</bool>
     <bool name="config_enable_show_voice_key_option">true</bool>
-    <bool name="config_enable_show_option_of_key_preview_popup">true</bool>
-    <!-- TODO: Disable the following configuration for production. -->
-    <bool name="config_enable_usability_study_mode_option">true</bool>
+    <bool name="config_enable_show_key_preview_popup_option">true</bool>
     <!-- Whether or not Popup on key press is enabled by default -->
     <bool name="config_default_key_preview_popup">true</bool>
-    <!-- Default value for next word prediction: after entering a word and a space only, should we look
-         at input history to suggest a hopefully helpful suggestions for the next word? -->
-    <bool name="config_default_next_word_prediction">true</bool>
     <bool name="config_default_sound_enabled">false</bool>
-    <bool name="config_default_vibration_enabled">true</bool>
-    <integer name="config_max_vibration_duration">100</integer> <!-- milliseconds -->
-    <integer name="config_delay_update_suggestions">100</integer>
-    <integer name="config_delay_update_old_suggestions">300</integer>
-    <integer name="config_delay_update_shift_state">100</integer>
-    <integer name="config_language_on_spacebar_final_alpha">128</integer>
-    <integer name="config_more_keys_keyboard_fadein_anim_time">0</integer>
-    <integer name="config_more_keys_keyboard_fadeout_anim_time">100</integer>
-    <integer name="config_keyboard_grid_width">32</integer>
-    <integer name="config_keyboard_grid_height">16</integer>
-    <integer name="config_double_space_period_timeout">1100</integer>
-    <!-- This configuration is an index of  {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. -->
-    <string name="config_default_keyboard_theme_index" translatable="false">2</string>
-    <integer name="config_max_more_keys_column">5</integer>
 
-    <!--
-         Configuration for MainKeyboardView
-    -->
     <dimen name="config_key_hysteresis_distance">8.0dp</dimen>
-    <dimen name="config_key_hysteresis_distance_for_sliding_modifier">8.0dp</dimen>
-    <integer name="config_touch_noise_threshold_time">40</integer>
-    <dimen name="config_touch_noise_threshold_distance">12.6dp</dimen>
-    <integer name="config_key_preview_linger_timeout">70</integer>
-    <bool name="config_sliding_key_input_enabled">true</bool>
-    <!-- Sliding key input preview parameters -->
-    <dimen name="config_sliding_key_input_preview_width">8.0dp</dimen>
-    <!-- Percentages of sliding key input preview body and shadow, in proportion to the width.
-         A negative value of the shadow ratio disables drawing shadow. -->
-    <!-- TODO: May use the shadow to alleviate rugged trail drawing. -->
-    <integer name="config_sliding_key_input_preview_body_ratio">100</integer>
-    <integer name="config_sliding_key_input_preview_shadow_ratio">-1</integer>
-    <integer name="config_key_repeat_start_timeout">400</integer>
-    <integer name="config_key_repeat_interval">50</integer>
-    <integer name="config_default_longpress_key_timeout">300</integer>  <!-- milliseconds -->
-    <integer name="config_longpress_timeout_step">10</integer> <!-- milliseconds -->
-    <integer name="config_min_longpress_timeout">100</integer> <!-- milliseconds -->
-    <integer name="config_max_longpress_timeout">700</integer> <!-- milliseconds -->
-    <!-- Long pressing shift will invoke caps-lock if > 0, never invoke caps-lock if == 0 -->
-    <integer name="config_longpress_shift_lock_timeout">1200</integer> <!-- milliseconds -->
-    <integer name="config_ignore_alt_code_key_timeout">350</integer> <!-- milliseconds -->
+    <bool name="config_key_selection_by_dragging_finger">true</bool>
     <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
          false -->
     <bool name="config_show_more_keys_keyboard_at_touched_point">false</bool>
-    <bool name="config_block_potentially_offensive">true</bool>
-    <integer name="config_gesture_floating_preview_text_linger_timeout">200</integer>
-    <integer name="config_gesture_trail_fadeout_start_delay">100</integer>
-    <integer name="config_gesture_trail_fadeout_duration">800</integer>
-    <integer name="config_gesture_trail_update_interval">20</integer>
-    <!-- Static threshold for gesture after fast typing (msec) -->
-    <integer name="config_gesture_static_time_threshold_after_fast_typing">500</integer>
-    <!-- Static threshold for starting gesture detection (keyWidth%/sec) -->
-    <fraction name="config_gesture_detect_fast_move_speed_threshold">150%</fraction>
-    <!-- Dynamic threshold for gesture after fast typing (msec) -->
-    <integer name="config_gesture_dynamic_threshold_decay_duration">450</integer>
-    <!-- Time based threshold values for gesture detection (msec) -->
-    <integer name="config_gesture_dynamic_time_threshold_from">300</integer>
-    <integer name="config_gesture_dynamic_time_threshold_to">20</integer>
-    <!-- Distance based threshold values for gesture detection (keyWidth%/sec) -->
-    <fraction name="config_gesture_dynamic_distance_threshold_from">600%</fraction>
-    <fraction name="config_gesture_dynamic_distance_threshold_to">50%</fraction>
-    <!-- Parameter for gesture sampling (keyWidth%/sec) -->
-    <fraction name="config_gesture_sampling_minimum_distance">16.6666%</fraction>
-    <!-- Parameters for gesture recognition (msec) and (keyWidth%/sec) -->
-    <integer name="config_gesture_recognition_minimum_time">100</integer>
-    <integer name="config_gesture_recognition_update_time">100</integer>
-    <fraction name="config_gesture_recognition_speed_threshold">550%</fraction>
-    <!-- Suppress showing key preview duration after batch input in millisecond -->
-    <integer name="config_suppress_key_preview_after_batch_input_duration">1000</integer>
-    <!--
-        Configuration for auto correction
-     -->
-    <string-array name="auto_correction_threshold_values" translatable="false">
-        <!-- Off, When auto correction setting is Off, this value is not used. -->
-        <item>floatMaxValue</item>
-        <!-- Modest : Suggestion whose normalized score is greater than this value
-             will be subject to auto-correction. -->
-        <item>0.185</item>
-        <!-- Aggressive -->
-        <item>0.067</item>
-        <!-- Very Aggressive : Suggestion whose normalized score is greater than this value
-             will be subject to auto-correction. "floatNegativeInfinity" is a special marker
-             string for Float.NEGATIVE_INFINITY -->
-        <item>floatNegativeInfinity</item>
-    </string-array>
-    <!-- Threshold of the normalized score of the best suggestion for the spell checker to declare
-         a word to be "recommended" -->
-    <string name="spellchecker_recommended_threshold_value" translatable="false">0.11</string>
-    <!--  Screen metrics for logging.
-            0 = "mdpi phone screen"
-            1 = "hdpi phone screen"
-            2 = "mdpi 11 inch tablet screen"
-            3 = "xhdpi phone screen?"
-            4 = ?
-    -->
-    <integer name="log_screen_metrics">0</integer>
 
-    <!-- Settings for the dictionary pack -->
-    <bool name="allow_over_metered">false</bool>
-    <bool name="allow_over_roaming">false</bool>
-    <bool name="dict_downloads_visible_in_download_UI">false</bool>
-    <bool name="metadata_downloads_visible_in_download_UI">false</bool>
-    <bool name="display_notification_for_auto_update">false</bool>
-    <bool name="display_notification_for_user_requested_update">false</bool>
+    <!-- Preferable keyboard height in absolute scale: 1.285in -->
+    <!-- This config_default_keyboard_height value should match with keyboard-heights.xml -->
+    <dimen name="config_default_keyboard_height">205.6dp</dimen>
+    <fraction name="config_max_keyboard_height">46%p</fraction>
+    <fraction name="config_min_keyboard_height">-61.8%p</fraction>
 
+    <dimen name="config_more_keys_keyboard_key_height">52.8dp</dimen>
+
+    <dimen name="config_more_keys_keyboard_key_horizontal_padding">8dp</dimen>
+
+    <fraction name="config_keyboard_top_padding_gb">1.556%p</fraction>
+    <fraction name="config_keyboard_bottom_padding_gb">4.669%p</fraction>
+    <fraction name="config_key_vertical_gap_gb">6.495%p</fraction>
+    <fraction name="config_key_horizontal_gap_gb">1.971%p</fraction>
+
+    <fraction name="config_keyboard_top_padding_holo">2.335%p</fraction>
+    <fraction name="config_keyboard_bottom_padding_holo">4.669%p</fraction>
+    <fraction name="config_key_vertical_gap_holo">6.127%p</fraction>
+    <fraction name="config_key_horizontal_gap_holo">1.739%p</fraction>
+
+    <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
+    <!-- config_more_keys_keyboard_key_height x 1.2 -->
+    <dimen name="config_more_keys_keyboard_slide_allowance">63.36dp</dimen>
+    <!-- config_more_keys_keyboard_key_height x -1.0 -->
+    <dimen name="config_more_keys_keyboard_vertical_correction_gb">-52.8dp</dimen>
+
+    <fraction name="config_key_letter_ratio">55%</fraction>
+    <fraction name="config_key_large_letter_ratio">65%</fraction>
+    <fraction name="config_key_label_ratio">34%</fraction>
+    <fraction name="config_key_large_label_ratio">40%</fraction>
+    <fraction name="config_key_hint_letter_ratio">25%</fraction>
+    <fraction name="config_key_hint_label_ratio">44%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio">35%</fraction>
+    <fraction name="config_key_preview_text_ratio">82%</fraction>
+    <fraction name="config_language_on_spacebar_text_ratio">33.735%</fraction>
+    <dimen name="config_key_preview_height">80dp</dimen>
+    <dimen name="config_key_preview_offset_gb">-8.0dp</dimen>
+
+    <dimen name="config_key_label_horizontal_padding">4dp</dimen>
+    <dimen name="config_key_hint_letter_padding">1dp</dimen>
+    <dimen name="config_key_shifted_letter_hint_padding">2dp</dimen>
+
+    <!-- For 5-row keyboard -->
+    <fraction name="config_key_vertical_gap_5row">3.20%p</fraction>
+    <fraction name="config_key_letter_ratio_5row">64%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio_5row">41%</fraction>
+
+    <dimen name="config_key_preview_offset_holo">8.0dp</dimen>
+    <!-- config_more_keys_keyboard_key_height x -0.5 -->
+    <dimen name="config_more_keys_keyboard_vertical_correction_holo">-26.4dp</dimen>
+
+    <dimen name="config_suggestions_strip_height">40dp</dimen>
+    <dimen name="config_more_suggestions_row_height">40dp</dimen>
+    <integer name="config_max_more_suggestions_row">6</integer>
+    <fraction name="config_min_more_suggestions_width">90%</fraction>
+    <dimen name="config_suggestions_strip_horizontal_padding">0dp</dimen>
+    <dimen name="config_suggestion_min_width">44dp</dimen>
+    <dimen name="config_suggestion_text_horizontal_padding">6dp</dimen>
+    <dimen name="config_suggestion_text_size">18dp</dimen>
+    <dimen name="config_more_suggestions_hint_text_size">27dp</dimen>
+
+    <!-- Gesture floating preview text parameters -->
+    <dimen name="config_gesture_floating_preview_text_size">24dp</dimen>
+    <dimen name="config_gesture_floating_preview_text_offset">73dp</dimen>
+    <dimen name="config_gesture_floating_preview_horizontal_padding">24dp</dimen>
+    <dimen name="config_gesture_floating_preview_vertical_padding">16dp</dimen>
+    <dimen name="config_gesture_floating_preview_round_radius">2dp</dimen>
+
+    <!-- Emoji keyboard -->
+    <fraction name="config_emoji_keyboard_key_width">14.2857%p</fraction>
+    <fraction name="config_emoji_keyboard_row_height">33%p</fraction>
+    <fraction name="config_emoji_keyboard_key_letter_size">68%p</fraction>
+    <integer name="config_emoji_keyboard_max_page_key_count">21</integer>
 </resources>
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
deleted file mode 100644
index 4588b10..0000000
--- a/java/res/values/dimens.xml
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 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.
-*/
--->
-
-<resources>
-    <!-- Preferable keyboard height in absolute scale: 1.285in -->
-    <!-- This keyboardHeight value should match with keyboard-heights.xml -->
-    <dimen name="keyboardHeight">205.6dp</dimen>
-    <fraction name="maxKeyboardHeight">46%p</fraction>
-    <fraction name="minKeyboardHeight">-61.8%p</fraction>
-
-    <dimen name="popup_key_height">52.8dp</dimen>
-
-    <dimen name="more_keys_keyboard_key_horizontal_padding">8dp</dimen>
-
-    <fraction name="keyboard_left_padding">0%p</fraction>
-    <fraction name="keyboard_right_padding">0%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>
-
-    <fraction name="keyboard_top_padding_holo">2.335%p</fraction>
-    <fraction name="keyboard_bottom_padding_holo">4.669%p</fraction>
-    <fraction name="key_bottom_gap_holo">6.127%p</fraction>
-    <fraction name="key_horizontal_gap_holo">1.739%p</fraction>
-
-    <!-- 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_gb">-52.8dp</dimen>
-    <dimen name="keyboard_vertical_correction">0.0dp</dimen>
-
-    <fraction name="key_letter_ratio">55%</fraction>
-    <fraction name="key_large_letter_ratio">65%</fraction>
-    <fraction name="key_label_ratio">34%</fraction>
-    <fraction name="key_large_label_ratio">40%</fraction>
-    <fraction name="key_hint_letter_ratio">25%</fraction>
-    <fraction name="key_hint_label_ratio">44%</fraction>
-    <fraction name="key_uppercase_letter_ratio">35%</fraction>
-    <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_gb">-8.0dp</dimen>
-
-    <dimen name="key_label_horizontal_padding">4dp</dimen>
-    <dimen name="key_hint_letter_padding">1dp</dimen>
-    <dimen name="key_popup_hint_letter_padding">2dp</dimen>
-    <dimen name="key_uppercase_letter_padding">2dp</dimen>
-
-    <!-- For 5-row keyboard -->
-    <fraction name="key_bottom_gap_5row">3.20%p</fraction>
-    <fraction name="key_letter_ratio_5row">64%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5row">41%</fraction>
-
-    <dimen name="key_preview_offset_holo">8.0dp</dimen>
-    <!-- popup_key_height x -0.5 -->
-    <dimen name="more_keys_keyboard_vertical_correction_holo">-26.4dp</dimen>
-
-    <dimen name="suggestions_strip_height">40dp</dimen>
-    <dimen name="more_suggestions_key_horizontal_padding">12dp</dimen>
-    <dimen name="more_suggestions_row_height">40dp</dimen>
-    <dimen name="more_suggestions_bottom_gap">6dp</dimen>
-    <dimen name="more_suggestions_modal_tolerance">32.0dp</dimen>
-    <dimen name="more_suggestions_slide_allowance">16.0dp</dimen>
-    <integer name="max_more_suggestions_row">6</integer>
-    <fraction name="min_more_suggestions_width">90%</fraction>
-    <fraction name="more_suggestions_info_ratio">18%</fraction>
-    <dimen name="suggestions_strip_padding">0dp</dimen>
-    <dimen name="suggestion_min_width">44dp</dimen>
-    <dimen name="suggestion_padding">6dp</dimen>
-    <dimen name="suggestion_text_size">18dp</dimen>
-    <dimen name="more_suggestions_hint_text_size">27dp</dimen>
-    <integer name="suggestions_count_in_strip">3</integer>
-    <fraction name="center_suggestion_percentile">36%</fraction>
-
-    <!-- Gesture trail parameters -->
-    <!-- Minimum distance between gesture trail sampling points. -->
-    <dimen name="gesture_trail_min_sampling_distance">9.6dp</dimen>
-    <!-- Maximum angular threshold between gesture trails interpolation segments in degree. -->
-    <integer name="gesture_trail_max_interpolation_angular_threshold">15</integer>
-    <!-- Maximum distance threshold between gesture trails interpolation segments. -->
-    <dimen name="gesture_trail_max_interpolation_distance_threshold">16.0dp</dimen>
-    <!-- Maximum number of gesture trail interpolation segments. -->
-    <integer name="gesture_trail_max_interpolation_segments">6</integer>
-    <dimen name="gesture_trail_start_width">10.0dp</dimen>
-    <dimen name="gesture_trail_end_width">2.5dp</dimen>
-    <!-- Percentages of gesture preview taril body and shadow, in proportion to the trail width.
-         A negative value of the shadow ratio disables drawing shadow. -->
-    <!-- TODO: May use the shadow to alleviate rugged trail drawing. -->
-    <integer name="gesture_trail_body_ratio">100</integer>
-    <integer name="gesture_trail_shadow_ratio">-1</integer>
-    <!-- Gesture floating preview text parameters -->
-    <dimen name="gesture_floating_preview_text_size">24dp</dimen>
-    <dimen name="gesture_floating_preview_text_offset">73dp</dimen>
-    <dimen name="gesture_floating_preview_horizontal_padding">24dp</dimen>
-    <dimen name="gesture_floating_preview_vertical_padding">16dp</dimen>
-    <dimen name="gesture_floating_preview_round_radius">2dp</dimen>
-
-    <!-- Emoji keyboard -->
-    <fraction name="emoji_keyboard_key_width">14.2857%p</fraction>
-    <fraction name="emoji_keyboard_row_height">33%p</fraction>
-    <fraction name="emoji_keyboard_key_letter_size">68%p</fraction>
-    <integer name="emoji_keyboard_max_key_count">21</integer>
-    <dimen name="emoji_category_page_id_height">3dp</dimen>
-
-    <!-- Inset used in Accessibility mode to avoid accidental key presses when a finger slides off the screen. -->
-    <dimen name="accessibility_edge_slop">8dp</dimen>
-
-    <integer name="user_dictionary_max_word_length" translatable="false">48</integer>
-
-    <dimen name="language_on_spacebar_horizontal_margin">1dp</dimen>
-
-</resources>
diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index af5ec06..4be5863 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -18,25 +18,6 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- TODO: these settings depend on the language. They should be put either in the dictionary
-         header, or in the subtype maybe? -->
-    <!-- Symbols that are suggested between words -->
-    <string name="suggested_punctuations">!,?,\\,,:,;,\",(,),\',-,/,@,_</string>
-    <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
-    <string name="symbols_preceded_by_space">([{&amp;</string>
-    <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
-    <string name="symbols_followed_by_space">.,;:!?)]}&amp;</string>
-    <!-- Symbols that separate words -->
-    <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
-    <string name="symbols_word_separators">"&#x0009;&#x0020;\n"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"</string>
-    <!-- Word connectors -->
-    <string name="symbols_word_connectors">\'-</string>
-    <!-- The sentence separator code point, for capitalization -->
-    <!-- U+002E: "." FULL STOP   ; 2Eh = 46d -->
-    <integer name="sentence_separator">46</integer>
-    <!-- Whether this language uses spaces between words -->
-    <bool name="current_language_has_spaces">true</bool>
-
     <!--  Always show the suggestion strip -->
     <string name="prefs_suggestion_visibility_show_value">0</string>
     <!--  Show the suggestion strip only on portrait mode -->
@@ -57,43 +38,9 @@
        <item>@string/prefs_suggestion_visibility_hide_name</item>
     </string-array>
 
-    <string name="auto_correction_threshold_mode_index_off">0</string>
-    <string name="auto_correction_threshold_mode_index_modest">1</string>
-    <string name="auto_correction_threshold_mode_index_aggressive">2</string>
-    <string name="auto_correction_threshold_mode_index_very_aggressive">3</string>
-    <string-array name="auto_correction_threshold_mode_indexes">
-      <item>@string/auto_correction_threshold_mode_index_off</item>
-      <item>@string/auto_correction_threshold_mode_index_modest</item>
-      <item>@string/auto_correction_threshold_mode_index_aggressive</item>
-      <item>@string/auto_correction_threshold_mode_index_very_aggressive</item>
-    </string-array>
-    <string-array name="auto_correction_threshold_modes">
-      <item>@string/auto_correction_threshold_mode_off</item>
-      <item>@string/auto_correction_threshold_mode_modest</item>
-      <item>@string/auto_correction_threshold_mode_aggressive</item>
-      <item>@string/auto_correction_threshold_mode_very_aggressive</item>
-    </string-array>
-
+    <!-- For backward compatibility.
+         See {@link SettingsValues#needsToShowVoiceInputKey(SharedPreferences,Resources)} -->
     <string name="voice_mode_main">0</string>
-    <string name="voice_mode_symbols">1</string>
-    <string name="voice_mode_off">2</string>
-    <string-array name="voice_input_modes_values">
-        <item>@string/voice_mode_main</item>
-        <item>@string/voice_mode_symbols</item>
-        <item>@string/voice_mode_off</item>
-    </string-array>
-    <!-- Array of Voice Input modes -->
-    <string-array name="voice_input_modes">
-        <item>@string/voice_input_modes_main_keyboard</item>
-        <item>@string/voice_input_modes_symbols_keyboard</item>
-        <item>@string/voice_input_modes_off</item>
-    </string-array>
-    <!-- Array of Voice Input modes summary -->
-    <string-array name="voice_input_modes_summary">
-        <item>@string/voice_input_modes_summary_main_keyboard</item>
-        <item>@string/voice_input_modes_summary_symbols_keyboard</item>
-        <item>@string/voice_input_modes_summary_off</item>
-    </string-array>
 
     <!-- Title for Latin keyboard debug settings activity / dialog -->
     <string name="english_ime_debug_settings">Android keyboard Debug settings</string>
diff --git a/java/res/values/keyboard-icons-holo.xml b/java/res/values/keyboard-icons-holo.xml
index b49e1d1..4c888d5 100644
--- a/java/res/values/keyboard-icons-holo.xml
+++ b/java/res/values/keyboard-icons-holo.xml
@@ -32,7 +32,6 @@
         <item name="iconSearchKey">@drawable/sym_keyboard_search_holo_dark</item>
         <item name="iconTabKey">@drawable/sym_keyboard_tab_holo_dark</item>
         <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo_dark</item>
-        <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic_holo_dark</item>
         <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo_dark</item>
         <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo_dark</item>
         <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo_dark</item>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 11b3ea3..a269d49 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -245,21 +245,6 @@
     <!-- Preferences item for enabling speech input -->
     <string name="voice_input">Voice input key</string>
 
-    <!-- Voice Input modes -->
-    <!-- On settings screen, voice input pop-up menu option to show voice key on main keyboard [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_main_keyboard">On main keyboard</string>
-    <!-- On settings screen, voice input pop-up menu option to show voice key on symbols keyboard [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_symbols_keyboard">On symbols keyboard</string>
-    <!-- On settings screen, voice input pop-up menu option to never show voice key [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_off">Off</string>
-    <!-- Voice Input modes summary -->
-    <!-- On settings screen, voice input pop-up menu summary text to show voice key on main keyboard [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_summary_main_keyboard">Mic on main keyboard</string>
-    <!-- On settings screen, voice input pop-up menu summary text to show voice key on symbols keyboard [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_summary_symbols_keyboard">Mic on symbols keyboard</string>
-    <!-- On settings screen, voice input pop-up menu summary text to never show voice key [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_summary_off">Voice input is disabled</string>
-
     <!-- Title for configuring input method settings [CHAR LIMIT=35] -->
     <string name="configure_input_method">Configure input methods</string>
 
diff --git a/java/res/values/themes-common.xml b/java/res/values/themes-common.xml
index 298936d..7c9b51c 100644
--- a/java/res/values/themes-common.xml
+++ b/java/res/values/themes-common.xml
@@ -25,49 +25,49 @@
         <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="keyboardLeftPadding">@fraction/config_keyboard_left_padding</item>
+        <item name="keyboardRightPadding">@fraction/config_keyboard_right_padding</item>
         <item name="maxMoreKeysColumn">@integer/config_max_more_keys_column</item>
     </style>
     <style name="KeyboardView">
         <item name="keyBackground">@drawable/btn_keyboard_key_klp</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="keyLetterSize">@fraction/config_key_letter_ratio</item>
+        <item name="keyLargeLetterRatio">@fraction/config_key_large_letter_ratio</item>
+        <item name="keyLabelSize">@fraction/config_key_label_ratio</item>
+        <item name="keyLargeLabelRatio">@fraction/config_key_large_label_ratio</item>
+        <item name="keyHintLetterRatio">@fraction/config_key_hint_letter_ratio</item>
+        <item name="keyHintLabelRatio">@fraction/config_key_hint_label_ratio</item>
+        <item name="keyShiftedLetterHintRatio">@fraction/config_key_shifted_letter_hint_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="keyLabelHorizontalPadding">@dimen/config_key_label_horizontal_padding</item>
+        <item name="keyHintLetterPadding">@dimen/config_key_hint_letter_padding</item>
+        <item name="keyPopupHintLetterPadding">@dimen/config_key_popup_hint_letter_padding</item>
+        <item name="keyShiftedLetterHintPadding">@dimen/config_key_shifted_letter_hint_padding</item>
+        <item name="keyPreviewTextRatio">@fraction/config_key_preview_text_ratio</item>
+        <item name="verticalCorrection">@dimen/config_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="gestureFloatingPreviewTextSize">@dimen/config_gesture_floating_preview_text_size</item>
+        <item name="gestureFloatingPreviewTextOffset">@dimen/config_gesture_floating_preview_text_offset</item>
+        <item name="gestureFloatingPreviewHorizontalPadding">@dimen/config_gesture_floating_preview_horizontal_padding</item>
+        <item name="gestureFloatingPreviewVerticalPadding">@dimen/config_gesture_floating_preview_vertical_padding</item>
+        <item name="gestureFloatingPreviewRoundRadius">@dimen/config_gesture_floating_preview_round_radius</item>
+        <item name="gestureTrailMinSamplingDistance">@dimen/config_gesture_trail_min_sampling_distance</item>
+        <item name="gestureTrailMaxInterpolationAngularThreshold">@integer/config_gesture_trail_max_interpolation_angular_threshold</item>
+        <item name="gestureTrailMaxInterpolationDistanceThreshold">@dimen/config_gesture_trail_max_interpolation_distance_threshold</item>
+        <item name="gestureTrailMaxInterpolationSegments">@integer/config_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>
+        <item name="gestureTrailStartWidth">@dimen/config_gesture_trail_start_width</item>
+        <item name="gestureTrailEndWidth">@dimen/config_gesture_trail_end_width</item>
+        <item name="gestureTrailBodyRatio">@integer/config_gesture_trail_body_ratio</item>
+        <item name="gestureTrailShadowRatio">@integer/config_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="keySelectionByDraggingFinger">@bool/config_key_selection_by_dragging_finger</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>
@@ -75,11 +75,14 @@
         <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="keyPreviewLayout">@layout/key_preview</item>
+        <item name="keyPreviewHeight">@dimen/config_key_preview_height</item>
+        <item name="keyPreviewZoomInDuration">@integer/config_key_preview_zoom_in_duration</item>
+        <item name="keyPreviewZoomOutDuration">@integer/config_key_preview_zoom_out_duration</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="languageOnSpacebarTextRatio">@fraction/config_language_on_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.
@@ -104,6 +107,7 @@
     <style
         name="MainKeyboardView"
         parent="KeyboardView" />
+    <style name="KeyPreviewTextView" />
     <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
          for instance delete button, need themed {@link KeyboardView} attributes. -->
     <style
@@ -118,14 +122,14 @@
         parent="MainKeyboardView" />
     <style name="MoreKeysKeyboardContainer" />
     <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>
+        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
+        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
+        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
+        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
     </style>
     <style name="SuggestionWord" />
     <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>
\ No newline at end of file
+</resources>
diff --git a/java/res/values/themes-gb.xml b/java/res/values/themes-gb.xml
index f52695f..52ecafd 100644
--- a/java/res/values/themes-gb.xml
+++ b/java/res/values/themes-gb.xml
@@ -23,10 +23,10 @@
         <item name="keyboardStyle">@style/Keyboard.GB</item>
         <item name="keyboardViewStyle">@style/KeyboardView.GB</item>
         <item name="mainKeyboardViewStyle">@style/MainKeyboardView.GB</item>
+        <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.GB</item>
         <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.GB</item>
         <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.GB</item>
         <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.GB</item>
-        <item name="moreKeysKeyboardContainerStyle">@style/MoreKeysKeyboardContainer.GB</item>
         <item name="suggestionStripViewStyle">@style/SuggestionStripView.GB</item>
         <item name="suggestionWordStyle">@style/SuggestionWord.GB</item>
     </style>
@@ -40,7 +40,6 @@
         <item name="iconSearchKey">@drawable/sym_keyboard_search_holo_dark</item>
         <item name="iconTabKey">@drawable/sym_keyboard_tab_holo_dark</item>
         <item name="iconShortcutKey">@drawable/sym_keyboard_mic_holo_dark</item>
-        <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic_holo_dark</item>
         <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space</item>
         <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo_dark</item>
         <!-- TODO: Needs non-holo disabled shortcut icon drawable -->
@@ -59,10 +58,10 @@
         <!-- 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>
+        <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_gb</item>
+        <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_gb</item>
+        <item name="horizontalGap">@fraction/config_key_horizontal_gap_gb</item>
+        <item name="verticalGap">@fraction/config_key_vertical_gap_gb</item>
     </style>
     <style
         name="KeyboardView.GB"
@@ -85,16 +84,22 @@
         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="keyPreviewOffset">@dimen/config_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>
+        <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_gb</item>
+        <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_gb</item>
+        <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_gb</item>
+    </style>
+    <style
+        name="KeyPreviewTextView.GB"
+        parent="KeyPreviewTextView"
+    >
+        <item name="android:background">@drawable/keyboard_key_feedback_gb</item>
     </style>
     <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
          for instance delete button, need themed {@link KeyboardView} attributes. -->
@@ -118,15 +123,10 @@
         name="MoreKeysKeyboardView.GB"
         parent="KeyboardView.GB"
     >
-        <item name="android:background">@null</item>
+        <item name="android:background">@drawable/keyboard_popup_panel_background_gb</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="MoreKeysKeyboardContainer.GB"
-    >
-        <item name="android:background">@drawable/keyboard_popup_panel_background_gb</item>
+        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_gb</item>
     </style>
     <style
         name="SuggestionStripView.GB"
diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml
index 432ad51..125b640 100644
--- a/java/res/values/themes-ics.xml
+++ b/java/res/values/themes-ics.xml
@@ -23,10 +23,10 @@
         <item name="keyboardStyle">@style/Keyboard.ICS</item>
         <item name="keyboardViewStyle">@style/KeyboardView.ICS</item>
         <item name="mainKeyboardViewStyle">@style/MainKeyboardView.ICS</item>
+        <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.ICS</item>
         <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.ICS</item>
         <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.ICS</item>
         <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.ICS</item>
-        <item name="moreKeysKeyboardContainerStyle">@style/MoreKeysKeyboardContainer.ICS</item>
         <item name="suggestionStripViewStyle">@style/SuggestionStripView.ICS</item>
         <item name="suggestionWordStyle">@style/SuggestionWord.ICS</item>
     </style>
@@ -36,10 +36,10 @@
     >
         <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
         <item name="themeId">2</item>
-        <item name="keyboardTopPadding">@fraction/keyboard_top_padding_holo</item>
-        <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding_holo</item>
-        <item name="horizontalGap">@fraction/key_horizontal_gap_holo</item>
-        <item name="verticalGap">@fraction/key_bottom_gap_holo</item>
+        <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item>
+        <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item>
+        <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item>
+        <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item>
         <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
     </style>
     <style
@@ -63,16 +63,22 @@
         name="MainKeyboardView.ICS"
         parent="KeyboardView.ICS"
     >
-        <item name="keyPreviewLayout">@layout/key_preview_ics</item>
-        <item name="keyPreviewOffset">@dimen/key_preview_offset_holo</item>
+        <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
         <item name="gestureFloatingPreviewTextColor">@color/highlight_color_ics</item>
         <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</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_holo</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
+        <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
+        <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
+        <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_ics</item>
+    </style>
+    <style
+        name="KeyPreviewTextView.ICS"
+        parent="KeyPreviewTextView"
+    >
+        <item name="android:background">@drawable/keyboard_key_feedback_ics</item>
     </style>
     <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
          for instance delete button, need themed {@link KeyboardView} attributes. -->
@@ -96,15 +102,10 @@
         name="MoreKeysKeyboardView.ICS"
         parent="KeyboardView.ICS"
     >
-        <item name="android:background">@null</item>
+        <item name="android:background">@drawable/keyboard_popup_panel_background_ics</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_holo</item>
-    </style>
-    <style
-        name="MoreKeysKeyboardContainer.ICS"
-    >
-        <item name="android:background">@drawable/keyboard_popup_panel_background_ics</item>
+        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
     </style>
     <style
         name="SuggestionStripView.ICS"
diff --git a/java/res/values/themes-klp.xml b/java/res/values/themes-klp.xml
index a373001..f6c0767 100644
--- a/java/res/values/themes-klp.xml
+++ b/java/res/values/themes-klp.xml
@@ -23,10 +23,10 @@
         <item name="keyboardStyle">@style/Keyboard.KLP</item>
         <item name="keyboardViewStyle">@style/KeyboardView.KLP</item>
         <item name="mainKeyboardViewStyle">@style/MainKeyboardView.KLP</item>
+        <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.KLP</item>
         <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.KLP</item>
         <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.KLP</item>
         <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.KLP</item>
-        <item name="moreKeysKeyboardContainerStyle">@style/MoreKeysKeyboardContainer.KLP</item>
         <item name="suggestionStripViewStyle">@style/SuggestionStripView.KLP</item>
         <item name="suggestionWordStyle">@style/SuggestionWord.KLP</item>
     </style>
@@ -36,10 +36,10 @@
     >
         <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
         <item name="themeId">0</item>
-        <item name="keyboardTopPadding">@fraction/keyboard_top_padding_holo</item>
-        <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding_holo</item>
-        <item name="horizontalGap">@fraction/key_horizontal_gap_holo</item>
-        <item name="verticalGap">@fraction/key_bottom_gap_holo</item>
+        <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item>
+        <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item>
+        <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item>
+        <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item>
         <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
     </style>
     <style
@@ -63,16 +63,22 @@
         name="MainKeyboardView.KLP"
         parent="KeyboardView.KLP"
     >
-        <item name="keyPreviewLayout">@layout/key_preview_klp</item>
-        <item name="keyPreviewOffset">@dimen/key_preview_offset_holo</item>
+        <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
         <item name="gestureFloatingPreviewTextColor">@color/highlight_color_klp</item>
         <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
         <item name="gestureTrailColor">@color/highlight_color_klp</item>
         <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_klp</item>
         <item name="autoCorrectionSpacebarLedEnabled">false</item>
         <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
-        <item name="spacebarTextColor">@color/spacebar_text_color_holo</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
+        <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
+        <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
+        <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_klp</item>
+    </style>
+    <style
+        name="KeyPreviewTextView.KLP"
+        parent="KeyPreviewTextView"
+    >
+        <item name="android:background">@drawable/keyboard_key_feedback_klp</item>
     </style>
     <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
          for instance delete button, need themed {@link KeyboardView} attributes. -->
@@ -96,15 +102,10 @@
         name="MoreKeysKeyboardView.KLP"
         parent="KeyboardView.KLP"
     >
-        <item name="android:background">@null</item>
+        <item name="android:background">@drawable/keyboard_popup_panel_background_klp</item>
         <item name="keyBackground">@drawable/btn_keyboard_key_popup_klp</item>
         <item name="keyTypeface">normal</item>
-        <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction_holo</item>
-    </style>
-    <style
-        name="MoreKeysKeyboardContainer.KLP"
-    >
-        <item name="android:background">@drawable/keyboard_popup_panel_background_klp</item>
+        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
     </style>
     <style
         name="SuggestionStripView.KLP"