Merge "Remove Key edge flags from XML"
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 16ff507..d79338a 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -175,13 +175,6 @@
         <attr name="popupCharacters" format="string" />
         <!-- Maximum column of popup keyboard -->
         <attr name="maxPopupKeyboardColumn" format="integer" />
-        <!-- Key edge flags. -->
-        <attr name="keyEdgeFlags" format="integer">
-            <!-- Key is anchored to the left of the keyboard. -->
-            <flag name="left" value="1" />
-            <!-- Key is anchored to the right of the keyboard. -->
-            <flag name="right" value="2" />
-        </attr>
         <!-- Whether this is a functional key which has different key top than normal key. -->
         <attr name="isFunctional" format="boolean" />
         <!-- Whether this is a toggle key. -->
@@ -248,16 +241,6 @@
         <attr name="keyXPos" format="dimension|fraction" />
     </declare-styleable>
 
-    <declare-styleable name="Keyboard_Row">
-        <!-- Row edge flags. -->
-        <attr name="rowEdgeFlags" format="integer">
-            <!-- Row is anchored to the top of the keyboard. -->
-            <flag name="top" value="4" />
-            <!-- Row is anchored to the bottom of the keyboard. -->
-            <flag name="bottom" value="8" />
-        </attr>
-    </declare-styleable>
-
     <declare-styleable name="Keyboard_Include">
         <attr name="keyboardLayout" format="reference" />
     </declare-styleable>
diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml
index b3a1010..46114de 100644
--- a/java/res/xml-sw600dp/kbd_number.xml
+++ b/java/res/xml-sw600dp/kbd_number.xml
@@ -30,11 +30,12 @@
         <case
             latin:passwordInput="true"
         >
-            <!-- This row is intentionally not marked as a top row -->
             <Row>
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="24.875%p" />
                 <Key
-                    latin:keyStyle="num1KeyStyle"
-                    latin:keyXPos="24.875%p" />
+                    latin:keyStyle="num1KeyStyle" />
                 <Key
                     latin:keyStyle="num2KeyStyle" />
                 <Key
@@ -42,13 +43,14 @@
                 <Key
                     latin:keyStyle="deleteKeyStyle"
                     latin:keyXPos="-11.00%p"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
             <Row>
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="24.875%p" />
                 <Key
-                    latin:keyStyle="num4KeyStyle"
-                    latin:keyXPos="24.875%p" />
+                    latin:keyStyle="num4KeyStyle" />
                 <Key
                     latin:keyStyle="num5KeyStyle" />
                 <Key
@@ -56,24 +58,26 @@
                 <Key
                     latin:keyStyle="returnKeyStyle"
                     latin:keyXPos="-11.00%p"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
             <Row>
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="24.875%p" />
                 <Key
-                    latin:keyStyle="num7KeyStyle"
-                    latin:keyXPos="24.875%p" />
+                    latin:keyStyle="num7KeyStyle" />
                 <Key
                     latin:keyStyle="num8KeyStyle" />
                 <Key
                     latin:keyStyle="num9KeyStyle" />
+                <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+                <Spacer
+                    latin:keyWidth="0%p" />
             </Row>
-            <!-- This row is intentionally not marked as a bottom row -->
             <Row>
                 <Key
                     latin:keyStyle="tabKeyStyle"
-                    latin:keyWidth="11.00%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="11.00%p" />
                 <Spacer
                     latin:keyXPos="24.875%p" />
                 <Key
@@ -87,12 +91,13 @@
         </case>
         <!-- latin:passwordInput="false" -->
         <default>
-            <!-- This row is intentionally not marked as a top row -->
             <Row>
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="11.00%p" />
                 <Key
                     latin:keyLabel="-"
                     latin:keyStyle="numKeyStyle"
-                    latin:keyXPos="11.00%p"
                     latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel="+"
@@ -115,13 +120,14 @@
                 <Key
                     latin:keyStyle="deleteKeyStyle"
                     latin:keyXPos="-11.00%p"
-                    latin:keyWidth="fillBoth"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillBoth" />
             </Row>
             <Row>
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="11.00%p" />
                 <Key
                     latin:keyStyle="numStarKeyStyle"
-                    latin:keyXPos="11.00%p"
                     latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel="/"
@@ -144,17 +150,15 @@
                 <Key
                     latin:keyStyle="returnKeyStyle"
                     latin:keyXPos="-11.00%p"
-                    latin:keyWidth="fillBoth"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillBoth" />
             </Row>
             <Row>
-                <!-- There is an empty area below the "More" key and left of the "(" key. To
-                     ignore the touch event on the area, "(" is intentionally not marked as a left
-                     edge key. -->
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="11.00%p" />
                 <Key
                     latin:keyLabel="("
                     latin:keyStyle="numKeyStyle"
-                    latin:keyXPos="11.00%p"
                     latin:keyWidth="9.25%p" />
                 <Key
                     latin:keyLabel=")"
@@ -174,13 +178,14 @@
                 <Key
                     latin:keyLabel="9"
                     latin:keyStyle="numKeyStyle" />
+                <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+                <Spacer
+                    latin:keyWidth="0%p" />
             </Row>
-            <!-- This row is intentionally not marked as a bottom row -->
             <Row>
                 <Key
                     latin:keyStyle="tabKeyStyle"
-                    latin:keyWidth="11.00%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="11.00%p" />
                 <Key
                     latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
                     latin:keyWidth="27.75%p" />
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index dd53a20..7b584c1 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -26,12 +26,13 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_numkey_styles" />
-    <!-- This row is intentionally not marked as a top row -->
     <Row>
+        <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+        <Spacer
+            latin:keyWidth="15.625%p" />
         <Key
             latin:keyLabel="-"
             latin:keyStyle="numKeyStyle"
-            latin:keyXPos="15.625%p"
             latin:keyWidth="9.25%p" />
         <Key
             latin:keyLabel="+"
@@ -47,14 +48,15 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-11.00%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row>
+        <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+        <Spacer
+            latin:keyWidth="15.625%p" />
         <Key
             latin:keyLabel=","
             latin:keyStyle="numKeyStyle"
-            latin:keyXPos="15.625%p"
             latin:keyWidth="9.25%p" />
         <Key
             latin:keyLabel="."
@@ -70,16 +72,12 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-11.00%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row>
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="11.0%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. -->
+            latin:keyWidth="11.0%p" />
         <Key
             latin:keyLabel="("
             latin:keyStyle="numKeyStyle"
@@ -96,13 +94,14 @@
             latin:keyStyle="num8KeyStyle" />
         <Key
             latin:keyStyle="num9KeyStyle" />
+        <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+        <Spacer
+            latin:keyWidth="0%p" />
         </Row>
-    <!-- This row is intentionally not marked as a bottom row -->
     <Row>
         <Key
             latin:keyStyle="tabKeyStyle"
-            latin:keyWidth="11.00%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.00%p" />
         <Key
             latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
             latin:keyXPos="15.625%p"
diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml
index d083ecb..4839645 100644
--- a/java/res/xml-sw600dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -26,12 +26,13 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_numkey_styles" />
-    <!-- This row is intentionally not marked as a top row -->
     <Row>
+        <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+        <Spacer
+            latin:keyWidth="11.00%p" />
         <Key
             latin:keyLabel="-"
             latin:keyStyle="numKeyStyle"
-            latin:keyXPos="11.00%p"
             latin:keyWidth="9.25%p" />
         <Key
             latin:keyLabel="+"
@@ -51,14 +52,15 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-11.00%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row>
+        <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+        <Spacer
+            latin:keyWidth="11.00%p" />
         <Key
             latin:keyLabel=","
             latin:keyStyle="numKeyStyle"
-            latin:keyXPos="11.00%p"
             latin:keyWidth="9.25%p" />
         <Key
             latin:keyLabel="."
@@ -78,16 +80,12 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-11.00%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row>
         <Key
             latin:keyStyle="moreKeyStyle"
-            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. -->
+            latin:keyWidth="11.00%p" />
         <Key
             latin:keyLabel="("
             latin:keyStyle="numKeyStyle"
@@ -107,13 +105,14 @@
             latin:keyStyle="num8KeyStyle" />
         <Key
             latin:keyStyle="num9KeyStyle" />
+        <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+        <Spacer
+            latin:keyWidth="0%p" />
     </Row>
-    <!-- This row is intentionally not marked as a bottom row -->
     <Row>
         <Key
             latin:keyStyle="tabKeyStyle"
-            latin:keyWidth="11.00%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.00%p" />
         <Key
             latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
             latin:keyWidth="27.75%p" />
diff --git a/java/res/xml-sw600dp/kbd_qwerty_f2.xml b/java/res/xml-sw600dp/kbd_qwerty_f2.xml
index 7638ee4..3ea1180 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_f2.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_f2.xml
@@ -27,8 +27,7 @@
         >
             <Key
                 latin:keyStyle="settingsKeyStyle"
-                latin:keyWidth="fillBoth"
-                latin:keyEdgeFlags="right" />
+                latin:keyWidth="fillBoth" />
         </case>
         <case
             latin:f2KeyMode="shortcutIme"
@@ -39,8 +38,7 @@
                 >
                     <Key
                         latin:keyStyle="shortcutKeyStyle"
-                        latin:keyWidth="fillBoth"
-                        latin:keyEdgeFlags="right" />
+                        latin:keyWidth="fillBoth" />
                 </case>
                 <!-- voiceKeyEnabled="false" -->
                 <default>
@@ -57,15 +55,13 @@
                 >
                     <Key
                         latin:keyStyle="shortcutKeyStyle"
-                        latin:keyWidth="fillBoth"
-                        latin:keyEdgeFlags="right" />
+                        latin:keyWidth="fillBoth" />
                 </case>
                 <!-- voiceKeyEnabled="false" -->
                 <default>
                     <Key
                         latin:keyStyle="settingsKeyStyle"
-                        latin:keyWidth="fillBoth"
-                        latin:keyEdgeFlags="right" />
+                        latin:keyWidth="fillBoth" />
                 </default>
             </switch>
         </case>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row1.xml b/java/res/xml-sw600dp/kbd_qwerty_row1.xml
index b781d68..c7dfcc8 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row1.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row1.xml
@@ -23,12 +23,10 @@
 >
     <Row
         latin:keyWidth="9.0%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="q"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_q" />
         <Key
             latin:keyLabel="w"
             latin:popupCharacters="@string/alternates_for_w" />
@@ -59,7 +57,6 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row2.xml b/java/res/xml-sw600dp/kbd_qwerty_row2.xml
index 05b005a..78004fe 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row2.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row2.xml
@@ -27,8 +27,7 @@
         <Key
             latin:keyLabel="a"
             latin:popupCharacters="@string/alternates_for_a"
-            latin:keyXPos="4.5%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyXPos="4.5%p" />
         <Key
             latin:keyLabel="s"
             latin:popupCharacters="@string/alternates_for_s" />
@@ -53,7 +52,6 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-14.6%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row3.xml b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
index b4eed8a..456f3c8 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
@@ -26,8 +26,7 @@
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="10.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="10.0%p" />
         <Key
             latin:keyLabel="z"
             latin:popupCharacters="@string/alternates_for_z" />
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
index 5cd47d9..f22b69f 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
@@ -21,15 +21,13 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <!-- This row is intentionally not marked as a bottom row -->
     <Row
         latin:keyWidth="8.9%p"
     >
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="13.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="13.0%p" />
         <Key
             latin:keyStyle="tabKeyStyle" />
         <switch>
diff --git a/java/res/xml-sw600dp/kbd_row3_smiley.xml b/java/res/xml-sw600dp/kbd_row3_smiley.xml
index 5e9584f..0ae3ae4 100644
--- a/java/res/xml-sw600dp/kbd_row3_smiley.xml
+++ b/java/res/xml-sw600dp/kbd_row3_smiley.xml
@@ -28,8 +28,7 @@
             <Key
                 latin:keyLabel="\@"
                 latin:keyXPos="-8.9%p"
-                latin:keyWidth="fillBoth"
-                latin:keyEdgeFlags="right" />
+                latin:keyWidth="fillBoth" />
         </case>
         <case
             latin:mode="url"
@@ -40,8 +39,7 @@
                 latin:keyHintLabel="_"
                 latin:popupCharacters="_"
                 latin:keyXPos="-8.9%p"
-                latin:keyWidth="fillBoth"
-                latin:keyEdgeFlags="right" />
+                latin:keyWidth="fillBoth" />
         </case>
         <case
             latin:imeAction="actionSearch"
@@ -52,15 +50,13 @@
                 latin:keyHintLabel="+"
                 latin:popupCharacters="+"
                 latin:keyXPos="-8.9%p"
-                latin:keyWidth="fillBoth"
-                latin:keyEdgeFlags="right" />
+                latin:keyWidth="fillBoth" />
         </case>
         <default>
             <Key
                 latin:keyStyle="smileyKeyStyle"
                 latin:keyXPos="-8.9%p"
-                latin:keyWidth="fillBoth"
-                latin:keyEdgeFlags="right" />
+                latin:keyWidth="fillBoth" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_rows_arabic.xml b/java/res/xml-sw600dp/kbd_rows_arabic.xml
index 4c19094..4c20f51 100644
--- a/java/res/xml-sw600dp/kbd_rows_arabic.xml
+++ b/java/res/xml-sw600dp/kbd_rows_arabic.xml
@@ -27,8 +27,7 @@
         latin:keyWidth="8.0%p"
     >
         <Key
-            latin:keyLabel="ض"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="ض" />
         <Key
             latin:keyLabel="ص" />
         <Key
@@ -57,8 +56,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.0%p"
@@ -105,8 +103,7 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-14.6%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.0%p"
@@ -117,8 +114,7 @@
                 latin:mode="email"
             >
                 <Key
-                    latin:keyLabel="\@"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyLabel="\@" />
             </case>
             <case
                 latin:mode="url"
@@ -127,8 +123,7 @@
                     latin:keyLabel="-"
                     latin:keyLabelOption="hasUppercaseLetter"
                     latin:keyHintLabel="_"
-                    latin:popupCharacters="_"
-                    latin:keyEdgeFlags="left" />
+                    latin:popupCharacters="_" />
             </case>
             <case
                 latin:imeAction="actionSearch"
@@ -137,13 +132,11 @@
                     latin:keyLabel=":"
                     latin:keyLabelOption="hasUppercaseLetter"
                     latin:keyHintLabel="+"
-                    latin:popupCharacters="+"
-                    latin:keyEdgeFlags="left" />
+                    latin:popupCharacters="+" />
             </case>
             <default>
                 <Key
-                    latin:keyStyle="smileyKeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="smileyKeyStyle" />
             </default>
         </switch>
         <Key
diff --git a/java/res/xml-sw600dp/kbd_rows_azerty.xml b/java/res/xml-sw600dp/kbd_rows_azerty.xml
index 698ef22..406b4e6 100644
--- a/java/res/xml-sw600dp/kbd_rows_azerty.xml
+++ b/java/res/xml-sw600dp/kbd_rows_azerty.xml
@@ -25,12 +25,10 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="8.5%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="a"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_a" />
         <Key
             latin:keyLabel="z"
             latin:popupCharacters="@string/alternates_for_z" />
@@ -61,8 +59,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.5%p"
@@ -70,8 +67,7 @@
         <Key
             latin:keyLabel="q"
             latin:popupCharacters="@string/alternates_for_q"
-            latin:keyXPos="5.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyXPos="5.0%p" />
         <Key
             latin:keyLabel="s"
             latin:popupCharacters="@string/alternates_for_s" />
@@ -98,16 +94,14 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-14.6%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.5%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="10.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="10.0%p" />
         <Key
             latin:keyLabel="w"
             latin:popupCharacters="@string/alternates_for_w" />
diff --git a/java/res/xml-sw600dp/kbd_rows_hebrew.xml b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
index 8740915..fc2247c 100644
--- a/java/res/xml-sw600dp/kbd_rows_hebrew.xml
+++ b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
@@ -25,7 +25,6 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="9.0%p"
-        latin:rowEdgeFlags="top"
     >
         <include
             latin:keyboardLayout="@xml/kbd_row4_apostrophe_dash" />
@@ -48,8 +47,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-12.000%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="9.0%p"
@@ -89,8 +87,7 @@
             >
                 <Key
                     latin:keyLabel="\@"
-                    latin:keyWidth="10.0%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="10.0%p" />
             </case>
             <case
                 latin:mode="url"
@@ -100,8 +97,7 @@
                     latin:keyLabelOption="hasUppercaseLetter"
                     latin:keyHintLabel="_"
                     latin:popupCharacters="_"
-                    latin:keyWidth="10.0%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="10.0%p" />
             </case>
             <case
                 latin:imeAction="actionSearch"
@@ -111,14 +107,12 @@
                     latin:keyLabelOption="hasUppercaseLetter"
                     latin:keyHintLabel="+"
                     latin:popupCharacters="+"
-                    latin:keyWidth="10.0%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="10.0%p" />
             </case>
             <default>
                 <Key
                     latin:keyStyle="smileyKeyStyle"
-                    latin:keyWidth="10.0%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="10.0%p" />
             </default>
         </switch>
         <Key
@@ -146,8 +140,7 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-10.400%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_rows_qwertz.xml b/java/res/xml-sw600dp/kbd_rows_qwertz.xml
index 7ec895e..3d177e7 100644
--- a/java/res/xml-sw600dp/kbd_rows_qwertz.xml
+++ b/java/res/xml-sw600dp/kbd_rows_qwertz.xml
@@ -25,12 +25,10 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="9.0%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="q"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_q" />
         <Key
             latin:keyLabel="w"
             latin:popupCharacters="@string/alternates_for_w" />
@@ -61,8 +59,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row2" />
@@ -71,8 +68,7 @@
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="10.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="10.0%p" />
         <Key
             latin:keyLabel="y"
             latin:popupCharacters="@string/alternates_for_y" />
diff --git a/java/res/xml-sw600dp/kbd_rows_russian.xml b/java/res/xml-sw600dp/kbd_rows_russian.xml
index 4452989..7588f6c 100644
--- a/java/res/xml-sw600dp/kbd_rows_russian.xml
+++ b/java/res/xml-sw600dp/kbd_rows_russian.xml
@@ -25,11 +25,9 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="7.60%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
-            latin:keyLabel="й"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="й" />
         <Key
             latin:keyLabel="ц" />
         <Key
@@ -56,8 +54,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.60%p"
@@ -88,15 +85,13 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-14.6%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.60%p"
     >
         <Key
-            latin:keyStyle="shiftKeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="shiftKeyStyle" />
         <Key
             latin:keyLabel="я" />
         <Key
diff --git a/java/res/xml-sw600dp/kbd_rows_scandinavian.xml b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
index 5ac2b36..5059137 100644
--- a/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
+++ b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
@@ -25,12 +25,10 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="7.9%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="q"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_q" />
         <Key
             latin:keyLabel="w"
             latin:popupCharacters="@string/alternates_for_w" />
@@ -63,8 +61,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.9%p"
@@ -72,8 +69,7 @@
         <Key
             latin:keyLabel="a"
             latin:keyXPos="3.5%p"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_a" />
         <Key
             latin:keyLabel="s"
             latin:popupCharacters="@string/alternates_for_s" />
@@ -104,16 +100,14 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-14.6%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.9%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="10.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="10.0%p" />
         <Spacer
             latin:keyWidth="4.35%p" />
         <Key
diff --git a/java/res/xml-sw600dp/kbd_rows_serbian.xml b/java/res/xml-sw600dp/kbd_rows_serbian.xml
index 5d39fd4..db7560c 100644
--- a/java/res/xml-sw600dp/kbd_rows_serbian.xml
+++ b/java/res/xml-sw600dp/kbd_rows_serbian.xml
@@ -25,12 +25,10 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="8.0%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="љ"
-            latin:keyXPos="2.15%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyXPos="2.15%p" />
         <Key
             latin:keyLabel="њ" />
         <Key
@@ -54,15 +52,13 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.9%p"
     >
         <Key
-            latin:keyLabel="а"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="а" />
         <Key
             latin:keyLabel="с" />
         <Key
@@ -86,16 +82,14 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-14.6%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.5%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="8.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="8.0%p" />
         <Key
             latin:keyLabel="ѕ" />
         <Key
diff --git a/java/res/xml-sw600dp/kbd_rows_spanish.xml b/java/res/xml-sw600dp/kbd_rows_spanish.xml
index 7ef44bb..49243eb 100644
--- a/java/res/xml-sw600dp/kbd_rows_spanish.xml
+++ b/java/res/xml-sw600dp/kbd_rows_spanish.xml
@@ -31,8 +31,7 @@
         <Key
             latin:keyLabel="a"
             latin:popupCharacters="@string/alternates_for_a"
-            latin:keyXPos="5.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyXPos="5.0%p" />
         <Key
             latin:keyLabel="s"
             latin:popupCharacters="@string/alternates_for_s" />
@@ -59,8 +58,7 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-14.6%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row3" />
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 03d37b0..fc89cd3 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -25,14 +25,12 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_currency_key_styles" />
-    <!-- This row is intentionally not marked as a top row -->
     <Row
         latin:keyWidth="9.0%p"
     >
         <Key
             latin:keyLabel="@string/keylabel_for_symbols_1"
-            latin:popupCharacters="@string/alternates_for_symbols_1"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_symbols_1" />
         <Key
             latin:keyLabel="@string/keylabel_for_symbols_2"
             latin:popupCharacters="@string/alternates_for_symbols_2" />
@@ -63,8 +61,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="9.0%p"
@@ -97,16 +94,14 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-14.6%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.9%p"
     >
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="10.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="10.0%p" />
         <Key
             latin:keyLabel="&lt;"
             latin:popupCharacters="≤,«,‹" />
@@ -147,15 +142,13 @@
             latin:keyLabel="/"
             latin:keyWidth="fillRight" />
     </Row>
-    <!-- This row is intentionally not marked as a bottom row -->
     <Row
         latin:keyWidth="8.9%p"
     >
         <Key
             latin:keyStyle="toAlphaKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="13.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="13.0%p" />
         <Key
             latin:keyStyle="tabKeyStyle" />
         <Key
diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_symbols_shift.xml
index b25292f..99b78a4 100644
--- a/java/res/xml-sw600dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw600dp/kbd_symbols_shift.xml
@@ -23,7 +23,6 @@
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
-    <!-- This row is intentionally not marked as a top row -->
     <Row
         latin:keyWidth="9.0%p"
     >
@@ -60,8 +59,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="9.0%p"
@@ -97,16 +95,14 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-14.6%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.9%p"
     >
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="10.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="10.0%p" />
         <Key
             latin:keyLabel="\\" />
         <Key
@@ -132,15 +128,13 @@
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="¿" />
     </Row>
-    <!-- This row is intentionally not marked as a bottom row -->
     <Row
         latin:keyWidth="8.9%p"
     >
         <Key
             latin:keyStyle="toAlphaKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="13.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="13.0%p" />
         <Key
             latin:keyStyle="tabKeyStyle" />
         <Key
diff --git a/java/res/xml-sw768dp/kbd_number.xml b/java/res/xml-sw768dp/kbd_number.xml
index a3bed2f..1706eaa 100644
--- a/java/res/xml-sw768dp/kbd_number.xml
+++ b/java/res/xml-sw768dp/kbd_number.xml
@@ -30,13 +30,11 @@
         <case
             latin:passwordInput="true"
         >
-            <!-- This row is intentionally not marked as a top row -->
             <Row>
                 <Key
                     latin:keyStyle="tabKeyStyle"
                     latin:keyLabelOption="alignLeft"
-                    latin:keyWidth="11.172%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="11.172%p" />
                 <Key
                     latin:keyStyle="num1KeyStyle"
                     latin:keyXPos="32.076%p" />
@@ -47,13 +45,14 @@
                 <Key
                     latin:keyStyle="deleteKeyStyle"
                     latin:keyXPos="-11.172%p"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
             <Row>
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="32.076%p" />
                 <Key
-                    latin:keyStyle="num4KeyStyle"
-                    latin:keyXPos="32.076%p" />
+                    latin:keyStyle="num4KeyStyle" />
                 <Key
                     latin:keyStyle="num5KeyStyle" />
                 <Key
@@ -61,41 +60,39 @@
                 <Key
                     latin:keyStyle="returnKeyStyle"
                     latin:keyXPos="-11.172%p"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
             <Row>
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="32.076%p" />
                 <Key
-                    latin:keyStyle="num7KeyStyle"
-                    latin:keyXPos="32.076%p" />
+                    latin:keyStyle="num7KeyStyle" />
                 <Key
                     latin:keyStyle="num8KeyStyle" />
                 <Key
                     latin:keyStyle="num9KeyStyle" />
-                <!-- There is an empty area below the "Enter" key and right of the "9" key. To
-                     ignore the touch event on the area, "9" is intentionally not marked as a right
-                     edge key. -->
+                <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+                <Spacer
+                    latin:keyWidth="0%p" />
             </Row>
-            <!-- This row is intentionally not marked as a bottom row -->
             <Row>
                 <Spacer
                     latin:keyXPos="32.076%p" />
                 <Key
                     latin:keyStyle="num0KeyStyle" />
-                <!-- There is an empty area below the "Enter" key and right of the "#" key. To
-                     ignore the touch event on the area, "#" is intentionally not marked as a right
-                     edge key. -->
+                <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+                <Spacer
+                    latin:keyWidth="0%p" />
             </Row>
         </case>
         <!-- latin:passwordInput="false" -->
         <default>
-            <!-- This row is intentionally not marked as a top row -->
             <Row>
                 <Key
                     latin:keyStyle="tabKeyStyle"
                     latin:keyLabelOption="alignLeft"
-                    latin:keyWidth="11.172%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="11.172%p" />
                 <Key
                     latin:keyLabel="-"
                     latin:keyStyle="numKeyStyle"
@@ -122,13 +119,14 @@
                 <Key
                     latin:keyStyle="deleteKeyStyle"
                     latin:keyXPos="-11.172%p"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
             <Row>
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="13.829%p" />
                 <Key
                     latin:keyStyle="numStarKeyStyle"
-                    latin:keyXPos="13.829%p"
                     latin:keyWidth="8.047%p" />
                 <Key
                     latin:keyLabel="/"
@@ -151,17 +149,15 @@
                 <Key
                     latin:keyStyle="returnKeyStyle"
                     latin:keyXPos="-11.172%p"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
             <Row>
-                <!-- There is an empty area below the "More" key and left of the "(" key. To
-                     ignore the touch event on the area, "(" is intentionally not marked as a left
-                     edge key. -->
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="13.829%p" />
                 <Key
                     latin:keyLabel="("
                     latin:keyStyle="numKeyStyle"
-                    latin:keyXPos="13.829%p"
                     latin:keyWidth="8.047%p" />
                 <Key
                     latin:keyLabel=")"
@@ -181,11 +177,10 @@
                 <Key
                     latin:keyLabel="9"
                     latin:keyStyle="numKeyStyle" />
-                <!-- There is an empty area below the "Enter" key and right of the "9" key. To
-                     ignore the touch event on the area, "9" is intentionally not marked as a right
-                     edge key. -->
+                <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+                <Spacer
+                    latin:keyWidth="0%p" />
             </Row>
-            <!-- This row is intentionally not marked as a bottom row -->
             <Row>
                 <switch>
                     <case latin:hasSettingsKey="true">
@@ -193,6 +188,11 @@
                             latin:keyStyle="settingsKeyStyle"
                             latin:keyWidth="8.047%p" />
                     </case>
+                    <default>
+                        <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                        <Spacer
+                            latin:keyWidth="8.047%p" />
+                    </default>
                 </switch>
                 <Key
                     latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
@@ -216,6 +216,11 @@
                             latin:keyXPos="-8.047%p"
                             latin:keyWidth="fillRight" />
                     </case>
+                    <default>
+                        <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+                        <Spacer
+                            latin:keyWidth="0%p" />
+                    </default>
                 </switch>
             </Row>
         </default>
diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index 0935992..945b641 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -26,13 +26,11 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_numkey_styles" />
-    <!-- This row is intentionally not marked as a top row -->
     <Row>
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="11.172%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.172%p" />
         <Key
             latin:keyLabel="-"
             latin:keyStyle="numKeyStyle"
@@ -52,14 +50,12 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-11.172%p"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="11.172%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.172%p" />
         <Key
             latin:keyLabel=","
             latin:keyStyle="numKeyStyle"
@@ -79,16 +75,15 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-11.172%p"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
-        <!-- There is an empty area below the "More" key and left of the "(" key.  To ignore
-             the touch event on the area, "(" is intentionally not marked as a left edge key. -->
+        <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+        <Spacer
+            latin:keyWidth="20.400%p" />
         <Key
             latin:keyLabel="("
             latin:keyStyle="numKeyStyle"
-            latin:keyXPos="20.400%p"
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyLabel=")"
@@ -101,10 +96,10 @@
             latin:keyStyle="num8KeyStyle" />
         <Key
             latin:keyStyle="num9KeyStyle" />
-        <!-- There is an empty area below the "Enter" key and right of the "9" key.  To ignore
-             the touch event on the area, "9" is intentionally not marked as a right edge key. -->
+        <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+        <Spacer
+            latin:keyWidth="0%p" />
         </Row>
-    <!-- This row is intentionally not marked as a bottom row -->
     <Row>
         <switch>
             <case latin:hasSettingsKey="true">
@@ -112,6 +107,11 @@
                     latin:keyStyle="settingsKeyStyle"
                     latin:keyWidth="8.047%p" />
             </case>
+            <default>
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="8.047%p" />
+            </default>
         </switch>
         <Key
             latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
@@ -134,6 +134,11 @@
                     latin:keyXPos="-8.047%p"
                     latin:keyWidth="fillRight" />
             </case>
+            <default>
+                <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+                <Spacer
+                    latin:keyWidth="0%p" />
+            </default>
         </switch>
     </Row>
 </Keyboard>
diff --git a/java/res/xml-sw768dp/kbd_phone_symbols.xml b/java/res/xml-sw768dp/kbd_phone_symbols.xml
index 6ee57d6..693400e 100644
--- a/java/res/xml-sw768dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -26,13 +26,11 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_numkey_styles" />
-    <!-- This row is intentionally not marked as a top row -->
     <Row>
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="11.172%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.172%p" />
         <Key
             latin:keyLabel="-"
             latin:keyStyle="numKeyStyle"
@@ -56,14 +54,12 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-11.172%p"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="11.172%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.172%p" />
         <Key
             latin:keyLabel=","
             latin:keyStyle="numKeyStyle"
@@ -87,16 +83,15 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-11.172%p"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
-        <!-- There is an empty area below the "More" key and left of the "(" key.  To ignore
-             the touch event on the area, "(" is intentionally not marked as a left edge key. -->
+        <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+        <Spacer
+            latin:keyWidth="13.829%p" />
         <Key
             latin:keyLabel="("
             latin:keyStyle="numKeyStyle"
-            latin:keyXPos="13.829%p"
             latin:keyWidth="8.047%p" />
         <Key
             latin:keyLabel=")"
@@ -113,10 +108,10 @@
             latin:keyStyle="num8KeyStyle" />
         <Key
             latin:keyStyle="num9KeyStyle" />
-        <!-- There is an empty area below the "Enter" key and right of the "9" key.  To ignore
-             the touch event on the area, "9" is intentionally not marked as a right edge key. -->
+        <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+        <Spacer
+            latin:keyWidth="0%p" />
     </Row>
-    <!-- This row is intentionally not marked as a bottom row -->
     <Row>
         <switch>
             <case latin:hasSettingsKey="true">
@@ -124,6 +119,11 @@
                     latin:keyStyle="settingsKeyStyle"
                     latin:keyWidth="8.047%p" />
             </case>
+            <default>
+                <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+                <Spacer
+                    latin:keyWidth="8.047%p" />
+            </default>
         </switch>
         <Key
             latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
@@ -146,6 +146,11 @@
                     latin:keyXPos="-8.047%p"
                     latin:keyWidth="fillRight" />
             </case>
+            <default>
+                <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+                <Spacer
+                    latin:keyWidth="0%p" />
+            </default>
         </switch>
     </Row>
 </Keyboard>
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row1.xml b/java/res/xml-sw768dp/kbd_qwerty_row1.xml
index 3727cf3..0fdb463 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row1.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row1.xml
@@ -21,15 +21,13 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <!-- This row is intentionally not marked as a top row -->
     <Row
         latin:keyWidth="8.282%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="7.969%p" />
         <Key
             latin:keyLabel="q"
             latin:popupCharacters="@string/alternates_for_q" />
@@ -63,7 +61,6 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-9.219%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth"/>
     </Row>
 </merge>
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row2.xml b/java/res/xml-sw768dp/kbd_qwerty_row2.xml
index 45af120..7f7dd57 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row2.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row2.xml
@@ -27,8 +27,7 @@
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="11.172%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.172%p"/>
         <Key
             latin:keyLabel="a"
             latin:popupCharacters="@string/alternates_for_a" />
@@ -56,7 +55,6 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-15.704%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row3.xml b/java/res/xml-sw768dp/kbd_qwerty_row3.xml
index 9041a77..677235f 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row3.xml
@@ -26,8 +26,7 @@
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="13.829%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="13.829%p"/>
         <Key
             latin:keyLabel="z"
             latin:popupCharacters="@string/alternates_for_z" />
@@ -51,7 +50,6 @@
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyXPos="-13.750%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
index 48201c9..d463de9 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
@@ -21,7 +21,6 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <!-- This row is intentionally not marked as a bottom row -->
     <Row
         latin:keyWidth="8.047%p"
     >
diff --git a/java/res/xml-sw768dp/kbd_rows_arabic.xml b/java/res/xml-sw768dp/kbd_rows_arabic.xml
index f3283ae..2f10d54 100644
--- a/java/res/xml-sw768dp/kbd_rows_arabic.xml
+++ b/java/res/xml-sw768dp/kbd_rows_arabic.xml
@@ -29,8 +29,7 @@
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.500%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="7.500%p" />
         <Key
             latin:keyLabel="ض" />
         <Key
@@ -61,8 +60,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-11.500%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.375%p"
@@ -70,8 +68,7 @@
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="9.375%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="9.375%p" />
         <Key
             latin:keyLabel="ش" />
         <Key
@@ -113,8 +110,7 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-9.375%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.375%p"
diff --git a/java/res/xml-sw768dp/kbd_rows_azerty.xml b/java/res/xml-sw768dp/kbd_rows_azerty.xml
index 373bda9..7aec0d1 100644
--- a/java/res/xml-sw768dp/kbd_rows_azerty.xml
+++ b/java/res/xml-sw768dp/kbd_rows_azerty.xml
@@ -29,8 +29,7 @@
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="7.969%p" />
         <Key
             latin:keyLabel="a"
             latin:popupCharacters="@string/alternates_for_a" />
@@ -64,8 +63,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-9.219%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.125%p"
@@ -73,8 +71,7 @@
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="10.167%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="10.167%p" />
         <Key
             latin:keyLabel="q"
             latin:popupCharacters="@string/alternates_for_q" />
@@ -100,21 +97,18 @@
             latin:keyLabel="l"
             latin:popupCharacters="@string/alternates_for_l" />
         <Key
-            latin:keyLabel="m"
-            latin:keyEdgeFlags="right" />
+            latin:keyLabel="m" />
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-15.704%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.047%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="13.829%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="13.829%p" />
         <Key
             latin:keyLabel="w"
             latin:popupCharacters="@string/alternates_for_w" />
@@ -161,8 +155,7 @@
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyXPos="-13.750%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw768dp/kbd_rows_hebrew.xml b/java/res/xml-sw768dp/kbd_rows_hebrew.xml
index 0ef68b6..bacc6a1 100644
--- a/java/res/xml-sw768dp/kbd_rows_hebrew.xml
+++ b/java/res/xml-sw768dp/kbd_rows_hebrew.xml
@@ -29,8 +29,7 @@
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="7.969%p" />
         <include
             latin:keyboardLayout="@xml/kbd_row4_apostrophe_dash" />
         <Key
@@ -52,8 +51,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-12.000%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.125%p"
@@ -61,8 +59,7 @@
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="11.172%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.172%p" />
         <Key
             latin:keyLabel="ש" />
         <Key
@@ -116,8 +113,7 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-10.400%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw768dp/kbd_rows_qwertz.xml b/java/res/xml-sw768dp/kbd_rows_qwertz.xml
index 6567c31..5556d1f 100644
--- a/java/res/xml-sw768dp/kbd_rows_qwertz.xml
+++ b/java/res/xml-sw768dp/kbd_rows_qwertz.xml
@@ -29,8 +29,7 @@
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="7.969%p" />
         <Key
             latin:keyLabel="q"
             latin:popupCharacters="@string/alternates_for_q" />
@@ -64,8 +63,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-9.219%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row2" />
@@ -74,8 +72,7 @@
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="13.829%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="13.829%p" />
         <Key
             latin:keyLabel="y"
             latin:popupCharacters="@string/alternates_for_y" />
@@ -119,8 +116,7 @@
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyXPos="-13.750%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
    <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw768dp/kbd_rows_russian.xml b/java/res/xml-sw768dp/kbd_rows_russian.xml
index 35b2c8a..82ceaea 100644
--- a/java/res/xml-sw768dp/kbd_rows_russian.xml
+++ b/java/res/xml-sw768dp/kbd_rows_russian.xml
@@ -23,14 +23,12 @@
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
-    <!-- This row is intentionally not marked as a top row -->
     <Row
         latin:keyWidth="7.125%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
-            latin:keyLabelOption="alignLeft"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabelOption="alignLeft" />
         <Key
             latin:keyLabel="й" />
         <Key
@@ -58,8 +56,7 @@
             latin:keyLabel="ъ" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.125%p"
@@ -67,8 +64,7 @@
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="9.375%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="9.375%p" />
         <Key
             latin:keyLabel="ф" />
         <Key
@@ -94,16 +90,14 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-9.375%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.125%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="12.750%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="12.750%p" />
         <Key
             latin:keyLabel="я" />
         <Key
@@ -126,8 +120,7 @@
             latin:keyboardLayout="@xml/kbd_row3_comma_period" />
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw768dp/kbd_rows_scandinavian.xml b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
index c20dcee..743c6bd 100644
--- a/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
+++ b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
@@ -29,8 +29,7 @@
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.500%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="7.500%p" />
         <Key
             latin:keyLabel="q"
             latin:popupCharacters="@string/alternates_for_q" />
@@ -66,8 +65,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-11.500%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.375%p"
@@ -75,8 +73,7 @@
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="9.375%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="9.375%p" />
         <Key
             latin:keyLabel="a"
             latin:popupCharacters="@string/alternates_for_a" />
@@ -110,16 +107,14 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-9.375%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.375%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="12.750%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="12.750%p" />
         <Key
             latin:keyLabel="z"
             latin:popupCharacters="@string/alternates_for_z" />
@@ -143,8 +138,7 @@
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyXPos="-12.750%p"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw768dp/kbd_rows_serbian.xml b/java/res/xml-sw768dp/kbd_rows_serbian.xml
index f1576de..c07176e 100644
--- a/java/res/xml-sw768dp/kbd_rows_serbian.xml
+++ b/java/res/xml-sw768dp/kbd_rows_serbian.xml
@@ -23,14 +23,12 @@
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
-    <!-- This row is intentionally not marked as a top row -->
     <Row
         latin:keyWidth="7.125%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
-            latin:keyLabelOption="alignLeft"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabelOption="alignLeft" />
         <Key
             latin:keyLabel="љ" />
         <Key
@@ -57,8 +55,7 @@
             latin:keyLabel="ђ" />
         <Key
             latin:keyLabel="ж"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right"/>
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="7.250%p"
@@ -66,8 +63,7 @@
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="11.172%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.172%p" />
         <Key
             latin:keyLabel="а" />
         <Key
@@ -93,16 +89,14 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-9.219%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="7.250%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="13.829%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="13.829%p" />
         <Key
             latin:keyLabel="ѕ" />
         <Key
@@ -122,8 +116,7 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-13.750%p"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw768dp/kbd_rows_spanish.xml b/java/res/xml-sw768dp/kbd_rows_spanish.xml
index 300592e..510cafb 100644
--- a/java/res/xml-sw768dp/kbd_rows_spanish.xml
+++ b/java/res/xml-sw768dp/kbd_rows_spanish.xml
@@ -31,8 +31,7 @@
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="10.167%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="10.167%p" />
         <Key
             latin:keyLabel="a"
             latin:popupCharacters="@string/alternates_for_a" />
@@ -62,8 +61,7 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-15.704%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row3" />
diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_symbols.xml
index 44ee2fd..ba0715c 100644
--- a/java/res/xml-sw768dp/kbd_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_symbols.xml
@@ -25,15 +25,13 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_currency_key_styles" />
-    <!-- This row is intentionally not marked as a top row -->
     <Row
         latin:keyWidth="8.282%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="7.969%p" />
         <Key
             latin:keyLabel="@string/keylabel_for_symbols_1"
             latin:popupCharacters="@string/alternates_for_symbols_1" />
@@ -67,8 +65,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-9.219%p"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.125%p"
@@ -76,8 +73,7 @@
         <Key
             latin:keyStyle="toAlphaKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="11.172%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.172%p" />
         <Key
             latin:keyLabel="#" />
         <Key
@@ -105,16 +101,14 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-15.704%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.047%p"
     >
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="13.829%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="13.829%p" />
         <Key
             latin:keyLabel="&lt;"
             latin:popupCharacters="≤,«,‹" />
@@ -154,10 +148,8 @@
         <Key
             latin:keyStyle="moreKeyStyle"
             latin:keyXPos="-13.750%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
-    <!-- This row is intentionally not marked as a bottom row -->
     <Row
         latin:keyWidth="8.047%p"
     >
diff --git a/java/res/xml-sw768dp/kbd_symbols_shift.xml b/java/res/xml-sw768dp/kbd_symbols_shift.xml
index b368141..1ddd64b 100644
--- a/java/res/xml-sw768dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw768dp/kbd_symbols_shift.xml
@@ -23,15 +23,13 @@
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
-    <!-- This row is intentionally not marked as a top row -->
     <Row
         latin:keyWidth="8.282%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="7.969%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="7.969%p" />
         <Key
             latin:keyLabel="~" />
         <Key
@@ -65,8 +63,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-9.219%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.125%p"
@@ -74,8 +71,7 @@
         <Key
             latin:keyStyle="toAlphaKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="11.172%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.172%p" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="£" />
@@ -106,16 +102,14 @@
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-15.704%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
     <Row
         latin:keyWidth="8.047%p"
     >
         <Key
             latin:keyStyle="moreKeyStyle"
-            latin:keyWidth="13.829%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="13.829%p" />
         <Key
             latin:keyLabel="\\" />
         <Key
@@ -143,10 +137,8 @@
         <Key
             latin:keyStyle="moreKeyStyle"
             latin:keyXPos="-13.750%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillBoth" />
     </Row>
-    <!-- This row is intentionally not marked as a bottom row -->
     <Row
         latin:keyWidth="8.047%p"
     >
diff --git a/java/res/xml/kbd_number.xml b/java/res/xml/kbd_number.xml
index 4d7b6d9..aabf0eb 100644
--- a/java/res/xml/kbd_number.xml
+++ b/java/res/xml/kbd_number.xml
@@ -30,12 +30,9 @@
         <case
             latin:passwordInput="true"
         >
-            <Row
-                latin:rowEdgeFlags="top"
-            >
+            <Row>
                 <Key
-                    latin:keyStyle="num1KeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="num1KeyStyle" />
                 <Key
                     latin:keyStyle="num2KeyStyle" />
                 <Key
@@ -43,8 +40,7 @@
             </Row>
             <Row>
                 <Key
-                    latin:keyStyle="num4KeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="num4KeyStyle" />
                 <Key
                     latin:keyStyle="num5KeyStyle" />
                 <Key
@@ -52,39 +48,31 @@
             </Row>
             <Row>
                 <Key
-                    latin:keyStyle="num7KeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="num7KeyStyle" />
                 <Key
                     latin:keyStyle="num8KeyStyle" />
                 <Key
                     latin:keyStyle="num9KeyStyle" />
                 <Key
                     latin:keyStyle="deleteKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
-            <Row
-                latin:rowEdgeFlags="bottom"
-            >
+            <Row>
                 <Spacer />
                 <Key
                     latin:keyStyle="num0KeyStyle" />
                 <Spacer />
                 <Key
                     latin:keyStyle="returnKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
         </case>
         <!-- latin:passwordInput="false" -->
         <default>
-            <Row
-                latin:rowEdgeFlags="top"
-            >
+            <Row>
                 <Key
                     latin:keyLabel="1"
-                    latin:keyStyle="numKeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="numKeyStyle" />
                 <Key
                     latin:keyLabel="2"
                     latin:keyStyle="numKeyStyle" />
@@ -94,14 +82,12 @@
                 <Key
                     latin:keyLabel="-"
                     latin:keyStyle="numFunctionalKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
             <Row>
                 <Key
                     latin:keyLabel="4"
-                    latin:keyStyle="numKeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="numKeyStyle" />
                 <Key
                     latin:keyLabel="5"
                     latin:keyStyle="numKeyStyle" />
@@ -111,14 +97,12 @@
                 <Key
                     latin:keyLabel=","
                     latin:keyStyle="numFunctionalKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
             <Row>
                 <Key
                     latin:keyLabel="7"
-                    latin:keyStyle="numKeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="numKeyStyle" />
                 <Key
                     latin:keyLabel="8"
                     latin:keyStyle="numKeyStyle"/>
@@ -127,15 +111,11 @@
                     latin:keyStyle="numKeyStyle" />
                 <Key
                     latin:keyStyle="deleteKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
-            <Row
-                latin:rowEdgeFlags="bottom"
-            >
+            <Row>
                 <Key
-                    latin:keyStyle="numSpaceKeyStyle"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyStyle="numSpaceKeyStyle" />
                 <Key
                     latin:keyLabel="0"
                     latin:keyStyle="numKeyStyle" />
@@ -144,8 +124,7 @@
                     latin:keyStyle="numKeyStyle" />
                 <Key
                     latin:keyStyle="returnKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </Row>
         </default>
     </switch>
diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml
index c6508fb..4588ab2 100644
--- a/java/res/xml/kbd_phone.xml
+++ b/java/res/xml/kbd_phone.xml
@@ -26,12 +26,9 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_numkey_styles" />
-    <Row
-        latin:rowEdgeFlags="top"
-    >
+    <Row>
         <Key
-            latin:keyStyle="num1KeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="num1KeyStyle" />
         <Key
             latin:keyStyle="num2KeyStyle" />
         <Key
@@ -39,13 +36,11 @@
         <Key
             latin:keyLabel="-"
             latin:keyStyle="numFunctionalKeyStyle"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
         <Key
-            latin:keyStyle="num4KeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="num4KeyStyle" />
         <Key
             latin:keyStyle="num5KeyStyle" />
         <Key
@@ -53,35 +48,28 @@
         <Key
             latin:keyLabel="."
             latin:keyStyle="numFunctionalKeyStyle"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
         <Key
-            latin:keyStyle="num7KeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="num7KeyStyle" />
         <Key
             latin:keyStyle="num8KeyStyle" />
         <Key
             latin:keyStyle="num9KeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
-    <Row
-        latin:rowEdgeFlags="bottom"
-    >
+    <Row>
         <Key
-            latin:keyStyle="numSwitchToAltKeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="numSwitchToAltKeyStyle" />
         <Key
             latin:keyStyle="num0KeyStyle" />
         <Key
             latin:keyStyle="numSpaceKeyStyle" />
         <Key
             latin:keyStyle="returnKeyStyle"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index 5d99122..89a9bd0 100644
--- a/java/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
@@ -26,13 +26,10 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_numkey_styles" />
-    <Row
-        latin:rowEdgeFlags="top"
-    >
+    <Row>
         <Key
             latin:keyLabel="("
-            latin:keyStyle="numKeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="numKeyStyle" />
         <Key
             latin:keyLabel="/"
             latin:keyStyle="numKeyStyle" />
@@ -42,13 +39,11 @@
         <Key
             latin:keyLabel="-"
             latin:keyStyle="numFunctionalKeyStyle"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
         <Key
-            latin:keyLabel="N"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="N" />
         <!-- Pause is a comma. Check PhoneNumberUtils.java to see if this 
             has changed. -->
         <Key
@@ -61,13 +56,11 @@
         <Key
             latin:keyLabel="."
             latin:keyStyle="numFunctionalKeyStyle"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
         <Key
-            latin:keyStyle="numStarKeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="numStarKeyStyle" />
         <!-- Wait is a semicolon. -->
         <Key
             latin:code="59"
@@ -78,15 +71,11 @@
             latin:keyStyle="numKeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
-    <Row
-        latin:rowEdgeFlags="bottom"
-    >
+    <Row>
         <Key
-            latin:keyStyle="numSwitchToNumericKeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="numSwitchToNumericKeyStyle" />
         <Key
             latin:keyLabel="+"
             latin:keyStyle="numKeyStyle" />
@@ -94,7 +83,6 @@
             latin:keyStyle="numSpaceKeyStyle" />
         <Key
             latin:keyStyle="returnKeyStyle"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml/kbd_qwerty_row1.xml b/java/res/xml/kbd_qwerty_row1.xml
index cfd2efd..daa1382 100644
--- a/java/res/xml/kbd_qwerty_row1.xml
+++ b/java/res/xml/kbd_qwerty_row1.xml
@@ -23,13 +23,11 @@
 >
     <Row
         latin:keyWidth="10%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="q"
             latin:keyHintLabel="1"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_q" />
         <Key
             latin:keyLabel="w"
             latin:keyHintLabel="2"
@@ -66,7 +64,6 @@
             latin:keyLabel="p"
             latin:keyHintLabel="0"
             latin:popupCharacters="@string/alternates_for_p"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
 </merge>
diff --git a/java/res/xml/kbd_qwerty_row2.xml b/java/res/xml/kbd_qwerty_row2.xml
index 57bbad7..6e4872e 100644
--- a/java/res/xml/kbd_qwerty_row2.xml
+++ b/java/res/xml/kbd_qwerty_row2.xml
@@ -27,8 +27,7 @@
         <Key
             latin:keyLabel="a"
             latin:popupCharacters="@string/alternates_for_a"
-            latin:keyXPos="5%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyXPos="5%p" />
         <Key
             latin:keyLabel="s"
             latin:popupCharacters="@string/alternates_for_s" />
@@ -49,8 +48,7 @@
             latin:popupCharacters="@string/alternates_for_k" />
         <Key
             latin:keyLabel="l"
-            latin:popupCharacters="@string/alternates_for_l"
-            latin:keyEdgeFlags="right" />
+            latin:popupCharacters="@string/alternates_for_l" />
         <!-- Here is 5%p space -->
     </Row>
 </merge>
diff --git a/java/res/xml/kbd_qwerty_row3.xml b/java/res/xml/kbd_qwerty_row3.xml
index 98f0404..6a20355 100644
--- a/java/res/xml/kbd_qwerty_row3.xml
+++ b/java/res/xml/kbd_qwerty_row3.xml
@@ -27,8 +27,7 @@
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="15%p"
-            latin:visualInsetsRight="1%p"
-            latin:keyEdgeFlags="left" />
+            latin:visualInsetsRight="1%p" />
         <Key
             latin:keyLabel="z"
             latin:popupCharacters="@string/alternates_for_z" />
@@ -50,7 +49,6 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillBoth"
-            latin:visualInsetsLeft="1%p"
-            latin:keyEdgeFlags="right" />
+            latin:visualInsetsLeft="1%p" />
     </Row>
 </merge>
diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml
index 298f0f6..771333c 100644
--- a/java/res/xml/kbd_qwerty_row4.xml
+++ b/java/res/xml/kbd_qwerty_row4.xml
@@ -23,7 +23,6 @@
 >
     <Row
         latin:keyWidth="10%p"
-        latin:rowEdgeFlags="bottom"
     >
         <switch>
             <case
@@ -31,8 +30,7 @@
             >
                 <Key
                     latin:keyStyle="toSymbolKeyStyle"
-                    latin:keyWidth="13.75%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="13.75%p" />
                 <Key
                     latin:keyStyle="settingsKeyStyle"
                     latin:keyWidth="9.2%p" />
@@ -49,8 +47,7 @@
             <default>
                 <Key
                     latin:keyStyle="toSymbolKeyStyle"
-                    latin:keyWidth="15%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="15%p" />
                 <include
                     latin:keyboardLayout="@xml/kbd_qwerty_f1" />
                 <Key
@@ -66,14 +63,12 @@
             >
                 <Key
                     latin:keyStyle="smileyKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </case>
             <default>
                 <Key
                     latin:keyStyle="returnKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </default>
         </switch>
     </Row>
diff --git a/java/res/xml/kbd_rows_arabic.xml b/java/res/xml/kbd_rows_arabic.xml
index 07e6274..e9de4ad 100644
--- a/java/res/xml/kbd_rows_arabic.xml
+++ b/java/res/xml/kbd_rows_arabic.xml
@@ -29,8 +29,7 @@
         <Key
             latin:keyLabel="ض"
             latin:keyHintLabel="1"
-            latin:popupCharacters="1,١"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="1,١" />
         <Key
             latin:keyLabel="ص"
             latin:keyHintLabel="2"
@@ -71,15 +70,13 @@
             latin:keyLabel="ج"
             latin:keyHintLabel="0"
             latin:popupCharacters="0,٠,\u0686"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="10%p"
     >
         <Key
-            latin:keyLabel="ش"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="ش" />
         <Key
             latin:keyLabel="س" />
         <!-- \u0626: ARABIC LETTER YEH WITH HAMZA ABOVE
@@ -119,16 +116,14 @@
         <Key
             latin:keyLabel="ك"
             latin:popupCharacters="گ"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="10%p"
     >
         <Key
             latin:keyLabel="ظ"
-            latin:keyXPos="5.0%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyXPos="5.0%p" />
         <Key
             latin:keyLabel="ط" />
         <Key
@@ -148,8 +143,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight"
-            latin:visualInsetsLeft="1%p"
-            latin:keyEdgeFlags="right" />
+            latin:visualInsetsLeft="1%p" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml/kbd_rows_azerty.xml b/java/res/xml/kbd_rows_azerty.xml
index 96efb66..dbf25eb 100644
--- a/java/res/xml/kbd_rows_azerty.xml
+++ b/java/res/xml/kbd_rows_azerty.xml
@@ -25,13 +25,11 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="10%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="a"
             latin:keyHintLabel="1"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_a" />
         <Key
             latin:keyLabel="z"
             latin:keyHintLabel="2"
@@ -68,16 +66,14 @@
             latin:keyLabel="p"
             latin:keyHintLabel="0"
             latin:popupCharacters="@string/alternates_for_p"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="10%p"
     >
         <Key
             latin:keyLabel="q"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_q" />
         <Key
             latin:keyLabel="s"
             latin:popupCharacters="@string/alternates_for_s" />
@@ -101,8 +97,7 @@
             latin:popupCharacters="@string/alternates_for_l" />
         <Key
             latin:keyLabel="m"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="10%p"
@@ -110,8 +105,7 @@
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="15%p"
-            latin:visualInsetsRight="1%p"
-            latin:keyEdgeFlags="left" />
+            latin:visualInsetsRight="1%p" />
         <Key
             latin:keyLabel="w"
             latin:popupCharacters="@string/alternates_for_w" />
@@ -135,8 +129,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight"
-            latin:visualInsetsLeft="1%p"
-            latin:keyEdgeFlags="right" />
+            latin:visualInsetsLeft="1%p" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml/kbd_rows_hebrew.xml b/java/res/xml/kbd_rows_hebrew.xml
index af34885..1ec0768 100644
--- a/java/res/xml/kbd_rows_hebrew.xml
+++ b/java/res/xml/kbd_rows_hebrew.xml
@@ -25,12 +25,10 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="10%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="ק"
-            latin:keyXPos="5%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyXPos="5%p" />
         <Key
             latin:keyLabel="ר" />
         <Key
@@ -48,15 +46,13 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight"
-            latin:visualInsetsLeft="1%p"
-            latin:keyEdgeFlags="right" />
+            latin:visualInsetsLeft="1%p" />
     </Row>
     <Row
         latin:keyWidth="10%p"
     >
         <Key
-            latin:keyLabel="ש"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="ש" />
         <Key
             latin:keyLabel="ד" />
         <Key
@@ -78,8 +74,7 @@
             latin:keyLabel="ך" />
         <Key
             latin:keyLabel="ף"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="10%p"
@@ -87,8 +82,7 @@
         <Key
             latin:keyLabel="ז"
             latin:popupCharacters="ז׳"
-            latin:keyXPos="5%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyXPos="5%p" />
         <Key
             latin:keyLabel="ס" />
         <Key
@@ -107,8 +101,7 @@
             latin:popupCharacters="ת׳" />
         <Key
             latin:keyLabel="ץ"
-            latin:popupCharacters="ץ׳"
-            latin:keyEdgeFlags="right" />
+            latin:popupCharacters="ץ׳" />
         <!-- Here is 5%p space -->
     </Row>
     <include
diff --git a/java/res/xml/kbd_rows_qwertz.xml b/java/res/xml/kbd_rows_qwertz.xml
index 347ef60..f948921 100644
--- a/java/res/xml/kbd_rows_qwertz.xml
+++ b/java/res/xml/kbd_rows_qwertz.xml
@@ -25,13 +25,11 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="10%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="q"
             latin:keyHintLabel="1"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_q" />
         <Key
             latin:keyLabel="w"
             latin:keyHintLabel="2"
@@ -68,8 +66,7 @@
             latin:keyLabel="p"
             latin:keyHintLabel="0"
             latin:popupCharacters="@string/alternates_for_p"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row2" />
@@ -79,8 +76,7 @@
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="15%p"
-            latin:visualInsetsRight="1%p"
-            latin:keyEdgeFlags="left" />
+            latin:visualInsetsRight="1%p" />
         <Key
             latin:keyLabel="y"
             latin:popupCharacters="@string/alternates_for_y" />
@@ -102,8 +98,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight"
-            latin:visualInsetsLeft="1%p"
-            latin:keyEdgeFlags="right" />
+            latin:visualInsetsLeft="1%p" />
     </Row>
    <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml/kbd_rows_russian.xml b/java/res/xml/kbd_rows_russian.xml
index 2c10c31..216d749 100644
--- a/java/res/xml/kbd_rows_russian.xml
+++ b/java/res/xml/kbd_rows_russian.xml
@@ -25,14 +25,12 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="9.091%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="й"
             latin:keyHintLabel="1"
             latin:popupCharacters="1"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="8.75%p" />
         <Key
             latin:keyLabel="ц"
             latin:keyHintLabel="2"
@@ -71,16 +69,14 @@
             latin:popupCharacters="0" />
         <Key
             latin:keyLabel="х"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
             latin:keyWidth="9.091%p"
     >
         <Key
             latin:keyLabel="ф"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="8.75%p" />
         <Key
             latin:keyLabel="ы" />
         <Key
@@ -101,16 +97,14 @@
             latin:keyLabel="ж" />
         <Key
             latin:keyLabel="э"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.5%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="11.75%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="11.75%p" />
         <Key
             latin:keyLabel="я" />
         <Key
@@ -132,8 +126,7 @@
             latin:keyLabel="ю" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml/kbd_rows_scandinavian.xml b/java/res/xml/kbd_rows_scandinavian.xml
index 3f25601..7e8902e 100644
--- a/java/res/xml/kbd_rows_scandinavian.xml
+++ b/java/res/xml/kbd_rows_scandinavian.xml
@@ -25,14 +25,12 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="9.09%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="q"
             latin:keyHintLabel="1"
             latin:popupCharacters="@string/alternates_for_q"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="8.75%p" />
         <Key
             latin:keyLabel="w"
             latin:keyHintLabel="2"
@@ -71,8 +69,7 @@
             latin:popupCharacters="@string/alternates_for_p" />
         <Key
             latin:keyLabel="å"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="9.09%p"
@@ -80,8 +77,7 @@
         <Key
             latin:keyLabel="a"
             latin:popupCharacters="@string/alternates_for_a"
-            latin:keyWidth="8.75%p"
-            latin:keyEdgeFlags="left" />
+            latin:keyWidth="8.75%p" />
         <Key
             latin:keyLabel="s"
             latin:popupCharacters="@string/alternates_for_s" />
@@ -109,8 +105,7 @@
         <Key
             latin:keyLabel="@string/keylabel_for_scandinavia_row2_11"
             latin:popupCharacters="@string/alternates_for_scandinavia_row2_11"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row3" />
diff --git a/java/res/xml/kbd_rows_serbian.xml b/java/res/xml/kbd_rows_serbian.xml
index 2bed276..73c807f 100644
--- a/java/res/xml/kbd_rows_serbian.xml
+++ b/java/res/xml/kbd_rows_serbian.xml
@@ -25,13 +25,11 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
         latin:keyWidth="9.09%p"
-        latin:rowEdgeFlags="top"
     >
         <Key
             latin:keyLabel="љ"
             latin:keyHintLabel="1"
-            latin:popupCharacters="1"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="1" />
         <Key
             latin:keyLabel="њ"
             latin:keyHintLabel="2"
@@ -70,15 +68,13 @@
             latin:popupCharacters="0" />
         <Key
             latin:keyLabel="ш"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="9.09%p"
     >
         <Key
-            latin:keyLabel="а"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="а" />
         <Key
             latin:keyLabel="с" />
         <Key
@@ -99,15 +95,13 @@
             latin:keyLabel="ч" />
         <Key
             latin:keyLabel="ћ"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.90%p"
     >
         <Key
-            latin:keyStyle="shiftKeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="shiftKeyStyle" />
         <Key
             latin:keyLabel="ѕ" />
         <Key
@@ -128,8 +122,7 @@
             latin:keyLabel="ж" />
         <Key
             latin:keyStyle="deleteKeyStyle"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml/kbd_rows_spanish.xml b/java/res/xml/kbd_rows_spanish.xml
index c5ead10..6d00718 100644
--- a/java/res/xml/kbd_rows_spanish.xml
+++ b/java/res/xml/kbd_rows_spanish.xml
@@ -30,8 +30,7 @@
     >
         <Key
             latin:keyLabel="a"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_a" />
         <Key
             latin:keyLabel="s"
             latin:popupCharacters="@string/alternates_for_s" />
@@ -54,8 +53,7 @@
             latin:keyLabel="l"
             latin:popupCharacters="@string/alternates_for_l" />
         <Key
-            latin:keyLabel="ñ"
-            latin:keyEdgeFlags="right" />
+            latin:keyLabel="ñ" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row3" />
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index 7c0cee6..7bb8d02 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -26,13 +26,10 @@
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <include
         latin:keyboardLayout="@xml/kbd_currency_key_styles" />
-    <Row
-        latin:rowEdgeFlags="top"
-    >
+    <Row>
         <Key
             latin:keyLabel="@string/keylabel_for_symbols_1"
-            latin:popupCharacters="@string/alternates_for_symbols_1"
-            latin:keyEdgeFlags="left" />
+            latin:popupCharacters="@string/alternates_for_symbols_1" />
         <Key
             latin:keyLabel="@string/keylabel_for_symbols_2"
             latin:popupCharacters="@string/alternates_for_symbols_2" />
@@ -60,13 +57,11 @@
         <Key
             latin:keyLabel="@string/keylabel_for_symbols_0"
             latin:popupCharacters="@string/alternates_for_symbols_0"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
         <Key
-            latin:keyLabel="\@"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="\@" />
         <Key
             latin:keyLabel="\#" />
         <Key
@@ -91,15 +86,13 @@
         <Key
             latin:keyLabel=")"
             latin:popupCharacters="],},&gt;"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
         <Key
             latin:keyStyle="altKeyStyle"
             latin:keyWidth="15%p"
-            latin:visualInsetsRight="1%p"
-            latin:keyEdgeFlags="left" />
+            latin:visualInsetsRight="1%p" />
         <Key
             latin:keyLabel="!"
             latin:popupCharacters="¡" />
@@ -125,8 +118,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight"
-            latin:visualInsetsLeft="1%p"
-            latin:keyEdgeFlags="right" />
+            latin:visualInsetsLeft="1%p" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_symbols_row4" />
diff --git a/java/res/xml/kbd_symbols_row4.xml b/java/res/xml/kbd_symbols_row4.xml
index 24313ac..3fda888 100644
--- a/java/res/xml/kbd_symbols_row4.xml
+++ b/java/res/xml/kbd_symbols_row4.xml
@@ -23,7 +23,6 @@
 >
     <Row
         latin:keyWidth="10%p"
-        latin:rowEdgeFlags="bottom"
     >
         <switch>
             <case
@@ -31,8 +30,7 @@
             >
                 <Key
                     latin:keyStyle="toAlphaKeyStyle"
-                    latin:keyWidth="13.75%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="13.75%p" />
                 <Key
                     latin:keyStyle="settingsKeyStyle"
                     latin:keyWidth="9.2%p" />
@@ -49,8 +47,7 @@
             <default>
                 <Key
                     latin:keyStyle="toAlphaKeyStyle"
-                    latin:keyWidth="15%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="15%p" />
                 <include
                     latin:keyboardLayout="@xml/kbd_symbols_f1" />
                 <Key
@@ -66,14 +63,12 @@
             >
                 <Key
                     latin:keyStyle="smileyKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </case>
             <default>
                 <Key
                     latin:keyStyle="returnKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </default>
         </switch>
     </Row>
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index f22d45a..f4ccd6c 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -24,12 +24,9 @@
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
-    <Row
-        latin:rowEdgeFlags="top"
-    >
+    <Row>
         <Key
-            latin:keyLabel="~"
-            latin:keyEdgeFlags="left" />
+            latin:keyLabel="~" />
         <Key
             latin:keyLabel="`" />
         <Key
@@ -55,13 +52,11 @@
             latin:keyLabel="{" />
         <Key
             latin:keyLabel="}"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
         <Key
-            latin:keyStyle="nonSpecialBackgroundTabKeyStyle"
-            latin:keyEdgeFlags="left" />
+            latin:keyStyle="nonSpecialBackgroundTabKeyStyle" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="£" />
@@ -87,15 +82,13 @@
             latin:keyLabel="[" />
         <Key
             latin:keyLabel="]"
-            latin:keyWidth="fillRight"
-            latin:keyEdgeFlags="right" />
+            latin:keyWidth="fillRight" />
     </Row>
     <Row>
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="15%p"
-            latin:visualInsetsRight="1%p"
-            latin:keyEdgeFlags="left" />
+            latin:visualInsetsRight="1%p" />
         <Key
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="™" />
@@ -120,8 +113,7 @@
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight"
-            latin:visualInsetsLeft="1%p"
-            latin:keyEdgeFlags="right" />
+            latin:visualInsetsLeft="1%p" />
     </Row>
     <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4" />
 </Keyboard>
diff --git a/java/res/xml/kbd_symbols_shift_row4.xml b/java/res/xml/kbd_symbols_shift_row4.xml
index 90a96e4..35d444a 100644
--- a/java/res/xml/kbd_symbols_shift_row4.xml
+++ b/java/res/xml/kbd_symbols_shift_row4.xml
@@ -23,7 +23,6 @@
 >
     <Row
         latin:keyWidth="10%p"
-        latin:rowEdgeFlags="bottom"
     >
         <switch>
             <case
@@ -31,8 +30,7 @@
             >
                 <Key
                     latin:keyStyle="toAlphaKeyStyle"
-                    latin:keyWidth="13.75%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="13.75%p" />
                 <Key
                     latin:keyStyle="settingsKeyStyle"
                     latin:keyWidth="9.2%p" />
@@ -53,8 +51,7 @@
             <default>
                 <Key
                     latin:keyStyle="toAlphaKeyStyle"
-                    latin:keyWidth="15%p"
-                    latin:keyEdgeFlags="left" />
+                    latin:keyWidth="15%p" />
                 <Key
                     latin:keyLabel="„"
                     latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛"
@@ -73,14 +70,12 @@
             >
                 <Key
                     latin:keyStyle="smileyKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </case>
             <default>
                 <Key
                     latin:keyStyle="returnKeyStyle"
-                    latin:keyWidth="fillRight"
-                    latin:keyEdgeFlags="right" />
+                    latin:keyWidth="fillRight" />
             </default>
         </switch>
     </Row>
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 45bf68c..33ab511 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -95,7 +95,7 @@
      * {@link Keyboard#EDGE_LEFT}, {@link Keyboard#EDGE_RIGHT},
      * {@link Keyboard#EDGE_TOP} and {@link Keyboard#EDGE_BOTTOM}.
      */
-    public final int mEdgeFlags;
+    private int mEdgeFlags;
     /** Whether this is a functional key which has different key top than normal key */
     public final boolean mFunctional;
     /** Whether this key repeats itself when held down */
@@ -273,8 +273,7 @@
             mFunctional = style.getBoolean(keyAttr, R.styleable.Keyboard_Key_isFunctional, false);
             mSticky = style.getBoolean(keyAttr, R.styleable.Keyboard_Key_isSticky, false);
             mEnabled = style.getBoolean(keyAttr, R.styleable.Keyboard_Key_enabled, true);
-            mEdgeFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyEdgeFlags, 0)
-                    | row.mRowEdgeFlags;
+            mEdgeFlags = 0;
 
             final KeyboardIconsSet iconsSet = mKeyboard.mIconsSet;
             mVisualInsetsLeft = KeyboardParser.getDimensionOrFraction(keyAttr,
@@ -316,6 +315,10 @@
         }
     }
 
+    public void addEdgeFlags(int flags) {
+        mEdgeFlags |= flags;
+    }
+
     public CharSequence getCaseAdjustedLabel() {
         return mKeyboard.adjustLabelCase(mLabel);
     }
@@ -441,15 +444,18 @@
      * assume that all points between the key and the edge are considered to be on the key.
      */
     public boolean isOnKey(int x, int y) {
-        final int flags = mEdgeFlags;
-        final boolean leftEdge = (flags & Keyboard.EDGE_LEFT) != 0;
-        final boolean rightEdge = (flags & Keyboard.EDGE_RIGHT) != 0;
-        final boolean topEdge = (flags & Keyboard.EDGE_TOP) != 0;
-        final boolean bottomEdge = (flags & Keyboard.EDGE_BOTTOM) != 0;
         final int left = mX - mGap / 2;
         final int right = left + mWidth + mGap;
         final int top = mY;
         final int bottom = top + mHeight + mKeyboard.getVerticalGap();
+        final int flags = mEdgeFlags;
+        if (flags == 0) {
+            return x >= left && x <= right && y >= top && y <= bottom;
+        }
+        final boolean leftEdge = (flags & Keyboard.EDGE_LEFT) != 0;
+        final boolean rightEdge = (flags & Keyboard.EDGE_RIGHT) != 0;
+        final boolean topEdge = (flags & Keyboard.EDGE_TOP) != 0;
+        final boolean bottomEdge = (flags & Keyboard.EDGE_BOTTOM) != 0;
         // In order to mitigate rounding errors, we use (left <= x <= right) here.
         return (x >= left || leftEdge) && (x <= right || rightEdge)
                 && (y >= top || topEdge) && (y <= bottom || bottomEdge);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
index e35db89..fcda919 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
@@ -135,6 +135,8 @@
     private int mMaxRowWidth = 0;
     private int mTotalHeight = 0;
     private Row mCurrentRow = null;
+    private boolean mLeftEdge;
+    private Key mRightEdgeKey = null;
     private final KeyStyles mKeyStyles = new KeyStyles();
 
     public KeyboardParser(Keyboard keyboard, Context context) {
@@ -623,6 +625,8 @@
         mCurrentX = 0;
         setSpacer(mCurrentX, mHorizontalEdgesPadding);
         mCurrentRow = row;
+        mLeftEdge = true;
+        mRightEdgeKey = null;
     }
 
     private void endRow() {
@@ -633,10 +637,19 @@
             mMaxRowWidth = mCurrentX;
         mCurrentY += mCurrentRow.mDefaultHeight;
         mCurrentRow = null;
+        if (mRightEdgeKey != null) {
+            mRightEdgeKey.addEdgeFlags(Keyboard.EDGE_RIGHT);
+            mRightEdgeKey = null;
+        }
     }
 
     private void endKey(Key key) {
         mCurrentX = key.mX - key.mGap / 2 + key.mWidth + key.mGap;
+        if (mLeftEdge) {
+            key.addEdgeFlags(Keyboard.EDGE_LEFT);
+            mLeftEdge = false;
+        }
+        mRightEdgeKey = key;
     }
 
     private void endKeyboard(int defaultVerticalGap) {
@@ -646,6 +659,8 @@
 
     private void setSpacer(int keyXPos, int width) {
         mCurrentX = keyXPos + width;
+        mLeftEdge = false;
+        mRightEdgeKey = null;
     }
 
     public static int getDimensionOrFraction(TypedArray a, int index, int base, int defValue) {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/Row.java b/java/src/com/android/inputmethod/keyboard/internal/Row.java
index 06aadcc..b34d6d0 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/Row.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/Row.java
@@ -38,11 +38,6 @@
     public final int mDefaultHorizontalGap;
     /** Vertical gap following this row. */
     public final int mVerticalGap;
-    /**
-     * Edge flags for this row of keys. Possible values that can be assigned are
-     * {@link Keyboard#EDGE_TOP EDGE_TOP} and {@link Keyboard#EDGE_BOTTOM EDGE_BOTTOM}
-     */
-    public final int mRowEdgeFlags;
 
     private final Keyboard mKeyboard;
 
@@ -61,10 +56,6 @@
         mVerticalGap = KeyboardParser.getDimensionOrFraction(a,
                 R.styleable.Keyboard_verticalGap, keyboardHeight, keyboard.getVerticalGap());
         a.recycle();
-        a = res.obtainAttributes(Xml.asAttributeSet(parser),
-                R.styleable.Keyboard_Row);
-        mRowEdgeFlags = a.getInt(R.styleable.Keyboard_Row_rowEdgeFlags, 0);
-        a.recycle();
     }
 
     public Keyboard getKeyboard() {