diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_tab_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_tab_holo.png
new file mode 100644
index 0000000000000000000000000000000000000000..5acd12cc4796349c05581243a083e5054737eed9
Binary files /dev/null and b/java/res/drawable-sw768dp-mdpi/sym_keyboard_tab_holo.png differ
diff --git a/java/res/xml-sw600dp/kbd_azerty_rows.xml b/java/res/xml-sw600dp/kbd_azerty_rows.xml
index 140aec6f18ce961b1433a9244bb3ed9ddeeeec7d..e3a8353878a87fbdcf1061f25cf93bf5fa76cf23 100644
--- a/java/res/xml-sw600dp/kbd_azerty_rows.xml
+++ b/java/res/xml-sw600dp/kbd_azerty_rows.xml
@@ -105,7 +105,7 @@
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="11.1%p"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="w"
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index 0612cfd62de9530db3c2d1faf57260a90a0b1f94..cd426245833488210bfb3045d70911faea5d70d5 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -167,8 +167,8 @@
     <key-style
         latin:styleName="tabKeyStyle"
         latin:code="@integer/key_tab"
-        latin:keyLabel="@string/label_tab_key"
-        latin:keyLabelOption="fontNormal"
+        latin:keyIcon="@drawable/sym_keyboard_tab_holo"
+        latin:iconPreview="@drawable/sym_keyboard_tab_holo"
         latin:parentStyle="functionalKeyStyle" />
     <key-style
         latin:styleName="toSymbolKeyStyle"
diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml
index 051c1c122fbd4a0fad068ad091ad8c83dc16fcb9..fd6cc1ad592ebaade4a0cf0ac73d30633037c68e 100644
--- a/java/res/xml-sw600dp/kbd_number.xml
+++ b/java/res/xml-sw600dp/kbd_number.xml
@@ -23,7 +23,7 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="12.7%p"
+    latin:keyWidth="16.75%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -41,35 +41,35 @@
             <Row>
                 <Key
                     latin:keyStyle="num1KeyStyle"
-                    latin:keyXPos="29.5%p" />
+                    latin:keyXPos="24.875%p" />
                 <Key
                     latin:keyStyle="num2KeyStyle" />
                 <Key
                     latin:keyStyle="num3KeyStyle" />
                 <Key
                     latin:keyStyle="deleteKeyStyle"
-                    latin:keyXPos="-10.0%p"
+                    latin:keyXPos="-11.0%p"
                     latin:keyWidth="0%p"
                     latin:keyEdgeFlags="right" />
             </Row>
             <Row>
                 <Key
                     latin:keyStyle="num4KeyStyle"
-                    latin:keyXPos="29.5%p" />
+                    latin:keyXPos="24.875%p" />
                 <Key
                     latin:keyStyle="num5KeyStyle" />
                 <Key
                     latin:keyStyle="num6KeyStyle" />
                 <Key
                     latin:keyStyle="returnKeyStyle"
-                    latin:keyXPos="-14.6%p"
+                    latin:keyXPos="-11.0%p"
                     latin:keyWidth="0%p"
                     latin:keyEdgeFlags="right" />
             </Row>
             <Row>
                 <Key
                     latin:keyStyle="num7KeyStyle"
-                    latin:keyXPos="29.5%p" />
+                    latin:keyXPos="24.875%p" />
                 <Key
                     latin:keyStyle="num8KeyStyle" />
                 <Key
@@ -79,17 +79,17 @@
             <Row>
                 <Key
                     latin:keyStyle="tabKeyStyle"
-                    latin:keyWidth="10.0%p"
+                    latin:keyWidth="11.0%p"
                     latin:keyEdgeFlags="left" />
                 <Spacer
-                    latin:keyXPos="29.5%p" />
+                    latin:keyXPos="24.875%p" />
                 <Key
                     latin:keyStyle="num0KeyStyle" />
                 <Spacer />
                 <Key
                     latin:keyStyle="micOrSettingsKeyStyle"
-                    latin:keyXPos="-10.0%p"
-                    latin:keyWidth="0.0%p"
+                    latin:keyXPos="-11.00%p"
+                    latin:keyWidth="0%p"
                     latin:keyEdgeFlags="right" />
             </Row>
         </case>
@@ -99,49 +99,49 @@
             <Row>
                 <Key
                     latin:keyLabel="-"
-                    latin:keyXPos="14.5%p"
-                    latin:keyWidth="9.1%p" />
+                    latin:keyXPos="11.0%p"
+                    latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel="+"
-                    latin:keyWidth="9.1%p" />
+                    latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel="."
-                    latin:keyWidth="9.1%p" />
+                    latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel="1"
-                    latin:keyXPos="43.3%p" />
+                    latin:keyXPos="38.75%p" />
                 <Key
                     latin:keyLabel="2" />
                 <Key
                     latin:keyLabel="3" />
                 <Key
                     latin:keyStyle="deleteKeyStyle"
-                    latin:keyXPos="-10.0%p"
-                    latin:keyWidth="0%p"
+                    latin:keyXPos="-11.00%p"
+                    latin:keyWidth="-11.00%p"
                     latin:keyEdgeFlags="right" />
             </Row>
             <Row>
                 <Key
                     latin:keyLabel="*"
-                    latin:keyXPos="14.5%p"
-                    latin:keyWidth="9.1%p" />
+                    latin:keyXPos="11.0%p"
+                    latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel="/"
-                    latin:keyWidth="9.1%p" />
+                    latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel=","
-                    latin:keyWidth="9.1%p" />
+                    latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel="4"
-                    latin:keyXPos="43.3%p" />
+                    latin:keyXPos="38.75%p" />
                 <Key
                     latin:keyLabel="5" />
                 <Key
                     latin:keyLabel="6" />
                 <Key
                     latin:keyStyle="returnKeyStyle"
-                    latin:keyXPos="-14.6%p"
-                    latin:keyWidth="0%p"
+                    latin:keyXPos="-11.00%p"
+                    latin:keyWidth="-11.00%p"
                     latin:keyEdgeFlags="right" />
             </Row>
             <Row>
@@ -150,17 +150,17 @@
                      edge key. -->
                 <Key
                     latin:keyLabel="("
-                    latin:keyXPos="14.5%p"
-                    latin:keyWidth="9.1%p" />
+                    latin:keyXPos="11.0%p"
+                    latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel=")"
-                    latin:keyWidth="9.1%p" />
+                    latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel="="
-                    latin:keyWidth="9.1%p" />
+                    latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel="7"
-                    latin:keyXPos="43.3%p" />
+                    latin:keyXPos="38.75%p" />
                 <Key
                     latin:keyLabel="8" />
                 <Key
@@ -170,23 +170,22 @@
             <Row>
                 <Key
                     latin:keyStyle="tabKeyStyle"
-                    latin:keyWidth="10.0%p"
+                    latin:keyWidth="11.00%p"
                     latin:keyEdgeFlags="left" />
                 <Key
                     latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
-                    latin:keyXPos="14.5%p"
-                    latin:keyWidth="27.2%p" />
+                    latin:keyWidth="27.75%p" />
                 <Key
                     latin:keyLabel="*"
-                    latin:keyXPos="43.3%p" />
+                    latin:keyXPos="38.75%p" />
                 <Key
                     latin:keyLabel="0" />
                 <Key
                     latin:keyLabel="#" />
                 <Key
                     latin:keyStyle="micOrSettingsKeyStyle"
-                    latin:keyXPos="-10.0%p"
-                    latin:keyWidth="0.0%p"
+                    latin:keyXPos="-11.00%p"
+                    latin:keyWidth="-11.00%p"
                     latin:keyEdgeFlags="right" />
             </Row>
         </default>
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index d13fa851ded46e6447243b69e2a114aaa28fea07..b80442584da8802dcd1bca28c036c8a0e5567c92 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -23,7 +23,7 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="12.7%p"
+    latin:keyWidth="16.75%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -38,67 +38,67 @@
         <Key
             latin:code="45"
             latin:keyLabel=" - "
-            latin:keyXPos="19.0%p"
-            latin:keyWidth="9.1%p" />
+            latin:keyXPos="15.625%p"
+            latin:keyWidth="9.25%p" />
         <Key
             latin:code="43"
             latin:keyLabel=" + "
-            latin:keyWidth="9.1%p" />
+            latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num1KeyStyle"
-            latin:keyXPos="43.3%p" />
+            latin:keyXPos="38.867%p" />
         <Key
             latin:keyStyle="num2KeyStyle" />
         <Key
             latin:keyStyle="num3KeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyXPos="-10.0%p"
-            latin:keyWidth="0%p"
+            latin:keyXPos="-11.00%p"
+            latin:keyWidth="-11.00%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
         <Key
             latin:code="44"
             latin:keyLabel=" , "
-            latin:keyXPos="19.0%p"
-            latin:keyWidth="9.1%p" />
+            latin:keyXPos="15.625%p"
+            latin:keyWidth="9.25%p" />
         <Key
             latin:code="46"
             latin:keyLabel=" . "
-            latin:keyWidth="9.1%p" />
+            latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num4KeyStyle"
-            latin:keyXPos="43.3%p" />
+            latin:keyXPos="38.867%p" />
         <Key
             latin:keyStyle="num5KeyStyle" />
         <Key
             latin:keyStyle="num6KeyStyle" />
         <Key
             latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-14.6%p"
-            latin:keyWidth="0%p"
+            latin:keyXPos="-11.00%p"
+            latin:keyWidth="-11.00%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="10.0%p"
+            latin:keyWidth="11.00%p"
             latin:keyEdgeFlags="left" />
         <!-- 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. -->
         <Key
             latin:code="40"
             latin:keyLabel=" ( "
-            latin:keyXPos="19.0%p"
-            latin:keyWidth="9.1%p" />
+            latin:keyXPos="15.625%p"
+            latin:keyWidth="9.25%p" />
         <Key
             latin:code="41"
             latin:keyLabel=" ) "
-            latin:keyWidth="9.1%p" />
+            latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num7KeyStyle"
-            latin:keyXPos="43.3%p" />
+            latin:keyXPos="38.867%p" />
         <Key
             latin:keyStyle="num8KeyStyle" />
         <Key
@@ -108,23 +108,23 @@
     <Row>
         <Key
             latin:keyStyle="tabKeyStyle"
-            latin:keyWidth="10.0%p"
+            latin:keyWidth="11.00%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
-            latin:keyXPos="19.0%p"
-            latin:keyWidth="18.2%p" />
+            latin:keyXPos="15.625%p"
+            latin:keyWidth="18.67%p" />
         <Key
             latin:keyStyle="numStarKeyStyle"
-            latin:keyXPos="43.3%p" />
+            latin:keyXPos="38.867%p" />
         <Key
             latin:keyStyle="num0KeyStyle" />
         <Key
             latin:keyStyle="numPoundKeyStyle" />
         <Key
             latin:keyStyle="micOrSettingsKeyStyle"
-            latin:keyXPos="-10.0%p"
-            latin:keyWidth="0.0%p"
+            latin:keyXPos="-11.00%p"
+            latin:keyWidth="-11.00%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml
index 895ca63fc05dbfb7ef80a3f330806208dd3c5300..f84ebd57868559e1893e52e565e2c815ca415a85 100644
--- a/java/res/xml-sw600dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -23,7 +23,7 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="12.7%p"
+    latin:keyWidth="16.75%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -38,79 +38,78 @@
         <Key
             latin:code="45"
             latin:keyLabel=" - "
-            latin:keyXPos="14.5%p"
-            latin:keyWidth="9.1%p" />
+            latin:keyXPos="11.0%p"
+            latin:keyWidth="9.25%p" />
         <Key
             latin:code="43"
             latin:keyLabel=" + "
-            latin:keyWidth="9.1%p" />
+            latin:keyWidth="9.25%p" />
         <Key
             latin:code="44"
             latin:keyLabel="@string/label_pause_key"
-            latin:keyWidth="9.1%p" />
+            latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num1KeyStyle"
-            latin:keyXPos="43.3%p" />
+            latin:keyXPos="38.867%p" />
         <Key
             latin:keyStyle="num2KeyStyle" />
         <Key
             latin:keyStyle="num3KeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyXPos="-10.0%p"
-            latin:keyWidth="0%p"
+            latin:keyXPos="-11.00%p"
+            latin:keyWidth="-11.00%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
         <Key
             latin:code="44"
             latin:keyLabel=" , "
-            latin:keyXPos="14.5%p"
-            latin:keyWidth="9.1%p" />
+            latin:keyXPos="11.0%p"
+            latin:keyWidth="9.25%p" />
         <Key
             latin:code="46"
             latin:keyLabel=" . "
-            latin:keyWidth="9.1%p" />
+            latin:keyWidth="9.25%p" />
         <Key
             latin:code="59"
             latin:keyLabel="@string/label_wait_key"
-            latin:keyWidth="9.1%p" />
+            latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num4KeyStyle"
-            latin:keyXPos="43.3%p" />
+            latin:keyXPos="38.867%p" />
         <Key
             latin:keyStyle="num5KeyStyle" />
         <Key
             latin:keyStyle="num6KeyStyle" />
         <Key
             latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-14.6%p"
-            latin:keyWidth="0%p"
+            latin:keyXPos="-11.00%p"
+            latin:keyWidth="-11.00%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="10.0%p"
+            latin:keyWidth="11.00%p"
             latin:keyEdgeFlags="left" />
         <!-- 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. -->
         <Key
             latin:code="40"
             latin:keyLabel=" ( "
-            latin:keyXPos="14.5%p"
-            latin:keyWidth="9.1%p" />
+            latin:keyWidth="9.25%p" />
         <Key
             latin:code="41"
             latin:keyLabel=" ) "
-            latin:keyWidth="9.1%p" />
+            latin:keyWidth="9.25%p" />
         <Key
             latin:code="78"
             latin:keyLabel=" N "
-            latin:keyWidth="9.1%p" />
+            latin:keyWidth="9.25%p" />
         <Key
             latin:keyStyle="num7KeyStyle"
-            latin:keyXPos="43.3%p" />
+            latin:keyXPos="38.867%p" />
         <Key
             latin:keyStyle="num8KeyStyle" />
         <Key
@@ -120,23 +119,22 @@
     <Row>
         <Key
             latin:keyStyle="tabKeyStyle"
-            latin:keyWidth="10.0%p"
+            latin:keyWidth="11.00%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
-            latin:keyXPos="14.5%p"
-            latin:keyWidth="27.2%p" />
+            latin:keyWidth="27.75%p" />
         <Key
             latin:keyStyle="numStarKeyStyle"
-            latin:keyXPos="43.3%p" />
+            latin:keyXPos="38.867%p" />
         <Key
             latin:keyStyle="num0KeyStyle" />
         <Key
             latin:keyStyle="numPoundKeyStyle" />
         <Key
             latin:keyStyle="micOrSettingsKeyStyle"
-            latin:keyXPos="-10.0%p"
-            latin:keyWidth="0.0%p"
+            latin:keyXPos="-11.00%p"
+            latin:keyWidth="-11.00%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row3.xml b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
index 700bcf0058ed58ab9463d5fa94e6a1c698c02826..4118ee197b1451edfa7242459d1db403fc3832cf 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
@@ -26,7 +26,7 @@
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="11.1%p"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="z"
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
index 648775c97d328d8ef7d7f220d07b8e412f42faff..56aca137ed1754f2a26e9ebf085d0b0365a72b45 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
@@ -23,7 +23,7 @@
 >
     <!-- This row is intentionally not marked as a bottom row -->
     <Row
-        latin:keyWidth="9.1%p"
+        latin:keyWidth="8.9%p"
     >
         <Key
             latin:keyStyle="toSymbolKeyStyle"
@@ -31,22 +31,19 @@
             latin:keyWidth="13.0%p"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:keyStyle="tabKeyStyle"
-            latin:keyWidth="8.9%p" />
+            latin:keyStyle="tabKeyStyle" />
         <switch>
             <case
                 latin:mode="email"
             >
                 <Key
-                    latin:keyStyle="comKeyStyle"
-                    latin:keyWidth="8.9%p" />
+                    latin:keyStyle="comKeyStyle" />
             </case>
             <case
                 latin:mode="url"
             >
                 <Key
-                    latin:keyStyle="comKeyStyle"
-                    latin:keyWidth="8.9%p" />
+                    latin:keyStyle="comKeyStyle" />
             </case>
             <default>
                 <Key
@@ -54,14 +51,13 @@
                     latin:manualTemporaryUpperCaseCode="64"
                     latin:keyHintIcon="@drawable/key_hint_at_holo"
                     latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
-                    latin:popupCharacters="\@"
-                    latin:keyWidth="8.9%p" />
+                    latin:popupCharacters="\@" />
             </default>
         </switch>
         <Key
             latin:keyStyle="spaceKeyStyle"
-            latin:keyXPos="30.8%p"
-            latin:keyWidth="41.0%p" />
+            latin:keyXPos="30.750%p"
+            latin:keyWidth="39.750%p" />
         <switch>
             <case
                 latin:languageCode="ru"
@@ -71,7 +67,8 @@
                         latin:mode="email"
                     >
                         <Key
-                            latin:keyLabel="-" />
+                            latin:keyLabel="-"
+                            latin:keyWidth="9.750%p" />
                     </case>
                     <case
                         latin:mode="url"
@@ -81,7 +78,8 @@
                             latin:manualTemporaryUpperCaseCode="58"
                             latin:keyHintIcon="@drawable/key_hint_colon_holo"
                             latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
-                            latin:popupCharacters=":" />
+                            latin:popupCharacters=":"
+                            latin:keyWidth="9.750%p" />
                     </case>
                     <default>
                         <Key
@@ -89,7 +87,8 @@
                             latin:manualTemporaryUpperCaseCode="95"
                             latin:keyHintIcon="@drawable/key_hint_underline_holo"
                             latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
-                            latin:popupCharacters="_" />
+                            latin:popupCharacters="_"
+                            latin:keyWidth="9.750%p" />
                     </default>
                 </switch>
                 <switch>
@@ -97,7 +96,8 @@
                         latin:mode="email"
                     >
                         <Key
-                            latin:keyLabel="_" />
+                            latin:keyLabel="_"
+                            latin:keyWidth="9.750%p" />
                     </case>
                     <default>
                         <Key
@@ -105,7 +105,8 @@
                             latin:manualTemporaryUpperCaseCode="39"
                             latin:keyHintIcon="@drawable/key_hint_quote_holo"
                             latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
-                            latin:popupCharacters="\'" />
+                            latin:popupCharacters="\'"
+                            latin:keyWidth="9.750%p" />
                     </default>
                 </switch>
             </case>
@@ -116,7 +117,8 @@
                         latin:mode="email"
                     >
                         <Key
-                            latin:keyLabel="-" />
+                            latin:keyLabel="-"
+                            latin:keyWidth="9.750%p" />
                     </case>
                     <case
                         latin:mode="url"
@@ -126,7 +128,8 @@
                             latin:manualTemporaryUpperCaseCode="58"
                             latin:keyHintIcon="@drawable/key_hint_colon_holo"
                             latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
-                            latin:popupCharacters=":" />
+                            latin:popupCharacters=":"
+                            latin:keyWidth="9.750%p" />
                     </case>
                     <default>
                         <Key
@@ -134,7 +137,8 @@
                             latin:manualTemporaryUpperCaseCode="34"
                             latin:keyHintIcon="@drawable/key_hint_quote_holo"
                             latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
-                            latin:popupCharacters="&quot;" />
+                            latin:popupCharacters="&quot;"
+                            latin:keyWidth="9.750%p" />
                     </default>
                 </switch>
                 <switch>
@@ -142,7 +146,8 @@
                         latin:mode="email"
                     >
                         <Key
-                            latin:keyLabel="_" />
+                            latin:keyLabel="_"
+                            latin:keyWidth="9.750%p" />
                     </case>
                     <default>
                         <Key
@@ -150,7 +155,8 @@
                             latin:manualTemporaryUpperCaseCode="95"
                             latin:keyHintIcon="@drawable/key_hint_underline_holo"
                             latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
-                            latin:popupCharacters="_" />
+                            latin:popupCharacters="_"
+                            latin:keyWidth="9.750%p" />
                     </default>
                 </switch>
             </default>
@@ -158,7 +164,7 @@
         <Key
             latin:keyStyle="micOrSettingsKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="-10.0%p"
+            latin:keyWidth="0%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwertz_rows.xml b/java/res/xml-sw600dp/kbd_qwertz_rows.xml
index 7adfc07f0f8f2f142e28c4ad250db73d9973962f..5c2fbf2b9bc0de5b2d085b64c8a343ad571f5f06 100644
--- a/java/res/xml-sw600dp/kbd_qwertz_rows.xml
+++ b/java/res/xml-sw600dp/kbd_qwertz_rows.xml
@@ -71,7 +71,7 @@
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="11.1%p"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="y"
diff --git a/java/res/xml-sw600dp/kbd_ru_rows.xml b/java/res/xml-sw600dp/kbd_ru_rows.xml
index 8b80aaa61ccf98e74ad41549d9ca8838bbacad36..fb820ccc15538c767dfbfa291084f851984feb52 100644
--- a/java/res/xml-sw600dp/kbd_ru_rows.xml
+++ b/java/res/xml-sw600dp/kbd_ru_rows.xml
@@ -95,7 +95,7 @@
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="11.1%p"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="я" />
diff --git a/java/res/xml-sw600dp/kbd_sr_rows.xml b/java/res/xml-sw600dp/kbd_sr_rows.xml
index 225420aa43db8e7514a52c9fd19ecd697313eb44..09dc2b719bf61cd24a4e4efbadd052908c30c94b 100644
--- a/java/res/xml-sw600dp/kbd_sr_rows.xml
+++ b/java/res/xml-sw600dp/kbd_sr_rows.xml
@@ -94,7 +94,7 @@
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="8.8%p"
+            latin:keyWidth="8.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="Ñ•" />
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 2daaadd02a68125d8bb7c1925bd42bc5149b740f..f28df55614084074a10d30c9605065ad799b78ad 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -108,7 +108,7 @@
     >
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="11.1%p"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="&lt;"
@@ -190,18 +190,18 @@
             latin:keyLabel="\@" />
         <Key
             latin:keyStyle="spaceKeyStyle"
-            latin:keyXPos="30.8%p"
-            latin:keyWidth="41.0%p" />
+            latin:keyXPos="30.750%p"
+            latin:keyWidth="39.750%p" />
         <switch>
             <case
                 latin:languageCode="ru"
             >
                 <Key
                     latin:keyLabel="_"
-                    latin:keyWidth="9.1%p" />
+                    latin:keyWidth="9.750%p" />
                 <Key
                     latin:keyLabel="-"
-                    latin:keyWidth="9.1%p" />
+                    latin:keyWidth="9.750%p" />
             </case>
             <default>
                 <!-- Note: DroidSans doesn't have double-high-reversed-quotation
@@ -210,16 +210,16 @@
                 <Key
                     latin:keyLabel="&quot;"
                     latin:popupCharacters="“,”,«,»,‘,’,‚,‛"
-                    latin:keyWidth="9.1%p" />
+                    latin:keyWidth="9.750%p" />
                 <Key
                     latin:keyLabel="_"
-                    latin:keyWidth="9.1%p" />
+                    latin:keyWidth="9.750%p" />
             </default>
         </switch>
         <Key
             latin:keyStyle="micOrSettingsKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="-10.0%p"
+            latin:keyWidth="0%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_symbols_shift.xml
index 111718a4d83953d558cbb69b8b7167f57d5a3b5c..7c6c9a4478efbfa362729d70ea75507bc5267400 100644
--- a/java/res/xml-sw600dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw600dp/kbd_symbols_shift.xml
@@ -112,7 +112,7 @@
     >
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="11.1%p"
+            latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="\\" />
@@ -152,8 +152,8 @@
             latin:keyStyle="tabKeyStyle" />
         <Key
             latin:keyStyle="spaceKeyStyle"
-            latin:keyXPos="30.8%p"
-            latin:keyWidth="41.0%p" />
+            latin:keyXPos="30.750%p"
+            latin:keyWidth="39.750%p" />
         <Key
             latin:keyStyle="micOrSettingsKeyStyle"
             latin:keyXPos="-10.0%p"
diff --git a/java/res/xml-sw768dp/kbd_number.xml b/java/res/xml-sw768dp/kbd_number.xml
index c99ead42e8540b60c6580cd25daddafe76a0964c..8ffee3cfd8040267a3a44e5c5e60e69cf1ba7525 100644
--- a/java/res/xml-sw768dp/kbd_number.xml
+++ b/java/res/xml-sw768dp/kbd_number.xml
@@ -23,7 +23,7 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="11.954%p"
+    latin:keyWidth="13.250%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -42,7 +42,7 @@
                 <Key
                     latin:keyStyle="tabKeyStyle"
                     latin:keyLabelOption="alignLeft"
-                    latin:keyWidth="7.969%p"
+                    latin:keyWidth="11.172%p"
                     latin:keyEdgeFlags="left" />
                 <Key
                     latin:keyStyle="num1KeyStyle"
@@ -53,7 +53,7 @@
                     latin:keyStyle="num3KeyStyle" />
                 <Key
                     latin:keyStyle="deleteKeyStyle"
-                    latin:keyXPos="-9.219%p"
+                    latin:keyXPos="-11.172%p"
                     latin:keyWidth="0%p"
                     latin:keyEdgeFlags="right" />
             </Row>
@@ -67,7 +67,7 @@
                     latin:keyStyle="num6KeyStyle" />
                 <Key
                     latin:keyStyle="returnKeyStyle"
-                    latin:keyXPos="-15.704%p"
+                    latin:keyXPos="-11.172%p"
                     latin:keyWidth="0%p"
                     latin:keyEdgeFlags="right" />
             </Row>
@@ -101,7 +101,7 @@
                 <Key
                     latin:keyStyle="tabKeyStyle"
                     latin:keyLabelOption="alignLeft"
-                    latin:keyWidth="7.969%p"
+                    latin:keyWidth="11.172%p"
                     latin:keyEdgeFlags="left" />
                 <Key
                     latin:keyLabel="-"
@@ -115,14 +115,14 @@
                     latin:keyWidth="8.047%p" />
                 <Key
                     latin:keyLabel="1"
-                    latin:keyXPos="45.0%p" />
+                    latin:keyXPos="43.125%p" />
                 <Key
                     latin:keyLabel="2" />
                 <Key
                     latin:keyLabel="3" />
                 <Key
                     latin:keyStyle="deleteKeyStyle"
-                    latin:keyXPos="-9.219%p"
+                    latin:keyXPos="-11.172%p"
                     latin:keyWidth="0%p"
                     latin:keyEdgeFlags="right" />
             </Row>
@@ -139,14 +139,14 @@
                     latin:keyWidth="8.047%p" />
                 <Key
                     latin:keyLabel="4"
-                    latin:keyXPos="45.0%p" />
+                    latin:keyXPos="43.125%p" />
                 <Key
                     latin:keyLabel="5" />
                 <Key
                     latin:keyLabel="6" />
                 <Key
                     latin:keyStyle="returnKeyStyle"
-                    latin:keyXPos="-15.704%p"
+                    latin:keyXPos="-11.172%p"
                     latin:keyWidth="0%p"
                     latin:keyEdgeFlags="right" />
             </Row>
@@ -166,7 +166,7 @@
                     latin:keyWidth="8.047%p" />
                 <Key
                     latin:keyLabel="7"
-                    latin:keyXPos="45.0%p" />
+                    latin:keyXPos="43.125%p" />
                 <Key
                     latin:keyLabel="8" />
                 <Key
@@ -194,7 +194,7 @@
                     latin:keyWidth="24.14%p" />
                 <Key
                     latin:keyLabel="*"
-                    latin:keyXPos="45.0%p" />
+                    latin:keyXPos="43.125%p" />
                 <Key
                     latin:keyLabel="0" />
                 <Key
diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index a3dfec099cc73135e444ff3f9841d0cbe3daa454..8fc5e7d6881f2547cf3da1e593e05df83c910f24 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -23,7 +23,7 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="11.954%p"
+    latin:keyWidth="13.250%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -38,7 +38,7 @@
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
+            latin:keyWidth="11.172%p"
             latin:keyEdgeFlags="left" />
         <!-- To match one character label size with "Tab", I placed spaces around the char '-'
              and '+'. -->
@@ -53,14 +53,14 @@
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num1KeyStyle"
-            latin:keyXPos="45.0%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num2KeyStyle" />
         <Key
             latin:keyStyle="num3KeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyXPos="-9.219%p"
+            latin:keyXPos="-11.172%p"
             latin:keyWidth="0%p"
             latin:keyEdgeFlags="right" />
     </Row>
@@ -82,14 +82,14 @@
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num4KeyStyle"
-            latin:keyXPos="45.0%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num5KeyStyle" />
         <Key
             latin:keyStyle="num6KeyStyle" />
         <Key
             latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-15.704%p"
+            latin:keyXPos="-11.172%p"
             latin:keyWidth="0%p"
             latin:keyEdgeFlags="right" />
     </Row>
@@ -109,7 +109,7 @@
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num7KeyStyle"
-            latin:keyXPos="45.0%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num8KeyStyle" />
         <Key
@@ -136,7 +136,7 @@
             latin:keyWidth="16.084%p" />
         <Key
             latin:keyStyle="numStarKeyStyle"
-            latin:keyXPos="45.0%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num0KeyStyle" />
         <Key
diff --git a/java/res/xml-sw768dp/kbd_phone_symbols.xml b/java/res/xml-sw768dp/kbd_phone_symbols.xml
index 931c3c934ee2c3278e81ef315e0f17f844ba9b1f..449be47ef0e79d4f4784329856684992c7660fca 100644
--- a/java/res/xml-sw768dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -23,7 +23,7 @@
     latin:keyboardHeight="@dimen/keyboardHeight"
     latin:maxKeyboardHeight="50%p"
     latin:rowHeight="25%p"
-    latin:keyWidth="11.954%p"
+    latin:keyWidth="13.250%p"
     latin:horizontalGap="@dimen/key_horizontal_gap"
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -38,7 +38,7 @@
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
+            latin:keyWidth="11.172%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:code="45"
@@ -57,14 +57,14 @@
              char '-' and '+'. -->
         <Key
             latin:keyStyle="num1KeyStyle"
-            latin:keyXPos="45.0%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num2KeyStyle" />
         <Key
             latin:keyStyle="num3KeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyXPos="-9.219%p"
+            latin:keyXPos="-11.172%p"
             latin:keyWidth="0%p"
             latin:keyEdgeFlags="right" />
     </Row>
@@ -90,14 +90,14 @@
              char ',' and '.'. -->
         <Key
             latin:keyStyle="num4KeyStyle"
-            latin:keyXPos="45.0%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num5KeyStyle" />
         <Key
             latin:keyStyle="num6KeyStyle" />
         <Key
             latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-15.704%p"
+            latin:keyXPos="-11.172%p"
             latin:keyWidth="0%p"
             latin:keyEdgeFlags="right" />
     </Row>
@@ -121,7 +121,7 @@
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num7KeyStyle"
-            latin:keyXPos="45.0%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num8KeyStyle" />
         <Key
@@ -148,7 +148,7 @@
             latin:keyWidth="24.14%p" />
         <Key
             latin:keyStyle="numStarKeyStyle"
-            latin:keyXPos="45.0%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num0KeyStyle" />
         <Key
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index eccd0c822b2971ae6acd1beac1ae5c9bfdfe1335..98a7f98c244801a17e538a7151394c48a4e146f1 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -216,11 +216,11 @@ public class Key {
             if (keyXPos < 0) {
                 // If keyXPos is negative, the actual x-coordinate will be k + keyXPos.
                 keyXPos += keyboardWidth;
-                if (keyXPos < x) {
-                    // keyXPos shouldn't be less than x because drawable area for this key starts
-                    // at x. Or, this key will overlaps the adjacent key on its left hand side.
-                    keyXPos = x;
-                }
+            }
+            if (keyXPos < x) {
+                // keyXPos shouldn't be less than x because drawable area for this key starts
+                // at x. Or, this key will overlaps the adjacent key on its left hand side.
+                keyXPos = x;
             }
             if (keyWidth == 0) {
                 // If keyWidth is zero, the actual key width will be determined to fill out the
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
index 308651a9ebe91c5458268ff06b71baba11baa702..e599dfdef7bab785c7baa1ee354d9d0a9b32adab 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
@@ -549,7 +549,7 @@ public class KeyboardParser {
     }
 
     private void endKey(Key key) {
-        mCurrentX = key.mX + key.mGap + key.mWidth;
+        mCurrentX = key.mX - key.mGap / 2 + key.mWidth + key.mGap;
         if (mCurrentX > mMaxRowWidth)
             mMaxRowWidth = mCurrentX;
     }