diff --git a/java/res/drawable-xlarge/btn_center_default.9.png b/java/res/drawable-mdpi/btn_center_default.9.png
similarity index 100%
rename from java/res/drawable-xlarge/btn_center_default.9.png
rename to java/res/drawable-mdpi/btn_center_default.9.png
diff --git a/java/res/drawable-xlarge/btn_center_pressed.9.png b/java/res/drawable-mdpi/btn_center_pressed.9.png
similarity index 100%
rename from java/res/drawable-xlarge/btn_center_pressed.9.png
rename to java/res/drawable-mdpi/btn_center_pressed.9.png
diff --git a/java/res/drawable-xlarge/btn_center_selected.9.png b/java/res/drawable-mdpi/btn_center_selected.9.png
similarity index 100%
rename from java/res/drawable-xlarge/btn_center_selected.9.png
rename to java/res/drawable-mdpi/btn_center_selected.9.png
diff --git a/java/res/drawable-xlarge/mic_base.png b/java/res/drawable-mdpi/mic_base.png
similarity index 100%
rename from java/res/drawable-xlarge/mic_base.png
rename to java/res/drawable-mdpi/mic_base.png
diff --git a/java/res/drawable-xlarge/mic_full.png b/java/res/drawable-mdpi/mic_full.png
similarity index 100%
rename from java/res/drawable-xlarge/mic_full.png
rename to java/res/drawable-mdpi/mic_full.png
diff --git a/java/res/drawable-xlarge/vs_dialog_blue.9.png b/java/res/drawable-mdpi/vs_dialog_blue.9.png
similarity index 100%
rename from java/res/drawable-xlarge/vs_dialog_blue.9.png
rename to java/res/drawable-mdpi/vs_dialog_blue.9.png
diff --git a/java/res/drawable-xlarge/vs_dialog_red.9.png b/java/res/drawable-mdpi/vs_dialog_red.9.png
similarity index 100%
rename from java/res/drawable-xlarge/vs_dialog_red.9.png
rename to java/res/drawable-mdpi/vs_dialog_red.9.png
diff --git a/java/res/drawable-xlarge/vs_dialog_yellow.9.png b/java/res/drawable-mdpi/vs_dialog_yellow.9.png
similarity index 100%
rename from java/res/drawable-xlarge/vs_dialog_yellow.9.png
rename to java/res/drawable-mdpi/vs_dialog_yellow.9.png
diff --git a/java/res/drawable-xlarge/vs_popup_mic_edge.png b/java/res/drawable-mdpi/vs_popup_mic_edge.png
similarity index 100%
rename from java/res/drawable-xlarge/vs_popup_mic_edge.png
rename to java/res/drawable-mdpi/vs_popup_mic_edge.png
diff --git a/java/res/drawable-xlarge/caution.png b/java/res/drawable-xlarge/caution.png
deleted file mode 100755
index eaef534254f1b5feef517949b559f5653b81fcba..0000000000000000000000000000000000000000
Binary files a/java/res/drawable-xlarge/caution.png and /dev/null differ
diff --git a/java/res/drawable-xlarge/mic_slash.png b/java/res/drawable-xlarge/mic_slash.png
deleted file mode 100644
index 1dd05c5b44500013703f8e8f55356d7f92f66f93..0000000000000000000000000000000000000000
Binary files a/java/res/drawable-xlarge/mic_slash.png and /dev/null differ
diff --git a/java/res/drawable/btn_center_default.9.png b/java/res/drawable/btn_center_default.9.png
deleted file mode 100755
index d5ec36ba49b91d6573ea1e21a70abc4ef572b619..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/btn_center_default.9.png and /dev/null differ
diff --git a/java/res/drawable/btn_center_pressed.9.png b/java/res/drawable/btn_center_pressed.9.png
deleted file mode 100755
index 593a679d01b516b59c7478570a8e698a9ef51f6f..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/btn_center_pressed.9.png and /dev/null differ
diff --git a/java/res/drawable/btn_center_selected.9.png b/java/res/drawable/btn_center_selected.9.png
deleted file mode 100644
index f1914a8864f4dd60d259ef5c7b94880b97608834..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/btn_center_selected.9.png and /dev/null differ
diff --git a/java/res/drawable/caution.png b/java/res/drawable/caution.png
deleted file mode 100755
index eaef534254f1b5feef517949b559f5653b81fcba..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/caution.png and /dev/null differ
diff --git a/java/res/drawable/mic_base.png b/java/res/drawable/mic_base.png
deleted file mode 100644
index 53e29ff4b9faca2657b2d023dd15b610f9c00c01..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/mic_base.png and /dev/null differ
diff --git a/java/res/drawable/mic_full.png b/java/res/drawable/mic_full.png
deleted file mode 100644
index e3e3dfac30a7afe1b2a524764a3b74d532863029..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/mic_full.png and /dev/null differ
diff --git a/java/res/drawable/mic_slash.png b/java/res/drawable/mic_slash.png
deleted file mode 100644
index 1dd05c5b44500013703f8e8f55356d7f92f66f93..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/mic_slash.png and /dev/null differ
diff --git a/java/res/drawable/vs_dialog_blue.9.png b/java/res/drawable/vs_dialog_blue.9.png
deleted file mode 100644
index cf27e8f43b4fae87fc9c5f388c85305e87c94dc6..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/vs_dialog_blue.9.png and /dev/null differ
diff --git a/java/res/drawable/vs_dialog_red.9.png b/java/res/drawable/vs_dialog_red.9.png
deleted file mode 100644
index 6c08d5a3087d2f908add4ebb2fa9d9948aec6817..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/vs_dialog_red.9.png and /dev/null differ
diff --git a/java/res/drawable/vs_dialog_yellow.9.png b/java/res/drawable/vs_dialog_yellow.9.png
deleted file mode 100644
index 2fb06c263647a1b9f38608fe03ea5675ed2aea94..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/vs_dialog_yellow.9.png and /dev/null differ
diff --git a/java/res/drawable/vs_popup_mic_edge.png b/java/res/drawable/vs_popup_mic_edge.png
deleted file mode 100644
index 4ff6337a2c0b4458cb2fe3ca26c19695c2847302..0000000000000000000000000000000000000000
Binary files a/java/res/drawable/vs_popup_mic_edge.png and /dev/null differ
diff --git a/java/res/layout-large/candidate.xml b/java/res/layout-large/candidate.xml
new file mode 100644
index 0000000000000000000000000000000000000000..74532a1e2012f23dbc90ffcee09b04a0d9e73829
--- /dev/null
+++ b/java/res/layout-large/candidate.xml
@@ -0,0 +1,60 @@
+<?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.
+*/
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/candidate_strip_height"
+    android:orientation="horizontal"
+    android:paddingRight="@dimen/candidate_padding"
+>
+    <ImageView
+        android:id="@+id/candidate_divider"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/candidate_strip_height"
+        android:visibility="gone"
+        android:focusable="false"
+        android:clickable="false"
+        android:src="@drawable/keyboard_suggest_strip_divider"
+        android:gravity="center_vertical|center_horizontal" />
+    <Button
+        android:id="@+id/candidate_word"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/candidate_strip_height"
+        android:minWidth="@dimen/candidate_min_width"
+        android:textSize="@dimen/candidate_text_size"
+        android:textColor="@color/candidate_normal"
+        android:background="@drawable/btn_candidate_holo"
+        android:focusable="true"
+        android:clickable="true"
+        android:gravity="center_vertical|center_horizontal"
+        android:paddingLeft="@dimen/candidate_padding" />
+    <TextView
+        android:id="@+id/candidate_debug_info"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:visibility="gone"
+        android:textSize="10dip"
+        android:textColor="#ff808080"
+        android:focusable="false"
+        android:clickable="false"
+        android:gravity="bottom"
+        android:paddingLeft="4dip" />
+</LinearLayout>
diff --git a/java/res/layout-large/candidate_preview.xml b/java/res/layout-large/candidate_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..61d5f8e7b7ba46d49bbfc29a7a0fcbc749b675da
--- /dev/null
+++ b/java/res/layout-large/candidate_preview.xml
@@ -0,0 +1,29 @@
+<?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.
+*/
+-->
+
+<TextView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:textSize="18sp"
+    android:textColor="?android:attr/textColorPrimaryInverse"
+    android:minWidth="32dip"
+    android:gravity="center"
+    android:background="@drawable/keyboard_popup_panel_background_holo" />
diff --git a/java/res/layout-large/candidates.xml b/java/res/layout-large/candidates.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e2ddb84b1c3f92e135ebce2d0904efa63027bb10
--- /dev/null
+++ b/java/res/layout-large/candidates.xml
@@ -0,0 +1,45 @@
+<?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.
+*/
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/candidate_strip_height"
+    android:background="@drawable/keyboard_suggest_strip_holo"
+    android:paddingRight="@dimen/candidate_strip_padding"
+    android:paddingLeft="@dimen/candidate_strip_padding"
+>
+    <HorizontalScrollView
+        android:id="@+id/candidates_scroll_view"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/candidate_strip_height"
+        android:fadingEdge="horizontal"
+        android:fadingEdgeLength="@dimen/candidate_strip_fading_edge_length"
+        android:scrollbars="none"
+    >
+        <com.android.inputmethod.latin.CandidateView
+            android:id="@+id/candidates"
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/candidate_strip_height"
+            android:background="@drawable/keyboard_suggest_strip_holo" />
+    </HorizontalScrollView>
+</LinearLayout>
diff --git a/java/res/layout-large/keyboard_popup_honeycomb.xml b/java/res/layout-large/keyboard_popup_honeycomb.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0b8229ca5f79fa6142641d4e61e8477eb49b3bdd
--- /dev/null
+++ b/java/res/layout-large/keyboard_popup_honeycomb.xml
@@ -0,0 +1,41 @@
+<?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.
+*/
+-->
+<LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:background="@drawable/keyboard_popup_panel_background_holo"
+        android:paddingLeft="40dip"
+        android:paddingRight="40dip"
+        >
+    <com.android.inputmethod.keyboard.KeyboardView
+            xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+            android:id="@+id/KeyboardView"
+            android:layout_alignParentBottom="true"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/latinkeyboard_transparent"
+
+            latin:keyBackground="@drawable/btn_keyboard_key_honeycomb_popup"
+            latin:keyHysteresisDistance="0dip"
+            latin:verticalCorrection="@dimen/mini_keyboard_vertical_correction"
+            />
+</LinearLayout>
diff --git a/java/res/values-large-land/dimens.xml b/java/res/values-large-land/dimens.xml
new file mode 100644
index 0000000000000000000000000000000000000000..625dd263c6988cfd8be528380b19ec264d79c9be
--- /dev/null
+++ b/java/res/values-large-land/dimens.xml
@@ -0,0 +1,39 @@
+<?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.
+*/
+-->
+
+<resources>
+    <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
+    <dimen name="keyboardHeight">58.0mm</dimen>
+    <!-- key_height + key_bottom_gap = popup_key_height -->
+    <!-- <dimen name="key_height">14.5mm</dimen> -->
+    <dimen name="key_bottom_gap">0.0mm</dimen>
+    <dimen name="key_horizontal_gap">0.0mm</dimen>
+    <dimen name="popup_key_height">13.0mm</dimen>
+    <dimen name="keyboard_top_padding">1.1mm</dimen>
+    <dimen name="keyboard_bottom_padding">0.0mm</dimen>
+    <!-- key_height x 1.0 -->
+    <dimen name="key_preview_height">13.0mm</dimen>
+
+    <dimen name="key_letter_size">28dip</dimen>
+    <dimen name="key_label_text_size">20dip</dimen>
+    <!-- left or right padding of label alignment -->
+    <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
+    <dimen name="candidate_strip_padding">40.0mm</dimen>
+</resources>
diff --git a/java/res/values-large/config.xml b/java/res/values-large/config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f075b1b50841e95375d4789c8377ad0bb05cd78c
--- /dev/null
+++ b/java/res/values-large/config.xml
@@ -0,0 +1,45 @@
+<?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.
+*/
+-->
+
+<resources>
+    <bool name="config_enable_show_settings_key_option">false</bool>
+    <bool name="config_enable_show_subtype_settings">false</bool>
+    <bool name="config_enable_show_voice_key_option">false</bool>
+    <bool name="config_enable_show_popup_on_keypress_option">false</bool>
+    <bool name="config_enable_show_recorrection_option">false</bool>
+    <bool name="config_enable_quick_fixes_option">false</bool>
+    <bool name="config_enable_bigram_suggestions_option">false</bool>
+    <bool name="config_candidate_highlight_font_color_enabled">false</bool>
+    <bool name="config_swipe_down_dismiss_keyboard_enabled">false</bool>
+    <bool name="config_sliding_key_input_enabled">false</bool>
+    <bool name="config_digit_popup_characters_enabled">false</bool>
+    <!-- Whether or not Popup on key press is enabled by default -->
+    <bool name="config_default_popup_preview">false</bool>
+    <bool name="config_default_sound_enabled">true</bool>
+    <bool name="config_use_spacebar_language_switcher">false</bool>
+    <!-- Showing mini keyboard, just above the touched point if true, aligned to the key if false -->
+    <bool name="config_show_mini_keyboard_at_touched_point">true</bool>
+    <!-- The language is never displayed if == 0, always displayed if < 0 -->
+    <integer name="config_delay_before_fadeout_language_on_spacebar">1200</integer>
+    <!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. -->
+    <string name="config_default_keyboard_theme_id" translatable="false">5</string>
+    <string name="config_text_size_of_language_on_spacebar" translatable="false">medium</string>
+    <integer name="config_max_popup_keyboard_column">5</integer>
+</resources>
diff --git a/java/res/values-large/dimens.xml b/java/res/values-large/dimens.xml
new file mode 100644
index 0000000000000000000000000000000000000000..69283202e6891602d8ab1c2cc0c16c51ac4b29ca
--- /dev/null
+++ b/java/res/values-large/dimens.xml
@@ -0,0 +1,51 @@
+<?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.
+*/
+-->
+
+<resources>
+    <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
+    <dimen name="keyboardHeight">48.0mm</dimen>
+    <!-- key_height + key_bottom_gap = popup_key_height -->
+    <!-- <dimen name="key_height">14.5mm</dimen> -->
+    <dimen name="key_bottom_gap">0.0mm</dimen>
+    <dimen name="key_horizontal_gap">0.0mm</dimen>
+    <dimen name="popup_key_height">10.0mm</dimen>
+    <dimen name="keyboard_top_padding">1.1mm</dimen>
+    <dimen name="keyboard_bottom_padding">0.0mm</dimen>
+    <!-- key_height x 1.0 -->
+    <dimen name="key_preview_height">13.0mm</dimen>
+    <dimen name="mini_keyboard_key_horizontal_padding">12dip</dimen>
+    <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
+    <!-- popup_key_height x 1.2 -->
+    <dimen name="mini_keyboard_slide_allowance">15.6mm</dimen>
+    <!-- popup_key_height x -1.0 -->
+    <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
+
+    <dimen name="key_letter_size">26dip</dimen>
+    <dimen name="key_label_text_size">16dip</dimen>
+    <dimen name="key_preview_text_size_large">24dip</dimen>
+    <!-- left or right padding of label alignment -->
+    <dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
+
+    <dimen name="candidate_strip_height">46dip</dimen>
+    <dimen name="candidate_strip_padding">15.0mm</dimen>
+    <dimen name="candidate_min_width">0.3in</dimen>
+    <dimen name="candidate_padding">12dip</dimen>
+    <dimen name="candidate_text_size">22dip</dimen>
+</resources>
diff --git a/java/res/values-large/donottranslate.xml b/java/res/values-large/donottranslate.xml
new file mode 100644
index 0000000000000000000000000000000000000000..672dea589c8389a68d4db860639492d73e1f86e7
--- /dev/null
+++ b/java/res/values-large/donottranslate.xml
@@ -0,0 +1,23 @@
+<?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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!--  Default value of the visibility of the suggestion strip -->
+    <string name="prefs_suggestion_visibility_default_value" translatable="false">2</string>
+</resources>
diff --git a/java/res/xml-large-land/kbd_popup_template.xml b/java/res/xml-large-land/kbd_popup_template.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3caae1a60497d66217ec743940de66fabf20f079
--- /dev/null
+++ b/java/res/xml-large-land/kbd_popup_template.xml
@@ -0,0 +1,27 @@
+<?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="3.5%p"
+    latin:horizontalGap="0px"
+    latin:verticalGap="0px"
+    latin:rowHeight="@dimen/popup_key_height"
+    >
+</Keyboard>
diff --git a/java/res/xml-large/kbd_azerty_rows.xml b/java/res/xml-large/kbd_azerty_rows.xml
new file mode 100644
index 0000000000000000000000000000000000000000..564f7762901d9b002d2fab71408783534e16c2b0
--- /dev/null
+++ b/java/res/xml-large/kbd_azerty_rows.xml
@@ -0,0 +1,169 @@
+<?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"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <Row
+        latin:keyWidth="8.272%p"
+    >
+        <Key
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="a"
+            latin:popupCharacters="@string/alternates_for_a" />
+        <Key
+            latin:keyLabel="z"
+            latin:popupCharacters="@string/alternates_for_z" />
+        <Key
+            latin:keyLabel="e"
+            latin:popupCharacters="@string/alternates_for_e" />
+        <Key
+            latin:keyLabel="r"
+            latin:popupCharacters="@string/alternates_for_r" />
+        <Key
+            latin:keyLabel="t"
+            latin:popupCharacters="@string/alternates_for_t" />
+        <Key
+            latin:keyLabel="y"
+            latin:popupCharacters="@string/alternates_for_y" />
+        <Key
+            latin:keyLabel="u"
+            latin:popupCharacters="@string/alternates_for_u" />
+        <Key
+            latin:keyLabel="i"
+            latin:popupCharacters="@string/alternates_for_i" />
+        <Key
+            latin:keyLabel="o"
+            latin:popupCharacters="@string/alternates_for_o" />
+        <Key
+            latin:keyLabel="p"
+            latin:popupCharacters="@string/alternates_for_p" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="8.157%p"
+    >
+        <Key
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="10.167%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="q"
+            latin:popupCharacters="@string/alternates_for_q" />
+        <Key
+            latin:keyLabel="s"
+            latin:popupCharacters="@string/alternates_for_s" />
+        <Key
+            latin:keyLabel="d"
+            latin:popupCharacters="@string/alternates_for_d" />
+        <Key
+            latin:keyLabel="f" />
+        <Key
+            latin:keyLabel="g"
+            latin:popupCharacters="@string/alternates_for_g" />
+        <Key
+            latin:keyLabel="h" />
+        <Key
+            latin:keyLabel="j" />
+        <Key
+            latin:keyLabel="k"
+            latin:popupCharacters="@string/alternates_for_k" />
+        <Key
+            latin:keyLabel="l"
+            latin:popupCharacters="@string/alternates_for_l" />
+        <Key
+            latin:keyLabel="m"
+            latin:keyEdgeFlags="right" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="8.593%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="8.042%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="15.192%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="w"
+            latin:popupCharacters="@string/alternates_for_w" />
+        <Key
+            latin:keyLabel="x" />
+        <Key
+            latin:keyLabel="c"
+            latin:popupCharacters="@string/alternates_for_c" />
+        <Key
+            latin:keyLabel="v"
+            latin:popupCharacters="@string/alternates_for_v" />
+        <Key
+            latin:keyLabel="b" />
+        <Key
+            latin:keyLabel="n"
+            latin:popupCharacters="@string/alternates_for_n" />
+        <Key
+            latin:keyLabel="\'"
+            latin:manualTemporaryUpperCaseCode="58"
+            latin:keyHintIcon="@drawable/key_hint_colon_holo"
+            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+            latin:popupCharacters=":" />
+        <switch>
+            <case
+                latin:mode="email"
+            >
+                <Key
+                    latin:keyLabel="," />
+                <Key
+                    latin:keyLabel="." />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel=","
+                    latin:manualTemporaryUpperCaseCode="33"
+                    latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                    latin:popupCharacters="!" />
+                <Key
+                    latin:keyLabel="."
+                    latin:manualTemporaryUpperCaseCode="63"
+                    latin:keyHintIcon="@drawable/key_hint_question_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                    latin:popupCharacters="\?" />
+            </default>
+        </switch>
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="12.530%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-large/kbd_key_styles.xml b/java/res/xml-large/kbd_key_styles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc06d00fcab7f5e838fec95ee8665adaa73b7f18
--- /dev/null
+++ b/java/res/xml-large/kbd_key_styles.xml
@@ -0,0 +1,183 @@
+<?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"
+>
+    <!-- Functional key styles -->
+    <switch>
+        <case
+            latin:colorScheme="white"
+        >
+            <key-style
+                latin:styleName="functionalKeyStyle"
+                latin:isModifier="true" />
+            <key-style
+                latin:styleName="shiftKeyStyle"
+                latin:code="@integer/key_shift"
+                latin:keyIcon="@drawable/sym_keyboard_shift_holo"
+                latin:shiftedIcon="@drawable/sym_keyboard_shift_locked_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isSticky="true" />
+            <key-style
+                latin:styleName="deleteKeyStyle"
+                latin:code="@integer/key_delete"
+                latin:keyIcon="@drawable/sym_keyboard_delete_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isRepeatable="true" />
+            <key-style
+                latin:styleName="returnKeyStyle"
+                latin:code="@integer/key_return"
+                latin:keyIcon="@drawable/sym_keyboard_return_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="spaceKeyStyle"
+                latin:code="@integer/key_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            <key-style
+                latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
+                latin:code="@integer/key_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            <key-style
+                latin:styleName="smileyKeyStyle"
+                latin:keyLabel=":-)"
+                latin:keyOutputText=":-) "
+                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:popupCharacters="@string/alternates_for_smiley"
+                latin:maxPopupKeyboardColumn="5" />
+            <key-style
+                latin:styleName="settingsKeyStyle"
+                latin:code="@integer/key_settings"
+                latin:keyIcon="@drawable/sym_keyboard_settings_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="micKeyStyle"
+                latin:code="@integer/key_voice"
+                latin:keyIcon="@drawable/sym_keyboard_voice_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
+                latin:parentStyle="functionalKeyStyle" />
+        </case>
+        <case
+            latin:colorScheme="black"
+        >
+            <key-style
+                latin:styleName="functionalKeyStyle" />
+            <key-style
+                latin:styleName="shiftKeyStyle"
+                latin:code="@integer/key_shift"
+                latin:keyIcon="@drawable/sym_bkeyboard_shift"
+                latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isSticky="true" />
+            <key-style
+                latin:styleName="deleteKeyStyle"
+                latin:code="@integer/key_delete"
+                latin:keyIcon="@drawable/sym_bkeyboard_delete"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isRepeatable="true" />
+            <key-style
+                latin:styleName="returnKeyStyle"
+                latin:code="@integer/key_return"
+                latin:keyIcon="@drawable/sym_bkeyboard_return"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="spaceKeyStyle"
+                latin:code="@integer/key_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            <key-style
+                latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
+                latin:code="@integer/key_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            <key-style
+                latin:styleName="smileyKeyStyle"
+                latin:keyLabel=":-)"
+                latin:keyOutputText=":-) "
+                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:popupCharacters="@string/alternates_for_smiley"
+                latin:maxPopupKeyboardColumn="5" />
+            <key-style
+                latin:styleName="settingsKeyStyle"
+                latin:code="@integer/key_settings"
+                latin:keyIcon="@drawable/sym_bkeyboard_settings"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="micKeyStyle"
+                latin:code="@integer/key_voice"
+                latin:keyIcon="@drawable/sym_bkeyboard_mic"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
+                latin:parentStyle="functionalKeyStyle" />
+        </case>
+    </switch>
+    <key-style
+        latin:styleName="tabKeyStyle"
+        latin:code="@integer/key_tab"
+        latin:keyLabel="@string/label_tab_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="toSymbolKeyStyle"
+        latin:code="@integer/key_switch_alpha_symbol"
+        latin:keyLabel="@string/label_to_symbol_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="toAlphaKeyStyle"
+        latin:code="@integer/key_switch_alpha_symbol"
+        latin:keyLabel="@string/label_to_alpha_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="moreKeyStyle"
+        latin:code="@integer/key_shift"
+        latin:keyLabel="@string/label_more_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isSticky="true" />
+    <key-style
+        latin:styleName="comKeyStyle"
+        latin:keyLabel="@string/keylabel_for_popular_domain"
+        latin:keyLabelOption="fontNormal"
+        latin:keyOutputText="@string/keylabel_for_popular_domain"
+        latin:keyHintIcon="@drawable/hint_popup_holo"
+        latin:popupCharacters="@string/alternates_for_popular_domain" />
+    <switch>
+        <case
+            latin:passwordInput="true"
+        >
+            <key-style
+                latin:styleName="nonPasswordSymbolKeyStyle"
+                latin:enabled="false" />
+        </case>
+        <!-- latin:passwordInput="false" -->
+        <default>
+            <key-style
+                latin:styleName="nonPasswordSymbolKeyStyle"
+                latin:enabled="true" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-large/kbd_number.xml b/java/res/xml-large/kbd_number.xml
new file mode 100644
index 0000000000000000000000000000000000000000..012b751159d09542677bcf6c120b81dd3d844263
--- /dev/null
+++ b/java/res/xml-large/kbd_number.xml
@@ -0,0 +1,229 @@
+<?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:keyboardHeight="@dimen/keyboardHeight"
+    latin:maxKeyboardHeight="50%p"
+    latin:rowHeight="25%p"
+    latin:keyWidth="11.949%p"
+    latin:horizontalGap="@dimen/key_horizontal_gap"
+    latin:verticalGap="@dimen/key_bottom_gap"
+    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <include
+        latin:keyboardLayout="@xml/kbd_numkey_styles" />
+    <switch>
+        <case
+            latin:passwordInput="true"
+        >
+            <!-- This row is intentionally not marked as a top row -->
+            <Row>
+                <Spacer
+                    latin:horizontalGap="32.076%p" />
+                <Key
+                    latin:keyStyle="num1KeyStyle" />
+                <Key
+                    latin:keyStyle="num2KeyStyle" />
+                <Key
+                    latin:keyStyle="num3KeyStyle" />
+                <Spacer
+                    latin:horizontalGap="22.272%p" />
+                <Key
+                    latin:keyStyle="deleteKeyStyle"
+                    latin:keyWidth="9.804%p"
+                    latin:keyEdgeFlags="right" />
+            </Row>
+            <Row>
+                <Spacer
+                    latin:horizontalGap="32.076%p" />
+                <Key
+                    latin:keyStyle="num4KeyStyle" />
+                <Key
+                    latin:keyStyle="num5KeyStyle" />
+                <Key
+                    latin:keyStyle="num6KeyStyle" />
+                <Spacer
+                    latin:horizontalGap="17.371%p" />
+                <Key
+                    latin:keyStyle="returnKeyStyle"
+                    latin:keyWidth="14.706%p"
+                    latin:keyEdgeFlags="right" />
+            </Row>
+            <Row>
+                <Spacer
+                    latin:horizontalGap="32.076%p" />
+                <Key
+                    latin:keyStyle="num7KeyStyle" />
+                <Key
+                    latin:keyStyle="num8KeyStyle" />
+                <Key
+                    latin:keyStyle="num9KeyStyle" />
+                <!-- There is an empty area below the "Enter" key and right of the "9" key. To
+                     ignore the touch event on the area, "9" is intentionally not marked as a right
+                     edge key. -->
+            </Row>
+            <!-- This row is intentionally not marked as a bottom row -->
+            <Row>
+                <Spacer
+                    latin:horizontalGap="44.026%p" />
+                <Key
+                    latin:keyStyle="num0KeyStyle" />
+                <!-- There is an empty area below the "Enter" key and right of the "#" key. To
+                     ignore the touch event on the area, "#" is intentionally not marked as a right
+                     edge key. -->
+            </Row>
+        </case>
+        <!-- latin:passwordInput="false" -->
+        <default>
+            <!-- This row is intentionally not marked as a top row -->
+            <Row>
+                <Key
+                    latin:keyStyle="tabKeyStyle"
+                    latin:keyLabelOption="alignLeft"
+                    latin:keyEdgeFlags="left" />
+                <Spacer
+                    latin:horizontalGap="4.458%p" />
+                <Key
+                    latin:keyLabel="-"
+                    latin:keyWidth="8.042%p" />
+                <Key
+                    latin:keyLabel="+"
+                    latin:keyWidth="8.042%p" />
+                <Key
+                    latin:keyLabel="."
+                    latin:keyWidth="8.042%p" />
+                <Spacer
+                    latin:horizontalGap="4.458%p" />
+                <Key
+                    latin:keyLabel="1" />
+                <Key
+                    latin:keyLabel="2" />
+                <Key
+                    latin:keyLabel="3" />
+                <Spacer
+                    latin:horizontalGap="9.360%p" />
+                <Key
+                    latin:keyStyle="deleteKeyStyle"
+                    latin:keyWidth="9.804%p"
+                    latin:keyEdgeFlags="right" />
+            </Row>
+            <Row>
+                <Spacer
+                    latin:horizontalGap="16.406%p" />
+                <Key
+                    latin:keyLabel="*"
+                    latin:keyWidth="8.042%p" />
+                <Key
+                    latin:keyLabel="/"
+                    latin:keyWidth="8.042%p" />
+                <Key
+                    latin:keyLabel=","
+                    latin:keyWidth="8.042%p" />
+                <Spacer
+                    latin:horizontalGap="4.458%p" />
+                <Key
+                    latin:keyLabel="4" />
+                <Key
+                    latin:keyLabel="5" />
+                <Key
+                    latin:keyLabel="6" />
+                <Spacer
+                    latin:horizontalGap="4.458%p" />
+                <Key
+                    latin:keyStyle="returnKeyStyle"
+                    latin:keyWidth="14.706%p"
+                    latin:keyEdgeFlags="right" />
+            </Row>
+            <Row>
+                <!-- There is an empty area below the "More" key and left of the "(" key. To
+                     ignore the touch event on the area, "(" is intentionally not marked as a left
+                     edge key. -->
+                <Spacer
+                    latin:horizontalGap="16.406%p" />
+                <Key
+                    latin:keyLabel="("
+                    latin:keyWidth="8.042%p" />
+                <Key
+                    latin:keyLabel=")"
+                    latin:keyWidth="8.042%p" />
+                <Key
+                    latin:keyLabel="="
+                    latin:keyWidth="8.042%p" />
+                <Spacer
+                    latin:horizontalGap="4.458%p" />
+                <Key
+                    latin:keyLabel="7" />
+                <Key
+                    latin:keyLabel="8" />
+                <Key
+                    latin:keyLabel="9" />
+                <!-- There is an empty area below the "Enter" key and right of the "9" key. To
+                     ignore the touch event on the area, "9" is intentionally not marked as a right
+                     edge key. -->
+            </Row>
+            <!-- This row is intentionally not marked as a bottom row -->
+            <Row>
+                <!-- There is an empty area below the "More" key and left of the "space" key. To
+                     ignore the touch event on the area, "space" is intentionally not marked as a
+                     left edge key. -->
+                <Spacer
+                    latin:horizontalGap="8.362%p" />
+                <switch>
+                    <case latin:hasSettingsKey="true">
+                        <Key
+                            latin:keyStyle="settingsKeyStyle"
+                            latin:keyWidth="8.042%p" />
+                    </case>
+                    <default>
+                        <Spacer
+                            latin:horizontalGap="8.042%p" />
+                    </default>
+                </switch>
+                <Key
+                    latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+                    latin:keyWidth="24.127%p" />
+                <Spacer
+                    latin:horizontalGap="4.458%p" />
+                <Key
+                    latin:keyLabel="*" />
+                <Key
+                    latin:keyLabel="0" />
+                <Key
+                    latin:keyLabel="#" />
+                <switch>
+                    <case
+                        latin:voiceKeyEnabled="true"
+                    >
+                        <Key
+                            latin:keyStyle="micKeyStyle"
+                            latin:keyWidth="8.042%p" />
+                    </case>
+                </switch>
+                <!-- There is an empty area below the "Enter" key and right of the "#" key. To
+                     ignore the touch event on the area, "#" is intentionally not marked as a right
+                     edge key. -->
+            </Row>
+        </default>
+    </switch>
+</Keyboard>
diff --git a/java/res/xml-large/kbd_numkey_styles.xml b/java/res/xml-large/kbd_numkey_styles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e27db94c798698b3c029c2e44b1c3778ac27ee0c
--- /dev/null
+++ b/java/res/xml-large/kbd_numkey_styles.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:colorScheme="white"
+        >
+            <key-style
+                latin:styleName="num0KeyStyle"
+                latin:code="48"
+                latin:keyIcon="@drawable/sym_keyboard_num0_holo" />
+            <key-style
+                latin:styleName="num1KeyStyle"
+                latin:code="49"
+                latin:keyIcon="@drawable/sym_keyboard_num1_holo" />
+            <key-style
+                latin:styleName="num2KeyStyle"
+                latin:code="50"
+                latin:keyIcon="@drawable/sym_keyboard_num2_holo" />
+            <key-style
+                latin:styleName="num3KeyStyle"
+                latin:code="51"
+                latin:keyIcon="@drawable/sym_keyboard_num3_holo" />
+            <key-style
+                latin:styleName="num4KeyStyle"
+                latin:code="52"
+                latin:keyIcon="@drawable/sym_keyboard_num4_holo" />
+            <key-style
+                latin:styleName="num5KeyStyle"
+                latin:code="53"
+                latin:keyIcon="@drawable/sym_keyboard_num5_holo" />
+            <key-style
+                latin:styleName="num6KeyStyle"
+                latin:code="54"
+                latin:keyIcon="@drawable/sym_keyboard_num6_holo" />
+            <key-style
+                latin:styleName="num7KeyStyle"
+                latin:code="55"
+                latin:keyIcon="@drawable/sym_keyboard_num7_holo" />
+            <key-style
+                latin:styleName="num8KeyStyle"
+                latin:code="56"
+                latin:keyIcon="@drawable/sym_keyboard_num8_holo" />
+            <key-style
+                latin:styleName="num9KeyStyle"
+                latin:code="57"
+                latin:keyIcon="@drawable/sym_keyboard_num9_holo" />
+            <key-style
+                latin:styleName="numStarKeyStyle"
+                latin:code="42"
+                latin:keyIcon="@drawable/sym_keyboard_numbstar_holo" />
+            <key-style
+                latin:styleName="numPoundKeyStyle"
+                latin:code="35"
+                latin:keyIcon="@drawable/sym_keyboard_numbpound_holo" />
+            <key-style
+                latin:styleName="numAltKeyStyle"
+                latin:code="@integer/key_switch_alpha_symbol"
+                latin:keyIcon="@drawable/sym_keyboard_numalt"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+            <key-style
+                latin:styleName="numSpaceKeyStyle"
+                latin:code="@integer/key_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+        </case>
+        <case
+            latin:colorScheme="black"
+        >
+            <key-style
+                latin:styleName="num0KeyStyle"
+                latin:code="48"
+                latin:keyIcon="@drawable/sym_bkeyboard_num0" />
+            <key-style
+                latin:styleName="num1KeyStyle"
+                latin:code="49"
+                latin:keyIcon="@drawable/sym_bkeyboard_num1" />
+            <key-style
+                latin:styleName="num2KeyStyle"
+                latin:code="50"
+                latin:keyIcon="@drawable/sym_bkeyboard_num2" />
+            <key-style
+                latin:styleName="num3KeyStyle"
+                latin:code="51"
+                latin:keyIcon="@drawable/sym_bkeyboard_num3" />
+            <key-style
+                latin:styleName="num4KeyStyle"
+                latin:code="52"
+                latin:keyIcon="@drawable/sym_bkeyboard_num4" />
+            <key-style
+                latin:styleName="num5KeyStyle"
+                latin:code="53"
+                latin:keyIcon="@drawable/sym_bkeyboard_num5" />
+            <key-style
+                latin:styleName="num6KeyStyle"
+                latin:code="54"
+                latin:keyIcon="@drawable/sym_bkeyboard_num6" />
+            <key-style
+                latin:styleName="num7KeyStyle"
+                latin:code="55"
+                latin:keyIcon="@drawable/sym_bkeyboard_num7" />
+            <key-style
+                latin:styleName="num8KeyStyle"
+                latin:code="56"
+                latin:keyIcon="@drawable/sym_bkeyboard_num8" />
+            <key-style
+                latin:styleName="num9KeyStyle"
+                latin:code="57"
+                latin:keyIcon="@drawable/sym_bkeyboard_num9" />
+            <key-style
+                latin:styleName="numStarKeyStyle"
+                latin:code="42"
+                latin:keyIcon="@drawable/sym_bkeyboard_numstar" />
+            <key-style
+                latin:styleName="numPoundKeyStyle"
+                latin:code="35"
+                latin:keyIcon="@drawable/sym_bkeyboard_numpound" />
+            <key-style
+                latin:styleName="numAltKeyStyle"
+                latin:code="@integer/key_switch_alpha_symbol"
+                latin:keyIcon="@drawable/sym_bkeyboard_numalt"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+            <key-style
+                latin:styleName="numSpaceKeyStyle"
+                latin:code="@integer/key_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+        </case>
+    </switch>
+</merge>
diff --git a/java/res/xml-large/kbd_phone.xml b/java/res/xml-large/kbd_phone.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9122176a96343a0bae8cc263aa6fee9de6ef9e96
--- /dev/null
+++ b/java/res/xml-large/kbd_phone.xml
@@ -0,0 +1,166 @@
+<?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:keyboardHeight="@dimen/keyboardHeight"
+    latin:maxKeyboardHeight="50%p"
+    latin:rowHeight="25%p"
+    latin:keyWidth="11.949%p"
+    latin:horizontalGap="@dimen/key_horizontal_gap"
+    latin:verticalGap="@dimen/key_bottom_gap"
+    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <include
+        latin:keyboardLayout="@xml/kbd_numkey_styles" />
+    <!-- This row is intentionally not marked as a top row -->
+    <Row>
+        <Key
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyEdgeFlags="left" />
+        <!-- To match one character label size with "Tab", I placed spaces around the char '-'
+             and '+'. -->
+        <Spacer
+            latin:horizontalGap="8.470%p" />
+        <Key
+            latin:code="45"
+            latin:keyLabel=" - "
+            latin:keyWidth="8.042%p" />
+        <Key
+            latin:code="43"
+            latin:keyLabel=" + "
+            latin:keyWidth="8.042%p" />
+        <Spacer
+            latin:horizontalGap="8.479%p" />
+        <Key
+            latin:keyStyle="num1KeyStyle" />
+        <Key
+            latin:keyStyle="num2KeyStyle" />
+        <Key
+            latin:keyStyle="num3KeyStyle" />
+        <Spacer
+            latin:horizontalGap="9.360%p" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.804%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row>
+        <Key
+            latin:keyStyle="moreKeyStyle"
+            latin:keyEdgeFlags="left" />
+        <!-- To match one character label size with "More", I placed spaces around the char ','
+             and '.'. -->
+        <Spacer
+            latin:horizontalGap="8.470%p" />
+        <Key
+            latin:code="44"
+            latin:keyLabel=" , "
+            latin:keyWidth="8.042%p" />
+        <Key
+            latin:code="46"
+            latin:keyLabel=" . "
+            latin:keyWidth="8.042%p" />
+        <Spacer
+            latin:horizontalGap="8.479%p" />
+        <Key
+            latin:keyStyle="num4KeyStyle" />
+        <Key
+            latin:keyStyle="num5KeyStyle" />
+        <Key
+            latin:keyStyle="num6KeyStyle" />
+        <Spacer
+            latin:horizontalGap="4.458%p" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="14.706%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row>
+        <!-- To match one character label size with "More", I placed spaces around the char '('
+             and ')'. -->
+        <!-- There is an empty area bellow the "More" key and left of the "(" key.  To ignore
+             the touch event on the area, "(" is intentionally not marked as a left edge key. -->
+        <Spacer
+            latin:horizontalGap="20.427%p" />
+        <Key
+            latin:code="40"
+            latin:keyLabel=" ( "
+            latin:keyWidth="8.042%p" />
+        <Key
+            latin:code="41"
+            latin:keyLabel=" ) "
+            latin:keyWidth="8.042%p" />
+        <Spacer
+            latin:horizontalGap="8.479%p" />
+        <Key
+            latin:keyStyle="num7KeyStyle" />
+        <Key
+            latin:keyStyle="num8KeyStyle" />
+        <Key
+            latin:keyStyle="num9KeyStyle" />
+        <!-- There is an empty area bellow the "Enter" key and right of the "9" key.  To ignore
+             the touch event on the area, "9" is intentionally not marked as a right edge key. -->
+        </Row>
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row>
+        <!-- There is an empty area bellow the "More" key and left of the "space" key.  To ignore
+             the touch event on the area, "space" is intentionally not marked as a left edge key. -->
+        <Spacer
+            latin:horizontalGap="12.340%p" />
+        <switch>
+            <case latin:hasSettingsKey="true">
+                <Key
+                    latin:keyStyle="settingsKeyStyle"
+                    latin:keyWidth="8.042%p" />
+            </case>
+            <default>
+                <Spacer
+                    latin:horizontalGap="8.042%p" />
+            </default>
+        </switch>
+        <Key
+            latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+            latin:keyWidth="16.084%p" />
+        <Spacer
+            latin:horizontalGap="8.479%p" />
+        <Key
+            latin:keyStyle="numStarKeyStyle" />
+        <Key
+            latin:keyStyle="num0KeyStyle" />
+        <Key
+            latin:keyStyle="numPoundKeyStyle" />
+        <switch>
+            <case
+                latin:voiceKeyEnabled="true"
+            >
+                <Key
+                    latin:keyStyle="micKeyStyle"
+                    latin:keyWidth="8.042%p" />
+            </case>
+        </switch>
+        <!-- There is an empty area bellow the "Enter" key and right of the "#" key.  To ignore
+             the touch event on the area, "#" is intentionally not marked as a right edge key. -->
+    </Row>
+</Keyboard>
diff --git a/java/res/xml-large/kbd_phone_symbols.xml b/java/res/xml-large/kbd_phone_symbols.xml
new file mode 100644
index 0000000000000000000000000000000000000000..055c148674631a239d94f34e734213fcd7e3b2bd
--- /dev/null
+++ b/java/res/xml-large/kbd_phone_symbols.xml
@@ -0,0 +1,178 @@
+<?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:keyboardHeight="@dimen/keyboardHeight"
+    latin:maxKeyboardHeight="50%p"
+    latin:rowHeight="25%p"
+    latin:keyWidth="11.949%p"
+    latin:horizontalGap="@dimen/key_horizontal_gap"
+    latin:verticalGap="@dimen/key_bottom_gap"
+    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <include
+        latin:keyboardLayout="@xml/kbd_numkey_styles" />
+    <!-- This row is intentionally not marked as a top row -->
+    <Row>
+        <Key
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyEdgeFlags="left" />
+        <Spacer
+            latin:horizontalGap="4.458%p" />
+        <Key
+            latin:code="45"
+            latin:keyLabel=" - "
+            latin:keyWidth="8.042%p" />
+        <Key
+            latin:code="43"
+            latin:keyLabel=" + "
+            latin:keyWidth="8.042%p" />
+        <Key
+            latin:code="44"
+            latin:keyLabel="@string/label_pause_key"
+            latin:keyWidth="8.042%p" />
+        <!-- To match one character label size with "Tab" and "Pause, I placed spaces around the
+             char '-' and '+'. -->
+        <Spacer
+            latin:horizontalGap="4.458%p" />
+        <Key
+            latin:keyStyle="num1KeyStyle" />
+        <Key
+            latin:keyStyle="num2KeyStyle" />
+        <Key
+            latin:keyStyle="num3KeyStyle" />
+        <Spacer
+            latin:horizontalGap="9.360%p" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.804%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row>
+        <Key
+            latin:keyStyle="moreKeyStyle"
+            latin:keyEdgeFlags="left" />
+        <Spacer
+            latin:horizontalGap="4.458%p" />
+        <Key
+            latin:code="44"
+            latin:keyLabel=" , "
+            latin:keyWidth="8.042%p" />
+        <Key
+            latin:code="46"
+            latin:keyLabel=" . "
+            latin:keyWidth="8.042%p" />
+        <Key
+            latin:code="59"
+            latin:keyLabel="@string/label_wait_key"
+            latin:keyWidth="8.042%p" />
+        <!-- To match one character label size with "More" and "Wait", I placed spaces around the
+             char ',' and '.'. -->
+        <Spacer
+            latin:horizontalGap="4.458%p" />
+        <Key
+            latin:keyStyle="num4KeyStyle" />
+        <Key
+            latin:keyStyle="num5KeyStyle" />
+        <Key
+            latin:keyStyle="num6KeyStyle" />
+        <Spacer
+            latin:horizontalGap="4.458%p" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="14.706%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row>
+        <!-- To match one character label size with "More" and etc., I placed spaces around the
+             char 'N', '(' and ')'. -->
+        <!-- There is an empty area bellow the "More" key and left of the "(" key.  To ignore
+             the touch event on the area, "(" is intentionally not marked as a left edge key. -->
+        <Spacer
+            latin:horizontalGap="16.406%p" />
+        <Key
+            latin:code="40"
+            latin:keyLabel=" ( "
+            latin:keyWidth="8.042%p" />
+        <Key
+            latin:code="41"
+            latin:keyLabel=" ) "
+            latin:keyWidth="8.042%p" />
+        <Key
+            latin:code="78"
+            latin:keyLabel=" N "
+            latin:keyWidth="8.042%p" />
+        <Spacer
+            latin:horizontalGap="4.458%p" />
+        <Key
+            latin:keyStyle="num7KeyStyle" />
+        <Key
+            latin:keyStyle="num8KeyStyle" />
+        <Key
+            latin:keyStyle="num9KeyStyle" />
+        <!-- There is an empty area bellow the "Enter" key and right of the "9" key.  To ignore
+             the touch event on the area, "9" is intentionally not marked as a right edge key. -->
+    </Row>
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row>
+        <!-- There is an empty area bellow the "More" key and left of the "space" key.  To ignore
+             the touch event on the area, "space" is intentionally not marked as a left edge key. -->
+        <Spacer
+            latin:horizontalGap="8.362%p" />
+        <switch>
+            <case latin:hasSettingsKey="true">
+                <Key
+                    latin:keyStyle="settingsKeyStyle"
+                    latin:keyWidth="8.042%p" />
+            </case>
+            <default>
+                <Spacer
+                    latin:horizontalGap="8.042%p" />
+            </default>
+        </switch>
+        <Key
+            latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+            latin:keyWidth="24.127%p" />
+        <Spacer
+            latin:horizontalGap="4.458%p" />
+        <Key
+            latin:keyStyle="numStarKeyStyle" />
+        <Key
+            latin:keyStyle="num0KeyStyle" />
+        <Key
+            latin:keyStyle="numPoundKeyStyle" />
+        <switch>
+            <case
+                latin:voiceKeyEnabled="true"
+            >
+                <Key
+                    latin:keyStyle="micKeyStyle"
+                    latin:keyWidth="8.042%p" />
+            </case>
+        </switch>
+        <!-- There is an empty area bellow the "Enter" key and right of the "#" key.  To ignore
+             the touch event on the area, "#" is intentionally not marked as a right edge key. -->
+    </Row>
+</Keyboard>
diff --git a/java/res/xml-large/kbd_popup_template.xml b/java/res/xml-large/kbd_popup_template.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d39d1a3a40cc8b5f83965eca31859a2056abcf1
--- /dev/null
+++ b/java/res/xml-large/kbd_popup_template.xml
@@ -0,0 +1,27 @@
+<?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="5.0%p"
+    latin:horizontalGap="0px"
+    latin:verticalGap="0px"
+    latin:rowHeight="@dimen/popup_key_height"
+    >
+</Keyboard>
diff --git a/java/res/xml-large/kbd_qwerty.xml b/java/res/xml-large/kbd_qwerty.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1c8d51ffe5e14bd66f243ea91fcd6b9b1c50d46e
--- /dev/null
+++ b/java/res/xml-large/kbd_qwerty.xml
@@ -0,0 +1,33 @@
+<?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:keyboardHeight="@dimen/keyboardHeight"
+    latin:maxKeyboardHeight="50%p"
+    latin:rowHeight="25%p"
+    latin:horizontalGap="@dimen/key_horizontal_gap"
+    latin:verticalGap="@dimen/key_bottom_gap"
+    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+</Keyboard>
diff --git a/java/res/xml-large/kbd_qwerty_row1.xml b/java/res/xml-large/kbd_qwerty_row1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f5135591c3deb53b627f47243619b29ea309a8d6
--- /dev/null
+++ b/java/res/xml-large/kbd_qwerty_row1.xml
@@ -0,0 +1,68 @@
+<?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"
+>
+    <!-- This row is intentionally not marked as a top row -->
+    <Row
+        latin:keyWidth="8.272%p"
+    >
+        <Key
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="q"
+            latin:popupCharacters="@string/alternates_for_q" />
+        <Key
+            latin:keyLabel="w"
+            latin:popupCharacters="@string/alternates_for_w" />
+        <Key
+            latin:keyLabel="e"
+            latin:popupCharacters="@string/alternates_for_e" />
+        <Key
+            latin:keyLabel="r"
+            latin:popupCharacters="@string/alternates_for_r" />
+        <Key
+            latin:keyLabel="t"
+            latin:popupCharacters="@string/alternates_for_t" />
+        <Key
+            latin:keyLabel="y"
+            latin:popupCharacters="@string/alternates_for_y" />
+        <Key
+            latin:keyLabel="u"
+            latin:popupCharacters="@string/alternates_for_u" />
+        <Key
+            latin:keyLabel="i"
+            latin:popupCharacters="@string/alternates_for_i" />
+        <Key
+            latin:keyLabel="o"
+            latin:popupCharacters="@string/alternates_for_o" />
+        <Key
+            latin:keyLabel="p"
+            latin:popupCharacters="@string/alternates_for_p" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+</merge>
diff --git a/java/res/xml-large/kbd_qwerty_row2.xml b/java/res/xml-large/kbd_qwerty_row2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..02bd0a6c99289cd7c6e419691d94b4b62f6f7114
--- /dev/null
+++ b/java/res/xml-large/kbd_qwerty_row2.xml
@@ -0,0 +1,61 @@
+<?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="8.157%p"
+    >
+        <Key
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="11.167%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="a"
+            latin:popupCharacters="@string/alternates_for_a" />
+        <Key
+            latin:keyLabel="s"
+            latin:popupCharacters="@string/alternates_for_s" />
+        <Key
+            latin:keyLabel="d"
+            latin:popupCharacters="@string/alternates_for_d" />
+        <Key
+            latin:keyLabel="f" />
+        <Key
+            latin:keyLabel="g"
+            latin:popupCharacters="@string/alternates_for_g" />
+        <Key
+            latin:keyLabel="h" />
+        <Key
+            latin:keyLabel="j" />
+        <Key
+            latin:keyLabel="k"
+            latin:popupCharacters="@string/alternates_for_k" />
+        <Key
+            latin:keyLabel="l"
+            latin:popupCharacters="@string/alternates_for_l" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="15.750%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+</merge>
diff --git a/java/res/xml-large/kbd_qwerty_row3.xml b/java/res/xml-large/kbd_qwerty_row3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b7e9bcff9a41a820126d1b2597db2c80722a77ef
--- /dev/null
+++ b/java/res/xml-large/kbd_qwerty_row3.xml
@@ -0,0 +1,78 @@
+<?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="8.042%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="15.192%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="z"
+            latin:popupCharacters="@string/alternates_for_z" />
+        <Key
+            latin:keyLabel="x" />
+        <Key
+            latin:keyLabel="c"
+            latin:popupCharacters="@string/alternates_for_c" />
+        <Key
+            latin:keyLabel="v"
+            latin:popupCharacters="@string/alternates_for_v" />
+        <Key
+            latin:keyLabel="b" />
+        <Key
+            latin:keyLabel="n"
+            latin:popupCharacters="@string/alternates_for_n" />
+        <Key
+            latin:keyLabel="m" />
+        <switch>
+            <case
+                latin:mode="email"
+            >
+                <Key
+                    latin:keyLabel="," />
+                <Key
+                    latin:keyLabel="." />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel=","
+                    latin:manualTemporaryUpperCaseCode="33"
+                    latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                    latin:popupCharacters="!" />
+                <Key
+                    latin:keyLabel="."
+                    latin:manualTemporaryUpperCaseCode="63"
+                    latin:keyHintIcon="@drawable/key_hint_question_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                    latin:popupCharacters="\?" />
+            </default>
+        </switch>
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="12.530%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+</merge>
diff --git a/java/res/xml-large/kbd_qwerty_row4.xml b/java/res/xml-large/kbd_qwerty_row4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f36b61fc744e85e81d973cf8b606e60b63fd67bb
--- /dev/null
+++ b/java/res/xml-large/kbd_qwerty_row4.xml
@@ -0,0 +1,258 @@
+<?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"
+>
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row
+        latin:keyWidth="8.042%p"
+    >
+        <Spacer
+            latin:horizontalGap="8.362%p" />
+        <switch>
+            <case latin:hasSettingsKey="true">
+                <Key
+                    latin:keyStyle="settingsKeyStyle" />
+            </case>
+            <default>
+                <Spacer
+                    latin:horizontalGap="8.042%p" />
+            </default>
+        </switch>
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <switch>
+                    <!-- TODO: implement logical OR for <case> attribute -->
+                    <case
+                        latin:mode="email"
+                    >
+                        <Key
+                            latin:keyStyle="comKeyStyle" />
+                    </case>
+                    <case
+                        latin:mode="url"
+                    >
+                        <Key
+                            latin:keyStyle="comKeyStyle" />
+                    </case>
+                    <case
+                        latin:imeAction="actionSearch"
+                    >
+                        <Key
+                            latin:keyLabel=":"
+                            latin:manualTemporaryUpperCaseCode="43"
+                            latin:keyHintIcon="@drawable/key_hint_plus_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
+                            latin:popupCharacters="+" />
+                    </case>
+                    <default>
+                        <Key
+                            latin:keyStyle="smileyKeyStyle" />
+                    </default>
+                </switch>
+                <switch>
+                    <case
+                        latin:mode="email"
+                    >
+                        <Key
+                            latin:keyLabel="\@" />
+                    </case>
+                    <case
+                        latin:mode="url"
+                    >
+                        <Key
+                            latin:keyLabel="-"
+                            latin:manualTemporaryUpperCaseCode="95"
+                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                            latin:popupCharacters="_" />
+                    </case>
+                    <default>
+                        <Key
+                            latin:keyLabel="/"
+                            latin:manualTemporaryUpperCaseCode="64"
+                            latin:keyHintIcon="@drawable/key_hint_at_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
+                            latin:popupCharacters="\@" />
+                    </default>
+                </switch>
+            </case>
+            <!-- not languageCode="ru" -->
+            <default>
+                <switch>
+                    <case
+                        latin:mode="url"
+                    >
+                        <Key
+                            latin:keyStyle="comKeyStyle"
+                            latin:keyWidth="16.084%p" />
+                    </case>
+                    <default>
+                        <switch>
+                            <case
+                                latin:mode="email"
+                            >
+                                <Key
+                                    latin:keyStyle="comKeyStyle" />
+                            </case>
+                            <case
+                                latin:imeAction="actionSearch"
+                            >
+                                <Key
+                                    latin:keyLabel=":"
+                                    latin:manualTemporaryUpperCaseCode="43"
+                                    latin:keyHintIcon="@drawable/key_hint_plus_holo"
+                                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
+                                    latin:popupCharacters="+" />
+                            </case>
+                            <default>
+                                <Key
+                                    latin:keyStyle="smileyKeyStyle" />
+                            </default>
+                        </switch>
+                        <switch>
+                            <case
+                                latin:mode="email"
+                            >
+                                <Key
+                                    latin:keyLabel="\@" />
+                            </case>
+                            <default>
+                                <Key
+                                    latin:keyLabel="/"
+                                    latin:manualTemporaryUpperCaseCode="64"
+                                    latin:keyHintIcon="@drawable/key_hint_at_holo"
+                                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
+                                    latin:popupCharacters="\@" />
+                            </default>
+                        </switch>
+                    </default>
+                </switch>
+            </default>
+        </switch>
+        <Key
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="37.454%p" />
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <switch>
+                    <case
+                        latin:mode="email"
+                    >
+                        <Key
+                            latin:keyLabel="-" />
+                    </case>
+                    <case
+                        latin:mode="url"
+                    >
+                        <Key
+                            latin:keyLabel="/"
+                            latin:manualTemporaryUpperCaseCode="58"
+                            latin:keyHintIcon="@drawable/key_hint_colon_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+                            latin:popupCharacters=":" />
+                    </case>
+                    <default>
+                        <Key
+                            latin:keyLabel="\?"
+                            latin:manualTemporaryUpperCaseCode="95"
+                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                            latin:popupCharacters="_" />
+                    </default>
+                </switch>
+                <switch>
+                    <case
+                        latin:mode="email"
+                    >
+                        <Key
+                            latin:keyLabel="_" />
+                    </case>
+                    <default>
+                        <Key
+                            latin:keyLabel="!"
+                            latin:manualTemporaryUpperCaseCode="39"
+                            latin:keyHintIcon="@drawable/key_hint_quote_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+                            latin:popupCharacters="\'" />
+                    </default>
+                </switch>
+            </case>
+            <!-- not languageCode="ru" -->
+            <default>
+                <switch>
+                    <case
+                        latin:mode="email"
+                    >
+                        <Key
+                            latin:keyLabel="-" />
+                    </case>
+                    <case
+                        latin:mode="url"
+                    >
+                        <Key
+                            latin:keyLabel="/"
+                            latin:manualTemporaryUpperCaseCode="58"
+                            latin:keyHintIcon="@drawable/key_hint_colon_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+                            latin:popupCharacters=":" />
+                    </case>
+                    <default>
+                        <Key
+                            latin:keyLabel="\'"
+                            latin:manualTemporaryUpperCaseCode="34"
+                            latin:keyHintIcon="@drawable/key_hint_quote_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+                            latin:popupCharacters="&quot;" />
+                    </default>
+                </switch>
+                <switch>
+                    <case
+                        latin:mode="email"
+                    >
+                        <Key
+                            latin:keyLabel="_" />
+                    </case>
+                    <default>
+                        <Key
+                            latin:keyLabel="-"
+                            latin:manualTemporaryUpperCaseCode="95"
+                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                            latin:popupCharacters="_" />
+                    </default>
+                </switch>
+            </default>
+        </switch>
+        <switch>
+            <case
+                latin:voiceKeyEnabled="true"
+            >
+                <Key
+                    latin:keyStyle="micKeyStyle" />
+            </case>
+        </switch>
+    </Row>
+</merge>
diff --git a/java/res/xml-large/kbd_qwerty_rows.xml b/java/res/xml-large/kbd_qwerty_rows.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6237712f6473f95965417ee9bb0cb6c14bbbe99c
--- /dev/null
+++ b/java/res/xml-large/kbd_qwerty_rows.xml
@@ -0,0 +1,34 @@
+<?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"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row1" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row2" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row3" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-large/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-large/kbd_qwerty_rows_scandinavia.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fb2034fb75735743d98ee7e2297106ec8c1e772e
--- /dev/null
+++ b/java/res/xml-large/kbd_qwerty_rows_scandinavia.xml
@@ -0,0 +1,118 @@
+<?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"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <Row
+        latin:keyWidth="7.520%p"
+    >
+        <Key
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="q"
+            latin:popupCharacters="@string/alternates_for_q" />
+        <Key
+            latin:keyLabel="w"
+            latin:popupCharacters="@string/alternates_for_w" />
+        <Key
+            latin:keyLabel="e"
+            latin:popupCharacters="@string/alternates_for_e" />
+        <Key
+            latin:keyLabel="r"
+            latin:popupCharacters="@string/alternates_for_r" />
+        <Key
+            latin:keyLabel="t"
+            latin:popupCharacters="@string/alternates_for_t" />
+        <Key
+            latin:keyLabel="y"
+            latin:popupCharacters="@string/alternates_for_y" />
+        <Key
+            latin:keyLabel="u"
+            latin:popupCharacters="@string/alternates_for_u" />
+        <Key
+            latin:keyLabel="i"
+            latin:popupCharacters="@string/alternates_for_i" />
+        <Key
+            latin:keyLabel="o"
+            latin:popupCharacters="@string/alternates_for_o" />
+        <Key
+            latin:keyLabel="p"
+            latin:popupCharacters="@string/alternates_for_p" />
+        <Key
+            latin:keyLabel="Ã¥" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="7.520%p"
+    >
+        <Key
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="a"
+            latin:popupCharacters="@string/alternates_for_a" />
+        <Key
+            latin:keyLabel="s"
+            latin:popupCharacters="@string/alternates_for_s" />
+        <Key
+            latin:keyLabel="d"
+            latin:popupCharacters="@string/alternates_for_d" />
+        <Key
+            latin:keyLabel="f" />
+        <Key
+            latin:keyLabel="g"
+            latin:popupCharacters="@string/alternates_for_g" />
+        <Key
+            latin:keyLabel="h" />
+        <Key
+            latin:keyLabel="j" />
+        <Key
+            latin:keyLabel="k"
+            latin:popupCharacters="@string/alternates_for_k" />
+        <Key
+            latin:keyLabel="l"
+            latin:popupCharacters="@string/alternates_for_l" />
+        <Key
+            latin:keyLabel="@string/keylabel_for_scandinavia_row2_10"
+            latin:popupCharacters="@string/alternates_for_scandinavia_row2_10" />
+        <Key
+            latin:keyLabel="@string/keylabel_for_scandinavia_row2_11"
+            latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row3" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-large/kbd_qwertz_rows.xml b/java/res/xml-large/kbd_qwertz_rows.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3e99f05113f92e9233daf7cc70f51360fa53ac70
--- /dev/null
+++ b/java/res/xml-large/kbd_qwertz_rows.xml
@@ -0,0 +1,127 @@
+<?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"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <Row
+        latin:keyWidth="8.272%p"
+    >
+        <Key
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="q"
+            latin:popupCharacters="@string/alternates_for_q" />
+        <Key
+            latin:keyLabel="w"
+            latin:popupCharacters="@string/alternates_for_w" />
+        <Key
+            latin:keyLabel="e"
+            latin:popupCharacters="@string/alternates_for_e" />
+        <Key
+            latin:keyLabel="r"
+            latin:popupCharacters="@string/alternates_for_r" />
+        <Key
+            latin:keyLabel="t"
+            latin:popupCharacters="@string/alternates_for_t" />
+        <Key
+            latin:keyLabel="z"
+            latin:popupCharacters="@string/alternates_for_z" />
+        <Key
+            latin:keyLabel="u"
+            latin:popupCharacters="@string/alternates_for_u" />
+        <Key
+            latin:keyLabel="i"
+            latin:popupCharacters="@string/alternates_for_i" />
+        <Key
+            latin:keyLabel="o"
+            latin:popupCharacters="@string/alternates_for_o" />
+        <Key
+            latin:keyLabel="p"
+            latin:popupCharacters="@string/alternates_for_p" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row2" />
+    <Row
+        latin:keyWidth="8.042%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="15.192%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="y"
+            latin:popupCharacters="@string/alternates_for_y" />
+        <Key
+            latin:keyLabel="x" />
+        <Key
+            latin:keyLabel="c"
+            latin:popupCharacters="@string/alternates_for_c" />
+        <Key
+            latin:keyLabel="v"
+            latin:popupCharacters="@string/alternates_for_v" />
+        <Key
+            latin:keyLabel="b" />
+        <Key
+            latin:keyLabel="n"
+            latin:popupCharacters="@string/alternates_for_n" />
+        <Key
+            latin:keyLabel="m" />
+        <switch>
+            <case
+                latin:mode="email"
+            >
+                <Key
+                    latin:keyLabel="," />
+                <Key
+                    latin:keyLabel="." />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel=","
+                    latin:manualTemporaryUpperCaseCode="33"
+                    latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+                    latin:popupCharacters="!" />
+                <Key
+                    latin:keyLabel="."
+                    latin:manualTemporaryUpperCaseCode="63"
+                    latin:keyHintIcon="@drawable/key_hint_question_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+                    latin:popupCharacters="\?" />
+            </default>
+        </switch>
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="12.530%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+   <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-large/kbd_ru_rows.xml b/java/res/xml-large/kbd_ru_rows.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c5cd043712e0763b12997c44ced00cfb587ef683
--- /dev/null
+++ b/java/res/xml-large/kbd_ru_rows.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <!-- This row is intentionally not marked as a top row -->
+    <Row
+        latin:keyWidth="7.520%p"
+    >
+        <Key
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="й"
+            latin:popupCharacters="1" />
+        <Key
+            latin:keyLabel="ц"
+            latin:popupCharacters="2" />
+        <Key
+            latin:keyLabel="у"
+            latin:popupCharacters="3" />
+        <Key
+            latin:keyLabel="к"
+            latin:popupCharacters="4" />
+        <Key
+            latin:keyLabel="е"
+            latin:popupCharacters="@string/alternates_for_cyrillic_e" />
+        <Key
+            latin:keyLabel="н"
+            latin:popupCharacters="6" />
+        <Key
+            latin:keyLabel="г"
+            latin:popupCharacters="7" />
+        <Key
+            latin:keyLabel="ш"
+            latin:popupCharacters="8" />
+        <Key
+            latin:keyLabel="щ"
+            latin:popupCharacters="9" />
+        <Key
+            latin:keyLabel="з"
+            latin:popupCharacters="0" />
+        <Key
+            latin:keyLabel="Ñ…" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="7.520%p"
+    >
+        <Key
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%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="ж" />
+        <Key
+            latin:keyLabel="э" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="7.520%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="12.400%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="ь"
+            latin:popupCharacters="@string/alternates_for_cyrillic_soft_sign" />
+        <Key
+            latin:keyLabel="б" />
+        <Key
+            latin:keyLabel="ÑŽ" />
+        <Key
+            latin:keyLabel="."
+            latin:manualTemporaryUpperCaseCode="44"
+            latin:keyHintIcon="@drawable/key_hint_comma_holo"
+            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_comma_large_holo"
+            latin:popupCharacters="," />
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="12.400%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-large/kbd_sr_rows.xml b/java/res/xml-large/kbd_sr_rows.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ce9e208170498921e44caaa7e8a88f02143342ff
--- /dev/null
+++ b/java/res/xml-large/kbd_sr_rows.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <!-- This row is intentionally not marked as a top row -->
+    <Row
+        latin:keyWidth="7.520%p"
+    >
+        <Key
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="Ñ™"
+            latin:popupCharacters="1" />
+        <Key
+            latin:keyLabel="Ñš"
+            latin:popupCharacters="2" />
+        <Key
+            latin:keyLabel="е"
+            latin:popupCharacters="3" />
+        <Key
+            latin:keyLabel="Ñ€"
+            latin:popupCharacters="4" />
+        <Key
+            latin:keyLabel="Ñ‚"
+            latin:popupCharacters="5" />
+        <Key
+            latin:keyLabel="з"
+            latin:popupCharacters="6" />
+        <Key
+            latin:keyLabel="у"
+            latin:popupCharacters="7" />
+        <Key
+            latin:keyLabel="и"
+            latin:popupCharacters="8" />
+        <Key
+            latin:keyLabel="о"
+            latin:popupCharacters="9" />
+        <Key
+            latin:keyLabel="п"
+            latin:popupCharacters="0" />
+        <Key
+            latin:keyLabel="ш" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="7.520%p"
+    >
+        <Key
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%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="ч" />
+        <Key
+            latin:keyLabel="Ñ›" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="7.520%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="12.400%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=","
+            latin:manualTemporaryUpperCaseCode="33"
+            latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
+            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+            latin:popupCharacters="!" />
+        <Key
+            latin:keyLabel="."
+            latin:manualTemporaryUpperCaseCode="63"
+            latin:keyHintIcon="@drawable/key_hint_question_holo"
+            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+            latin:popupCharacters="\?" />
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="12.400%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-large/kbd_symbols.xml b/java/res/xml-large/kbd_symbols.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1061178e092d61b2e7583a4ad51b0b890b308e2f
--- /dev/null
+++ b/java/res/xml-large/kbd_symbols.xml
@@ -0,0 +1,230 @@
+<?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:keyboardHeight="@dimen/keyboardHeight"
+    latin:maxKeyboardHeight="50%p"
+    latin:rowHeight="25%p"
+    latin:horizontalGap="@dimen/key_horizontal_gap"
+    latin:verticalGap="@dimen/key_bottom_gap"
+    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <include
+        latin:keyboardLayout="@xml/kbd_currency_key_styles" />
+    <!-- This row is intentionally not marked as a top row -->
+    <Row
+        latin:keyWidth="8.272%p"
+    >
+        <Key
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="1"
+            latin:popupCharacters="¹,½,⅓,¼,⅛" />
+        <Key
+            latin:keyLabel="2"
+            latin:popupCharacters="²,⅔" />
+        <Key
+            latin:keyLabel="3"
+            latin:popupCharacters="³,¾,⅜" />
+        <Key
+            latin:keyLabel="4"
+            latin:popupCharacters="⁴" />
+        <Key
+            latin:keyLabel="5"
+            latin:popupCharacters="⅝" />
+        <Key
+            latin:keyLabel="6" />
+        <Key
+            latin:keyLabel="7"
+            latin:popupCharacters="â…ž" />
+        <Key
+            latin:keyLabel="8" />
+        <Key
+            latin:keyLabel="9" />
+        <Key
+            latin:keyLabel="0"
+            latin:popupCharacters="ⁿ,∅" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="8.157%p"
+    >
+        <Key
+            latin:keyStyle="toAlphaKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="11.167%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="#" />
+        <Key
+            latin:keyStyle="currencyKeyStyle" />
+        <Key
+            latin:keyLabel="%"
+            latin:popupCharacters="‰" />
+        <Key
+            latin:keyLabel="&amp;" />
+        <Key
+            latin:keyLabel="*"
+            latin:popupCharacters="†,‡,★" />
+        <Key
+            latin:keyLabel="-"
+            latin:popupCharacters="_,–,—" />
+        <Key
+            latin:keyLabel="+"
+            latin:popupCharacters="±" />
+        <Key
+            latin:keyLabel="("
+            latin:popupCharacters="[,{,&lt;" />
+        <Key
+            latin:keyLabel=")"
+            latin:popupCharacters="],},&gt;" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="15.750%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="8.042%p"
+    >
+        <Key
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="15.192%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="&lt;"
+            latin:popupCharacters="≤,«,‹" />
+        <Key
+            latin:keyLabel="&gt;"
+            latin:popupCharacters="≥,»,›" />
+        <Key
+            latin:keyLabel="="
+            latin:popupCharacters="≠,≈" />
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <Key
+                    latin:keyLabel=":" />
+            </case>
+            <case
+                latin:mode="url"
+            >
+                <Key
+                    latin:keyLabel="\'" />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel=":" />
+            </default>
+        </switch>
+        <Key
+            latin:keyLabel=";" />
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <Key
+                    latin:keyLabel="\'" />
+                <Key
+                    latin:keyLabel="&quot;"
+                    latin:popupCharacters="“,”,«,»,˝" />
+                <Key
+                    latin:keyLabel="." />
+                <Key
+                    latin:keyLabel="," />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel="," />
+                <Key
+                    latin:keyLabel="." />
+                <Key
+                    latin:keyLabel="!"
+                    latin:popupCharacters="¡" />
+                <Key
+                    latin:keyLabel="\?"
+                    latin:popupCharacters="¿" />
+            </default>
+        </switch>
+        <Key
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="12.530%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row
+        latin:keyWidth="8.042%p"
+    >
+        <Spacer
+            latin:horizontalGap="8.362%p" />
+        <switch>
+            <case latin:hasSettingsKey="true">
+                <Key
+                    latin:keyStyle="settingsKeyStyle" />
+            </case>
+            <default>
+                <Spacer
+                    latin:horizontalGap="8.042%p" />
+            </default>
+        </switch>
+        <Key
+            latin:keyLabel="/" />
+        <Key
+            latin:keyLabel="\@" />
+        <Key
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="37.454%p" />
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <Key
+                    latin:keyLabel="_" />
+                <Key
+                    latin:keyLabel="-" />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel="&quot;"
+                    latin:popupCharacters="“,”,«,»,˝" />
+                <Key
+                    latin:keyLabel="_" />
+            </default>
+        </switch>
+        <switch>
+            <case
+                latin:voiceKeyEnabled="true"
+            >
+                <Key
+                    latin:keyStyle="micKeyStyle" />
+            </case>
+        </switch>
+    </Row>
+</Keyboard>
diff --git a/java/res/xml-large/kbd_symbols_shift.xml b/java/res/xml-large/kbd_symbols_shift.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8359b757144112ad915e35be4b9b258f5c37a3f7
--- /dev/null
+++ b/java/res/xml-large/kbd_symbols_shift.xml
@@ -0,0 +1,180 @@
+<?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:keyboardHeight="@dimen/keyboardHeight"
+    latin:maxKeyboardHeight="50%p"
+    latin:rowHeight="25%p"
+    latin:horizontalGap="@dimen/key_horizontal_gap"
+    latin:verticalGap="@dimen/key_bottom_gap"
+    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <!-- This row is intentionally not marked as a top row -->
+    <Row
+        latin:keyWidth="8.272%p"
+    >
+        <Key
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.949%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="~" />
+        <Key
+            latin:keyLabel="`" />
+        <Key
+            latin:keyLabel="|" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="•"
+            latin:popupCharacters="♪,♥,♠,♦,♣" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="√" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="Ï€"
+            latin:popupCharacters="Π" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="÷" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="×" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="§"
+            latin:popupCharacters="¶" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="Δ" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.331%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="8.157%p"
+    >
+        <Key
+            latin:keyStyle="toAlphaKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="11.167%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="£" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="¢" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="€" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="Â¥" />
+        <Key
+            latin:keyLabel="^"
+            latin:popupCharacters="↑,↓,←,→" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="°" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="±"
+            latin:popupCharacters="∞" />
+        <Key
+            latin:keyLabel="{" />
+        <Key
+            latin:keyLabel="}" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="15.750%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="8.042%p"
+    >
+        <Key
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="15.192%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="\\" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="©" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="®" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="â„¢" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="â„…" />
+        <Key
+            latin:keyLabel="[" />
+        <Key
+            latin:keyLabel="]" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="¡" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="¿" />
+        <Key
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="12.530%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row
+        latin:keyWidth="8.042%p"
+    >
+        <Spacer
+            latin:horizontalGap="24.446%p" />
+        <switch>
+            <case latin:hasSettingsKey="true">
+                <Key
+                    latin:keyStyle="settingsKeyStyle" />
+            </case>
+            <default>
+                <Spacer
+                    latin:horizontalGap="8.042%p" />
+            </default>
+        </switch>
+        <Key
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="37.454%p" />
+        <switch>
+            <case
+                latin:voiceKeyEnabled="true"
+            >
+                <Key
+                    latin:keyStyle="micKeyStyle" />
+            </case>
+        </switch>
+    </Row>
+</Keyboard>