From abd7392d66fcfd404b7763edaf3fced5c97c8f43 Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Thu, 2 Jun 2011 21:11:45 +0900
Subject: [PATCH] Keep tablet keyboard in sync with Honeycomb-MR2

This change removes Russian keyboard layout exceptions and make it
compatible with other Latin's.

Also tweaks some locales' keyboard layout to match with standard PC's
keyboard layout at most.

Change-Id: I305201fb850b4f94ae7e746ab4c039473d09da70
---
 java/res/values-sw768dp-land/dimens.xml       |   4 +-
 java/res/values-sw768dp/dimens.xml            |   4 +-
 java/res/xml-ar/kbd_qwerty.xml                |   1 -
 java/res/xml-cs/kbd_qwerty.xml                |   1 -
 java/res/xml-de/kbd_qwerty.xml                |   1 -
 java/res/xml-es/kbd_qwerty.xml                |   1 -
 java/res/xml-fr-rCA/kbd_qwerty.xml            |   1 -
 java/res/xml-fr-rCH/kbd_qwerty.xml            |   1 -
 java/res/xml-fr/kbd_qwerty.xml                |   1 -
 java/res/xml-hu/kbd_qwerty.xml                |   1 -
 java/res/xml-iw/kbd_qwerty.xml                |   1 -
 java/res/xml-pl/kbd_qwerty.xml                |   1 -
 java/res/xml-pt/kbd_qwerty.xml                |   1 -
 java/res/xml-sw768dp/kbd_ar_rows.xml          |  21 +-
 java/res/xml-sw768dp/kbd_iw_rows.xml          |  20 +-
 java/res/xml-sw768dp/kbd_number.xml           |  22 +-
 java/res/xml-sw768dp/kbd_phone.xml            |  16 +-
 java/res/xml-sw768dp/kbd_phone_symbols.xml    |  16 +-
 java/res/xml-sw768dp/kbd_qwerty_row3.xml      |  26 +--
 java/res/xml-sw768dp/kbd_qwerty_row4.xml      | 196 ++++--------------
 .../kbd_qwerty_rows_scandinavia.xml           |  47 ++++-
 java/res/xml-sw768dp/kbd_row3_right2.xml      |  48 +++++
 java/res/xml-sw768dp/kbd_ru_rows.xml          |  28 +--
 java/res/xml-sw768dp/kbd_sr_rows.xml          |  46 ++--
 java/res/xml-sw768dp/kbd_symbols.xml          |  78 ++-----
 java/res/xml/kbd_iw_rows.xml                  |   9 +-
 java/res/xml/kbd_qwerty.xml                   |   1 -
 .../inputmethod/keyboard/KeyboardParser.java  |   2 +-
 28 files changed, 236 insertions(+), 359 deletions(-)
 create mode 100644 java/res/xml-sw768dp/kbd_row3_right2.xml

diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index 65fd29d817..ce36145162 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -24,8 +24,8 @@
     <fraction name="minKeyboardHeight">45%p</fraction>
     <!-- key_height + key_bottom_gap = popup_key_height -->
     <!-- <dimen name="key_height">14.5mm</dimen> -->
-    <dimen name="key_bottom_gap">0.0mm</dimen>
-    <dimen name="key_horizontal_gap">0.0mm</dimen>
+    <dimen name="key_bottom_gap">1.6mm</dimen>
+    <dimen name="key_horizontal_gap">1.6mm</dimen>
     <dimen name="popup_key_height">13.0mm</dimen>
     <dimen name="keyboard_top_padding">1.1mm</dimen>
     <dimen name="keyboard_bottom_padding">0.0mm</dimen>
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index 37cfc9dfdc..cb380fbe47 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -24,8 +24,8 @@
     <fraction name="minKeyboardHeight">-35.0%p</fraction>
     <!-- key_height + key_bottom_gap = popup_key_height -->
     <!-- <dimen name="key_height">14.5mm</dimen> -->
-    <dimen name="key_bottom_gap">0.0mm</dimen>
-    <dimen name="key_horizontal_gap">0.0mm</dimen>
+    <dimen name="key_bottom_gap">1.1mm</dimen>
+    <dimen name="key_horizontal_gap">1.1mm</dimen>
     <dimen name="popup_key_height">10.0mm</dimen>
     <dimen name="keyboard_top_padding">1.1mm</dimen>
     <dimen name="keyboard_bottom_padding">0.0mm</dimen>
diff --git a/java/res/xml-ar/kbd_qwerty.xml b/java/res/xml-ar/kbd_qwerty.xml
index 93310bf9c0..57823c9ac9 100644
--- a/java/res/xml-ar/kbd_qwerty.xml
+++ b/java/res/xml-ar/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-cs/kbd_qwerty.xml b/java/res/xml-cs/kbd_qwerty.xml
index a74f7fa845..9ead49c3bc 100644
--- a/java/res/xml-cs/kbd_qwerty.xml
+++ b/java/res/xml-cs/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml
index cc7722a44a..5c51bbdae1 100644
--- a/java/res/xml-de/kbd_qwerty.xml
+++ b/java/res/xml-de/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-es/kbd_qwerty.xml b/java/res/xml-es/kbd_qwerty.xml
index 3906bde387..f98649177b 100644
--- a/java/res/xml-es/kbd_qwerty.xml
+++ b/java/res/xml-es/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-fr-rCA/kbd_qwerty.xml b/java/res/xml-fr-rCA/kbd_qwerty.xml
index e649a1e9cd..7f25848e21 100644
--- a/java/res/xml-fr-rCA/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCA/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-fr-rCH/kbd_qwerty.xml b/java/res/xml-fr-rCH/kbd_qwerty.xml
index f82becb488..2baed3ce52 100644
--- a/java/res/xml-fr-rCH/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCH/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml
index 5d1f10c6b7..1b10655162 100644
--- a/java/res/xml-fr/kbd_qwerty.xml
+++ b/java/res/xml-fr/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-hu/kbd_qwerty.xml b/java/res/xml-hu/kbd_qwerty.xml
index 952ad9a0f4..250b4553f7 100644
--- a/java/res/xml-hu/kbd_qwerty.xml
+++ b/java/res/xml-hu/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml
index cfe404c9d7..e93927f1a5 100644
--- a/java/res/xml-iw/kbd_qwerty.xml
+++ b/java/res/xml-iw/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-pl/kbd_qwerty.xml b/java/res/xml-pl/kbd_qwerty.xml
index ab5b887285..7d9476d7b9 100644
--- a/java/res/xml-pl/kbd_qwerty.xml
+++ b/java/res/xml-pl/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-pt/kbd_qwerty.xml b/java/res/xml-pt/kbd_qwerty.xml
index 83fb5b4c15..1a8995510b 100644
--- a/java/res/xml-pt/kbd_qwerty.xml
+++ b/java/res/xml-pt/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/res/xml-sw768dp/kbd_ar_rows.xml b/java/res/xml-sw768dp/kbd_ar_rows.xml
index daaa38e4d9..c1810026b7 100644
--- a/java/res/xml-sw768dp/kbd_ar_rows.xml
+++ b/java/res/xml-sw768dp/kbd_ar_rows.xml
@@ -27,12 +27,12 @@
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
-        latin:keyWidth="7.579%p"
+        latin:keyWidth="7.375%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
+            latin:keyWidth="7.500%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="ض" />
@@ -61,17 +61,17 @@
             latin:popupCharacters="ج,چ" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyXPos="-9.219%p"
+            latin:keyXPos="-11.500%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="7.500%p"
+        latin:keyWidth="7.375%p"
     >
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="9.219%p"
+            latin:keyWidth="9.375%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="Ø´" />
@@ -101,16 +101,16 @@
             latin:keyLabel="Ø·" />
         <Key
             latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-15.704%p"
+            latin:keyXPos="-9.375%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="7.500%p"
+        latin:keyWidth="7.375%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="9.219%p"
+            latin:keyWidth="12.750%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="ئ" />
@@ -135,11 +135,6 @@
             latin:keyLabel="ظ" />
         <Key
             latin:keyLabel="د" />
-        <Key
-            latin:keyStyle="shiftKeyStyle"
-            latin:keyXPos="-13.750%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
     </Row>
     <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </merge>
diff --git a/java/res/xml-sw768dp/kbd_iw_rows.xml b/java/res/xml-sw768dp/kbd_iw_rows.xml
index 33263f576c..5275a1f158 100644
--- a/java/res/xml-sw768dp/kbd_iw_rows.xml
+++ b/java/res/xml-sw768dp/kbd_iw_rows.xml
@@ -24,12 +24,11 @@
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
-        latin:keyWidth="8.282%p"
+        latin:keyWidth="8.000%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="," />
@@ -53,17 +52,17 @@
             latin:keyLabel="פ" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyXPos="-9.219%p"
+            latin:keyXPos="-12.000%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="8.125%p"
+        latin:keyWidth="8.000%p"
     >
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="10.167%p"
+            latin:keyWidth="9.600%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="ש" />
@@ -90,16 +89,16 @@
             latin:keyLabel="×£" />
         <Key
             latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-15.704%p"
+            latin:keyXPos="-10.400%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="8.047%p"
+        latin:keyWidth="8.000%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="13.829%p"
+            latin:keyWidth="13.200%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="×–"
@@ -123,11 +122,6 @@
         <Key
             latin:keyLabel="×¥"
             latin:popupCharacters="ץ,ץ׳" />
-        <Key
-            latin:keyStyle="shiftKeyStyle"
-            latin:keyXPos="-13.750%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
     </Row>
     <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </merge>
diff --git a/java/res/xml-sw768dp/kbd_number.xml b/java/res/xml-sw768dp/kbd_number.xml
index 01c41a50c7..faab38ade6 100644
--- a/java/res/xml-sw768dp/kbd_number.xml
+++ b/java/res/xml-sw768dp/kbd_number.xml
@@ -24,7 +24,7 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
@@ -43,7 +43,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"
@@ -54,7 +54,7 @@
                     latin:keyStyle="num3KeyStyle" />
                 <Key
                     latin:keyStyle="deleteKeyStyle"
-                    latin:keyXPos="-9.219%p"
+                    latin:keyXPos="-11.172%p"
                     latin:keyWidth="fillRight"
                     latin:keyEdgeFlags="right" />
             </Row>
@@ -68,7 +68,7 @@
                     latin:keyStyle="num6KeyStyle" />
                 <Key
                     latin:keyStyle="returnKeyStyle"
-                    latin:keyXPos="-15.704%p"
+                    latin:keyXPos="-11.172%p"
                     latin:keyWidth="fillRight"
                     latin:keyEdgeFlags="right" />
             </Row>
@@ -102,7 +102,7 @@
                 <Key
                     latin:keyStyle="tabKeyStyle"
                     latin:keyLabelOption="alignLeft"
-                    latin:keyWidth="7.969%p"
+                    latin:keyWidth="11.172%p"
                     latin:keyEdgeFlags="left" />
                 <Key
                     latin:keyLabel="-"
@@ -116,14 +116,14 @@
                     latin:keyWidth="8.047%p" />
                 <Key
                     latin:keyLabel="1"
-                    latin:keyXPos="45.000%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="fillRight"
                     latin:keyEdgeFlags="right" />
             </Row>
@@ -140,14 +140,14 @@
                     latin:keyWidth="8.047%p" />
                 <Key
                     latin:keyLabel="4"
-                    latin:keyXPos="45.000%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="fillRight"
                     latin:keyEdgeFlags="right" />
             </Row>
@@ -167,7 +167,7 @@
                     latin:keyWidth="8.047%p" />
                 <Key
                     latin:keyLabel="7"
-                    latin:keyXPos="45.000%p" />
+                    latin:keyXPos="43.125%p" />
                 <Key
                     latin:keyLabel="8" />
                 <Key
@@ -191,7 +191,7 @@
                     latin:keyWidth="24.140%p" />
                 <Key
                     latin:keyLabel="*"
-                    latin:keyXPos="45.000%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 583239afb0..51627aa6a2 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -24,7 +24,7 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
@@ -39,7 +39,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 '+'. -->
@@ -54,14 +54,14 @@
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num1KeyStyle"
-            latin:keyXPos="45.000%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="fillRight"
             latin:keyEdgeFlags="right" />
     </Row>
@@ -83,14 +83,14 @@
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num4KeyStyle"
-            latin:keyXPos="45.000%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="fillRight"
             latin:keyEdgeFlags="right" />
     </Row>
@@ -110,7 +110,7 @@
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num7KeyStyle"
-            latin:keyXPos="45.000%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num8KeyStyle" />
         <Key
@@ -133,7 +133,7 @@
             latin:keyWidth="16.084%p" />
         <Key
             latin:keyStyle="numStarKeyStyle"
-            latin:keyXPos="45.000%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 714e5e5f36..b086b4137f 100644
--- a/java/res/xml-sw768dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -24,7 +24,7 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
@@ -39,7 +39,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"
@@ -58,14 +58,14 @@
              char '-' and '+'. -->
         <Key
             latin:keyStyle="num1KeyStyle"
-            latin:keyXPos="45.000%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="fillRight"
             latin:keyEdgeFlags="right" />
     </Row>
@@ -91,14 +91,14 @@
              char ',' and '.'. -->
         <Key
             latin:keyStyle="num4KeyStyle"
-            latin:keyXPos="45.000%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="fillRight"
             latin:keyEdgeFlags="right" />
     </Row>
@@ -122,7 +122,7 @@
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyStyle="num7KeyStyle"
-            latin:keyXPos="45.000%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num8KeyStyle" />
         <Key
@@ -145,7 +145,7 @@
             latin:keyWidth="24.140%p" />
         <Key
             latin:keyStyle="numStarKeyStyle"
-            latin:keyXPos="45.000%p" />
+            latin:keyXPos="43.125%p" />
         <Key
             latin:keyStyle="num0KeyStyle" />
         <Key
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row3.xml b/java/res/xml-sw768dp/kbd_qwerty_row3.xml
index 7d59dfb9eb..7297ea512c 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row3.xml
@@ -46,30 +46,8 @@
             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>
+        <include
+            latin:keyboardLayout="@xml/kbd_row3_right2" />
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyXPos="-13.750%p"
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
index a2e4f1f4a8..0e71cbfd41 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
@@ -26,7 +26,9 @@
         latin:keyWidth="8.047%p"
     >
         <switch>
-            <case latin:hasSettingsKey="true">
+            <case
+                latin:hasSettingsKey="true"
+            >
                 <Key
                     latin:keyStyle="settingsKeyStyle"
                     latin:keyWidth="8.047%p" />
@@ -37,11 +39,16 @@
             latin:keyWidth="fillRight" />
         <switch>
             <case
-                latin:languageCode="ru"
+                latin:mode="url"
             >
+                <Key
+                    latin:keyStyle="comKeyStyle"
+                    latin:keyWidth="16.084%p" />
+            </case>
+            <default>
                 <switch>
                     <case
-                        latin:mode="email|url"
+                        latin:mode="email"
                     >
                         <Key
                             latin:keyStyle="comKeyStyle" />
@@ -68,16 +75,6 @@
                         <Key
                             latin:keyLabel="\@" />
                     </case>
-                    <case
-                        latin:mode="url"
-                    >
-                        <Key
-                            latin:keyLabel="-"
-                            latin:manualTemporaryUpperCaseCode="95"
-                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
-                            latin:popupCharacters="_" />
-                    </case>
                     <default>
                         <Key
                             latin:keyLabel="/"
@@ -87,58 +84,6 @@
                             latin:popupCharacters="\@" />
                     </default>
                 </switch>
-            </case>
-            <!-- not languageCode="ru" -->
-            <default>
-                <switch>
-                    <case
-                        latin:mode="url"
-                    >
-                        <Key
-                            latin:keyStyle="comKeyStyle"
-                            latin:keyWidth="16.084%p" />
-                    </case>
-                    <default>
-                        <switch>
-                            <case
-                                latin:mode="email"
-                            >
-                                <Key
-                                    latin:keyStyle="comKeyStyle" />
-                            </case>
-                            <case
-                                latin:imeAction="actionSearch"
-                            >
-                                <Key
-                                    latin:keyLabel=":"
-                                    latin:manualTemporaryUpperCaseCode="43"
-                                    latin:keyHintIcon="@drawable/key_hint_plus_holo"
-                                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
-                                    latin:popupCharacters="+" />
-                            </case>
-                            <default>
-                                <Key
-                                    latin:keyStyle="smileyKeyStyle" />
-                            </default>
-                        </switch>
-                        <switch>
-                            <case
-                                latin:mode="email"
-                            >
-                                <Key
-                                    latin:keyLabel="\@" />
-                            </case>
-                            <default>
-                                <Key
-                                    latin:keyLabel="/"
-                                    latin:manualTemporaryUpperCaseCode="64"
-                                    latin:keyHintIcon="@drawable/key_hint_at_holo"
-                                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
-                                    latin:popupCharacters="\@" />
-                            </default>
-                        </switch>
-                    </default>
-                </switch>
             </default>
         </switch>
         <Key
@@ -147,95 +92,44 @@
             latin:keyWidth="37.500%p" />
         <switch>
             <case
-                latin:languageCode="ru"
+                latin:mode="email"
             >
-                <switch>
-                    <case
-                        latin:mode="email"
-                    >
-                        <Key
-                            latin:keyLabel="-" />
-                    </case>
-                    <case
-                        latin:mode="url"
-                    >
-                        <Key
-                            latin:keyLabel="/"
-                            latin:manualTemporaryUpperCaseCode="58"
-                            latin:keyHintIcon="@drawable/key_hint_colon_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
-                            latin:popupCharacters=":" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:keyLabel="\?"
-                            latin:manualTemporaryUpperCaseCode="95"
-                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
-                            latin:popupCharacters="_" />
-                    </default>
-                </switch>
-                <switch>
-                    <case
-                        latin:mode="email"
-                    >
-                        <Key
-                            latin:keyLabel="_" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:keyLabel="!"
-                            latin:manualTemporaryUpperCaseCode="34"
-                            latin:keyHintIcon="@drawable/key_hint_quote_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
-                            latin:popupCharacters="\'" />
-                    </default>
-                </switch>
+                <Key
+                    latin:keyLabel="-" />
+            </case>
+            <case
+                latin:mode="url"
+            >
+                <Key
+                    latin:keyLabel="/"
+                    latin:manualTemporaryUpperCaseCode="58"
+                    latin:keyHintIcon="@drawable/key_hint_colon_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+                    latin:popupCharacters=":" />
             </case>
-            <!-- not languageCode="ru" -->
             <default>
-                <switch>
-                    <case
-                        latin:mode="email"
-                    >
-                        <Key
-                            latin:keyLabel="-" />
-                    </case>
-                    <case
-                        latin:mode="url"
-                    >
-                        <Key
-                            latin:keyLabel="/"
-                            latin:manualTemporaryUpperCaseCode="58"
-                            latin:keyHintIcon="@drawable/key_hint_colon_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
-                            latin:popupCharacters=":" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:keyLabel="\'"
-                            latin:manualTemporaryUpperCaseCode="34"
-                            latin:keyHintIcon="@drawable/key_hint_quote_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
-                            latin:popupCharacters="&quot;" />
-                    </default>
-                </switch>
-                <switch>
-                    <case
-                        latin:mode="email"
-                    >
-                        <Key
-                            latin:keyLabel="_" />
-                    </case>
-                    <default>
-                        <Key
-                            latin:keyLabel="-"
-                            latin:manualTemporaryUpperCaseCode="95"
-                            latin:keyHintIcon="@drawable/key_hint_underline_holo"
-                            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
-                            latin:popupCharacters="_" />
-                    </default>
-                </switch>
+                <Key
+                    latin:keyLabel="\'"
+                    latin:manualTemporaryUpperCaseCode="34"
+                    latin:keyHintIcon="@drawable/key_hint_quote_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+                    latin:popupCharacters="&quot;" />
+            </default>
+        </switch>
+        <switch>
+            <case
+                latin:mode="email"
+            >
+                <Key
+                    latin:keyLabel="_" />
+            </case>
+            <default>
+                <Key
+                    latin:keyLabel="-"
+                    latin:manualTemporaryUpperCaseCode="95"
+                    latin:keyHintIcon="@drawable/key_hint_underline_holo"
+                    latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+                    latin:popupCharacters="_" />
             </default>
         </switch>
         <switch>
diff --git a/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml
index b8875282ce..7e9f604f53 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml
@@ -24,12 +24,12 @@
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
-        latin:keyWidth="7.579%p"
+        latin:keyWidth="7.375%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
+            latin:keyWidth="7.500%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="q"
@@ -65,17 +65,17 @@
             latin:keyLabel="Ã¥" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyXPos="-9.219%p"
+            latin:keyXPos="-11.500%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="7.500%p"
+        latin:keyWidth="7.375%p"
     >
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
+            latin:keyWidth="9.375%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="a"
@@ -109,12 +109,43 @@
             latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" />
         <Key
             latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-15.704%p"
+            latin:keyXPos="-9.375%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/kbd_qwerty_row3" />
+    <Row
+        latin:keyWidth="7.375%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="12.750%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="z"
+            latin:popupCharacters="@string/alternates_for_z" />
+        <Key
+            latin:keyLabel="x" />
+        <Key
+            latin:keyLabel="c"
+            latin:popupCharacters="@string/alternates_for_c" />
+        <Key
+            latin:keyLabel="v"
+            latin:popupCharacters="@string/alternates_for_v" />
+        <Key
+            latin:keyLabel="b" />
+        <Key
+            latin:keyLabel="n"
+            latin:popupCharacters="@string/alternates_for_n" />
+        <Key
+            latin:keyLabel="m" />
+        <include
+            latin:keyboardLayout="@xml/kbd_row3_right2" />
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyXPos="-12.750%p"
+            latin:keyWidth="fillRight"
+            latin:keyEdgeFlags="right" />
+    </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </merge>
diff --git a/java/res/xml-sw768dp/kbd_row3_right2.xml b/java/res/xml-sw768dp/kbd_row3_right2.xml
new file mode 100644
index 0000000000..1759ea1928
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_row3_right2.xml
@@ -0,0 +1,48 @@
+<?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="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>
+</merge>
diff --git a/java/res/xml-sw768dp/kbd_ru_rows.xml b/java/res/xml-sw768dp/kbd_ru_rows.xml
index 3849141e45..ee91481c13 100644
--- a/java/res/xml-sw768dp/kbd_ru_rows.xml
+++ b/java/res/xml-sw768dp/kbd_ru_rows.xml
@@ -25,12 +25,11 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <!-- This row is intentionally not marked as a top row -->
     <Row
-        latin:keyWidth="7.579%p"
+        latin:keyWidth="7.125%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="й" />
@@ -55,19 +54,20 @@
             latin:keyLabel="з" />
         <Key
             latin:keyLabel="Ñ…" />
+        <Key
+            latin:keyLabel="ÑŠ" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyXPos="-9.219%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="7.500%p"
+        latin:keyWidth="7.125%p"
     >
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="9.219%p"
+            latin:keyWidth="9.375%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="Ñ„" />
@@ -93,16 +93,16 @@
             latin:keyLabel="э" />
         <Key
             latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-15.704%p"
+            latin:keyXPos="-9.375%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="7.500%p"
+        latin:keyWidth="7.125%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="12.400%p"
+            latin:keyWidth="12.750%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="я" />
@@ -117,21 +117,15 @@
         <Key
             latin:keyLabel="Ñ‚" />
         <Key
-            latin:keyLabel="ь"
-            latin:popupCharacters="@string/alternates_for_cyrillic_soft_sign" />
+            latin:keyLabel="ь" />
         <Key
             latin:keyLabel="б" />
         <Key
             latin:keyLabel="ÑŽ" />
-        <Key
-            latin:keyLabel="."
-            latin:manualTemporaryUpperCaseCode="44"
-            latin:keyHintIcon="@drawable/key_hint_comma_holo"
-            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_comma_large_holo"
-            latin:popupCharacters="," />
+        <include
+            latin:keyboardLayout="@xml/kbd_row3_right2" />
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyXPos="-13.750%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
diff --git a/java/res/xml-sw768dp/kbd_sr_rows.xml b/java/res/xml-sw768dp/kbd_sr_rows.xml
index fbf1e9b842..4997dabb94 100644
--- a/java/res/xml-sw768dp/kbd_sr_rows.xml
+++ b/java/res/xml-sw768dp/kbd_sr_rows.xml
@@ -25,12 +25,11 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <!-- This row is intentionally not marked as a top row -->
     <Row
-        latin:keyWidth="7.579%p"
+        latin:keyWidth="7.125%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="Ñ™" />
@@ -55,18 +54,19 @@
         <Key
             latin:keyLabel="ш" />
         <Key
-            latin:keyStyle="deleteKeyStyle"
-            latin:keyXPos="-9.219%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyLabel="Ñ’" />
+        <Key
+            latin:keyLabel="ж"
+            latin:keyWidth="fillRight"
+            latin:keyEdgeFlags="right"/>
     </Row>
     <Row
-        latin:keyWidth="7.500%p"
+        latin:keyWidth="7.250%p"
     >
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="9.219%p"
+            latin:keyWidth="11.172%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="а" />
@@ -91,17 +91,17 @@
         <Key
             latin:keyLabel="Ñ›" />
         <Key
-            latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-15.704%p"
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyXPos="-9.219%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="7.500%p"
+        latin:keyWidth="7.250%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="9.219%p"
+            latin:keyWidth="13.829%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="Ñ•" />
@@ -117,26 +117,12 @@
             latin:keyLabel="н" />
         <Key
             latin:keyLabel="м" />
+        <include
+            latin:keyboardLayout="@xml/kbd_row3_right2" />
         <Key
-            latin:keyLabel="Ñ’" />
-        <Key
-            latin:keyLabel="ж" />
-        <Key
-            latin:keyLabel=","
-            latin:manualTemporaryUpperCaseCode="33"
-            latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
-            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
-            latin:popupCharacters="!" />
-        <Key
-            latin:keyLabel="."
-            latin:manualTemporaryUpperCaseCode="63"
-            latin:keyHintIcon="@drawable/key_hint_question_holo"
-            latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
-            latin:popupCharacters="\?" />
-        <Key
-            latin:keyStyle="shiftKeyStyle"
+            latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-13.750%p"
-            latin:keyWidth="fillBoth"
+            latin:keyWidth="fillRight"
             latin:keyEdgeFlags="right" />
     </Row>
     <include
diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_symbols.xml
index 26cf1ac705..5b359bfbfa 100644
--- a/java/res/xml-sw768dp/kbd_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_symbols.xml
@@ -72,7 +72,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-9.219%p"
-            latin:keyWidth="fillBoth"
+            latin:keyWidth="fillRight"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
@@ -130,12 +130,6 @@
             latin:keyLabel="="
             latin:popupCharacters="≠,≈" />
         <switch>
-            <case
-                latin:languageCode="ru"
-            >
-                <Key
-                    latin:keyLabel=":" />
-            </case>
             <case
                 latin:mode="url"
             >
@@ -150,36 +144,16 @@
         </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:keyLabel="," />
+        <Key
+            latin:keyLabel="." />
+        <Key
+            latin:keyLabel="!"
+            latin:popupCharacters="¡" />
+        <Key
+            latin:keyLabel="\?"
+            latin:popupCharacters="¿" />
         <Key
             latin:keyStyle="moreKeyStyle"
             latin:keyXPos="-13.750%p"
@@ -191,7 +165,9 @@
         latin:keyWidth="8.047%p"
     >
         <switch>
-            <case latin:hasSettingsKey="true">
+            <case
+                latin:hasSettingsKey="true"
+            >
                 <Key
                     latin:keyStyle="settingsKeyStyle"
                     latin:keyWidth="8.047%p" />
@@ -206,25 +182,13 @@
             latin:keyStyle="spaceKeyStyle"
             latin:keyXPos="31.250%p"
             latin:keyWidth="37.500%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>
+        <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. -->
+        <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" -->
+        <Key
+            latin:keyLabel="&quot;"
+            latin:popupCharacters="“,”,«,»,‘,’,‚,‛" />
+        <Key
+            latin:keyLabel="_" />
         <switch>
             <case
                 latin:voiceKeyEnabled="true"
diff --git a/java/res/xml/kbd_iw_rows.xml b/java/res/xml/kbd_iw_rows.xml
index af017ad6f1..c3c8f7d3ea 100644
--- a/java/res/xml/kbd_iw_rows.xml
+++ b/java/res/xml/kbd_iw_rows.xml
@@ -27,6 +27,7 @@
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
+        latin:keyWidth="10%p"
         latin:rowEdgeFlags="top"
     >
         <Key
@@ -53,7 +54,9 @@
             latin:visualInsetsLeft="1%p"
             latin:keyEdgeFlags="right" />
     </Row>
-    <Row>
+    <Row
+        latin:keyWidth="10%p"
+    >
         <Key
             latin:keyLabel="ש"
             latin:keyEdgeFlags="left" />
@@ -78,7 +81,9 @@
             latin:keyWidth="fillRight"
             latin:keyEdgeFlags="right" />
     </Row>
-    <Row>
+    <Row
+        latin:keyWidth="10%p"
+    >
         <Key
             latin:keyLabel="×–"
             latin:keyXPos="5%p"
diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index fd43740a73..f0c1fa7fc3 100644
--- a/java/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -24,7 +24,6 @@
     latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
     latin:minKeyboardHeight="@fraction/minKeyboardHeight"
     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"
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
index 6408f3e146..c2db62a1c7 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
@@ -619,7 +619,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;
     }
 
     private void endKeyboard(int defaultVerticalGap) {
-- 
GitLab