diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index 5adb6f33869bd803206a25a373b77b958b6f3fcb..ee30d98bc411b75c083b178cc3a3ef292c950b05 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -31,8 +31,8 @@
     <!-- 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>
+    <dimen name="key_letter_size">25dip</dimen>
+    <dimen name="key_label_text_size">18dip</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>
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml
index fe5aee3cf5dc270825657575ce3c9f6855c54d86..4f6d684c45d42432a180064a509c98afba11058b 100644
--- a/java/res/values-sw600dp/config.xml
+++ b/java/res/values-sw600dp/config.xml
@@ -21,6 +21,7 @@
 <resources>
     <bool name="config_enable_show_settings_key_option">true</bool>
     <bool name="config_enable_show_subtype_settings">false</bool>
+    <!-- TODO: Set this false after layout debug -->
     <bool name="config_enable_show_voice_key_option">true</bool>
     <bool name="config_enable_show_popup_on_keypress_option">false</bool>
     <bool name="config_enable_show_recorrection_option">false</bool>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 47d5e0f36475be72faba82e465a30d84d7f07c9a..3d623d975f9bb6b4c451eecc1c28ec5f040f52b6 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -37,8 +37,8 @@
     <!-- 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_letter_size">24dip</dimen>
+    <dimen name="key_label_text_size">14dip</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>
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index c2b869763c72a80b5c7be9cf4a9419b87b8113ac..6be6a2c300f7525c2a223cfb8154a556081442d7 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -45,7 +45,15 @@
             <key-style
                 latin:styleName="settingsPopupStyle"
                 latin:parentStyle="functionalKeyStyle" />
-        </case>
+            <key-style
+                latin:styleName="webTabKeyStyle"
+                latin:code="@integer/key_tab"
+                latin:keyIcon="@drawable/sym_keyboard_tab_holo"
+                latin:iconPreview="@drawable/sym_keyboard_tab_holo"
+                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
+                latin:parentStyle="functionalKeyStyle" />
+          </case>
         <!-- latin:hasSettingsKey="false" -->
         <default>
             <key-style
@@ -53,6 +61,12 @@
                 latin:keyHintIcon="@drawable/hint_popup_holo"
                 latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
                 latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="webTabKeyStyle"
+                latin:code="@integer/key_tab"
+                latin:keyIcon="@drawable/sym_keyboard_tab_holo"
+                latin:iconPreview="@drawable/sym_keyboard_tab_holo"
+                latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
     <!-- Functional key styles -->
@@ -75,60 +89,39 @@
                 latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
                 latin:parentStyle="functionalKeyStyle"
                 latin:isRepeatable="true" />
-            <switch>
-                <!-- When this qwerty keyboard has no voice key but voice key is enabled, then
-                     symbol keyboard will have mic key. That means we should use "?123mic" key
-                     here. -->
-                <case
-                    latin:voiceKeyEnabled="true"
-                    latin:hasVoiceKey="false"
-                >
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyIcon="@drawable/sym_keyboard_123_mic"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <default>
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyLabel="@string/label_to_symbol_key"
-                        latin:parentStyle="functionalKeyStyle" />
-                </default>
-            </switch>
             <key-style
-                latin:styleName="settingsKeyStyle"
-                latin:code="@integer/key_settings"
-                latin:keyIcon="@drawable/sym_keyboard_settings_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+                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:keyIcon="@drawable/sym_keyboard_space_holo"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                latin:parentStyle="functionalKeyStyle" />
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
             <key-style
-                latin:styleName="tabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_keyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
+                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_voice_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
                 latin:parentStyle="settingsPopupStyle" />
-            <!-- Note: This key style is not for functional tab key. This is used for the tab key
-                 which is laid out as normal letter key. -->
-            <key-style
-                latin:styleName="nonSpecialBackgroundTabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_keyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
         </case>
         <case
             latin:colorScheme="black"
@@ -148,46 +141,32 @@
                 latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
                 latin:parentStyle="functionalKeyStyle"
                 latin:isRepeatable="true" />
-            <switch>
-                <!-- When this qwerty keyboard has no voice key but voice key is enabled, then
-                     symbol keyboard will have mic key. That means we should use "?123mic" key
-                     here. -->
-                <case
-                    latin:voiceKeyEnabled="true"
-                    latin:hasVoiceKey="false"
-                >
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyIcon="@drawable/sym_bkeyboard_123_mic"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <default>
-                    <key-style
-                        latin:styleName="toSymbolKeyStyle"
-                        latin:code="@integer/key_switch_alpha_symbol"
-                        latin:keyLabel="@string/label_to_symbol_key"
-                        latin:parentStyle="functionalKeyStyle" />
-                </default>
-            </switch>
             <key-style
-                latin:styleName="settingsKeyStyle"
-                latin:code="@integer/key_settings"
-                latin:keyIcon="@drawable/sym_bkeyboard_settings"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+                latin:styleName="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:keyIcon="@drawable/sym_bkeyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-                latin:parentStyle="functionalKeyStyle" />
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
             <key-style
-                latin:styleName="tabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_bkeyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
+                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"
@@ -195,123 +174,34 @@
                 latin:keyIcon="@drawable/sym_bkeyboard_mic"
                 latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
                 latin:parentStyle="settingsPopupStyle" />
-            <!-- Note: This key style is not for functional tab key. This is used for the tab key
-                 which is laid out as normal letter key. -->
-            <key-style
-                latin:styleName="nonSpecialBackgroundTabKeyStyle"
-                latin:code="@integer/key_tab"
-                latin:keyIcon="@drawable/sym_bkeyboard_tab"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
-        </case>
-    </switch>
-    <!-- Return key style -->
-    <switch>
-        <case
-            latin:imeAction="actionGo"
-        >
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyLabel="@string/label_go_key"
-                latin:parentStyle="functionalKeyStyle" />
-        </case>
-        <case
-            latin:imeAction="actionNext"
-        >
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyLabel="@string/label_next_key"
-                latin:parentStyle="functionalKeyStyle" />
-        </case>
-        <case
-            latin:imeAction="actionDone"
-        >
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyLabel="@string/label_done_key"
-                latin:parentStyle="functionalKeyStyle" />
-        </case>
-        <case
-            latin:imeAction="actionSend"
-        >
-            <key-style
-                latin:styleName="returnKeyStyle"
-                latin:code="@integer/key_return"
-                latin:keyLabel="@string/label_send_key"
-                latin:parentStyle="functionalKeyStyle" />
-        </case>
-        <case
-            latin:imeAction="actionSearch"
-        >
-            <switch>
-                <case
-                    latin:colorScheme="white"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_keyboard_search"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_search"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <case
-                    latin:colorScheme="black"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_bkeyboard_search"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_search"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-            </switch>
         </case>
-        <default>
-            <switch>
-                <case
-                    latin:colorScheme="white"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_keyboard_return"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-                <case
-                    latin:colorScheme="black"
-                >
-                    <key-style
-                        latin:styleName="returnKeyStyle"
-                        latin:code="@integer/key_return"
-                        latin:keyIcon="@drawable/sym_bkeyboard_return"
-                        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-                        latin:parentStyle="functionalKeyStyle" />
-                </case>
-            </switch>
-        </default>
     </switch>
+    <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="altKeyStyle"
+        latin:styleName="moreKeyStyle"
         latin:code="@integer/key_shift"
-        latin:keyLabel="@string/label_alt_key"
+        latin:keyLabel="@string/label_more_key"
+        latin:keyLabelOption="fontNormal"
         latin:parentStyle="functionalKeyStyle"
         latin:isSticky="true" />
     <key-style
-        latin:styleName="smileyKeyStyle"
-        latin:keyLabel=":-)"
-        latin:keyOutputText=":-) "
+        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_smiley"
-        latin:maxPopupKeyboardColumn="5"
-        latin:parentStyle="functionalKeyStyle" />
+        latin:popupCharacters="@string/alternates_for_popular_domain" />
     <switch>
         <case
             latin:passwordInput="true"
@@ -319,20 +209,12 @@
             <key-style
                 latin:styleName="nonPasswordSymbolKeyStyle"
                 latin:enabled="false" />
-            <key-style
-                latin:styleName="nonPasswordFunctionalKeyStyle"
-                latin:enabled="false"
-                latin:parentStyle="functionalKeyStyle" />
         </case>
         <!-- latin:passwordInput="false" -->
         <default>
             <key-style
                 latin:styleName="nonPasswordSymbolKeyStyle"
                 latin:enabled="true" />
-            <key-style
-                latin:styleName="nonPasswordFunctionalKeyStyle"
-                latin:enabled="true"
-                latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row1.xml b/java/res/xml-sw600dp/kbd_qwerty_row1.xml
index 3084ebaf222ad5a3ec3ef1cecd6ac7df11ac5810..d3d5b25e645593bc1768c870562cb8610be0f79f 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row1.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row1.xml
@@ -22,7 +22,7 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Row
-        latin:keyWidth="10%p"
+        latin:keyWidth="9.1%p"
         latin:rowEdgeFlags="top"
     >
         <Key
@@ -65,7 +65,10 @@
         <Key
             latin:keyLabel="p"
             latin:keyHintIcon="@drawable/key_hint_num0_holo"
-            latin:popupCharacters="@string/alternates_for_p"
+            latin:popupCharacters="@string/alternates_for_p" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.2%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row2.xml b/java/res/xml-sw600dp/kbd_qwerty_row2.xml
index 07dd66f6bfb93ef3de8a3f2e7257242631981449..aecb4f4a9745605487194e270bb699c8406e15e3 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row2.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row2.xml
@@ -22,10 +22,10 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Row
-        latin:keyWidth="10%p"
+        latin:keyWidth="9.0%p"
     >
         <Spacer
-            latin:horizontalGap="5%p" />
+            latin:horizontalGap="4.5%p" />
         <Key
             latin:keyLabel="a"
             latin:popupCharacters="@string/alternates_for_a"
@@ -50,7 +50,10 @@
             latin:popupCharacters="@string/alternates_for_k" />
         <Key
             latin:keyLabel="l"
-            latin:popupCharacters="@string/alternates_for_l"
+            latin:popupCharacters="@string/alternates_for_l" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="14.6%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row3.xml b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
index c8e78d440d7e660376380e8dd8802eca8a7e500d..e50f9079c1ae0b385738cd0c6156708d7006c75d 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
@@ -22,11 +22,11 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Row
-        latin:keyWidth="10%p"
+        latin:keyWidth="8.9%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="15%p"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="z"
@@ -46,9 +46,33 @@
             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="deleteKeyStyle"
-            latin:keyWidth="15%p"
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="10.1%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
index 0b3525b79d7deec2174f9d89d3b469722a526aa2..57367462a8d843ab8efd3a62eecfe85c2b0b843c 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
@@ -21,117 +21,225 @@
 <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="10%p"
-        latin:rowEdgeFlags="bottom"
+        latin:keyWidth="8.9%p"
     >
+        <Key
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="13.0%p"
+            latin:keyEdgeFlags="left" />
         <switch>
             <case
-                latin:hasSettingsKey="false"
+                latin:languageCode="ru"
             >
-                <Key
-                    latin:keyStyle="toSymbolKeyStyle"
-                    latin:keyWidth="20%p"
-                    latin:keyEdgeFlags="left" />
-                <include
-                    latin:keyboardLayout="@xml/kbd_qwerty_f1" />
-                <Key
-                    latin:keyStyle="spaceKeyStyle"
-                    latin:keyWidth="40%p" />
                 <switch>
+                    <!-- TODO: implement logical OR for <case> attribute -->
                     <case
-                        latin:mode="web"
+                        latin:mode="email"
                     >
-                         <Key
-                            latin:keyHintIcon="@drawable/hint_popup_holo"
-                            latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
-                            latin:maxPopupKeyboardColumn="8"
-                            latin:keyStyle="tabKeyStyle" />
+                        <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:keyLabel="."
-                            latin:keyHintIcon="@drawable/hint_popup_holo"
-                            latin:popupCharacters="@string/alternates_for_punctuation"
-                            latin:maxPopupKeyboardColumn="7"
-                            latin:keyStyle="functionalKeyStyle" />
+                            latin:keyStyle="smileyKeyStyle" />
                     </default>
                 </switch>
                 <switch>
                     <case
-                        latin:mode="im"
+                        latin:mode="email"
                     >
                         <Key
-                            latin:keyStyle="smileyKeyStyle"
-                            latin:keyWidth="20%p"
-                            latin:keyEdgeFlags="right" />
+                            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:keyStyle="returnKeyStyle"
-                            latin:keyWidth="20%p"
-                            latin:keyEdgeFlags="right" />
+                            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="17.8%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="38.5%p" />
+        <switch>
             <case
-                latin:hasSettingsKey="true"
+                latin:languageCode="ru"
             >
-                <Key
-                    latin:keyStyle="toSymbolKeyStyle"
-                    latin:keyWidth="15%p"
-                    latin:keyEdgeFlags="left" />
-                <Key
-                    latin:keyStyle="settingsKeyStyle" />
-                <include
-                    latin:keyboardLayout="@xml/kbd_qwerty_f1" />
                 <switch>
                     <case
-                        latin:mode="web"
+                        latin:mode="email"
                     >
                         <Key
-                            latin:keyStyle="spaceKeyStyle"
-                            latin:keyWidth="30%p" />
+                            latin:keyLabel="-" />
+                    </case>
+                    <case
+                        latin:mode="url"
+                    >
                         <Key
-                            latin:keyStyle="tabKeyStyle" />
+                            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:keyStyle="spaceKeyStyle"
-                            latin:keyWidth="30%p" />
+                            latin:keyLabel="\?"
+                            latin:manualTemporaryUpperCaseCode="95"
+                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
+                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                            latin:popupCharacters="_" />
                     </default>
                 </switch>
-                <Key
-                    latin:keyLabel="."
-                    latin:keyHintIcon="@drawable/hint_popup_holo"
-                    latin:popupCharacters="@string/alternates_for_punctuation"
-                    latin:maxPopupKeyboardColumn="7"
-                    latin:keyStyle="functionalKeyStyle" />
                 <switch>
                     <case
-                        latin:mode="im"
+                        latin:mode="email"
                     >
                         <Key
-                            latin:keyStyle="smileyKeyStyle"
-                            latin:keyWidth="25%p"
-                            latin:keyEdgeFlags="right" />
+                            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="web"
+                        latin:mode="email"
                     >
                         <Key
-                            latin:keyStyle="returnKeyStyle"
-                            latin:keyWidth="15%p"
-                            latin:keyEdgeFlags="right" />
+                            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:keyStyle="returnKeyStyle"
-                            latin:keyWidth="25%p"
-                            latin:keyEdgeFlags="right" />
+                            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>
-            </case>
+                <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>
+        <include
+            latin:keyboardLayout="@xml/kbd_settings" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_settings.xml b/java/res/xml-sw600dp/kbd_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..86dc1f7e751a041785d308f65868dfdd6627fdb3
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_settings.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:mode="web"
+        >
+            <switch>
+                <case
+                    latin:voiceKeyEnabled="true"
+                    latin:passwordInput="false"
+                >
+                    <Key
+                        latin:keyStyle="webTabKeyStyle"
+                        latin:keyWidth="6.5%p" />
+                    <Key
+                        latin:keyStyle="micKeyStyle"
+                        latin:keyWidth="6.6%p" />
+                </case>
+                <default>
+                    <Spacer
+                        latin:horizontalGap="4.15%p" />
+                    <Key
+                        latin:keyStyle="webTabKeyStyle" />
+                </default>
+            </switch>
+        </case>
+        <default>
+            <switch>
+                <case
+                    latin:hasSettingsKey="true"
+                    latin:voiceKeyEnabled="true"
+                >
+                    <Key
+                        latin:keyStyle="settingsKeyStyle"
+                        latin:keyWidth="6.5%p" />
+                    <Key
+                        latin:keyStyle="micKeyStyle"
+                        latin:keyWidth="6.6%p" />
+                </case>
+                <case
+                    latin:hasSettingsKey="true"
+                    latin:voiceKeyEnabled="false"
+                >
+                    <Spacer
+                        latin:horizontalGap="4.15%p" />
+                    <Key
+                        latin:keyStyle="settingsKeyStyle" />
+                </case>
+                <case
+                    latin:hasSettingsKey="false"
+                    latin:voiceKeyEnabled="true"
+                >
+                    <Spacer
+                        latin:horizontalGap="4.15%p" />
+                    <Key
+                        latin:keyStyle="micKeyStyle" />
+                </case>
+                <default>
+                    <Spacer
+                        latin:horizontalGap="13.0%p" />
+                </default>
+            </switch>
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 3f79ae178c8e3440bf76abb10940e343da14ebdc..c89cd2fba8faa0e093bf27732ff4ac56e907aff2 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -23,7 +23,6 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="10%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -33,13 +32,13 @@
         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:rowEdgeFlags="top"
+        latin:keyWidth="9.1%p"
     >
         <Key
             latin:keyLabel="1"
-            latin:popupCharacters="¹,½,⅓,¼,⅛"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="¹,½,⅓,¼,⅛" />
         <Key
             latin:keyLabel="2"
             latin:popupCharacters="²,⅔" />
@@ -63,15 +62,19 @@
             latin:keyLabel="9" />
         <Key
             latin:keyLabel="0"
-            latin:popupCharacters="ⁿ,∅"
+            latin:popupCharacters="ⁿ,∅" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.2%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <Row>
-        <Key
-            latin:keyLabel="\@"
-            latin:keyEdgeFlags="left" />
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <Spacer
+            latin:horizontalGap="4.5%p" />
         <Key
-            latin:keyLabel="\#" />
+            latin:keyLabel="#" />
         <Key
             latin:keyStyle="currencyKeyStyle" />
         <Key
@@ -93,39 +96,122 @@
             latin:popupCharacters="[,{,&lt;" />
         <Key
             latin:keyLabel=")"
-            latin:popupCharacters="],},&gt;"
+            latin:popupCharacters="],},&gt;" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="14.6%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <Row>
+    <Row
+        latin:keyWidth="8.9%p"
+    >
         <Key
-            latin:keyStyle="altKeyStyle"
-            latin:keyWidth="15%p"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:keyLabel="!"
-            latin:popupCharacters="¡" />
-        <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. -->
-        <!-- latin:popupCharacters="“,”,„,‟,«,»" -->
-        <Key
-            latin:keyLabel="&quot;"
-            latin:popupCharacters="“,”,«,»"
-            latin:maxPopupKeyboardColumn="6" />
-        <Key
-            latin:keyLabel="\'"
-            latin:popupCharacters="‘,’,‚,‛" />
-        <Key
-            latin:keyLabel=":" />
+            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="\'"
+                    latin:popupCharacters="‘,’,‚,‛" />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel=":" />
+            </default>
+        </switch>
         <Key
             latin:keyLabel=";" />
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <Key
+                    latin:keyLabel="\'"
+                    latin:popupCharacters="‘,’,‚,‛" />
+                <!-- Note: DroidSans doesn't have double-high-reversed-quotation
+                    '\u201f' glyph. -->
+                <!-- latin:popupCharacters="“,”,„,‟,«,»" -->
+                <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="10.1%p"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row
+        latin:keyWidth="8.9%p"
+    >
         <Key
-            latin:keyLabel="/" />
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="13.0%p"
+            latin:keyEdgeFlags="left" />
         <Key
-            latin:keyLabel="\?"
-            latin:popupCharacters="¿" />
+            latin:keyLabel="/" />
         <Key
-            latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="15%p"
-            latin:keyEdgeFlags="right" />
+            latin:keyLabel="\@" />
+        <Key
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="38.5%p" />
+        <switch>
+            <case
+                latin:languageCode="ru"
+            >
+                <Key
+                    latin:keyLabel="_" />
+                <Key
+                    latin:keyLabel="-" />
+            </case>
+            <default>
+                <!-- Note: DroidSans doesn't have double-high-reversed-quotation
+                    '\u201f' glyph. -->
+                <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" -->
+                <Key
+                    latin:keyLabel="&quot;"
+                    latin:popupCharacters="“,”,«,»,‘,’,‚,‛" />
+                <Key
+                    latin:keyLabel="_" />
+            </default>
+        </switch>
+        <include
+            latin:keyboardLayout="@xml/kbd_settings" />
     </Row>
-    <include latin:keyboardLayout="@xml/kbd_symbols_row4" />
 </Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_symbols_shift.xml
index 97fbc1ec7f2196e0b79b8269bf8aea8d11c89435..7195f6a7e6f58d7f2c230b179eb2c4c36be18bd0 100644
--- a/java/res/xml-sw600dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw600dp/kbd_symbols_shift.xml
@@ -23,7 +23,6 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="10%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -31,12 +30,12 @@
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
+    <!-- This row is intentionally not marked as a top row -->
     <Row
-        latin:rowEdgeFlags="top"
+        latin:keyWidth="9.1%p"
     >
         <Key
-            latin:keyLabel="~"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="~" />
         <Key
             latin:keyLabel="`" />
         <Key
@@ -59,15 +58,22 @@
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="×" />
         <Key
-            latin:keyLabel="{" />
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="§"
+            latin:popupCharacters="¶" />
+        <Key
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="Δ" />
         <Key
-            latin:keyLabel="}"
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.2%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <Row>
-        <Key
-            latin:keyStyle="nonSpecialBackgroundTabKeyStyle"
-            latin:keyEdgeFlags="left" />
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <Spacer
+            latin:horizontalGap="4.5%p" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="£" />
@@ -79,52 +85,80 @@
             latin:keyLabel="€" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
-            latin:keyLabel="°"
-            latin:popupCharacters="′,″" />
+            latin:keyLabel="Â¥" />
         <Key
             latin:keyLabel="^"
             latin:popupCharacters="↑,↓,←,→" />
         <Key
-            latin:keyLabel="_" />
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="°"
+            latin:popupCharacters="′,″" />
         <Key
-            latin:keyLabel="="
-            latin:popupCharacters="≠,≈,∞" />
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="±"
+            latin:popupCharacters="∞" />
         <Key
-            latin:keyLabel="[" />
+            latin:keyLabel="{" />
+        <Key
+            latin:keyLabel="}" />
         <Key
-            latin:keyLabel="]"
+            latin:keyStyle="returnKeyStyle"
+            latin:keyWidth="14.6%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <Row>
+    <Row
+        latin:keyWidth="8.9%p"
+    >
         <Key
-            latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="15%p"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="\\" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
-            latin:keyLabel="â„¢" />
+            latin:keyLabel="©" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="®" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
-            latin:keyLabel="©" />
+            latin:keyLabel="â„¢" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
-            latin:keyLabel="¶"
-            latin:popupCharacters="§" />
+            latin:keyLabel="â„…" />
         <Key
-            latin:keyLabel="\\" />
+            latin:keyLabel="[" />
         <Key
-            latin:keyLabel="&lt;"
-            latin:popupCharacters="≤,«,‹" />
+            latin:keyLabel="]" />
         <Key
-            latin:keyLabel="&gt;"
-            latin:popupCharacters="≥,»,›" />
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="¡" />
         <Key
-            latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="15%p"
+            latin:keyStyle="nonPasswordSymbolKeyStyle"
+            latin:keyLabel="¿" />
+        <Key
+            latin:keyStyle="moreKeyStyle"
+            latin:keyWidth="10.1%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4" />
+    <!-- This row is intentionally not marked as a bottom row -->
+    <Row
+        latin:keyWidth="8.9%p"
+    >
+        <Key
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
+            latin:keyWidth="13.0%p"
+            latin:keyEdgeFlags="left" />
+        <Spacer
+            latin:horizontalGap="17.8%p" />
+        <Key
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="38.5%p" />
+        <Spacer
+            latin:horizontalGap="17.8%p" />
+        <include
+            latin:keyboardLayout="@xml/kbd_settings" />
+    </Row>
 </Keyboard>