diff --git a/java/res/layout/input_stone_bold.xml b/java/res/layout/input_stone_bold.xml
index e3588bb22f72ed9f1b3938ca42198b404dfc6042..2d4e0b205e969b3f1dbe69ace5b46c08bb99ec11 100644
--- a/java/res/layout/input_stone_bold.xml
+++ b/java/res/layout/input_stone_bold.xml
@@ -32,6 +32,6 @@
         latin:keyTextColor="@color/latinkeyboard_key_color_black"
         latin:shadowColor="@color/latinkeyboard_key_color_white"
         latin:keyTextStyle="bold"
-        latin:symbolColorScheme="black"
+        latin:colorScheme="black"
         latin:popupLayout="@layout/input_stone_popup"
         />
diff --git a/java/res/layout/input_stone_normal.xml b/java/res/layout/input_stone_normal.xml
index fd7bf85fca16c26ca0530676695127cfecc7e8c9..7a7b36894977b996aea5ef2cb1fa4679f887e481 100644
--- a/java/res/layout/input_stone_normal.xml
+++ b/java/res/layout/input_stone_normal.xml
@@ -30,6 +30,6 @@
         latin:keyBackground="@drawable/btn_keyboard_key_stone"
         latin:keyTextColor="@color/latinkeyboard_key_color_black"
         latin:shadowColor="@color/latinkeyboard_key_color_white"
-        latin:symbolColorScheme="black"
+        latin:colorScheme="black"
         latin:popupLayout="@layout/input_stone_popup"
         />
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 5f29af203f619de7201948e46898b9ce301fecf9..24c9855ae9643c51112836b0887121a73eeadd87 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -57,14 +57,15 @@
         <attr name="backgroundDimAmount" format="float" />
 
         <attr name="keyTextStyle">
-            <flag name="normal" value="0" />
-            <flag name="bold" value="1" />
-            <flag name="italic" value="2" />
+            <enum name="normal" value="0" />
+            <enum name="bold" value="1" />
+            <enum name="italic" value="2" />
         </attr>
 
-        <attr name="symbolColorScheme">
-            <flag name="white" value="0" />
-            <flag name="black" value="1" />
+        <attr name="colorScheme">
+            <!-- This should be aligned with BaseKeyboardView.COLOR_SCHEME_* -->
+            <enum name="white" value="0" />
+            <enum name="black" value="1" />
         </attr>
 
     </declare-styleable>
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index d2acafdfa5a4f78492f69f7010e11000f79c51ad..6ab4dedc89829ae47d3c7aee1790d0ce40ec06da 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -31,7 +31,7 @@
         <item name="shadowColor">#BB000000</item>
         <item name="shadowRadius">2.75</item>
         <item name="backgroundDimAmount">0.5</item>
-        <item name="symbolColorScheme">white</item>
+        <item name="colorScheme">white</item>
     </style>
     <style name="KeyPreviewAnimation">
         <item name="android:windowEnterAnimation">@anim/key_preview_fadein</item>
diff --git a/java/res/xml-da/kbd_qwerty_black.xml b/java/res/xml-da/kbd_qwerty_black.xml
deleted file mode 100644
index b7ebc66def190879762e67d3aa9a3125e299bd84..0000000000000000000000000000000000000000
--- a/java/res/xml-da/kbd_qwerty_black.xml
+++ /dev/null
@@ -1,178 +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.
-*/
--->
-
-<!--
-    Danish Keyboard Layout
-
-    Just a copy of the Norwegian layout, with æ/ø switched.
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="9.09%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="q"
-            latin:keyHintIcon="@drawable/keyboard_hint_1"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="w"
-            latin:keyHintIcon="@drawable/keyboard_hint_2"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_w" />
-        <Key
-            latin:keyLabel="e"
-            latin:keyHintIcon="@drawable/keyboard_hint_3"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_e" />
-        <Key
-            latin:keyLabel="r"
-            latin:keyHintIcon="@drawable/keyboard_hint_4"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_r" />
-        <Key
-            latin:keyLabel="t"
-            latin:keyHintIcon="@drawable/keyboard_hint_5"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_t" />
-        <Key
-            latin:keyLabel="y"
-            latin:keyHintIcon="@drawable/keyboard_hint_6"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_y" />
-        <Key
-            latin:keyLabel="u"
-            latin:keyHintIcon="@drawable/keyboard_hint_7"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_u" />
-        <Key
-            latin:keyLabel="i"
-            latin:keyHintIcon="@drawable/keyboard_hint_8"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_i" />
-        <Key
-            latin:keyLabel="o"
-            latin:keyHintIcon="@drawable/keyboard_hint_9"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_o" />
-        <Key
-            latin:keyLabel="p"
-            latin:keyHintIcon="@drawable/keyboard_hint_0"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_p" />
-        <Key
-            latin:keyLabel="Ã¥"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:keyLabel="a"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="s"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_s" />
-        <Key
-            latin:keyLabel="d"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_d" />
-        <Key
-            latin:keyLabel="f" />
-        <Key
-            latin:keyLabel="g"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_g" />
-        <Key
-            latin:keyLabel="h" />
-        <Key
-            latin:keyLabel="j" />
-        <Key
-            latin:keyLabel="k" />
-        <Key
-            latin:keyLabel="l"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_l" />
-        <Key
-            latin:keyLabel="æ"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_ae" />
-        <Key
-            latin:keyLabel="ø"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_oe"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row
-        latin:keyWidth="10%p"
-    >
-        <Key
-            latin:codes="@integer/key_shift"
-            latin:keyIcon="@drawable/sym_bkeyboard_shift"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-            latin:keyWidth="15%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="z"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_z" />
-        <Key
-            latin:keyLabel="x" />
-        <Key
-            latin:keyLabel="c"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_c" />
-        <Key
-            latin:keyLabel="v"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_v" />
-        <Key
-            latin:keyLabel="b" />
-        <Key
-            latin:keyLabel="n"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_n" />
-        <Key
-            latin:keyLabel="m" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="15%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" />
-</Keyboard>
diff --git a/java/res/xml-de/kbd_qwerty_black.xml b/java/res/xml-de/kbd_qwerty_black.xml
deleted file mode 100644
index 13a7dcb79f2723136bbe426a924358bc57c3b2aa..0000000000000000000000000000000000000000
--- a/java/res/xml-de/kbd_qwerty_black.xml
+++ /dev/null
@@ -1,158 +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.
-*/
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="10%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="q"
-            latin:keyHintIcon="@drawable/keyboard_hint_1"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="w"
-            latin:keyHintIcon="@drawable/keyboard_hint_2"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_w" />
-        <Key
-            latin:keyLabel="e"
-            latin:keyHintIcon="@drawable/keyboard_hint_3"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_e" />
-        <Key
-            latin:keyLabel="r"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:keyHintIcon="@drawable/keyboard_hint_4"
-            latin:popupCharacters="@string/alternates_for_r" />
-        <Key
-            latin:keyLabel="t"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:keyHintIcon="@drawable/keyboard_hint_5"
-            latin:popupCharacters="@string/alternates_for_t" />
-        <Key
-            latin:keyLabel="z"
-            latin:keyHintIcon="@drawable/keyboard_hint_6"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_z" />
-        <Key
-            latin:keyLabel="u"
-            latin:keyHintIcon="@drawable/keyboard_hint_7"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_u" />
-        <Key
-            latin:keyLabel="i"
-            latin:keyHintIcon="@drawable/keyboard_hint_8"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_i" />
-        <Key
-            latin:keyLabel="o"
-            latin:keyHintIcon="@drawable/keyboard_hint_9"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_o" />
-        <Key
-            latin:keyLabel="p"
-            latin:keyHintIcon="@drawable/keyboard_hint_0"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Spacer
-            latin:horizontalGap="5%p" />
-        <Key
-            latin:keyLabel="a"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="s"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_s" />
-        <Key
-            latin:keyLabel="d"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_d" />
-        <Key
-            latin:keyLabel="f" />
-        <Key
-            latin:keyLabel="g"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_g" />
-        <Key
-            latin:keyLabel="h" />
-        <Key
-            latin:keyLabel="j" />
-        <Key
-            latin:keyLabel="k" />
-        <Key
-            latin:keyLabel="l"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_l"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:codes="@integer/key_shift"
-            latin:keyIcon="@drawable/sym_bkeyboard_shift"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-            latin:keyWidth="15%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="y"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_y" />
-        <Key
-            latin:keyLabel="x" />
-        <Key
-            latin:keyLabel="c"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_c" />
-        <Key
-            latin:keyLabel="v"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_v" />
-        <Key
-            latin:keyLabel="b" />
-        <Key
-            latin:keyLabel="n"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_n" />
-        <Key
-            latin:keyLabel="m" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="15%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" />
-</Keyboard>
diff --git a/java/res/xml-fr/kbd_qwerty_black.xml b/java/res/xml-fr/kbd_qwerty_black.xml
deleted file mode 100644
index b46ce9cb9650b2d579b6fec2dc1b2ae52c91b9c1..0000000000000000000000000000000000000000
--- a/java/res/xml-fr/kbd_qwerty_black.xml
+++ /dev/null
@@ -1,158 +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.
-*/
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="10%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="a"
-            latin:keyHintIcon="@drawable/keyboard_hint_1"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="z"
-            latin:keyHintIcon="@drawable/keyboard_hint_2"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_z" />
-        <Key
-            latin:keyLabel="e"
-            latin:keyHintIcon="@drawable/keyboard_hint_3"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_e" />
-        <Key
-            latin:keyLabel="r"
-            latin:keyHintIcon="@drawable/keyboard_hint_4"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_r" />
-        <Key
-            latin:keyLabel="t"
-            latin:keyHintIcon="@drawable/keyboard_hint_5"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_t" />
-        <Key
-            latin:keyLabel="y"
-            latin:keyHintIcon="@drawable/keyboard_hint_6"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_y" />
-        <Key
-            latin:keyLabel="u"
-            latin:keyHintIcon="@drawable/keyboard_hint_7"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_u" />
-        <Key
-            latin:keyLabel="i"
-            latin:keyHintIcon="@drawable/keyboard_hint_8"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_i" />
-        <Key
-            latin:keyLabel="o"
-            latin:keyHintIcon="@drawable/keyboard_hint_9"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_o" />
-        <Key
-            latin:keyLabel="p"
-            latin:keyHintIcon="@drawable/keyboard_hint_0"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:keyLabel="q"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="s"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_s" />
-        <Key
-            latin:keyLabel="d"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_d" />
-        <Key
-            latin:keyLabel="f" />
-        <Key
-            latin:keyLabel="g"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_g" />
-        <Key
-            latin:keyLabel="h" />
-        <Key
-            latin:keyLabel="j" />
-        <Key
-            latin:keyLabel="k" />
-        <Key
-            latin:keyLabel="l"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_l" />
-        <Key
-            latin:keyLabel="m"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:codes="@integer/key_shift"
-            latin:keyIcon="@drawable/sym_bkeyboard_shift"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-            latin:keyWidth="15%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="w"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_w" />
-        <Key
-            latin:keyLabel="x" />
-        <Key
-            latin:keyLabel="c"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_c" />
-        <Key
-            latin:keyLabel="v"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_v" />
-        <Key
-            latin:keyLabel="b" />
-        <Key
-            latin:keyLabel="n"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_n" />
-        <Key
-            latin:keyLabel="\'" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="15%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" />
-</Keyboard>
diff --git a/java/res/xml-iw/kbd_qwerty_black.xml b/java/res/xml-iw/kbd_qwerty_black.xml
deleted file mode 100644
index 1c1c1e37fc9b80d4677514905cabb6171864adba..0000000000000000000000000000000000000000
--- a/java/res/xml-iw/kbd_qwerty_black.xml
+++ /dev/null
@@ -1,109 +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.
-*/
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="10%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Spacer
-            latin:horizontalGap="5%p" />
-        <Key
-            latin:keyLabel="ק"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="ר" />
-        <Key
-            latin:keyLabel="א" />
-        <Key
-            latin:keyLabel="ט" />
-        <Key
-            latin:keyLabel="ו" />
-        <Key
-            latin:keyLabel="ן" />
-        <Key
-            latin:keyLabel="ם" />
-        <Key
-            latin:keyLabel="פ" />
-        <Spacer
-            latin:horizontalGap="1.25%p" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="13.75%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:keyLabel="ש"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="ד" />
-        <Key
-            latin:keyLabel="×’" />
-        <Key
-            latin:keyLabel="×›" />
-        <Key
-            latin:keyLabel="×¢" />
-        <Key
-            latin:keyLabel="×™" />
-        <Key
-            latin:keyLabel="×—" />
-        <Key
-            latin:keyLabel="ל" />
-        <Key
-            latin:keyLabel="ך" />
-        <Key
-            latin:keyLabel="×£"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Spacer
-            latin:horizontalGap="5%p" />
-        <Key
-            latin:keyLabel="×–"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="ס" />
-        <Key
-            latin:keyLabel="ב" />
-        <Key
-            latin:keyLabel="×”" />
-        <Key
-            latin:keyLabel="× " />
-        <Key
-            latin:keyLabel="מ" />
-        <Key
-            latin:keyLabel="צ" />
-        <Key
-            latin:keyLabel="ת" />
-        <Key
-            latin:keyLabel="×¥"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" />
-</Keyboard>
diff --git a/java/res/xml-nb/kbd_qwerty_black.xml b/java/res/xml-nb/kbd_qwerty_black.xml
deleted file mode 100644
index 982a3de651339bfe2c6cc4c0e8d11d5a5b9060a8..0000000000000000000000000000000000000000
--- a/java/res/xml-nb/kbd_qwerty_black.xml
+++ /dev/null
@@ -1,178 +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.
-*/
--->
-
-<!--
-    Norwegian Keyboard Layout
-
-    Just a copy of the Swedish layout, with ä/æ and ö/ø switched.
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="9.09%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="q"
-            latin:keyHintIcon="@drawable/keyboard_hint_1"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="w"
-            latin:keyHintIcon="@drawable/keyboard_hint_2"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_w" />
-        <Key
-            latin:keyLabel="e"
-            latin:keyHintIcon="@drawable/keyboard_hint_3"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_e" />
-        <Key
-            latin:keyLabel="r"
-            latin:keyHintIcon="@drawable/keyboard_hint_4"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_r" />
-        <Key
-            latin:keyLabel="t"
-            latin:keyHintIcon="@drawable/keyboard_hint_5"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_t" />
-        <Key
-            latin:keyLabel="y"
-            latin:keyHintIcon="@drawable/keyboard_hint_6"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_y" />
-        <Key
-            latin:keyLabel="u"
-            latin:keyHintIcon="@drawable/keyboard_hint_7"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_u" />
-        <Key
-            latin:keyLabel="i"
-            latin:keyHintIcon="@drawable/keyboard_hint_8"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_i" />
-        <Key
-            latin:keyLabel="o"
-            latin:keyHintIcon="@drawable/keyboard_hint_9"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_o" />
-        <Key
-            latin:keyLabel="p"
-            latin:keyHintIcon="@drawable/keyboard_hint_0"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_p" />
-        <Key
-            latin:keyLabel="Ã¥"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:keyLabel="a"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="s"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_s" />
-        <Key
-            latin:keyLabel="d"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_d" />
-        <Key
-            latin:keyLabel="f" />
-        <Key
-            latin:keyLabel="g"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_g" />
-        <Key
-            latin:keyLabel="h" />
-        <Key
-            latin:keyLabel="j" />
-        <Key
-            latin:keyLabel="k" />
-        <Key
-            latin:keyLabel="l"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_l" />
-        <Key
-            latin:keyLabel="ø"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_oe" />
-        <Key
-            latin:keyLabel="æ"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_ae"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row
-        latin:keyWidth="10%p"
-    >
-        <Key
-            latin:codes="@integer/key_shift"
-            latin:keyIcon="@drawable/sym_bkeyboard_shift"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-            latin:keyWidth="15%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="z"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_z" />
-        <Key
-            latin:keyLabel="x" />
-        <Key
-            latin:keyLabel="c"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_c" />
-        <Key
-            latin:keyLabel="v"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_v" />
-        <Key
-            latin:keyLabel="b" />
-        <Key
-            latin:keyLabel="n"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_n" />
-        <Key
-            latin:keyLabel="m" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="15%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" />
-</Keyboard>
diff --git a/java/res/xml-ru/kbd_qwerty_black.xml b/java/res/xml-ru/kbd_qwerty_black.xml
deleted file mode 100644
index 2635541e8b9bc494d28f846d0ab2fb505cd46805..0000000000000000000000000000000000000000
--- a/java/res/xml-ru/kbd_qwerty_black.xml
+++ /dev/null
@@ -1,156 +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.
-*/
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="9.09%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="й"
-            latin:keyHintIcon="@drawable/keyboard_hint_1"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="1"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="ц"
-            latin:keyHintIcon="@drawable/keyboard_hint_2"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="2" />
-        <Key
-            latin:keyLabel="у"
-            latin:keyHintIcon="@drawable/keyboard_hint_3"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="3" />
-        <Key
-            latin:keyLabel="к"
-            latin:keyHintIcon="@drawable/keyboard_hint_4"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="4" />
-        <Key
-            latin:keyLabel="е"
-            latin:keyHintIcon="@drawable/keyboard_hint_5"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_cyrillic_e" />
-        <Key
-            latin:keyLabel="н"
-            latin:keyHintIcon="@drawable/keyboard_hint_6"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="6" />
-        <Key
-            latin:keyLabel="г"
-            latin:keyHintIcon="@drawable/keyboard_hint_7"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="7" />
-        <Key
-            latin:keyLabel="ш"
-            latin:keyHintIcon="@drawable/keyboard_hint_8"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="8" />
-        <Key
-            latin:keyLabel="щ"
-            latin:keyHintIcon="@drawable/keyboard_hint_9"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="9" />
-        <Key
-            latin:keyLabel="з"
-            latin:keyHintIcon="@drawable/keyboard_hint_0"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="0" />
-        <Key
-            latin:keyLabel="Ñ…"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:keyLabel="Ñ„"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="Ñ‹" />
-        <Key
-            latin:keyLabel="в" />
-        <Key
-            latin:keyLabel="а" />
-        <Key
-            latin:keyLabel="п" />
-        <Key
-            latin:keyLabel="Ñ€" />
-        <Key
-            latin:keyLabel="о" />
-        <Key
-            latin:keyLabel="л" />
-        <Key
-            latin:keyLabel="д" />
-        <Key
-            latin:keyLabel="ж" />
-        <Key
-            latin:keyLabel="э"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row
-        latin:keyWidth="8.5%p"
-    >
-        <Key
-            latin:codes="@integer/key_shift"
-            latin:keyIcon="@drawable/sym_bkeyboard_shift"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-            latin:keyWidth="11.75%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="я" />
-        <Key
-            latin:keyLabel="ч" />
-        <Key
-            latin:keyLabel="с" />
-        <Key
-            latin:keyLabel="м" />
-        <Key
-            latin:keyLabel="и" />
-        <Key
-            latin:keyLabel="Ñ‚" />
-        <Key
-            latin:keyLabel="ь"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_cyrillic_soft_sign" />
-        <Key
-            latin:keyLabel="б" />
-        <Key
-            latin:keyLabel="ÑŽ" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="11.75%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" />
-</Keyboard>
diff --git a/java/res/xml-sr/kbd_qwerty_black.xml b/java/res/xml-sr/kbd_qwerty_black.xml
deleted file mode 100644
index f760c5eb136d2736adb36f5620d8ec2caa8905ea..0000000000000000000000000000000000000000
--- a/java/res/xml-sr/kbd_qwerty_black.xml
+++ /dev/null
@@ -1,149 +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.
-*/
--->
-
-<!-- Serbian keyboard layout, based on the X11 layout for Serbian -->
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="9.09%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="Ñ™"
-            latin:keyHintIcon="@drawable/keyboard_hint_1"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="1"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="Ñš"
-            latin:keyHintIcon="@drawable/keyboard_hint_2"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="2" />
-        <Key
-            latin:keyLabel="е"
-            latin:keyHintIcon="@drawable/keyboard_hint_3"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="3" />
-        <Key
-            latin:keyLabel="Ñ€"
-            latin:keyHintIcon="@drawable/keyboard_hint_4"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="4" />
-        <Key
-            latin:keyLabel="Ñ‚"
-            latin:keyHintIcon="@drawable/keyboard_hint_5"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="5" />
-        <Key
-            latin:keyLabel="з"
-            latin:keyHintIcon="@drawable/keyboard_hint_6"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="6" />
-        <Key
-            latin:keyLabel="у"
-            latin:keyHintIcon="@drawable/keyboard_hint_7"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="7" />
-        <Key
-            latin:keyLabel="и"
-            latin:keyHintIcon="@drawable/keyboard_hint_8"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="8" />
-        <Key
-            latin:keyLabel="о"
-            latin:keyHintIcon="@drawable/keyboard_hint_9"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="9" />
-        <Key
-            latin:keyLabel="п"
-            latin:keyHintIcon="@drawable/keyboard_hint_0"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="0" />
-        <Key
-            latin:keyLabel="ш"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:keyLabel="а"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="с" />
-        <Key
-            latin:keyLabel="д" />
-        <Key
-            latin:keyLabel="Ñ„" />
-        <Key
-            latin:keyLabel="г" />
-        <Key
-            latin:keyLabel="Ñ…" />
-        <Key
-            latin:keyLabel="ј" />
-        <Key
-            latin:keyLabel="к" />
-        <Key
-            latin:keyLabel="л" />
-        <Key
-            latin:keyLabel="ч" />
-        <Key
-            latin:keyLabel="Ñ›" />
-        <Key
-            latin:keyLabel="Ñ’"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row
-        latin:keyWidth="8.5%p"
-    >
-        <Key
-            latin:codes="@integer/key_shift"
-            latin:keyIcon="@drawable/sym_bkeyboard_shift"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-            latin:keyWidth="11.75%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="ж" />
-        <Key
-            latin:keyLabel="ÑŸ" />
-        <Key
-            latin:keyLabel="ц" />
-        <Key
-            latin:keyLabel="в" />
-        <Key
-            latin:keyLabel="б" />
-        <Key
-            latin:keyLabel="н" />
-        <Key
-            latin:keyLabel="м" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="11.75%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" />
-</Keyboard>
diff --git a/java/res/xml-sv/kbd_qwerty_black.xml b/java/res/xml-sv/kbd_qwerty_black.xml
deleted file mode 100644
index 463b60bd9ac9600aaa7e1dbb91d30c7fc44788a1..0000000000000000000000000000000000000000
--- a/java/res/xml-sv/kbd_qwerty_black.xml
+++ /dev/null
@@ -1,180 +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.
-*/
--->
-
-<!--
-    Swedish Keyboard Layout
-
-    Key positioning: Svensk standard SS 66 22 41
-    Foreign letters: Svenska skrivregler (2:a uppl.) §302
-    Local additions: ۧ
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="9.09%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="q"
-            latin:keyHintIcon="@drawable/keyboard_hint_1"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="w"
-            latin:keyHintIcon="@drawable/keyboard_hint_2"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_w" />
-        <Key
-            latin:keyLabel="e"
-            latin:keyHintIcon="@drawable/keyboard_hint_3"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_e" />
-        <Key
-            latin:keyLabel="r"
-            latin:keyHintIcon="@drawable/keyboard_hint_4"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_r" />
-        <Key
-            latin:keyLabel="t"
-            latin:keyHintIcon="@drawable/keyboard_hint_5"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_t" />
-        <Key
-            latin:keyLabel="y"
-            latin:keyHintIcon="@drawable/keyboard_hint_6"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_y" />
-        <Key
-            latin:keyLabel="u"
-            latin:keyHintIcon="@drawable/keyboard_hint_7"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_u" />
-        <Key
-            latin:keyLabel="i"
-            latin:keyHintIcon="@drawable/keyboard_hint_8"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_i" />
-        <Key
-            latin:keyLabel="o"
-            latin:keyHintIcon="@drawable/keyboard_hint_9"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_o" />
-        <Key
-            latin:keyLabel="p"
-            latin:keyHintIcon="@drawable/keyboard_hint_0"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_p" />
-        <Key
-            latin:keyLabel="Ã¥"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:keyLabel="a"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="s"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_s" />
-        <Key
-            latin:keyLabel="d"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_d" />
-        <Key
-            latin:keyLabel="f" />
-        <Key
-            latin:keyLabel="g"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_g" />
-        <Key
-            latin:keyLabel="h" />
-        <Key
-            latin:keyLabel="j" />
-        <Key
-            latin:keyLabel="k" />
-        <Key
-            latin:keyLabel="l"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_l" />
-        <Key
-            latin:keyLabel="ö"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_o_umlaut" />
-        <Key
-            latin:keyLabel="ä"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_a_umlaut"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row
-        latin:keyWidth="10%p"
-    >
-        <Key
-            latin:codes="@integer/key_shift"
-            latin:keyIcon="@drawable/sym_bkeyboard_shift"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-            latin:keyWidth="15%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="z"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_z" />
-        <Key
-            latin:keyLabel="x" />
-        <Key
-            latin:keyLabel="c"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_c" />
-        <Key
-            latin:keyLabel="v"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_v" />
-        <Key
-            latin:keyLabel="b" />
-        <Key
-            latin:keyLabel="n"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_n" />
-        <Key
-            latin:keyLabel="m" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="15%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" />
-</Keyboard>
diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-xlarge/kbd_symbols.xml
index 00a61c51bd11829114dd24109993e7273ce9c15f..317c32b810ee129bb099e5d2678e94df426dec10 100644
--- a/java/res/xml-xlarge/kbd_symbols.xml
+++ b/java/res/xml-xlarge/kbd_symbols.xml
@@ -168,8 +168,8 @@
         <Key
             latin:codes="@integer/key_shift"
             latin:keyLabel="@string/label_more_key"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
             latin:keyLabelOption="fontNormal|alignRight|alignBottom"
+            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
             latin:keyWidth="12.430%p"
             latin:isModifier="true"
             latin:isSticky="true"
diff --git a/java/res/xml/kbd_functional_key_style.xml b/java/res/xml/kbd_functional_key_style.xml
deleted file mode 100644
index eabaa4a7e5819665a1723428c91cccd3f399a3f0..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_functional_key_style.xml
+++ /dev/null
@@ -1,113 +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"
->
-    <key-style
-        latin:styleName="functionalKeyStyle"
-        latin:isModifier="true" />
-    <key-style
-        latin:styleName="shiftKeyStyle"
-        latin:codes="@integer/key_shift"
-        latin:keyIcon="@drawable/sym_keyboard_shift"
-        latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-        latin:parentStyle="functionalKeyStyle"
-        latin:isSticky="true" />
-    <key-style
-        latin:styleName="deleteKeyStyle"
-        latin:codes="@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:codes="@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:codes="@integer/key_switch_alpha_symbol"
-                latin:keyLabel="@string/label_to_symbol_key"
-                latin:parentStyle="functionalKeyStyle" />
-        </default>
-    </switch>
-    <key-style
-        latin:styleName="toAlphaKeyStyle"
-        latin:codes="@integer/key_switch_alpha_symbol"
-        latin:keyLabel="@string/label_to_alpha_key"
-        latin:parentStyle="functionalKeyStyle" />
-    <key-style
-        latin:styleName="settingsKeyStyle"
-        latin:codes="@integer/key_settings"
-        latin:keyIcon="@drawable/sym_keyboard_settings"
-        latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
-        latin:parentStyle="functionalKeyStyle" />
-    <key-style
-        latin:styleName="spaceKeyStyle"
-        latin:codes="@integer/key_space"
-        latin:keyIcon="@drawable/sym_keyboard_space"
-        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-        latin:parentStyle="functionalKeyStyle" />
-    <key-style
-        latin:styleName="tabKeyStyle"
-        latin:codes="@integer/key_tab"
-        latin:keyIcon="@drawable/sym_keyboard_tab"
-        latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
-        latin:parentStyle="functionalKeyStyle" />
-    <key-style
-        latin:styleName="returnKeyStyle"
-        latin:codes="@integer/key_return"
-        latin:keyIcon="@drawable/sym_keyboard_return"
-        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-        latin:parentStyle="functionalKeyStyle" />
-    <key-style
-        latin:styleName="altKeyStyle"
-        latin:codes="@integer/key_shift"
-        latin:keyLabel="@string/label_alt_key"
-        latin:parentStyle="functionalKeyStyle"
-        latin:isSticky="true" />
-    <key-style
-        latin:styleName="smileyKeyStyle"
-        latin:keyLabel=":-)"
-        latin:keyOutputText=":-) "
-        latin:keyHintIcon="@drawable/hint_popup"
-        latin:popupKeyboard="@xml/popup_smileys"
-        latin:parentStyle="functionalKeyStyle" />
-    <key-style
-        latin:styleName="micKeyStyle"
-        latin:codes="@integer/key_voice"
-        latin:popupKeyboard="@xml/popup_mic"
-        latin:keyIcon="@drawable/sym_keyboard_mic"
-        latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-        latin:keyHintIcon="@drawable/hint_popup"
-        latin:parentStyle="functionalKeyStyle" />
-</merge>
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec813d74114d5b0f5309ffa2d7b777044bbfc230
--- /dev/null
+++ b/java/res/xml/kbd_key_styles.xml
@@ -0,0 +1,209 @@
+<?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="functionalKeyStyle"
+                latin:isModifier="true" />
+            <key-style
+                latin:styleName="shiftKeyStyle"
+                latin:codes="@integer/key_shift"
+                latin:keyIcon="@drawable/sym_keyboard_shift"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isSticky="true" />
+            <key-style
+                latin:styleName="deleteKeyStyle"
+                latin:codes="@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:codes="@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:codes="@integer/key_switch_alpha_symbol"
+                        latin:keyLabel="@string/label_to_symbol_key"
+                        latin:parentStyle="functionalKeyStyle" />
+                </default>
+            </switch>
+            <key-style
+                latin:styleName="settingsKeyStyle"
+                latin:codes="@integer/key_settings"
+                latin:keyIcon="@drawable/sym_keyboard_settings"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="spaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_keyboard_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="tabKeyStyle"
+                latin:codes="@integer/key_tab"
+                latin:keyIcon="@drawable/sym_keyboard_tab"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="returnKeyStyle"
+                latin:codes="@integer/key_return"
+                latin:keyIcon="@drawable/sym_keyboard_return"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="micKeyStyle"
+                latin:codes="@integer/key_voice"
+                latin:popupKeyboard="@xml/popup_mic"
+                latin:keyIcon="@drawable/sym_keyboard_mic"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
+                latin:keyHintIcon="@drawable/hint_popup"
+                latin:parentStyle="functionalKeyStyle" />
+            <!-- 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:codes="@integer/key_tab"
+                latin:keyIcon="@drawable/sym_keyboard_tab"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
+        </case>
+        <case
+            latin:colorScheme="black"
+        >
+            <key-style
+                latin:styleName="functionalKeyStyle" />
+            <key-style
+                latin:styleName="shiftKeyStyle"
+                latin:codes="@integer/key_shift"
+                latin:keyIcon="@drawable/sym_bkeyboard_shift"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isSticky="true" />
+            <key-style
+                latin:styleName="deleteKeyStyle"
+                latin:codes="@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:codes="@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:codes="@integer/key_switch_alpha_symbol"
+                        latin:keyLabel="@string/label_to_symbol_key"
+                        latin:parentStyle="functionalKeyStyle" />
+                </default>
+            </switch>
+            <key-style
+                latin:styleName="settingsKeyStyle"
+                latin:codes="@integer/key_settings"
+                latin:keyIcon="@drawable/sym_bkeyboard_settings"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="spaceKeyStyle"
+                latin:codes="@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:codes="@integer/key_tab"
+                latin:keyIcon="@drawable/sym_bkeyboard_tab"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="returnKeyStyle"
+                latin:codes="@integer/key_return"
+                latin:keyIcon="@drawable/sym_bkeyboard_return"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="micKeyStyle"
+                latin:codes="@integer/key_voice"
+                latin:popupKeyboard="@xml/popup_mic"
+                latin:keyIcon="@drawable/sym_bkeyboard_mic"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
+                latin:keyHintIcon="@drawable/hint_popup"
+                latin:parentStyle="functionalKeyStyle" />
+            <!-- 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:codes="@integer/key_tab"
+                latin:keyIcon="@drawable/sym_bkeyboard_tab"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
+        </case>
+    </switch>
+    <key-style
+        latin:styleName="toAlphaKeyStyle"
+        latin:codes="@integer/key_switch_alpha_symbol"
+        latin:keyLabel="@string/label_to_alpha_key"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="altKeyStyle"
+        latin:codes="@integer/key_shift"
+        latin:keyLabel="@string/label_alt_key"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isSticky="true" />
+    <key-style
+        latin:styleName="smileyKeyStyle"
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_smileys"
+        latin:parentStyle="functionalKeyStyle" />
+</merge>
\ No newline at end of file
diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml
index a01d697a7250c10887115faf75760fb518380d65..c9b1ad631484fe8e21637f3c19294d4fb6fde498 100644
--- a/java/res/xml/kbd_phone.xml
+++ b/java/res/xml/kbd_phone.xml
@@ -26,20 +26,127 @@
     latin:keyHeight="@dimen/key_height"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_functional_key_style" />
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <switch>
+        <case
+            latin:colorScheme="white"
+        >
+            <key-style
+                latin:styleName="num0KeyStyle"
+                latin:codes="48"
+                latin:keyIcon="@drawable/sym_keyboard_num0" />
+            <key-style
+                latin:styleName="num1KeyStyle"
+                latin:codes="49"
+                latin:keyIcon="@drawable/sym_keyboard_num1" />
+            <key-style
+                latin:styleName="num2KeyStyle"
+                latin:codes="50"
+                latin:keyIcon="@drawable/sym_keyboard_num2" />
+            <key-style
+                latin:styleName="num3KeyStyle"
+                latin:codes="51"
+                latin:keyIcon="@drawable/sym_keyboard_num3" />
+            <key-style
+                latin:styleName="num4KeyStyle"
+                latin:codes="52"
+                latin:keyIcon="@drawable/sym_keyboard_num4" />
+            <key-style
+                latin:styleName="num5KeyStyle"
+                latin:codes="53"
+                latin:keyIcon="@drawable/sym_keyboard_num5" />
+            <key-style
+                latin:styleName="num6KeyStyle"
+                latin:codes="54"
+                latin:keyIcon="@drawable/sym_keyboard_num6" />
+            <key-style
+                latin:styleName="num7KeyStyle"
+                latin:codes="55"
+                latin:keyIcon="@drawable/sym_keyboard_num7" />
+            <key-style
+                latin:styleName="num8KeyStyle"
+                latin:codes="56"
+                latin:keyIcon="@drawable/sym_keyboard_num8" />
+            <key-style
+                latin:styleName="num9KeyStyle"
+                latin:codes="57"
+                latin:keyIcon="@drawable/sym_keyboard_num9" />
+            <key-style
+                latin:styleName="numAltKeyStyle"
+                latin:codes="@integer/key_switch_alpha_symbol"
+                latin:keyIcon="@drawable/sym_keyboard_numalt"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+            <key-style
+                latin:styleName="numSpaceKeyStyle"
+                latin:codes="@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:codes="48"
+                latin:keyIcon="@drawable/sym_bkeyboard_num0" />
+            <key-style
+                latin:styleName="num1KeyStyle"
+                latin:codes="49"
+                latin:keyIcon="@drawable/sym_bkeyboard_num1" />
+            <key-style
+                latin:styleName="num2KeyStyle"
+                latin:codes="50"
+                latin:keyIcon="@drawable/sym_bkeyboard_num2" />
+            <key-style
+                latin:styleName="num3KeyStyle"
+                latin:codes="51"
+                latin:keyIcon="@drawable/sym_bkeyboard_num3" />
+            <key-style
+                latin:styleName="num4KeyStyle"
+                latin:codes="52"
+                latin:keyIcon="@drawable/sym_bkeyboard_num4" />
+            <key-style
+                latin:styleName="num5KeyStyle"
+                latin:codes="53"
+                latin:keyIcon="@drawable/sym_bkeyboard_num5" />
+            <key-style
+                latin:styleName="num6KeyStyle"
+                latin:codes="54"
+                latin:keyIcon="@drawable/sym_bkeyboard_num6" />
+            <key-style
+                latin:styleName="num7KeyStyle"
+                latin:codes="55"
+                latin:keyIcon="@drawable/sym_bkeyboard_num7" />
+            <key-style
+                latin:styleName="num8KeyStyle"
+                latin:codes="56"
+                latin:keyIcon="@drawable/sym_bkeyboard_num8" />
+            <key-style
+                latin:styleName="num9KeyStyle"
+                latin:codes="57"
+                latin:keyIcon="@drawable/sym_bkeyboard_num9" />
+            <key-style
+                latin:styleName="numAltKeyStyle"
+                latin:codes="@integer/key_switch_alpha_symbol"
+                latin:keyIcon="@drawable/sym_bkeyboard_numalt"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+            <key-style
+                latin:styleName="numSpaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_bkeyboard_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+        </case>
+    </switch>
     <Row
         latin:rowEdgeFlags="top"
     >
         <Key
-            latin:codes="49"
-            latin:keyIcon="@drawable/sym_keyboard_num1"
+            latin:keyStyle="num1KeyStyle"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:codes="50"
-            latin:keyIcon="@drawable/sym_keyboard_num2" />
+            latin:keyStyle="num2KeyStyle" />
         <Key
-            latin:codes="51"
-            latin:keyIcon="@drawable/sym_keyboard_num3" />
+            latin:keyStyle="num3KeyStyle" />
         <Key
             latin:keyLabel="-"
             latin:keyStyle="functionalKeyStyle"
@@ -48,15 +155,12 @@
     </Row>
     <Row>
         <Key
-            latin:codes="52"
-            latin:keyIcon="@drawable/sym_keyboard_num4"
+            latin:keyStyle="num4KeyStyle"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:codes="53"
-            latin:keyIcon="@drawable/sym_keyboard_num5" />
+            latin:keyStyle="num5KeyStyle" />
         <Key
-            latin:codes="54"
-            latin:keyIcon="@drawable/sym_keyboard_num6" />
+            latin:keyStyle="num6KeyStyle" />
         <Key
             latin:keyLabel="."
             latin:keyStyle="functionalKeyStyle"
@@ -65,15 +169,12 @@
     </Row>
     <Row>
         <Key
-            latin:codes="55"
-            latin:keyIcon="@drawable/sym_keyboard_num7"
+            latin:keyStyle="num7KeyStyle"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:codes="56"
-            latin:keyIcon="@drawable/sym_keyboard_num8" />
+            latin:keyStyle="num8KeyStyle" />
         <Key
-            latin:codes="57"
-            latin:keyIcon="@drawable/sym_keyboard_num9" />
+            latin:keyStyle="num9KeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="20%p"
@@ -83,17 +184,12 @@
         latin:rowEdgeFlags="bottom"
     >
         <Key
-            latin:codes="@integer/key_switch_alpha_symbol"
-            latin:keyIcon="@drawable/sym_keyboard_numalt"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_numalt"
+            latin:keyStyle="numAltKeyStyle"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:codes="48"
-            latin:keyIcon="@drawable/sym_keyboard_num0" />
+            latin:keyStyle="num0KeyStyle" />
         <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            latin:keyStyle="numSpaceKeyStyle" />
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyWidth="20%p"
diff --git a/java/res/xml/kbd_phone_black.xml b/java/res/xml/kbd_phone_black.xml
deleted file mode 100644
index 75ce34a74811cedda0967f5a865c31c9e789cca0..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_phone_black.xml
+++ /dev/null
@@ -1,101 +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.
-*/
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="26.67%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:codes="49"
-            latin:keyIcon="@drawable/sym_bkeyboard_num1"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:codes="50"
-            latin:keyIcon="@drawable/sym_bkeyboard_num2" />
-        <Key
-            latin:codes="51"
-            latin:keyIcon="@drawable/sym_bkeyboard_num3" />
-        <Key
-            latin:keyLabel="-"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:codes="52"
-            latin:keyIcon="@drawable/sym_bkeyboard_num4"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:codes="53"
-            latin:keyIcon="@drawable/sym_bkeyboard_num5" />
-        <Key
-            latin:codes="54"
-            latin:keyIcon="@drawable/sym_bkeyboard_num6" />
-        <Key
-            latin:keyLabel="."
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:codes="55"
-            latin:keyIcon="@drawable/sym_bkeyboard_num7"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:codes="56"
-            latin:keyIcon="@drawable/sym_bkeyboard_num8" />
-        <Key
-            latin:codes="57"
-            latin:keyIcon="@drawable/sym_bkeyboard_num9" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="20%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row
-        latin:rowEdgeFlags="bottom"
-    >
-        <Key
-            latin:codes="@integer/key_switch_alpha_symbol"
-            latin:keyIcon="@drawable/sym_bkeyboard_numalt"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
-        <Key
-            latin:codes="48"
-            latin:keyIcon="@drawable/sym_bkeyboard_num0" />
-        <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_bkeyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        <Key
-            latin:codes="@integer/key_return"
-            latin:keyIcon="@drawable/sym_bkeyboard_return"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-</Keyboard>
diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index d53107ad51bcb225952a30fd9c3acf5b0901c416..0d6d0e40710eaeb695b2b3613fad25b082b85b47 100644
--- a/java/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
@@ -25,7 +25,46 @@
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:keyHeight="@dimen/key_height"
 >
-    <include latin:keyboardLayout="@xml/kbd_functional_key_style" />
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <switch>
+        <case
+            latin:colorScheme="white"
+        >
+            <key-style
+                latin:styleName="numStarKeyStyle"
+                latin:codes="42"
+                latin:keyIcon="@drawable/sym_keyboard_numstar"
+                latin:keyEdgeFlags="left" />
+            <key-style
+                latin:styleName="numPoundKeyStyle"
+                latin:codes="35"
+                latin:keyIcon="@drawable/sym_keyboard_numpound" />
+            <key-style
+                latin:styleName="numSpaceKeyStyle"
+                latin:codes="@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="numStarKeyStyle"
+                latin:codes="42"
+                latin:keyIcon="@drawable/sym_bkeyboard_numstar"
+                latin:keyEdgeFlags="left" />
+            <key-style
+                latin:styleName="numPoundKeyStyle"
+                latin:codes="35"
+                latin:keyIcon="@drawable/sym_bkeyboard_numpound" />
+            <key-style
+                latin:styleName="numSpaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_bkeyboard_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+        </case>
+    </switch>
     <Row
         latin:rowEdgeFlags="top"
     >
@@ -61,16 +100,14 @@
     </Row>
     <Row>
         <Key
-            latin:codes="42"
-            latin:keyIcon="@drawable/sym_keyboard_numstar"
+            latin:keyStyle="numStarKeyStyle"
             latin:keyEdgeFlags="left" />
         <!-- Wait is a semicolon. -->
         <Key
             latin:codes="59"
             latin:keyLabel="Wait" />
         <Key
-            latin:codes="35"
-            latin:keyIcon="@drawable/sym_keyboard_numpound" />
+            latin:keyStyle="numPoundKeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="20%p"
@@ -86,9 +123,7 @@
         <Key
             latin:keyLabel="+" />
         <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            latin:keyStyle="numSpaceKeyStyle" />
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyWidth="20%p"
diff --git a/java/res/xml/kbd_phone_symbols_black.xml b/java/res/xml/kbd_phone_symbols_black.xml
deleted file mode 100644
index 06db969edd3b687df21fe8cd74f16e70ef317ea2..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_phone_symbols_black.xml
+++ /dev/null
@@ -1,98 +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.
-*/
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="26.67%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="("
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="/" />
-        <Key
-            latin:keyLabel=")" />
-        <Key
-            latin:keyLabel="-"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:keyLabel="N"
-            latin:keyEdgeFlags="left" />
-        <!-- Pause is a comma. Check PhoneNumberUtils.java to see if this 
-            has changed. -->
-        <Key
-            latin:codes="44"
-            latin:keyLabel="Pause" />
-        <Key
-            latin:keyLabel="," />
-        <Key
-            latin:keyLabel="."
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:codes="42"
-            latin:keyIcon="@drawable/sym_bkeyboard_numstar"
-            latin:keyEdgeFlags="left" />
-        <!-- Wait is a semicolon. -->
-        <Key
-            latin:codes="59"
-            latin:keyLabel="Wait" />
-        <Key
-            latin:codes="35"
-            latin:keyIcon="@drawable/sym_bkeyboard_numpound" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="20%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row
-        latin:rowEdgeFlags="bottom"
-    >
-        <Key
-            latin:codes="@integer/key_switch_alpha_symbol"
-            latin:keyLabel="@string/label_phone_key"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="+" />
-        <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_bkeyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        <Key
-            latin:codes="@integer/key_return"
-            latin:keyIcon="@drawable/sym_bkeyboard_return"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-</Keyboard>
diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index aac4dfaab24d811b909743cf7b5f597cb81c1984..b75f533995ec21405e0f5746678470bccf2dd152 100644
--- a/java/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -26,7 +26,7 @@
     latin:keyHeight="@dimen/key_height"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_functional_key_style" />
+        latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:rowEdgeFlags="top"
     >
diff --git a/java/res/xml/kbd_qwerty_black.xml b/java/res/xml/kbd_qwerty_black.xml
deleted file mode 100644
index 76412f664914a569df9443ed7d9b32ed4b9959d9..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_qwerty_black.xml
+++ /dev/null
@@ -1,158 +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.
-*/
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="10%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="q"
-            latin:keyHintIcon="@drawable/keyboard_hint_1"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="w"
-            latin:keyHintIcon="@drawable/keyboard_hint_2"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_w" />
-        <Key
-            latin:keyLabel="e"
-            latin:keyHintIcon="@drawable/keyboard_hint_3"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_e" />
-        <Key
-            latin:keyLabel="r"
-            latin:keyHintIcon="@drawable/keyboard_hint_4"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_r" />
-        <Key
-            latin:keyLabel="t"
-            latin:keyHintIcon="@drawable/keyboard_hint_5"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_t" />
-        <Key
-            latin:keyLabel="y"
-            latin:keyHintIcon="@drawable/keyboard_hint_6"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_y" />
-        <Key
-            latin:keyLabel="u"
-            latin:keyHintIcon="@drawable/keyboard_hint_7"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_u" />
-        <Key
-            latin:keyLabel="i"
-            latin:keyHintIcon="@drawable/keyboard_hint_8"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_i" />
-        <Key
-            latin:keyLabel="o"
-            latin:keyHintIcon="@drawable/keyboard_hint_9"
-            latin:popupKeyboard="@xml/kbd_popup_narrow_template"
-            latin:popupCharacters="@string/alternates_for_o" />
-        <Key
-            latin:keyLabel="p"
-            latin:keyHintIcon="@drawable/keyboard_hint_0"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_p"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Spacer
-            latin:horizontalGap="5%p" />
-        <Key
-            latin:keyLabel="a"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="s"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_s" />
-        <Key
-            latin:keyLabel="d"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_d" />
-        <Key
-            latin:keyLabel="f" />
-        <Key
-            latin:keyLabel="g"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_g" />
-        <Key
-            latin:keyLabel="h" />
-        <Key
-            latin:keyLabel="j" />
-        <Key
-            latin:keyLabel="k" />
-        <Key
-            latin:keyLabel="l"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_l"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:codes="@integer/key_shift"
-            latin:keyIcon="@drawable/sym_bkeyboard_shift"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-            latin:keyWidth="15%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="z"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_z" />
-        <Key
-            latin:keyLabel="x" />
-        <Key
-            latin:keyLabel="c"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_c" />
-        <Key
-            latin:keyLabel="v"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_v" />
-        <Key
-            latin:keyLabel="b" />
-        <Key
-            latin:keyLabel="n"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="@string/alternates_for_n" />
-        <Key
-            latin:keyLabel="m" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="15%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" />
-</Keyboard>
diff --git a/java/res/xml/kbd_qwerty_black_f1.xml b/java/res/xml/kbd_qwerty_black_f1.xml
deleted file mode 100644
index 296d8a06af3e6b14f2c1ed6e2c9bf5e072ad3898..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_qwerty_black_f1.xml
+++ /dev/null
@@ -1,62 +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:mode="url"
-        >
-            <Key
-                latin:keyLabel="/"
-                latin:popupKeyboard="@xml/popup_slash"
-                latin:keyHintIcon="@drawable/hint_popup"
-                latin:isModifier="true" />
-        </case>
-        <case
-            latin:mode="email"
-        >
-            <Key
-                latin:keyLabel="\@"
-                latin:popupKeyboard="@xml/popup_at"
-                latin:keyHintIcon="@drawable/hint_popup"
-                latin:isModifier="true" />
-        </case>
-        <case
-            latin:hasVoiceKey="true"
-        >
-            <Key
-                latin:codes="@integer/key_voice"
-                latin:popupKeyboard="@xml/popup_mic"
-                latin:keyIcon="@drawable/sym_bkeyboard_mic"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-                latin:keyHintIcon="@drawable/hint_popup"
-                latin:isModifier="true" />
-        </case>
-        <default>
-            <Key
-                latin:keyLabel=","
-                latin:popupKeyboard="@xml/popup_comma"
-                latin:keyHintIcon="@drawable/hint_popup"
-                latin:isModifier="true" />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml/kbd_qwerty_black_row4.xml b/java/res/xml/kbd_qwerty_black_row4.xml
deleted file mode 100644
index c6e25b44467005fd0ac31298001eac5ef500493f..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_qwerty_black_row4.xml
+++ /dev/null
@@ -1,156 +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"
->
-    <Row
-        latin:keyWidth="10%p"
-        latin:rowEdgeFlags="bottom"
-    >
-        <switch>
-            <case
-                latin:hasSettingsKey="false"
-            >
-                <include
-                    latin:keyboardLayout="@xml/kbd_qwerty_black_symbol" />
-                <include
-                    latin:keyboardLayout="@xml/kbd_qwerty_black_f1" />
-                <switch>
-                    <case
-                        latin:mode="web"
-                    >
-                        <Key
-                            latin:codes="@integer/key_space"
-                            latin:keyIcon="@drawable/sym_bkeyboard_space"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                            latin:keyWidth="20%p" />
-                        <Key
-                            latin:codes="@integer/key_tab"
-                            latin:keyIcon="@drawable/sym_bkeyboard_tab"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
-                            latin:keyWidth="20%p" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:codes="@integer/key_space"
-                            latin:keyIcon="@drawable/sym_bkeyboard_space"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                            latin:keyWidth="40%p" />
-                    </default>
-                </switch>
-                <Key
-                    latin:keyLabel="."
-                    latin:keyHintIcon="@drawable/hint_popup"
-                    latin:popupKeyboard="@xml/popup_punctuation" />
-                <switch>
-                    <case
-                        latin:mode="im"
-                    >
-                        <Key
-                            latin:keyLabel=":-)"
-                            latin:keyOutputText=":-) "
-                            latin:keyHintIcon="@drawable/hint_popup"
-                            latin:popupKeyboard="@xml/popup_smileys"
-                            latin:keyWidth="20%p"
-                            latin:keyEdgeFlags="right" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:codes="@integer/key_return"
-                            latin:keyIcon="@drawable/sym_bkeyboard_return"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                            latin:keyWidth="20%p"
-                            latin:keyEdgeFlags="right" />
-                    </default>
-                </switch>
-            </case>
-            <case
-                latin:hasSettingsKey="true"
-            >
-                <include
-                    latin:keyboardLayout="@xml/kbd_qwerty_black_symbol" />
-                <Key
-                    latin:codes="@integer/key_settings"
-                    latin:keyIcon="@drawable/sym_bkeyboard_settings"
-                    latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
-                <include
-                    latin:keyboardLayout="@xml/kbd_qwerty_black_f1" />
-                <switch>
-                    <case
-                        latin:mode="web"
-                    >
-                        <Key
-                            latin:codes="@integer/key_space"
-                            latin:keyIcon="@drawable/sym_bkeyboard_space"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                            latin:keyWidth="30%p" />
-                        <Key
-                            latin:codes="@integer/key_tab"
-                            latin:keyIcon="@drawable/sym_bkeyboard_tab"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:codes="@integer/key_space"
-                            latin:keyIcon="@drawable/sym_bkeyboard_space"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                            latin:keyWidth="30%p" />
-                    </default>
-                </switch>
-                <Key
-                    latin:keyLabel="."
-                    latin:keyHintIcon="@drawable/hint_popup"
-                    latin:popupKeyboard="@xml/popup_punctuation" />
-                <switch>
-                    <case
-                        latin:mode="im"
-                    >
-                        <Key
-                            latin:keyLabel=":-)"
-                            latin:keyOutputText=":-) "
-                            latin:keyHintIcon="@drawable/hint_popup"
-                            latin:popupKeyboard="@xml/popup_smileys"
-                            latin:keyWidth="25%p"
-                            latin:keyEdgeFlags="right" />
-                    </case>
-                    <case
-                        latin:mode="web"
-                    >
-                        <Key
-                            latin:codes="@integer/key_return"
-                            latin:keyIcon="@drawable/sym_bkeyboard_return"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                            latin:keyWidth="15%p"
-                            latin:keyEdgeFlags="right" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:codes="@integer/key_return"
-                            latin:keyIcon="@drawable/sym_bkeyboard_return"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                            latin:keyWidth="25%p"
-                            latin:keyEdgeFlags="right" />
-                    </default>
-                </switch>
-            </case>
-        </switch>
-    </Row>
-</merge>
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index e9df8163a0e4aae9053d1cf70e684cd911372f6e..7264179b9cae4dd5ab4f61f018778b84311680ba 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -26,7 +26,7 @@
     latin:keyHeight="@dimen/key_height"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_functional_key_style" />
+        latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:rowEdgeFlags="top"
     >
diff --git a/java/res/xml/kbd_symbols_black.xml b/java/res/xml/kbd_symbols_black.xml
deleted file mode 100644
index ea021fb011a7be38bad04adc89a6ca5c8113c9ea..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_symbols_black.xml
+++ /dev/null
@@ -1,145 +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.
-*/
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="10%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="1"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="¹½⅓¼⅛"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="2"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="²⅔" />
-        <Key
-            latin:keyLabel="3"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="³¾⅜" />
-        <Key
-            latin:keyLabel="4"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="⁴" />
-        <Key
-            latin:keyLabel="5"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="⅝" />
-        <Key
-            latin:keyLabel="6" />
-        <Key
-            latin:keyLabel="7"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="â…ž" />
-        <Key
-            latin:keyLabel="8" />
-        <Key
-            latin:keyLabel="9" />
-        <Key
-            latin:keyLabel="0"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="ⁿ∅"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:keyLabel="\@"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="\#" />
-        <Key
-            latin:keyLabel="$"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="¢£€¥₣₤₱" />
-        <Key
-            latin:keyLabel="%"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="‰" />
-        <Key
-            latin:keyLabel="&amp;" />
-        <Key
-            latin:keyLabel="*"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="†‡★" />
-        <Key
-            latin:keyLabel="-"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="_–—" />
-        <Key
-            latin:keyLabel="+"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="±" />
-        <Key
-            latin:keyLabel="("
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="[{&lt;" />
-        <Key
-            latin:keyLabel=")"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="]}&gt;"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:codes="@integer/key_shift"
-            latin:keyLabel="@string/label_alt_key"
-            latin:keyWidth="15%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="!"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="¡" />
-        <Key
-            latin:keyLabel="&quot;"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="“”«»˝" />
-        <Key
-            latin:keyLabel="\'"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="‘’" />
-        <Key
-            latin:keyLabel=":" />
-        <Key
-            latin:keyLabel=";" />
-        <Key
-            latin:keyLabel="/" />
-        <Key
-            latin:keyLabel="\?"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="¿" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="15%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_symbols_black_row4" />
-</Keyboard>
diff --git a/java/res/xml/kbd_symbols_black_f1.xml b/java/res/xml/kbd_symbols_black_f1.xml
deleted file mode 100644
index 353b007ade3ad8199fe663cd147f574b38b1a5da..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_symbols_black_f1.xml
+++ /dev/null
@@ -1,46 +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:hasVoiceKey="true"
-        >
-            <Key
-                latin:codes="@integer/key_voice"
-                latin:popupKeyboard="@xml/popup_mic"
-                latin:keyIcon="@drawable/sym_bkeyboard_mic"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
-                latin:keyHintIcon="@drawable/hint_popup"
-                latin:isModifier="true" />
-        </case>
-        <case
-            latin:hasVoiceKey="false"
-        >
-            <Key
-                latin:keyLabel=","
-                latin:popupKeyboard="@xml/popup_comma"
-                latin:keyHintIcon="@drawable/hint_popup"
-                latin:isModifier="true" />
-        </case>
-    </switch>
-</merge>
diff --git a/java/res/xml/kbd_symbols_black_row4.xml b/java/res/xml/kbd_symbols_black_row4.xml
deleted file mode 100644
index 57f491b97fe34ca4495125b2c3c30f14828e6cf7..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_symbols_black_row4.xml
+++ /dev/null
@@ -1,116 +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"
->
-    <Row
-        latin:rowEdgeFlags="bottom"
-    >
-        <switch>
-            <case
-                latin:hasSettingsKey="false"
-            >
-                <Key
-                    latin:codes="@integer/key_switch_alpha_symbol"
-                    latin:keyLabel="@string/label_to_alpha_key"
-                    latin:keyWidth="20%p"
-                    latin:keyEdgeFlags="left" />
-                <include
-                    latin:keyboardLayout="@xml/kbd_symbols_black_f1" />
-                <Key
-                    latin:codes="@integer/key_space"
-                    latin:keyIcon="@drawable/sym_bkeyboard_space"
-                    latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                    latin:keyWidth="40%p" />
-                <Key
-                    latin:keyLabel="."
-                    latin:keyHintIcon="@drawable/hint_popup"
-                    latin:popupKeyboard="@xml/popup_punctuation" />
-                <switch>
-                    <case
-                        latin:mode="im"
-                    >
-                        <Key
-                            latin:keyLabel=":-)"
-                            latin:keyOutputText=":-) "
-                            latin:keyHintIcon="@drawable/hint_popup"
-                            latin:popupKeyboard="@xml/popup_smileys"
-                            latin:keyWidth="20%p"
-                            latin:keyEdgeFlags="right" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:codes="@integer/key_return"
-                            latin:keyIcon="@drawable/sym_bkeyboard_return"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                            latin:keyWidth="20%p"
-                            latin:keyEdgeFlags="right" />
-                    </default>
-                </switch>
-            </case>
-            <case
-                latin:hasSettingsKey="true"
-            >
-                <Key
-                    latin:codes="@integer/key_switch_alpha_symbol"
-                    latin:keyLabel="@string/label_to_alpha_key"
-                    latin:keyWidth="15%p"
-                    latin:keyEdgeFlags="left" />
-                <Key
-                    latin:codes="@integer/key_settings"
-                    latin:keyIcon="@drawable/sym_bkeyboard_settings"
-                    latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
-                <include
-                    latin:keyboardLayout="@xml/kbd_symbols_black_f1" />
-                <Key
-                    latin:codes="@integer/key_space"
-                    latin:keyIcon="@drawable/sym_bkeyboard_space"
-                    latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                    latin:keyWidth="30%p" />
-                <Key
-                    latin:keyLabel="."
-                    latin:keyHintIcon="@drawable/hint_popup"
-                    latin:popupKeyboard="@xml/popup_punctuation" />
-                <switch>
-                    <case
-                        latin:mode="im"
-                    >
-                        <Key
-                            latin:keyLabel=":-)"
-                            latin:keyOutputText=":-) "
-                            latin:keyHintIcon="@drawable/hint_popup"
-                            latin:popupKeyboard="@xml/popup_smileys"
-                            latin:keyWidth="25%p"
-                            latin:keyEdgeFlags="right" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:codes="@integer/key_return"
-                            latin:keyIcon="@drawable/sym_bkeyboard_return"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                            latin:keyWidth="25%p"
-                            latin:keyEdgeFlags="right" />
-                    </default>
-                </switch>
-            </case>
-        </switch>
-    </Row>
-</merge>
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index f3e79f71eda27a1f9dd6b2888a5e9365ee9b7512..83963bfc5196aa49bbaad9f7dcb4e86ef0b002ba 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -26,7 +26,7 @@
     latin:keyHeight="@dimen/key_height"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_functional_key_style" />
+        latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:rowEdgeFlags="top"
     >
@@ -59,9 +59,7 @@
     </Row>
     <Row>
         <Key
-            latin:codes="@integer/key_tab"
-            latin:keyIcon="@drawable/sym_keyboard_tab"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
+            latin:keyStyle="nonSpecialBackgroundTabKeyStyle"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="£" />
diff --git a/java/res/xml/kbd_symbols_shift_black.xml b/java/res/xml/kbd_symbols_shift_black.xml
deleted file mode 100644
index 895bcef726cfa7f179bc9ffd68c5447619ec22bd..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_symbols_shift_black.xml
+++ /dev/null
@@ -1,124 +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.
-*/
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="10%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:keyHeight="@dimen/key_height"
->
-    <Row
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="~"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="`" />
-        <Key
-            latin:keyLabel="|" />
-        <Key
-            latin:keyLabel="•"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="♪♥♠♦♣" />
-        <Key
-            latin:keyLabel="√" />
-        <Key
-            latin:keyLabel="Ï€"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="Π" />
-        <Key
-            latin:keyLabel="÷" />
-        <Key
-            latin:keyLabel="×" />
-        <Key
-            latin:keyLabel="{" />
-        <Key
-            latin:keyLabel="}"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:codes="@integer/key_tab"
-            latin:keyLabel="\u21E5"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="£" />
-        <Key
-            latin:keyLabel="¢" />
-        <Key
-            latin:keyLabel="€" />
-        <Key
-            latin:keyLabel="°" />
-        <Key
-            latin:keyLabel="^"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="↑↓←→" />
-        <Key
-            latin:keyLabel="_" />
-        <Key
-            latin:keyLabel="="
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="≠≈∞" />
-        <Key
-            latin:keyLabel="[" />
-        <Key
-            latin:keyLabel="]"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row>
-        <Key
-            latin:codes="@integer/key_shift"
-            latin:keyLabel="@string/label_alt_key"
-            latin:keyWidth="15%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="â„¢" />
-        <Key
-            latin:keyLabel="®" />
-        <Key
-            latin:keyLabel="©" />
-        <Key
-            latin:keyLabel="¶"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="§" />
-        <Key
-            latin:keyLabel="\\" />
-        <Key
-            latin:keyLabel="&lt;"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="≤«‹" />
-        <Key
-            latin:keyLabel="&gt;"
-            latin:popupKeyboard="@xml/kbd_popup_template"
-            latin:popupCharacters="≥»›" />
-        <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_bkeyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
-            latin:keyWidth="15%p"
-            latin:isRepeatable="true"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4" />
-</Keyboard>
diff --git a/java/res/xml/kbd_symbols_shift_black_row4.xml b/java/res/xml/kbd_symbols_shift_black_row4.xml
deleted file mode 100644
index 731cc6eb85cf54580af688c36189cf98e6a54525..0000000000000000000000000000000000000000
--- a/java/res/xml/kbd_symbols_shift_black_row4.xml
+++ /dev/null
@@ -1,112 +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"
->
-    <Row
-        latin:rowEdgeFlags="bottom"
-    >
-        <switch>
-            <case
-                latin:hasSettingsKey="false"
-            >
-                <Key
-                    latin:codes="@integer/key_switch_alpha_symbol"
-                    latin:keyLabel="@string/label_to_alpha_key"
-                    latin:keyWidth="20%p"
-                    latin:keyEdgeFlags="left" />
-                <Key
-                    latin:keyLabel="„" />
-                <Key
-                    latin:codes="@integer/key_space"
-                    latin:keyIcon="@drawable/sym_bkeyboard_space"
-                    latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                    latin:keyWidth="40%p" />
-                <Key
-                    latin:keyLabel="…" />
-                <switch>
-                    <case
-                        latin:mode="im"
-                    >
-                        <Key
-                            latin:keyLabel=":-)"
-                            latin:keyOutputText=":-) "
-                            latin:keyHintIcon="@drawable/hint_popup"
-                            latin:popupKeyboard="@xml/popup_smileys"
-                            latin:keyWidth="20%p"
-                            latin:keyEdgeFlags="right" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:codes="@integer/key_return"
-                            latin:keyIcon="@drawable/sym_bkeyboard_return"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                            latin:keyWidth="20%p"
-                            latin:keyEdgeFlags="right" />
-                    </default>
-                </switch>
-            </case>
-            <case
-                latin:hasSettingsKey="true"
-            >
-                <Key
-                    latin:codes="@integer/key_switch_alpha_symbol"
-                    latin:keyLabel="@string/label_to_alpha_key"
-                    latin:keyWidth="15%p"
-                    latin:keyEdgeFlags="left" />
-                <Key
-                    latin:codes="@integer/key_settings"
-                    latin:keyIcon="@drawable/sym_bkeyboard_settings"
-                    latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
-                <Key
-                    latin:keyLabel="„" />
-                <Key
-                    latin:codes="@integer/key_space"
-                    latin:keyIcon="@drawable/sym_bkeyboard_space"
-                    latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                    latin:keyWidth="30%p" />
-                <Key
-                    latin:keyLabel="…" />
-                <switch>
-                    <case
-                        latin:mode="im"
-                    >
-                        <Key
-                            latin:keyLabel=":-)"
-                            latin:keyOutputText=":-) "
-                            latin:keyHintIcon="@drawable/hint_popup"
-                            latin:popupKeyboard="@xml/popup_smileys"
-                            latin:keyWidth="25%p"
-                            latin:keyEdgeFlags="right" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:codes="@integer/key_return"
-                            latin:keyIcon="@drawable/sym_bkeyboard_return"
-                            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                            latin:keyWidth="25%p"
-                            latin:keyEdgeFlags="right" />
-                    </default>
-                </switch>
-            </case>
-        </switch>
-    </Row>
-</merge>
diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java b/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java
index ea209c51530e54f420431f77b80a0e23fc6a49c6..3a27649682ae9a530b920a97eea1ce4ec96cbd6f 100644
--- a/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java
+++ b/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java
@@ -394,18 +394,22 @@ public class BaseKeyboardParser {
 
         final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser),
                 R.styleable.BaseKeyboard_Case);
+        final TypedArray viewAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
+                R.styleable.BaseKeyboardView);
         try {
-            final boolean modeMatched = matchInteger(
-                    a, R.styleable.BaseKeyboard_Case_mode, id.mMode);
-            final boolean settingsKeyMatched = matchBoolean(
-                    a, R.styleable.BaseKeyboard_Case_hasSettingsKey, id.mHasSettingsKey);
-            final boolean voiceEnabledMatched = matchBoolean(
-                    a, R.styleable.BaseKeyboard_Case_voiceKeyEnabled, id.mVoiceKeyEnabled);
-            final boolean voiceKeyMatched = matchBoolean(
-                    a, R.styleable.BaseKeyboard_Case_hasVoiceKey, id.mHasVoiceKey);
+            final boolean modeMatched = matchInteger(a,
+                    R.styleable.BaseKeyboard_Case_mode, id.mMode);
+            final boolean settingsKeyMatched = matchBoolean(a,
+                    R.styleable.BaseKeyboard_Case_hasSettingsKey, id.mHasSettingsKey);
+            final boolean voiceEnabledMatched = matchBoolean(a,
+                    R.styleable.BaseKeyboard_Case_voiceKeyEnabled, id.mVoiceKeyEnabled);
+            final boolean voiceKeyMatched = matchBoolean(a,
+                    R.styleable.BaseKeyboard_Case_hasVoiceKey, id.mHasVoiceKey);
+            final boolean colorSchemeMatched = matchInteger(viewAttr,
+                    R.styleable.BaseKeyboardView_colorScheme, id.mColorScheme);
 
             final boolean selected = modeMatched && settingsKeyMatched
-                    && voiceEnabledMatched && voiceKeyMatched;
+                    && voiceEnabledMatched && voiceKeyMatched && colorSchemeMatched;
 
             if (DEBUG_TAG) {
             Log.d(TAG, "parseCaseCondition: " + Boolean.toString(selected).toUpperCase()
@@ -417,12 +421,15 @@ public class BaseKeyboardParser {
                             R.styleable.BaseKeyboard_Case_voiceKeyEnabled, "voiceKeyEnabled")
                     + debugBoolean(a,
                             R.styleable.BaseKeyboard_Case_hasVoiceKey, "hasVoiceKey")
+                    + debugInteger(viewAttr,
+                            R.styleable.BaseKeyboardView_colorScheme, "colorScheme")
                     );
             }
 
             return selected;
         } finally {
             a.recycle();
+            viewAttr.recycle();
         }
     }
 
diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboardView.java b/java/src/com/android/inputmethod/latin/BaseKeyboardView.java
index d98cd04b20aff67163f0a3eb1f27327f93edfd0f..129ff81a1ca0b571d3bda0b18cd48c44db02cb1c 100644
--- a/java/src/com/android/inputmethod/latin/BaseKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/BaseKeyboardView.java
@@ -73,6 +73,9 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
     private static final boolean DEBUG = false;
     private static final boolean DEBUG_KEYBOARD_GRID = false;
 
+    public static final int COLOR_SCHEME_WHITE = 0;
+    public static final int COLOR_SCHEME_BLACK = 1;
+
     public static final int NOT_A_TOUCH_COORDINATE = -1;
 
     public interface OnKeyboardActionListener {
@@ -170,7 +173,7 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
     private int mKeyTextColor;
     private Typeface mKeyTextStyle = Typeface.DEFAULT;
     private int mLabelTextSize;
-    private int mSymbolColorScheme = 0;
+    private int mColorScheme = COLOR_SCHEME_WHITE;
     private int mShadowColor;
     private float mShadowRadius;
     private Drawable mKeyBackground;
@@ -490,8 +493,8 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
                         break;
                 }
                 break;
-            case R.styleable.BaseKeyboardView_symbolColorScheme:
-                mSymbolColorScheme = a.getInt(attr, 0);
+            case R.styleable.BaseKeyboardView_colorScheme:
+                mColorScheme = a.getInt(attr, COLOR_SCHEME_WHITE);
                 break;
             }
         }
@@ -659,8 +662,8 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
         return mShowPreview;
     }
 
-    public int getSymbolColorScheme() {
-        return mSymbolColorScheme;
+    public int getColorScheme() {
+        return mColorScheme;
     }
 
     public void setPopupParent(View v) {
diff --git a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
index 790f86138cc678fc7f544a6dc82dec1b8fdded17..b90ea24716496a7038bacf3f8676fb1e05059db0 100644
--- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
@@ -52,27 +52,6 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
         R.layout.input_honeycomb, // DEFAULT_LAYOUT_ID
     };
 
-    // Ids for each characters' color in the keyboard
-    private static final int CHAR_THEME_COLOR_WHITE = 0;
-    private static final int CHAR_THEME_COLOR_BLACK = 1;
-
-    // Tables which contains resource ids for each character theme color
-    private static final int[] KBD_PHONE = new int[] {
-            R.xml.kbd_phone, R.xml.kbd_phone_black
-    };
-    private static final int[] KBD_PHONE_SYMBOLS = new int[] {
-            R.xml.kbd_phone_symbols, R.xml.kbd_phone_symbols_black
-    };
-    private static final int[] KBD_SYMBOLS = new int[] {
-            R.xml.kbd_symbols, R.xml.kbd_symbols_black
-    };
-    private static final int[] KBD_SYMBOLS_SHIFT = new int[] {
-            R.xml.kbd_symbols_shift, R.xml.kbd_symbols_shift_black
-    };
-    private static final int[] KBD_QWERTY = new int[] {
-            R.xml.kbd_qwerty, R.xml.kbd_qwerty_black
-    };
-
     private static final int SYMBOLS_MODE_STATE_NONE = 0;
     private static final int SYMBOLS_MODE_STATE_BEGIN = 1;
     private static final int SYMBOLS_MODE_STATE_SYMBOL = 2;
@@ -137,7 +116,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
         final Locale locale = mSubtypeSwitcher.getInputLocale();
         final int orientation = mInputMethodService.getResources().getConfiguration().orientation;
         final int mode = mMode;
-        final int colorScheme = getCharColorId();
+        final int colorScheme = getColorScheme();
         final boolean hasSettingsKey = mHasSettingsKey;
         final boolean voiceKeyEnabled = mVoiceKeyEnabled;
         final boolean hasVoiceKey = voiceKeyEnabled && !mVoiceButtonOnPrimary;
@@ -150,10 +129,10 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
         // mSymbolsId and mSymbolsShiftedId to "phone keyboard" and "phone symbols keyboard"
         // respectively here for xlarge device's layout switching.
         mSymbolsId = new KeyboardId(locale, orientation, mode,
-                mode == MODE_PHONE ? KBD_PHONE : KBD_SYMBOLS,
+                mode == MODE_PHONE ? R.xml.kbd_phone : R.xml.kbd_symbols,
                 colorScheme, hasSettingsKey, voiceKeyEnabled, hasVoiceKey, imeOptions, true);
         mSymbolsShiftedId = new KeyboardId(locale, orientation, mode,
-                mode == MODE_PHONE ? KBD_PHONE_SYMBOLS : KBD_SYMBOLS_SHIFT,
+                mode == MODE_PHONE ? R.xml.kbd_phone_symbols : R.xml.kbd_symbols_shift,
                 colorScheme, hasSettingsKey, voiceKeyEnabled, hasVoiceKey, imeOptions, true);
     }
 
@@ -165,7 +144,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
         public final Locale mLocale;
         public final int mOrientation;
         public final int mMode;
-        public final int[] mXmlArray;
+        public final int mXmlId;
         public final int mColorScheme;
         public final boolean mHasSettingsKey;
         public final boolean mVoiceKeyEnabled;
@@ -176,12 +155,12 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
         private final int mHashCode;
 
         public KeyboardId(Locale locale, int orientation, int mode,
-                int[] xmlArray, int colorScheme, boolean hasSettingsKey, boolean voiceKeyEnabled,
+                int xmlId, int colorScheme, boolean hasSettingsKey, boolean voiceKeyEnabled,
                 boolean hasVoiceKey, int imeOptions, boolean enableShiftLock) {
             this.mLocale = locale;
             this.mOrientation = orientation;
             this.mMode = mode;
-            this.mXmlArray = xmlArray;
+            this.mXmlId = xmlId;
             this.mColorScheme = colorScheme;
             this.mHasSettingsKey = hasSettingsKey;
             this.mVoiceKeyEnabled = voiceKeyEnabled;
@@ -193,7 +172,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
                     locale,
                     orientation,
                     mode,
-                    xmlArray,
+                    xmlId,
                     colorScheme,
                     hasSettingsKey,
                     voiceKeyEnabled,
@@ -204,11 +183,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
         }
 
         public int getXmlId() {
-            return mXmlArray[mColorScheme];
+            return mXmlId;
         }
 
         public boolean isAlphabetMode() {
-            return mXmlArray == KBD_QWERTY;
+            return mXmlId == R.xml.kbd_qwerty;
         }
 
         @Override
@@ -220,7 +199,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
             return other.mLocale.equals(this.mLocale)
                 && other.mOrientation == this.mOrientation
                 && other.mMode == this.mMode
-                && other.mXmlArray == this.mXmlArray
+                && other.mXmlId == this.mXmlId
                 && other.mColorScheme == this.mColorScheme
                 && other.mHasSettingsKey == this.mHasSettingsKey
                 && other.mVoiceKeyEnabled == this.mVoiceKeyEnabled
@@ -241,8 +220,8 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
                     (mOrientation == 1 ? "port" : "land"),
                     modeName(mMode),
                     mImeOptions,
-                    mXmlArray[0],
-                    (mColorScheme == CHAR_THEME_COLOR_WHITE ? "white" : "black"),
+                    mXmlId,
+                    colorSchemeName(mColorScheme),
                     (mHasSettingsKey ? " hasSettingsKey" : ""),
                     (mVoiceKeyEnabled ? " voiceKeyEnabled" : ""),
                     (mHasVoiceKey ? " hasVoiceKey" : ""),
@@ -260,6 +239,14 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
             }
             return null;
         }
+
+        private static String colorSchemeName(int colorScheme) {
+            switch (colorScheme) {
+            case BaseKeyboardView.COLOR_SCHEME_WHITE: return "white";
+            case BaseKeyboardView.COLOR_SCHEME_BLACK: return "black";
+            }
+            return null;
+        }
     }
 
     private boolean hasVoiceKey(boolean isSymbols) {
@@ -315,7 +302,6 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
 
             keyboard = new LatinKeyboard(mInputMethodService, id);
             keyboard.setImeOptions(res, id.mMode, id.mImeOptions);
-            keyboard.setColorOfSymbolIcons(isBlackSym(id.mColorScheme));
 
             if (id.mEnableShiftLock) {
                 keyboard.enableShiftLock();
@@ -338,20 +324,20 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
 
     private KeyboardId getKeyboardId(int mode, int imeOptions, boolean isSymbols) {
         final boolean hasVoiceKey = hasVoiceKey(isSymbols);
-        final int charColorId = getCharColorId();
-        final int[] xmlArray;
+        final int charColorId = getColorScheme();
+        final int xmlId;
         final boolean enableShiftLock;
 
         if (isSymbols) {
-            xmlArray = mode == MODE_PHONE ? KBD_PHONE_SYMBOLS : KBD_SYMBOLS;
+            xmlId = mode == MODE_PHONE ? R.xml.kbd_phone_symbols : R.xml.kbd_symbols;
             enableShiftLock = false;
         } else {  // QWERTY
-            xmlArray = mode == MODE_PHONE ? KBD_PHONE : KBD_QWERTY;
+            xmlId = mode == MODE_PHONE ? R.xml.kbd_phone : R.xml.kbd_qwerty;
             enableShiftLock = mode == MODE_PHONE ? false : true;
         }
         final int orientation = mInputMethodService.getResources().getConfiguration().orientation;
         final Locale locale = mSubtypeSwitcher.getInputLocale();
-        return new KeyboardId(locale, orientation, mode, xmlArray, charColorId,
+        return new KeyboardId(locale, orientation, mode, xmlId, charColorId,
                 mHasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, imeOptions, enableShiftLock);
     }
 
@@ -719,23 +705,9 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
         }
     }
 
-    public boolean isBlackSym() {
-        if (mInputView != null && mInputView.getSymbolColorScheme() == 1) {
-            return true;
-        }
-        return false;
-    }
-
-    private boolean isBlackSym(int colorScheme) {
-        return colorScheme == CHAR_THEME_COLOR_BLACK;
-    }
-
-    private int getCharColorId() {
-        if (isBlackSym()) {
-            return CHAR_THEME_COLOR_BLACK;
-        } else {
-            return CHAR_THEME_COLOR_WHITE;
-        }
+    private int getColorScheme() {
+        return (mInputView != null)
+                ? mInputView.getColorScheme() : BaseKeyboardView.COLOR_SCHEME_WHITE;
     }
 
     public void onAutoCompletionStateChanged(boolean isAutoCompletion) {
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboard.java b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
index fc62053fe5d6c158fa5575809eb4fe18ef4f894e..be00659b8df0048b893a4213d43089fa54d85055 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
@@ -46,7 +46,7 @@ public class LatinKeyboard extends BaseKeyboard {
     private static final int OPACITY_FULLY_OPAQUE = 255;
     private static final int SPACE_LED_LENGTH_PERCENT = 80;
 
-    private Drawable mShiftedIcon;
+    private final Drawable mShiftedIcon;
     private Drawable mShiftLockPreviewIcon;
     private final HashMap<Key, Drawable> mNormalShiftIcons = new HashMap<Key, Drawable>();
     private Drawable mSpaceIcon;
@@ -54,6 +54,8 @@ public class LatinKeyboard extends BaseKeyboard {
     private Drawable mSpacePreviewIcon;
     private final Drawable mButtonArrowLeftIcon;
     private final Drawable mButtonArrowRightIcon;
+    private final Drawable mSearchIcon;
+    private final int mSpaceBarTextShadowColor;
     private Key mEnterKey;
     private Key mSpaceKey;
     private int mSpaceKeyIndex = -1;
@@ -61,7 +63,6 @@ public class LatinKeyboard extends BaseKeyboard {
     private int mSpaceDragLastDiff;
     private final Resources mRes;
     private final Context mContext;
-    private final boolean mIsAlphaKeyboard;
     private boolean mCurrentlyInSpace;
     private SlidingLocaleDrawable mSlidingLocaleIcon;
     private int[] mPrefLetterFrequencies;
@@ -76,9 +77,6 @@ public class LatinKeyboard extends BaseKeyboard {
     private final CharSequence mDefaultEnterLabel;
     private final CharSequence mDefaultEnterText;
 
-    // TODO: generalize for any keyboardId
-    private boolean mIsBlackSym;
-
     private LatinKeyboardShiftState mShiftState = new LatinKeyboardShiftState();
 
     private static final float SPACEBAR_DRAG_THRESHOLD = 0.8f;
@@ -99,19 +97,26 @@ public class LatinKeyboard extends BaseKeyboard {
         final Resources res = context.getResources();
         mContext = context;
         mRes = res;
-        mShiftedIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked);
+        if (id.mColorScheme == BaseKeyboardView.COLOR_SCHEME_BLACK) {
+            // TODO: use <case imeOptions> and <case colorScheme> in XML to load search icon
+            mSearchIcon = res.getDrawable(R.drawable.sym_bkeyboard_search);
+            mShiftedIcon = res.getDrawable(R.drawable.sym_bkeyboard_shift_locked);
+            mSpaceBarTextShadowColor = res.getColor(
+                    R.color.latinkeyboard_bar_language_shadow_black);
+        } else { // default color scheme is BaseKeyboardView.COLOR_SCHEME_WHITE
+            // TODO: use <case imeOptions> and <case colorScheme> in XML to load search icon
+            mSearchIcon = res.getDrawable(R.drawable.sym_keyboard_search);
+            mShiftedIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked);
+            mSpaceBarTextShadowColor = res.getColor(
+                    R.color.latinkeyboard_bar_language_shadow_white);
+        }
         mShiftLockPreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_shift_locked);
         setDefaultBounds(mShiftLockPreviewIcon);
-        mSpaceIcon = res.getDrawable(R.drawable.sym_keyboard_space);
         mSpaceAutoCompletionIndicator = res.getDrawable(R.drawable.sym_keyboard_space_led);
-        mSpacePreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_space);
         mButtonArrowLeftIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_left);
         mButtonArrowRightIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_right);
         sSpacebarVerticalCorrection = res.getDimensionPixelOffset(
                 R.dimen.spacebar_vertical_correction);
-        final int xmlLayoutResId = id.getXmlId();
-        mIsAlphaKeyboard = xmlLayoutResId == R.xml.kbd_qwerty
-                || xmlLayoutResId == R.xml.kbd_qwerty_black;
         mSpaceKeyIndex = indexOf(LatinIME.KEYCODE_SPACE);
 
         if (mEnterKey != null) {
@@ -135,6 +140,8 @@ public class LatinKeyboard extends BaseKeyboard {
             break;
         case LatinIME.KEYCODE_SPACE:
             mSpaceKey = key;
+            mSpaceIcon = key.icon;
+            mSpacePreviewIcon = key.iconPreview;
             break;
         }
 
@@ -151,6 +158,7 @@ public class LatinKeyboard extends BaseKeyboard {
         key.label = label;
     }
 
+    // TODO: remove this method and use <case imeOptions> in XML
     public void setImeOptions(Resources res, int mode, int options) {
         if (mEnterKey == null)
             return;
@@ -170,8 +178,7 @@ public class LatinKeyboard extends BaseKeyboard {
             case EditorInfo.IME_ACTION_SEARCH:
                 resetKeyAttributes(mEnterKey, null);
                 mEnterKey.iconPreview = res.getDrawable(R.drawable.sym_keyboard_feedback_search);
-                mEnterKey.icon = res.getDrawable(mIsBlackSym ? R.drawable.sym_bkeyboard_search
-                        : R.drawable.sym_keyboard_search);
+                mEnterKey.icon = mSearchIcon;
                 break;
             case EditorInfo.IME_ACTION_SEND:
                 resetKeyAttributes(mEnterKey, res.getText(R.string.label_send_key));
@@ -240,11 +247,11 @@ public class LatinKeyboard extends BaseKeyboard {
     }
 
     public boolean isAutomaticTemporaryUpperCase() {
-        return mIsAlphaKeyboard && mShiftState.isAutomaticTemporaryUpperCase();
+        return isAlphaKeyboard() && mShiftState.isAutomaticTemporaryUpperCase();
     }
 
     public boolean isManualTemporaryUpperCase() {
-        return mIsAlphaKeyboard && mShiftState.isManualTemporaryUpperCase();
+        return isAlphaKeyboard() && mShiftState.isManualTemporaryUpperCase();
     }
 
     /* package */ LatinKeyboardShiftState getKeyboardShiftState() {
@@ -252,43 +259,30 @@ public class LatinKeyboard extends BaseKeyboard {
     }
 
     public boolean isAlphaKeyboard() {
-        return mIsAlphaKeyboard;
-    }
-
-    public void setColorOfSymbolIcons(boolean isBlack) {
-        mIsBlackSym = isBlack;
-        final Resources res = mRes;
-        if (isBlack) {
-            mShiftedIcon = res.getDrawable(R.drawable.sym_bkeyboard_shift_locked);
-            mSpaceIcon = res.getDrawable(R.drawable.sym_bkeyboard_space);
-        } else {
-            mShiftedIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked);
-            mSpaceIcon = res.getDrawable(R.drawable.sym_keyboard_space);
-        }
+        return mId.getXmlId() == R.xml.kbd_qwerty;
     }
 
     /**
      * @return a key which should be invalidated.
      */
     public Key onAutoCompletionStateChanged(boolean isAutoCompletion) {
-        updateSpaceBarForLocale(isAutoCompletion, mIsBlackSym);
+        updateSpaceBarForLocale(isAutoCompletion);
         return mSpaceKey;
     }
 
-    private void updateSpaceBarForLocale(boolean isAutoCompletion, boolean isBlack) {
+    private void updateSpaceBarForLocale(boolean isAutoCompletion) {
         final Resources res = mRes;
         // If application locales are explicitly selected.
         if (SubtypeSwitcher.getInstance().needsToDisplayLanguage()) {
             mSpaceKey.icon = new BitmapDrawable(res,
-                    drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCompletion, isBlack));
+                    drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCompletion));
         } else {
             // sym_keyboard_space_led can be shared with Black and White symbol themes.
             if (isAutoCompletion) {
                 mSpaceKey.icon = new BitmapDrawable(res,
-                        drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCompletion, isBlack));
+                        drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCompletion));
             } else {
-                mSpaceKey.icon = isBlack ? res.getDrawable(R.drawable.sym_bkeyboard_space)
-                        : res.getDrawable(R.drawable.sym_keyboard_space);
+                mSpaceKey.icon = mSpaceIcon;
             }
         }
     }
@@ -343,7 +337,7 @@ public class LatinKeyboard extends BaseKeyboard {
         return language;
     }
 
-    private Bitmap drawSpaceBar(int opacity, boolean isAutoCompletion, boolean isBlack) {
+    private Bitmap drawSpaceBar(int opacity, boolean isAutoCompletion) {
         final int width = mSpaceKey.width;
         final int height = mSpaceIcon.getIntrinsicHeight();
         final Bitmap buffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
@@ -366,12 +360,9 @@ public class LatinKeyboard extends BaseKeyboard {
                     allowVariableTextSize);
 
             // Draw language text with shadow
-            final int shadowColor = res.getColor(isBlack
-                    ? R.color.latinkeyboard_bar_language_shadow_black
-                    : R.color.latinkeyboard_bar_language_shadow_white);
             final float baseline = height * SPACEBAR_LANGUAGE_BASELINE;
             final float descent = paint.descent();
-            paint.setColor(shadowColor);
+            paint.setColor(mSpaceBarTextShadowColor);
             canvas.drawText(language, width / 2, baseline - descent - 1, paint);
             paint.setColor(res.getColor(R.color.latinkeyboard_bar_language_text));
             canvas.drawText(language, width / 2, baseline - descent, paint);