Move icon declaration to Keyboard theme

Bug: 4436327
Change-Id: I074014d28dcb323b60dbc8fd9e169c75c393e0b3
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 73f62c6..c88049e 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -141,6 +141,35 @@
         <attr name="popupKeyboardTemplate" format="reference" />
         <!-- Locale of the keyboard layout -->
         <attr name="keyboardLocale" format="string" />
+        <!-- Icon set for key top and key preview. -->
+        <attr name="iconShiftKey" format="reference" />
+        <attr name="iconToSymbolKey" format="reference" />
+        <attr name="iconToSymbolKeyWithShortcut" format="reference" />
+        <attr name="iconDeleteKey" format="reference" />
+        <attr name="iconSettingsKey" format="reference" />
+        <attr name="iconShortcutKey" format="reference" />
+        <attr name="iconSpaceKey" format="reference" />
+        <attr name="iconReturnKey" format="reference" />
+        <attr name="iconSearchKey" format="reference" />
+        <attr name="iconTabKey" format="reference" />
+        <attr name="iconNum1Key" format="reference" />
+        <attr name="iconNum2Key" format="reference" />
+        <attr name="iconNum3Key" format="reference" />
+        <attr name="iconNum4Key" format="reference" />
+        <attr name="iconNum5Key" format="reference" />
+        <attr name="iconNum6Key" format="reference" />
+        <attr name="iconNum7Key" format="reference" />
+        <attr name="iconNum8Key" format="reference" />
+        <attr name="iconNum9Key" format="reference" />
+        <attr name="iconNum0Key" format="reference" />
+        <attr name="iconNumStarKey" format="reference" />
+        <attr name="iconNumPoundKey" format="reference" />
+        <attr name="iconNumAltKey" format="reference" />
+        <attr name="iconShiftedShiftKey" format="reference" />
+        <attr name="iconPreviewSpaceKey" format="reference" />
+        <attr name="iconPreviewTabKey" format="reference" />
+        <attr name="iconPreviewSettingsKey" format="reference" />
+        <attr name="iconPreviewShortcutKey" format="reference" />
     </declare-styleable>
 
     <declare-styleable name="Keyboard_Key">
@@ -163,8 +192,6 @@
         <attr name="isSticky" format="boolean" />
         <!-- Whether long-pressing on this key will make it repeat. -->
         <attr name="isRepeatable" format="boolean" />
-        <!-- The icon to show in the popup preview. -->
-        <attr name="iconPreview" format="reference" />
         <!-- The string of characters to output when this key is pressed. -->
         <attr name="keyOutputText" format="string" />
         <!-- The label to display on the key. -->
@@ -182,11 +209,47 @@
             <flag name="hasUppercaseLetter" value="0x40" />
         </attr>
         <!-- The icon to display on the key instead of the label. -->
-        <attr name="keyIcon" format="reference" />
+        <attr name="keyIcon" format="enum">
+            <!-- This should be aligned with KeyboardIcons.ICON_* -->
+            <enum name="iconShiftKey" value="1" />
+            <enum name="iconToSymbolKey" value="2" />
+            <enum name="iconToSymbolKeyWithShortcut" value="3" />
+            <enum name="iconDeleteKey" value="4" />
+            <enum name="iconSettingsKey" value="5" />
+            <enum name="iconShortcutKey" value="6" />
+            <enum name="iconSpaceKey" value="7" />
+            <enum name="iconReturnKey" value="8" />
+            <enum name="iconSearchKey" value="9" />
+            <enum name="iconTabKey" value="10" />
+            <enum name="iconNum1Key" value="11" />
+            <enum name="iconNum2Key" value="12" />
+            <enum name="iconNum3Key" value="13" />
+            <enum name="iconNum4Key" value="14" />
+            <enum name="iconNum5Key" value="15" />
+            <enum name="iconNum6Key" value="16" />
+            <enum name="iconNum7Key" value="17" />
+            <enum name="iconNum8Key" value="18" />
+            <enum name="iconNum9Key" value="19" />
+            <enum name="iconNum0Key" value="20" />
+            <enum name="iconNumStarKey" value="21" />
+            <enum name="iconNumPoundKey" value="22" />
+            <enum name="iconNumAltKey" value="23" />
+        </attr>
+        <!-- Shift key icon for shifted state -->
+        <attr name="keyIconShifted" format="enum">
+            <!-- This should be aligned with KeyboardIcons.ICON_SHIFTED_* -->
+            <enum name="iconShiftedShiftKey" value="24" />
+        </attr>
+        <!-- The icon to show in the popup preview. -->
+        <attr name="keyIconPreview" format="enum">
+            <!-- This should be aligned with KeyboardIcons.ICON_PREVIEW_* -->
+            <enum name="iconPreviewSpaceKey" value="25" />
+            <enum name="iconPreviewTabKey" value="26" />
+            <enum name="iconPreviewSettingsKey" value="27" />
+            <enum name="iconPreviewShortcutKey" value="28" />
+        </attr>
         <!-- The key style to specify a set of key attributes defined by <key_style/> -->
         <attr name="keyStyle" format="string" />
-        <!-- Shift key icon for shifted state -->
-        <attr name="shiftedIcon" format="reference" />
         <!-- The key is enabled and responds on press. -->
         <attr name="enabled" format="boolean" />
         <!-- Visual insets -->
diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml
new file mode 100644
index 0000000..f11a9c4
--- /dev/null
+++ b/java/res/values/keyboard-icons-black.xml
@@ -0,0 +1,47 @@
+<?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" parent="android:Theme.Light">
+        <item name="iconShiftKey">@drawable/sym_bkeyboard_shift</item>
+        <item name="iconToSymbolKeyWithShortcut">@drawable/sym_bkeyboard_123_mic</item>
+        <item name="iconDeleteKey">@drawable/sym_bkeyboard_delete</item>
+        <item name="iconSettingsKey">@drawable/sym_bkeyboard_settings</item>
+        <item name="iconShortcutKey">@drawable/sym_bkeyboard_mic</item>
+        <item name="iconSpaceKey">@drawable/sym_bkeyboard_space</item>
+        <item name="iconReturnKey">@drawable/sym_bkeyboard_return</item>
+        <item name="iconSearchKey">@drawable/sym_bkeyboard_search</item>
+        <item name="iconTabKey">@drawable/sym_bkeyboard_tab</item>
+        <item name="iconNum1Key">@drawable/sym_bkeyboard_num1</item>
+        <item name="iconNum2Key">@drawable/sym_bkeyboard_num2</item>
+        <item name="iconNum3Key">@drawable/sym_bkeyboard_num3</item>
+        <item name="iconNum4Key">@drawable/sym_bkeyboard_num4</item>
+        <item name="iconNum5Key">@drawable/sym_bkeyboard_num5</item>
+        <item name="iconNum6Key">@drawable/sym_bkeyboard_num6</item>
+        <item name="iconNum7Key">@drawable/sym_bkeyboard_num7</item>
+        <item name="iconNum8Key">@drawable/sym_bkeyboard_num8</item>
+        <item name="iconNum9Key">@drawable/sym_bkeyboard_num9</item>
+        <item name="iconNum0Key">@drawable/sym_bkeyboard_num0</item>
+        <item name="iconNumStarKey">@drawable/sym_bkeyboard_numstar</item>
+        <item name="iconNumPoundKey">@drawable/sym_bkeyboard_numpound</item>
+        <item name="iconNumAltKey">@drawable/sym_bkeyboard_numalt</item>
+        <item name="iconShiftedShiftKey">@drawable/sym_bkeyboard_shift_locked</item>
+        <item name="iconPreviewSpaceKey">@drawable/sym_keyboard_feedback_space</item>
+        <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
+        <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_feedback_settings</item>
+        <item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_mic</item>
+    </style>
+</resources>
diff --git a/java/res/values/keyboard-icons-holo.xml b/java/res/values/keyboard-icons-holo.xml
new file mode 100644
index 0000000..5f396ca
--- /dev/null
+++ b/java/res/values/keyboard-icons-holo.xml
@@ -0,0 +1,47 @@
+<?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.Holo" parent="android:Theme.Holo">
+        <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo</item>
+<!--         <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_mic_holo</item> -->
+        <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo</item>
+        <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo</item>
+        <item name="iconSpaceKey">@drawable/sym_keyboard_space_holo</item>
+        <item name="iconReturnKey">@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="iconNum1Key">@drawable/sym_keyboard_num1_holo</item>
+        <item name="iconNum2Key">@drawable/sym_keyboard_num2_holo</item>
+        <item name="iconNum3Key">@drawable/sym_keyboard_num3_holo</item>
+        <item name="iconNum4Key">@drawable/sym_keyboard_num4_holo</item>
+        <item name="iconNum5Key">@drawable/sym_keyboard_num5_holo</item>
+        <item name="iconNum6Key">@drawable/sym_keyboard_num6_holo</item>
+        <item name="iconNum7Key">@drawable/sym_keyboard_num7_holo</item>
+        <item name="iconNum8Key">@drawable/sym_keyboard_num8_holo</item>
+        <item name="iconNum9Key">@drawable/sym_keyboard_num9_holo</item>
+        <item name="iconNum0Key">@drawable/sym_keyboard_num0_holo</item>
+        <item name="iconNumStarKey">@drawable/sym_keyboard_numbstar_holo</item>
+        <item name="iconNumPoundKey">@drawable/sym_keyboard_numbpound_holo</item>
+<!--         <item name="iconNumAltKey">@drawable/sym_keyboard_numalt_holo</item> -->
+        <item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked_holo</item>
+        <item name="iconPreviewSpaceKey">@drawable/sym_keyboard_space_holo</item>
+        <item name="iconPreviewTabKey">@drawable/sym_keyboard_tab_holo</item>
+        <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_settings_holo</item>
+<!--         <item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_voice_holo</item> -->
+    </style>
+</resources>
diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml
new file mode 100644
index 0000000..f25f7d4
--- /dev/null
+++ b/java/res/values/keyboard-icons-white.xml
@@ -0,0 +1,47 @@
+<?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" parent="android:Theme">
+        <item name="iconShiftKey">@drawable/sym_keyboard_shift</item>
+        <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_mic</item>
+        <item name="iconDeleteKey">@drawable/sym_keyboard_delete</item>
+        <item name="iconSettingsKey">@drawable/sym_keyboard_settings</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item>
+        <item name="iconSpaceKey">@drawable/sym_keyboard_space</item>
+        <item name="iconReturnKey">@drawable/sym_keyboard_return</item>
+        <item name="iconSearchKey">@drawable/sym_keyboard_search</item>
+        <item name="iconTabKey">@drawable/sym_keyboard_tab</item>
+        <item name="iconNum1Key">@drawable/sym_keyboard_num1</item>
+        <item name="iconNum2Key">@drawable/sym_keyboard_num2</item>
+        <item name="iconNum3Key">@drawable/sym_keyboard_num3</item>
+        <item name="iconNum4Key">@drawable/sym_keyboard_num4</item>
+        <item name="iconNum5Key">@drawable/sym_keyboard_num5</item>
+        <item name="iconNum6Key">@drawable/sym_keyboard_num6</item>
+        <item name="iconNum7Key">@drawable/sym_keyboard_num7</item>
+        <item name="iconNum8Key">@drawable/sym_keyboard_num8</item>
+        <item name="iconNum9Key">@drawable/sym_keyboard_num9</item>
+        <item name="iconNum0Key">@drawable/sym_keyboard_num0</item>
+        <item name="iconNumStarKey">@drawable/sym_keyboard_numstar</item>
+        <item name="iconNumPoundKey">@drawable/sym_keyboard_numpound</item>
+        <item name="iconNumAltKey">@drawable/sym_keyboard_numalt</item>
+        <item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked</item>
+        <item name="iconPreviewSpaceKey">@drawable/sym_keyboard_feedback_space</item>
+        <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
+        <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_feedback_settings</item>
+        <item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_mic</item>
+    </style>
+</resources>
diff --git a/java/res/values/themes-basic-highcontrast.xml b/java/res/values/themes-basic-highcontrast.xml
new file mode 100644
index 0000000..8122e4e
--- /dev/null
+++ b/java/res/values/themes-basic-highcontrast.xml
@@ -0,0 +1,30 @@
+<?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</item>
+        <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.HighContrast</item>
+        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
+        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
+        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
+        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
+        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+        <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item>
+        <item name="candidateViewStyle">@style/CandidateViewStyle</item>
+    </style>
+</resources>
diff --git a/java/res/values/themes-basic.xml b/java/res/values/themes-basic.xml
new file mode 100644
index 0000000..50b52de
--- /dev/null
+++ b/java/res/values/themes-basic.xml
@@ -0,0 +1,30 @@
+<?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="latinKeyboardStyle">@style/LatinKeyboard</item>
+        <item name="keyboardViewStyle">@style/KeyboardView</item>
+        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
+        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
+        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
+        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
+        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+        <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item>
+        <item name="candidateViewStyle">@style/CandidateViewStyle</item>
+    </style>
+</resources>
diff --git a/java/res/values/themes-gingerbread.xml b/java/res/values/themes-gingerbread.xml
new file mode 100644
index 0000000..cdb10c8
--- /dev/null
+++ b/java/res/values/themes-gingerbread.xml
@@ -0,0 +1,30 @@
+<?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</item>
+        <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.Gingerbread</item>
+        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
+        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Gingerbread</item>
+        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
+        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
+        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+        <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item>
+        <item name="candidateViewStyle">@style/CandidateViewStyle</item>
+    </style>
+</resources>
diff --git a/java/res/values/themes-honeycomb.xml b/java/res/values/themes-honeycomb.xml
new file mode 100644
index 0000000..07f5b83
--- /dev/null
+++ b/java/res/values/themes-honeycomb.xml
@@ -0,0 +1,30 @@
+<?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.Honeycomb" parent="KeyboardIcons.Holo">
+        <item name="keyboardStyle">@style/Keyboard.Honeycomb</item>
+        <item name="latinKeyboardStyle">@style/LatinKeyboard.Honeycomb</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.Honeycomb</item>
+        <item name="keyPreviewStyle">@style/KeyPreviewStyle.Honeycomb</item>
+        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Honeycomb</item>
+        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle.Honeycomb</item>
+        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.Honeycomb</item>
+        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.Honeycomb</item>
+        <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle.Honeycomb</item>
+        <item name="candidateViewStyle">@style/CandidateViewStyle.Honeycomb</item>
+    </style>
+</resources>
diff --git a/java/res/values/themes-stone-bold.xml b/java/res/values/themes-stone-bold.xml
new file mode 100644
index 0000000..4955f22
--- /dev/null
+++ b/java/res/values/themes-stone-bold.xml
@@ -0,0 +1,30 @@
+<?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</item>
+        <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.Stone.Bold</item>
+        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
+        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
+        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
+        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
+        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+        <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item>
+        <item name="candidateViewStyle">@style/CandidateViewStyle</item>
+    </style>
+</resources>
diff --git a/java/res/values/themes-stone.xml b/java/res/values/themes-stone.xml
new file mode 100644
index 0000000..39a011b
--- /dev/null
+++ b/java/res/values/themes-stone.xml
@@ -0,0 +1,30 @@
+<?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</item>
+        <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.Stone</item>
+        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
+        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
+        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
+        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
+        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+        <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item>
+        <item name="candidateViewStyle">@style/CandidateViewStyle</item>
+    </style>
+</resources>
diff --git a/java/res/values/themes.xml b/java/res/values/themes.xml
deleted file mode 100644
index 728ce5a..0000000
--- a/java/res/values/themes.xml
+++ /dev/null
@@ -1,85 +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="android:Theme">
-        <item name="keyboardStyle">@style/Keyboard</item>
-        <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
-        <item name="keyboardViewStyle">@style/KeyboardView</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
-        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
-        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
-        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
-        <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item>
-        <item name="candidateViewStyle">@style/CandidateViewStyle</item>
-    </style>
-    <style name="KeyboardTheme.HighContrast" parent="android:Theme">
-        <item name="keyboardStyle">@style/Keyboard</item>
-        <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.HighContrast</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
-        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
-        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
-        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
-        <item name="candidateViewStyle">@style/CandidateViewStyle</item>
-    </style>
-    <style name="KeyboardTheme.Stone" parent="android:Theme.Light">
-        <item name="keyboardStyle">@style/Keyboard</item>
-        <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.Stone</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
-        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
-        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
-        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
-        <item name="candidateViewStyle">@style/CandidateViewStyle</item>
-    </style>
-    <style name="KeyboardTheme.Stone.Bold" parent="android:Theme.Light">
-        <item name="keyboardStyle">@style/Keyboard</item>
-        <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.Stone.Bold</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
-        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
-        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
-        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
-        <item name="candidateViewStyle">@style/CandidateViewStyle</item>
-    </style>
-    <style name="KeyboardTheme.Gingerbread" parent="android:Theme.Black">
-        <item name="keyboardStyle">@style/Keyboard</item>
-        <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.Gingerbread</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
-        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Gingerbread</item>
-        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
-        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
-        <item name="candidateViewStyle">@style/CandidateViewStyle</item>
-    </style>
-    <style name="KeyboardTheme.Honeycomb" parent="android:Theme.Holo">
-        <item name="keyboardStyle">@style/Keyboard.Honeycomb</item>
-        <item name="latinKeyboardStyle">@style/LatinKeyboard.Honeycomb</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.Honeycomb</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle.Honeycomb</item>
-        <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Honeycomb</item>
-        <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle.Honeycomb</item>
-        <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.Honeycomb</item>
-        <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.Honeycomb</item>
-        <item name="candidateViewStyle">@style/CandidateViewStyle.Honeycomb</item>
-    </style>
-</resources>
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index a388879..988f5c4 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -38,137 +38,66 @@
         </case>
     </switch>
     <!-- Functional key styles -->
+    <key-style
+        latin:styleName="shiftKeyStyle"
+        latin:code="@integer/key_shift"
+        latin:keyIcon="iconShiftKey"
+        latin:keyIconShifted="iconShiftedShiftKey"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isSticky="true" />
+    <key-style
+        latin:styleName="deleteKeyStyle"
+        latin:code="@integer/key_delete"
+        latin:keyIcon="iconDeleteKey"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isRepeatable="true" />
+    <key-style
+        latin:styleName="returnKeyStyle"
+        latin:code="@integer/key_return"
+        latin:keyIcon="iconReturnKey"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="spaceKeyStyle"
+        latin:code="@integer/key_space"
+        latin:keyIconPreview="iconPreviewSpaceKey" />
+    <key-style
+        latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
+        latin:code="@integer/key_space"
+        latin:keyIconPreview="iconPreviewSpaceKey" />
+    <key-style
+        latin:styleName="smileyKeyStyle"
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyLabelOption="popupHint"
+        latin:popupCharacters="@string/alternates_for_smiley"
+        latin:maxPopupKeyboardColumn="5" />
     <switch>
         <case
-            latin:colorScheme="white"
+            latin:voiceKeyEnabled="true"
         >
             <key-style
-                latin:styleName="shiftKeyStyle"
-                latin:code="@integer/key_shift"
-                latin:keyIcon="@drawable/sym_keyboard_shift_holo"
-                latin:shiftedIcon="@drawable/sym_keyboard_shift_locked_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isSticky="true" />
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="@drawable/sym_keyboard_delete_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyIcon="@drawable/sym_keyboard_return_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="spaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-            <key-style
-                latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-            <key-style
-                latin:styleName="smileyKeyStyle"
-                latin:keyLabel=":-)"
-                latin:keyOutputText=":-) "
+                latin:styleName="shortcutOrSettingsKeyStyle"
+                latin:code="@integer/key_shortcut"
+                latin:keyIcon="iconShortcutKey"
+                latin:keyIconPreview="iconPreviewShortcutKey"
                 latin:keyLabelOption="popupHint"
-                latin:popupCharacters="@string/alternates_for_smiley"
-                latin:maxPopupKeyboardColumn="5" />
-            <switch>
-                <case
-                    latin:voiceKeyEnabled="true"
-                >
-                    <key-style
-                        latin:styleName="micOrSettingsKeyStyle"
-                        latin:code="@integer/key_shortcut"
-                        latin:keyIcon="@drawable/sym_keyboard_voice_holo"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-                        latin:keyLabelOption="popupHint"
-                        latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <default>
-                    <key-style
-                        latin:styleName="micOrSettingsKeyStyle"
-                        latin:code="@integer/key_settings"
-                        latin:keyIcon="@drawable/sym_keyboard_settings_holo"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
-                        latin:parentStyle="functionalKeyStyle" />
-                </default>
-            </switch>
-        </case>
-        <case
-            latin:colorScheme="black"
-        >
-            <key-style
-                latin:styleName="shiftKeyStyle"
-                latin:code="@integer/key_shift"
-                latin:keyIcon="@drawable/sym_bkeyboard_shift"
-                latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isSticky="true" />
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="@drawable/sym_bkeyboard_delete"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyIcon="@drawable/sym_bkeyboard_return"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+                latin:popupCharacters="\@icon/5|\@integer/key_settings"
                 latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="spaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-            <key-style
-                latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-            <key-style
-                latin:styleName="smileyKeyStyle"
-                latin:keyLabel=":-)"
-                latin:keyOutputText=":-) "
-                latin:keyLabelOption="popupHint"
-                latin:popupCharacters="@string/alternates_for_smiley"
-                latin:maxPopupKeyboardColumn="5" />
-            <switch>
-                <case
-                    latin:voiceKeyEnabled="true"
-                >
-                    <key-style
-                        latin:styleName="micOrSettingsKeyStyle"
-                        latin:code="@integer/key_shortcut"
-                        latin:keyIcon="@drawable/sym_bkeyboard_mic"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-                        latin:keyLabelOption="popupHint"
-                        latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <default>
-                    <key-style
-                        latin:styleName="micOrSettingsKeyStyle"
-                        latin:code="@integer/key_settings"
-                        latin:keyIcon="@drawable/sym_bkeyboard_settings"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
-                        latin:parentStyle="functionalKeyStyle" />
-                </default>
-            </switch>
         </case>
+        <default>
+            <key-style
+                latin:styleName="shortcutOrSettingsKeyStyle"
+                latin:code="@integer/key_settings"
+                latin:keyIcon="iconSettingsKey"
+                latin:keyIconPreview="iconPreviewSettingsKey"
+                latin:parentStyle="functionalKeyStyle" />
+        </default>
     </switch>
     <key-style
         latin:styleName="tabKeyStyle"
         latin:code="@integer/key_tab"
-        latin:keyIcon="@drawable/sym_keyboard_tab_holo"
-        latin:iconPreview="@drawable/sym_keyboard_tab_holo"
+        latin:keyIcon="iconTabKey"
+        latin:keyIconPreview="iconPreviewTabKey"
         latin:parentStyle="functionalKeyStyle" />
     <key-style
         latin:styleName="toSymbolKeyStyle"
diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml
index 0ff1da9..3a370c8 100644
--- a/java/res/xml-sw600dp/kbd_number.xml
+++ b/java/res/xml-sw600dp/kbd_number.xml
@@ -80,7 +80,7 @@
                     latin:keyStyle="num0KeyStyle" />
                 <Spacer />
                 <Key
-                    latin:keyStyle="micOrSettingsKeyStyle"
+                    latin:keyStyle="shortcutOrSettingsKeyStyle"
                     latin:keyXPos="-11.00%p"
                     latin:keyWidth="fillRight"
                     latin:keyEdgeFlags="right" />
@@ -176,7 +176,7 @@
                 <Key
                     latin:keyLabel="#" />
                 <Key
-                    latin:keyStyle="micOrSettingsKeyStyle"
+                    latin:keyStyle="shortcutOrSettingsKeyStyle"
                     latin:keyXPos="-11.00%p"
                     latin:keyWidth="fillBoth"
                     latin:keyEdgeFlags="right" />
diff --git a/java/res/xml-sw600dp/kbd_numkey_styles.xml b/java/res/xml-sw600dp/kbd_numkey_styles.xml
deleted file mode 100644
index b10dc93..0000000
--- a/java/res/xml-sw600dp/kbd_numkey_styles.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:colorScheme="white"
-        >
-            <key-style
-                latin:styleName="num0KeyStyle"
-                latin:code="48"
-                latin:keyIcon="@drawable/sym_keyboard_num0_holo" />
-            <key-style
-                latin:styleName="num1KeyStyle"
-                latin:code="49"
-                latin:keyIcon="@drawable/sym_keyboard_num1_holo" />
-            <key-style
-                latin:styleName="num2KeyStyle"
-                latin:code="50"
-                latin:keyIcon="@drawable/sym_keyboard_num2_holo" />
-            <key-style
-                latin:styleName="num3KeyStyle"
-                latin:code="51"
-                latin:keyIcon="@drawable/sym_keyboard_num3_holo" />
-            <key-style
-                latin:styleName="num4KeyStyle"
-                latin:code="52"
-                latin:keyIcon="@drawable/sym_keyboard_num4_holo" />
-            <key-style
-                latin:styleName="num5KeyStyle"
-                latin:code="53"
-                latin:keyIcon="@drawable/sym_keyboard_num5_holo" />
-            <key-style
-                latin:styleName="num6KeyStyle"
-                latin:code="54"
-                latin:keyIcon="@drawable/sym_keyboard_num6_holo" />
-            <key-style
-                latin:styleName="num7KeyStyle"
-                latin:code="55"
-                latin:keyIcon="@drawable/sym_keyboard_num7_holo" />
-            <key-style
-                latin:styleName="num8KeyStyle"
-                latin:code="56"
-                latin:keyIcon="@drawable/sym_keyboard_num8_holo" />
-            <key-style
-                latin:styleName="num9KeyStyle"
-                latin:code="57"
-                latin:keyIcon="@drawable/sym_keyboard_num9_holo" />
-            <key-style
-                latin:styleName="numStarKeyStyle"
-                latin:code="42"
-                latin:keyIcon="@drawable/sym_keyboard_numbstar_holo" />
-            <key-style
-                latin:styleName="numPoundKeyStyle"
-                latin:code="35"
-                latin:keyIcon="@drawable/sym_keyboard_numbpound_holo" />
-            <key-style
-                latin:styleName="numAltKeyStyle"
-                latin:code="@integer/key_switch_alpha_symbol"
-                latin:keyIcon="@drawable/sym_keyboard_numalt"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
-            <key-style
-                latin:styleName="numSpaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:keyIcon="@drawable/sym_keyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        </case>
-        <case
-            latin:colorScheme="black"
-        >
-            <key-style
-                latin:styleName="num0KeyStyle"
-                latin:code="48"
-                latin:keyIcon="@drawable/sym_bkeyboard_num0" />
-            <key-style
-                latin:styleName="num1KeyStyle"
-                latin:code="49"
-                latin:keyIcon="@drawable/sym_bkeyboard_num1" />
-            <key-style
-                latin:styleName="num2KeyStyle"
-                latin:code="50"
-                latin:keyIcon="@drawable/sym_bkeyboard_num2" />
-            <key-style
-                latin:styleName="num3KeyStyle"
-                latin:code="51"
-                latin:keyIcon="@drawable/sym_bkeyboard_num3" />
-            <key-style
-                latin:styleName="num4KeyStyle"
-                latin:code="52"
-                latin:keyIcon="@drawable/sym_bkeyboard_num4" />
-            <key-style
-                latin:styleName="num5KeyStyle"
-                latin:code="53"
-                latin:keyIcon="@drawable/sym_bkeyboard_num5" />
-            <key-style
-                latin:styleName="num6KeyStyle"
-                latin:code="54"
-                latin:keyIcon="@drawable/sym_bkeyboard_num6" />
-            <key-style
-                latin:styleName="num7KeyStyle"
-                latin:code="55"
-                latin:keyIcon="@drawable/sym_bkeyboard_num7" />
-            <key-style
-                latin:styleName="num8KeyStyle"
-                latin:code="56"
-                latin:keyIcon="@drawable/sym_bkeyboard_num8" />
-            <key-style
-                latin:styleName="num9KeyStyle"
-                latin:code="57"
-                latin:keyIcon="@drawable/sym_bkeyboard_num9" />
-            <key-style
-                latin:styleName="numStarKeyStyle"
-                latin:code="42"
-                latin:keyIcon="@drawable/sym_bkeyboard_numstar" />
-            <key-style
-                latin:styleName="numPoundKeyStyle"
-                latin:code="35"
-                latin:keyIcon="@drawable/sym_bkeyboard_numpound" />
-            <key-style
-                latin:styleName="numAltKeyStyle"
-                latin:code="@integer/key_switch_alpha_symbol"
-                latin:keyIcon="@drawable/sym_bkeyboard_numalt"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
-            <key-style
-                latin:styleName="numSpaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:keyIcon="@drawable/sym_bkeyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        </case>
-    </switch>
-</merge>
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index 20b2849..133983d 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -109,7 +109,7 @@
         <Key
             latin:keyStyle="numPoundKeyStyle" />
         <Key
-            latin:keyStyle="micOrSettingsKeyStyle"
+            latin:keyStyle="shortcutOrSettingsKeyStyle"
             latin:keyXPos="-11.00%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml
index a5ae945..73b7e4d 100644
--- a/java/res/xml-sw600dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -118,7 +118,7 @@
         <Key
             latin:keyStyle="numPoundKeyStyle" />
         <Key
-            latin:keyStyle="micOrSettingsKeyStyle"
+            latin:keyStyle="shortcutOrSettingsKeyStyle"
             latin:keyXPos="-11.00%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
index 49e377f..958a7ed 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
@@ -155,7 +155,7 @@
             </default>
         </switch>
         <Key
-            latin:keyStyle="micOrSettingsKeyStyle"
+            latin:keyStyle="shortcutOrSettingsKeyStyle"
             latin:keyXPos="-10.0%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 4d3e7d3..fca97c7 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -210,7 +210,7 @@
             </default>
         </switch>
         <Key
-            latin:keyStyle="micOrSettingsKeyStyle"
+            latin:keyStyle="shortcutOrSettingsKeyStyle"
             latin:keyXPos="-10.0%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_symbols_shift.xml
index 1743c0f..c23681d 100644
--- a/java/res/xml-sw600dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw600dp/kbd_symbols_shift.xml
@@ -148,7 +148,7 @@
             latin:keyXPos="30.750%p"
             latin:keyWidth="39.750%p" />
         <Key
-            latin:keyStyle="micOrSettingsKeyStyle"
+            latin:keyStyle="shortcutOrSettingsKeyStyle"
             latin:keyXPos="-10.0%p"
             latin:keyWidth="fillRight"
             latin:keyEdgeFlags="right" />
diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index 4388e89..ecfacc2 100644
--- a/java/res/xml-sw768dp/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
@@ -29,111 +29,60 @@
             <key-style
                 latin:styleName="functionalKeyStyle"
                 latin:isFunctional="true" />
-            <key-style
-                latin:styleName="shiftKeyStyle"
-                latin:code="@integer/key_shift"
-                latin:keyIcon="@drawable/sym_keyboard_shift_holo"
-                latin:shiftedIcon="@drawable/sym_keyboard_shift_locked_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isSticky="true" />
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="@drawable/sym_keyboard_delete_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyIcon="@drawable/sym_keyboard_return_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="spaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-            <key-style
-                latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-            <key-style
-                latin:styleName="smileyKeyStyle"
-                latin:keyLabel=":-)"
-                latin:keyOutputText=":-) "
-                latin:keyLabelOption="popupHint"
-                latin:popupCharacters="@string/alternates_for_smiley"
-                latin:maxPopupKeyboardColumn="5" />
-            <key-style
-                latin:styleName="settingsKeyStyle"
-                latin:code="@integer/key_settings"
-                latin:keyIcon="@drawable/sym_keyboard_settings_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="micKeyStyle"
-                latin:code="@integer/key_shortcut"
-                latin:keyIcon="@drawable/sym_keyboard_voice_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-                latin:parentStyle="functionalKeyStyle" />
         </case>
         <case
             latin:colorScheme="black"
         >
             <key-style
                 latin:styleName="functionalKeyStyle" />
-            <key-style
-                latin:styleName="shiftKeyStyle"
-                latin:code="@integer/key_shift"
-                latin:keyIcon="@drawable/sym_bkeyboard_shift"
-                latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isSticky="true" />
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="@drawable/sym_bkeyboard_delete"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyIcon="@drawable/sym_bkeyboard_return"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="spaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-            <key-style
-                latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-            <key-style
-                latin:styleName="smileyKeyStyle"
-                latin:keyLabel=":-)"
-                latin:keyOutputText=":-) "
-                latin:keyLabelOption="popupHint"
-                latin:popupCharacters="@string/alternates_for_smiley"
-                latin:maxPopupKeyboardColumn="5" />
-            <key-style
-                latin:styleName="settingsKeyStyle"
-                latin:code="@integer/key_settings"
-                latin:keyIcon="@drawable/sym_bkeyboard_settings"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="micKeyStyle"
-                latin:code="@integer/key_shortcut"
-                latin:keyIcon="@drawable/sym_bkeyboard_mic"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-                latin:parentStyle="functionalKeyStyle" />
         </case>
     </switch>
     <key-style
+        latin:styleName="shiftKeyStyle"
+        latin:code="@integer/key_shift"
+        latin:keyIcon="iconShiftKey"
+        latin:keyIconShifted="iconShiftedShiftKey"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isSticky="true" />
+    <key-style
+        latin:styleName="deleteKeyStyle"
+        latin:code="@integer/key_delete"
+        latin:keyIcon="iconDeleteKey"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isRepeatable="true" />
+    <key-style
+        latin:styleName="returnKeyStyle"
+        latin:code="@integer/key_return"
+        latin:keyIcon="iconReturnKey"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="spaceKeyStyle"
+        latin:code="@integer/key_space"
+        latin:keyIconPreview="iconPreviewSpaceKey" />
+    <key-style
+        latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
+        latin:code="@integer/key_space"
+        latin:keyIconPreview="iconPreviewSpaceKey" />
+    <key-style
+        latin:styleName="smileyKeyStyle"
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyLabelOption="popupHint"
+        latin:popupCharacters="@string/alternates_for_smiley"
+        latin:maxPopupKeyboardColumn="5" />
+    <key-style
+        latin:styleName="settingsKeyStyle"
+        latin:code="@integer/key_settings"
+        latin:keyIcon="iconSettingsKey"
+        latin:keyIconPreview="iconPreviewSettingsKey"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="shortcutKeyStyle"
+        latin:code="@integer/key_shortcut"
+        latin:keyIcon="iconShortcutKey"
+        latin:keyIconPreview="iconPreviewShortcutKey"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
         latin:styleName="tabKeyStyle"
         latin:code="@integer/key_tab"
         latin:keyLabel="@string/label_tab_key"
diff --git a/java/res/xml-sw768dp/kbd_number.xml b/java/res/xml-sw768dp/kbd_number.xml
index 4f33e41..1e478fd 100644
--- a/java/res/xml-sw768dp/kbd_number.xml
+++ b/java/res/xml-sw768dp/kbd_number.xml
@@ -193,7 +193,7 @@
                         latin:voiceKeyEnabled="true"
                     >
                         <Key
-                            latin:keyStyle="micKeyStyle"
+                            latin:keyStyle="shortcutKeyStyle"
                             latin:keyXPos="-8.047%p"
                             latin:keyWidth="fillRight" />
                     </case>
diff --git a/java/res/xml-sw768dp/kbd_numkey_styles.xml b/java/res/xml-sw768dp/kbd_numkey_styles.xml
deleted file mode 100644
index e27db94..0000000
--- a/java/res/xml-sw768dp/kbd_numkey_styles.xml
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** 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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:colorScheme="white"
-        >
-            <key-style
-                latin:styleName="num0KeyStyle"
-                latin:code="48"
-                latin:keyIcon="@drawable/sym_keyboard_num0_holo" />
-            <key-style
-                latin:styleName="num1KeyStyle"
-                latin:code="49"
-                latin:keyIcon="@drawable/sym_keyboard_num1_holo" />
-            <key-style
-                latin:styleName="num2KeyStyle"
-                latin:code="50"
-                latin:keyIcon="@drawable/sym_keyboard_num2_holo" />
-            <key-style
-                latin:styleName="num3KeyStyle"
-                latin:code="51"
-                latin:keyIcon="@drawable/sym_keyboard_num3_holo" />
-            <key-style
-                latin:styleName="num4KeyStyle"
-                latin:code="52"
-                latin:keyIcon="@drawable/sym_keyboard_num4_holo" />
-            <key-style
-                latin:styleName="num5KeyStyle"
-                latin:code="53"
-                latin:keyIcon="@drawable/sym_keyboard_num5_holo" />
-            <key-style
-                latin:styleName="num6KeyStyle"
-                latin:code="54"
-                latin:keyIcon="@drawable/sym_keyboard_num6_holo" />
-            <key-style
-                latin:styleName="num7KeyStyle"
-                latin:code="55"
-                latin:keyIcon="@drawable/sym_keyboard_num7_holo" />
-            <key-style
-                latin:styleName="num8KeyStyle"
-                latin:code="56"
-                latin:keyIcon="@drawable/sym_keyboard_num8_holo" />
-            <key-style
-                latin:styleName="num9KeyStyle"
-                latin:code="57"
-                latin:keyIcon="@drawable/sym_keyboard_num9_holo" />
-            <key-style
-                latin:styleName="numStarKeyStyle"
-                latin:code="42"
-                latin:keyIcon="@drawable/sym_keyboard_numbstar_holo" />
-            <key-style
-                latin:styleName="numPoundKeyStyle"
-                latin:code="35"
-                latin:keyIcon="@drawable/sym_keyboard_numbpound_holo" />
-            <key-style
-                latin:styleName="numAltKeyStyle"
-                latin:code="@integer/key_switch_alpha_symbol"
-                latin:keyIcon="@drawable/sym_keyboard_numalt"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
-            <key-style
-                latin:styleName="numSpaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        </case>
-        <case
-            latin:colorScheme="black"
-        >
-            <key-style
-                latin:styleName="num0KeyStyle"
-                latin:code="48"
-                latin:keyIcon="@drawable/sym_bkeyboard_num0" />
-            <key-style
-                latin:styleName="num1KeyStyle"
-                latin:code="49"
-                latin:keyIcon="@drawable/sym_bkeyboard_num1" />
-            <key-style
-                latin:styleName="num2KeyStyle"
-                latin:code="50"
-                latin:keyIcon="@drawable/sym_bkeyboard_num2" />
-            <key-style
-                latin:styleName="num3KeyStyle"
-                latin:code="51"
-                latin:keyIcon="@drawable/sym_bkeyboard_num3" />
-            <key-style
-                latin:styleName="num4KeyStyle"
-                latin:code="52"
-                latin:keyIcon="@drawable/sym_bkeyboard_num4" />
-            <key-style
-                latin:styleName="num5KeyStyle"
-                latin:code="53"
-                latin:keyIcon="@drawable/sym_bkeyboard_num5" />
-            <key-style
-                latin:styleName="num6KeyStyle"
-                latin:code="54"
-                latin:keyIcon="@drawable/sym_bkeyboard_num6" />
-            <key-style
-                latin:styleName="num7KeyStyle"
-                latin:code="55"
-                latin:keyIcon="@drawable/sym_bkeyboard_num7" />
-            <key-style
-                latin:styleName="num8KeyStyle"
-                latin:code="56"
-                latin:keyIcon="@drawable/sym_bkeyboard_num8" />
-            <key-style
-                latin:styleName="num9KeyStyle"
-                latin:code="57"
-                latin:keyIcon="@drawable/sym_bkeyboard_num9" />
-            <key-style
-                latin:styleName="numStarKeyStyle"
-                latin:code="42"
-                latin:keyIcon="@drawable/sym_bkeyboard_numstar" />
-            <key-style
-                latin:styleName="numPoundKeyStyle"
-                latin:code="35"
-                latin:keyIcon="@drawable/sym_bkeyboard_numpound" />
-            <key-style
-                latin:styleName="numAltKeyStyle"
-                latin:code="@integer/key_switch_alpha_symbol"
-                latin:keyIcon="@drawable/sym_bkeyboard_numalt"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
-            <key-style
-                latin:styleName="numSpaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        </case>
-    </switch>
-</merge>
diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index 69169ff..b0d9337 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -123,7 +123,7 @@
                 latin:voiceKeyEnabled="true"
             >
                 <Key
-                    latin:keyStyle="micKeyStyle"
+                    latin:keyStyle="shortcutKeyStyle"
                     latin:keyXPos="-8.047%p"
                     latin:keyWidth="fillRight" />
             </case>
diff --git a/java/res/xml-sw768dp/kbd_phone_symbols.xml b/java/res/xml-sw768dp/kbd_phone_symbols.xml
index e95579c..120a149 100644
--- a/java/res/xml-sw768dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -134,7 +134,7 @@
                 latin:voiceKeyEnabled="true"
             >
                 <Key
-                    latin:keyStyle="micKeyStyle"
+                    latin:keyStyle="shortcutKeyStyle"
                     latin:keyXPos="-8.047%p"
                     latin:keyWidth="fillRight" />
             </case>
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
index fba2a65..00eabab 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
@@ -132,7 +132,7 @@
                 latin:voiceKeyEnabled="true"
             >
                 <Key
-                    latin:keyStyle="micKeyStyle"
+                    latin:keyStyle="shortcutKeyStyle"
                     latin:keyXPos="-8.047%p"
                     latin:keyWidth="fillRight" />
             </case>
diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_symbols.xml
index d1a83c4..0e6103a 100644
--- a/java/res/xml-sw768dp/kbd_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_symbols.xml
@@ -186,7 +186,7 @@
                 latin:voiceKeyEnabled="true"
             >
                 <Key
-                    latin:keyStyle="micKeyStyle"
+                    latin:keyStyle="shortcutKeyStyle"
                     latin:keyXPos="-8.047%p"
                     latin:keyWidth="fillRight" />
             </case>
diff --git a/java/res/xml-sw768dp/kbd_symbols_shift.xml b/java/res/xml-sw768dp/kbd_symbols_shift.xml
index dde144f..b368141 100644
--- a/java/res/xml-sw768dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw768dp/kbd_symbols_shift.xml
@@ -166,7 +166,7 @@
                 latin:voiceKeyEnabled="true"
             >
                 <Key
-                    latin:keyStyle="micKeyStyle"
+                    latin:keyStyle="shortcutKeyStyle"
                     latin:keyXPos="-8.047%p"
                     latin:keyWidth="fillRight" />
             </case>
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index 201bff6..fbc4c92 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -23,7 +23,7 @@
 >
     <!-- Base key style for the functional key -->
     <switch>
-       <case
+        <case
             latin:colorScheme="white"
         >
             <key-style
@@ -51,159 +51,76 @@
             <key-style
                 latin:styleName="settingsPopupStyle"
                 latin:keyLabelOption="popupHint"
-                latin:popupCharacters="\@drawable/sym_keyboard_settings_holo|\@integer/key_settings"
+                latin:popupCharacters="\@icon/5|\@integer/key_settings"
                 latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
     <!-- Functional key styles -->
+    <key-style
+        latin:styleName="shiftKeyStyle"
+        latin:code="@integer/key_shift"
+        latin:keyIcon="iconShiftKey"
+        latin:keyIconShifted="iconShiftedShiftKey"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isSticky="true" />
+    <key-style
+        latin:styleName="deleteKeyStyle"
+        latin:code="@integer/key_delete"
+        latin:keyIcon="iconDeleteKey"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isRepeatable="true" />
     <switch>
+        <!-- When this qwerty keyboard has no voice key but voice key is enabled, then symbol
+             keyboard will have mic key. That means we should use "?123mic" key here. -->
         <case
-            latin:colorScheme="white"
+            latin:voiceKeyEnabled="true"
+            latin:hasVoiceKey="false"
         >
             <key-style
-                latin:styleName="shiftKeyStyle"
-                latin:code="@integer/key_shift"
-                latin:keyIcon="@drawable/sym_keyboard_shift"
-                latin:shiftedIcon="@drawable/sym_keyboard_shift_locked"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isSticky="true" />
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="@drawable/sym_keyboard_delete"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-            <switch>
-                <!-- When this qwerty keyboard has no voice key but voice key is enabled, then
-                     symbol keyboard will have mic key. That means we should use "?123mic" key
-                     here. -->
-                <case
-                    latin:voiceKeyEnabled="true"
-                    latin:hasVoiceKey="false"
-                >
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyIcon="@drawable/sym_keyboard_123_mic"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <default>
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyLabel="@string/label_to_symbol_key"
-                        latin:parentStyle="functionalKeyStyle" />
-                </default>
-            </switch>
-            <key-style
-                latin:styleName="settingsKeyStyle"
-                latin:code="@integer/key_settings"
-                latin:keyIcon="@drawable/sym_keyboard_settings"
-                latin:iconPreview="@drawable/sym_keyboard_settings"
+                latin:styleName="toSymbolKeyStyle"
+                latin:code="@integer/key_switch_alpha_symbol"
+                latin:keyIcon="iconToSymbolKeyWithShortcut"
                 latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="spaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:keyIcon="@drawable/sym_keyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_space"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="tabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_keyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_tab"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="micKeyStyle"
-                latin:code="@integer/key_shortcut"
-                latin:keyIcon="@drawable/sym_keyboard_mic"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-                latin:parentStyle="settingsPopupStyle" />
-            <!-- Note: This key style is not for functional tab key. This is used for the tab key
-                 which is laid out as normal letter key. -->
-            <key-style
-                latin:styleName="nonSpecialBackgroundTabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_keyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_tab" />
         </case>
-        <case
-            latin:colorScheme="black"
-        >
+        <default>
             <key-style
-                latin:styleName="shiftKeyStyle"
-                latin:code="@integer/key_shift"
-                latin:keyIcon="@drawable/sym_bkeyboard_shift"
-                latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isSticky="true" />
-            <key-style
-                latin:styleName="deleteKeyStyle"
-                latin:code="@integer/key_delete"
-                latin:keyIcon="@drawable/sym_bkeyboard_delete"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-                latin:parentStyle="functionalKeyStyle"
-                latin:isRepeatable="true" />
-            <switch>
-                <!-- When this qwerty keyboard has no voice key but voice key is enabled, then
-                     symbol keyboard will have mic key. That means we should use "?123mic" key
-                     here. -->
-                <case
-                    latin:voiceKeyEnabled="true"
-                    latin:hasVoiceKey="false"
-                >
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyIcon="@drawable/sym_bkeyboard_123_mic"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <default>
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyLabel="@string/label_to_symbol_key"
-                        latin:parentStyle="functionalKeyStyle" />
-                </default>
-            </switch>
-            <key-style
-                latin:styleName="settingsKeyStyle"
-                latin:code="@integer/key_settings"
-                latin:keyIcon="@drawable/sym_bkeyboard_settings"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+                latin:styleName="toSymbolKeyStyle"
+                latin:code="@integer/key_switch_alpha_symbol"
+                latin:keyLabel="@string/label_to_symbol_key"
                 latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="spaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:keyIcon="@drawable/sym_bkeyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="tabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_bkeyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
-                latin:parentStyle="functionalKeyStyle" />
-            <key-style
-                latin:styleName="micKeyStyle"
-                latin:code="@integer/key_shortcut"
-                latin:keyIcon="@drawable/sym_bkeyboard_mic"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-                latin:parentStyle="settingsPopupStyle" />
-            <!-- Note: This key style is not for functional tab key. This is used for the tab key
-                 which is laid out as normal letter key. -->
-            <key-style
-                latin:styleName="nonSpecialBackgroundTabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_bkeyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
-        </case>
+        </default>
     </switch>
+    <key-style
+        latin:styleName="settingsKeyStyle"
+        latin:code="@integer/key_settings"
+        latin:keyIcon="iconSettingsKey"
+        latin:keyIconPreview="iconPreviewSettingsKey"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="spaceKeyStyle"
+        latin:code="@integer/key_space"
+        latin:keyIcon="iconSpaceKey"
+        latin:keyIconPreview="iconPreviewSpaceKey"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="tabKeyStyle"
+        latin:code="@integer/key_tab"
+        latin:keyIcon="iconTabKey"
+        latin:keyIconPreview="iconPreviewTabKey"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="shortcutKeyStyle"
+        latin:code="@integer/key_shortcut"
+        latin:keyIcon="iconShortcutKey"
+        latin:keyIconPreview="iconPreviewShortcutKey"
+        latin:parentStyle="settingsPopupStyle" />
+    <!-- Note: This key style is not for functional tab key. This is used for the tab key which is
+         laid out as normal letter key. -->
+    <key-style
+        latin:styleName="nonSpecialBackgroundTabKeyStyle"
+        latin:code="@integer/key_tab"
+        latin:keyIcon="iconTabKey"
+        latin:keyIconPreview="iconPreviewTabKey" />
     <!-- Return key style -->
     <switch>
         <case
@@ -245,52 +162,18 @@
         <case
             latin:imeAction="actionSearch"
         >
-            <switch>
-                <case
-                    latin:colorScheme="white"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_keyboard_search"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_search"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <case
-                    latin:colorScheme="black"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_bkeyboard_search"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_search"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-            </switch>
+            <key-style
+                latin:styleName="returnKeyStyle"
+                latin:code="@integer/key_return"
+                latin:keyIcon="iconSearchKey"
+                latin:parentStyle="functionalKeyStyle" />
         </case>
         <default>
-            <switch>
-                <case
-                    latin:colorScheme="white"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_keyboard_return"
-                        latin:iconPreview="@drawable/sym_keyboard_return"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <case
-                    latin:colorScheme="black"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_bkeyboard_return"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-            </switch>
+            <key-style
+                latin:styleName="returnKeyStyle"
+                latin:code="@integer/key_return"
+                latin:keyIcon="iconReturnKey"
+                latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
     <key-style
@@ -335,4 +218,4 @@
                 latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
-</merge>
\ No newline at end of file
+</merge>
diff --git a/java/res/xml/kbd_numkey_styles.xml b/java/res/xml/kbd_numkey_styles.xml
index 2f9ae32..f53046a 100644
--- a/java/res/xml/kbd_numkey_styles.xml
+++ b/java/res/xml/kbd_numkey_styles.xml
@@ -21,130 +21,61 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <switch>
-        <case
-            latin:colorScheme="white"
-        >
-            <key-style
-                latin:styleName="num0KeyStyle"
-                latin:code="48"
-                latin:keyIcon="@drawable/sym_keyboard_num0" />
-            <key-style
-                latin:styleName="num1KeyStyle"
-                latin:code="49"
-                latin:keyIcon="@drawable/sym_keyboard_num1" />
-            <key-style
-                latin:styleName="num2KeyStyle"
-                latin:code="50"
-                latin:keyIcon="@drawable/sym_keyboard_num2" />
-            <key-style
-                latin:styleName="num3KeyStyle"
-                latin:code="51"
-                latin:keyIcon="@drawable/sym_keyboard_num3" />
-            <key-style
-                latin:styleName="num4KeyStyle"
-                latin:code="52"
-                latin:keyIcon="@drawable/sym_keyboard_num4" />
-            <key-style
-                latin:styleName="num5KeyStyle"
-                latin:code="53"
-                latin:keyIcon="@drawable/sym_keyboard_num5" />
-            <key-style
-                latin:styleName="num6KeyStyle"
-                latin:code="54"
-                latin:keyIcon="@drawable/sym_keyboard_num6" />
-            <key-style
-                latin:styleName="num7KeyStyle"
-                latin:code="55"
-                latin:keyIcon="@drawable/sym_keyboard_num7" />
-            <key-style
-                latin:styleName="num8KeyStyle"
-                latin:code="56"
-                latin:keyIcon="@drawable/sym_keyboard_num8" />
-            <key-style
-                latin:styleName="num9KeyStyle"
-                latin:code="57"
-                latin:keyIcon="@drawable/sym_keyboard_num9" />
-            <key-style
-                latin:styleName="numStarKeyStyle"
-                latin:code="42"
-                latin:keyIcon="@drawable/sym_keyboard_numstar" />
-            <key-style
-                latin:styleName="numPoundKeyStyle"
-                latin:code="35"
-                latin:keyIcon="@drawable/sym_keyboard_numpound" />
-            <key-style
-                latin:styleName="numAltKeyStyle"
-                latin:code="@integer/key_switch_alpha_symbol"
-                latin:keyIcon="@drawable/sym_keyboard_numalt"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
-            <key-style
-                latin:styleName="numSpaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:keyIcon="@drawable/sym_keyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        </case>
-        <case
-            latin:colorScheme="black"
-        >
-            <key-style
-                latin:styleName="num0KeyStyle"
-                latin:code="48"
-                latin:keyIcon="@drawable/sym_bkeyboard_num0" />
-            <key-style
-                latin:styleName="num1KeyStyle"
-                latin:code="49"
-                latin:keyIcon="@drawable/sym_bkeyboard_num1" />
-            <key-style
-                latin:styleName="num2KeyStyle"
-                latin:code="50"
-                latin:keyIcon="@drawable/sym_bkeyboard_num2" />
-            <key-style
-                latin:styleName="num3KeyStyle"
-                latin:code="51"
-                latin:keyIcon="@drawable/sym_bkeyboard_num3" />
-            <key-style
-                latin:styleName="num4KeyStyle"
-                latin:code="52"
-                latin:keyIcon="@drawable/sym_bkeyboard_num4" />
-            <key-style
-                latin:styleName="num5KeyStyle"
-                latin:code="53"
-                latin:keyIcon="@drawable/sym_bkeyboard_num5" />
-            <key-style
-                latin:styleName="num6KeyStyle"
-                latin:code="54"
-                latin:keyIcon="@drawable/sym_bkeyboard_num6" />
-            <key-style
-                latin:styleName="num7KeyStyle"
-                latin:code="55"
-                latin:keyIcon="@drawable/sym_bkeyboard_num7" />
-            <key-style
-                latin:styleName="num8KeyStyle"
-                latin:code="56"
-                latin:keyIcon="@drawable/sym_bkeyboard_num8" />
-            <key-style
-                latin:styleName="num9KeyStyle"
-                latin:code="57"
-                latin:keyIcon="@drawable/sym_bkeyboard_num9" />
-            <key-style
-                latin:styleName="numStarKeyStyle"
-                latin:code="42"
-                latin:keyIcon="@drawable/sym_bkeyboard_numstar" />
-            <key-style
-                latin:styleName="numPoundKeyStyle"
-                latin:code="35"
-                latin:keyIcon="@drawable/sym_bkeyboard_numpound" />
-            <key-style
-                latin:styleName="numAltKeyStyle"
-                latin:code="@integer/key_switch_alpha_symbol"
-                latin:keyIcon="@drawable/sym_bkeyboard_numalt"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
-            <key-style
-                latin:styleName="numSpaceKeyStyle"
-                latin:code="@integer/key_space"
-                latin:keyIcon="@drawable/sym_bkeyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        </case>
-    </switch>
+    <key-style
+        latin:styleName="num0KeyStyle"
+        latin:code="48"
+        latin:keyIcon="iconNum0Key" />
+    <key-style
+        latin:styleName="num1KeyStyle"
+        latin:code="49"
+        latin:keyIcon="iconNum1Key" />
+    <key-style
+        latin:styleName="num2KeyStyle"
+        latin:code="50"
+        latin:keyIcon="iconNum2Key" />
+    <key-style
+        latin:styleName="num3KeyStyle"
+        latin:code="51"
+        latin:keyIcon="iconNum3Key" />
+    <key-style
+        latin:styleName="num4KeyStyle"
+        latin:code="52"
+        latin:keyIcon="iconNum4Key" />
+    <key-style
+        latin:styleName="num5KeyStyle"
+        latin:code="53"
+        latin:keyIcon="iconNum5Key" />
+    <key-style
+        latin:styleName="num6KeyStyle"
+        latin:code="54"
+        latin:keyIcon="iconNum6Key" />
+    <key-style
+        latin:styleName="num7KeyStyle"
+        latin:code="55"
+        latin:keyIcon="iconNum7Key" />
+    <key-style
+        latin:styleName="num8KeyStyle"
+        latin:code="56"
+        latin:keyIcon="iconNum8Key" />
+    <key-style
+        latin:styleName="num9KeyStyle"
+        latin:code="57"
+        latin:keyIcon="iconNum9Key" />
+    <key-style
+        latin:styleName="numStarKeyStyle"
+        latin:code="42"
+        latin:keyIcon="iconNumStarKey" />
+    <key-style
+        latin:styleName="numPoundKeyStyle"
+        latin:code="35"
+        latin:keyIcon="iconNumPoundKey" />
+    <key-style
+        latin:styleName="numAltKeyStyle"
+        latin:code="@integer/key_switch_alpha_symbol"
+        latin:keyIcon="iconNumAltKey" />
+    <key-style
+        latin:styleName="numSpaceKeyStyle"
+        latin:code="@integer/key_space"
+        latin:keyIcon="iconSpaceKey"
+        latin:keyIconPreview="iconPreviewSpaceKey" />
 </merge>
diff --git a/java/res/xml/kbd_qwerty_f1.xml b/java/res/xml/kbd_qwerty_f1.xml
index 45cc8f5..51b9800 100644
--- a/java/res/xml/kbd_qwerty_f1.xml
+++ b/java/res/xml/kbd_qwerty_f1.xml
@@ -48,7 +48,7 @@
                             latin:hasVoiceKey="true"
                         >
                             <Key
-                                latin:keyStyle="micKeyStyle"
+                                latin:keyStyle="shortcutKeyStyle"
                                 latin:keyWidth="9.2%p" />
                         </case>
                         <!-- latin:hasVoiceKey="false" -->
@@ -93,7 +93,7 @@
                             latin:hasVoiceKey="true"
                         >
                             <Key
-                                latin:keyStyle="micKeyStyle" />
+                                latin:keyStyle="shortcutKeyStyle" />
                         </case>
                         <!-- latin:hasVoiceKey="false" -->
                         <case
diff --git a/java/res/xml/kbd_symbols_f1.xml b/java/res/xml/kbd_symbols_f1.xml
index bd10477..da5b5fc 100644
--- a/java/res/xml/kbd_symbols_f1.xml
+++ b/java/res/xml/kbd_symbols_f1.xml
@@ -30,7 +30,7 @@
                     latin:hasVoiceKey="true"
                 >
                     <Key
-                        latin:keyStyle="micKeyStyle"
+                        latin:keyStyle="shortcutKeyStyle"
                         latin:keyWidth="9.2%p" />
                 </case>
                 <!-- latin:hasVoiceKey="false" -->
@@ -49,7 +49,7 @@
                     latin:hasVoiceKey="true"
                 >
                     <Key
-                        latin:keyStyle="micKeyStyle" />
+                        latin:keyStyle="shortcutKeyStyle" />
                 </case>
                 <!-- latin:hasVoiceKey="false" -->
                 <default>