Merge "New dict format, step 4"
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index beb5263..a7167af 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -21,6 +21,7 @@
 <resources>
     <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
     <dimen name="keyboardHeight">45.0mm</dimen>
+    <fraction name="minKeyboardHeight">45%p</fraction>
     <!-- key_height + key_bottom_gap = popup_key_height -->
     <!-- <dimen name="key_height">14.5mm</dimen> -->
     <dimen name="key_bottom_gap">1.3mm</dimen>
@@ -31,10 +32,10 @@
     <!-- key_height x 1.0 -->
     <dimen name="key_preview_height">13.0mm</dimen>
 
-    <fraction name="key_letter_ratio">30.7%</fraction>
-    <fraction name="key_label_ratio">21.9%</fraction>
+    <fraction name="key_letter_ratio">45%</fraction>
+    <fraction name="key_label_ratio">32%</fraction>
     <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_uppercase_letter_ratio">25%</fraction>
+    <fraction name="key_uppercase_letter_ratio">29%</fraction>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
     <dimen name="candidate_strip_padding">40.0mm</dimen>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 62ab0d2..8ecf542 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -22,7 +22,7 @@
     <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
     <dimen name="keyboardHeight">48.0mm</dimen>
     <fraction name="maxKeyboardHeight">50%p</fraction>
-    <fraction name="minKeyboardHeight">-61.8%p</fraction>
+    <fraction name="minKeyboardHeight">-35.0%p</fraction>
     <!-- key_height + key_bottom_gap = popup_key_height -->
     <!-- <dimen name="key_height">14.5mm</dimen> -->
     <dimen name="key_bottom_gap">1.0mm</dimen>
@@ -39,10 +39,10 @@
     <!-- popup_key_height x -1.0 -->
     <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
 
-    <fraction name="key_letter_ratio">45%</fraction>
-    <fraction name="key_label_ratio">29%</fraction>
+    <fraction name="key_letter_ratio">37%</fraction>
+    <fraction name="key_label_ratio">22%</fraction>
     <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_uppercase_letter_ratio">35%</fraction>
+    <fraction name="key_uppercase_letter_ratio">25%</fraction>
     <fraction name="key_preview_text_ratio">82%</fraction>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index 81d91ce..73885c2 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -31,10 +31,10 @@
     <dimen name="keyboard_bottom_padding">0.0mm</dimen>
     <dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
 
-    <fraction name="key_letter_ratio">30.7%</fraction>
-    <fraction name="key_label_ratio">21.9%</fraction>
+    <fraction name="key_letter_ratio">38%</fraction>
+    <fraction name="key_label_ratio">26%</fraction>
     <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_uppercase_letter_ratio">25%</fraction>
+    <fraction name="key_uppercase_letter_ratio">24%</fraction>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
     <dimen name="key_preview_height_holo">26.5mm</dimen>
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index 74eab5f..d8d1332 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -21,6 +21,7 @@
 <resources>
     <!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=12mm -->
     <dimen name="keyboardHeight">48.0mm</dimen>
+    <fraction name="maxKeyboardHeight">50%p</fraction>
     <fraction name="minKeyboardHeight">-35.0%p</fraction>
     <!-- key_height + key_bottom_gap = popup_key_height -->
     <!-- <dimen name="key_height">14.5mm</dimen> -->
@@ -38,10 +39,10 @@
     <!-- popup_key_height x -1.0 -->
     <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
 
-    <fraction name="key_letter_ratio">34.4%</fraction>
-    <fraction name="key_label_ratio">21.2%</fraction>
+    <fraction name="key_letter_ratio">38%</fraction>
+    <fraction name="key_label_ratio">26%</fraction>
     <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_uppercase_letter_ratio">28%</fraction>
+    <fraction name="key_uppercase_letter_ratio">25%</fraction>
     <!-- left or right padding of label alignment -->
     <dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
     <fraction name="key_preview_text_ratio">26.3%</fraction>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 2db529e..73f62c6 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -221,7 +221,7 @@
             <enum name="phone" value="4" />
             <enum name="number" value="5" />
         </attr>
-        <attr name="webInput" format="boolean" />
+        <attr name="navigateAction" format="boolean" />
         <attr name="passwordInput" format="boolean" />
         <attr name="hasSettingsKey" format="boolean" />
         <attr name="voiceKeyEnabled" format="boolean" />
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 6f973d9..e3ee361 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -17,6 +17,14 @@
 <resources>
     <!-- Theme "Basic" -->
     <style name="Keyboard">
+        <item name="rowHeight">25%p</item>
+        <item name="keyboardHeight">@dimen/keyboardHeight</item>
+        <item name="maxKeyboardHeight">@fraction/maxKeyboardHeight</item>
+        <item name="minKeyboardHeight">@fraction/minKeyboardHeight</item>
+        <item name="popupKeyboardTemplate">@xml/kbd_popup_template</item>
+        <item name="horizontalGap">@dimen/key_horizontal_gap</item>
+        <item name="verticalGap">@dimen/key_bottom_gap</item>
+        <item name="maxPopupKeyboardColumn">@integer/config_max_popup_keyboard_column</item>
     </style>
     <style name="LatinKeyboard">
         <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
diff --git a/java/res/xml-ar/kbd_qwerty.xml b/java/res/xml-ar/kbd_qwerty.xml
index 57823c9..57a6d2c 100644
--- a/java/res/xml-ar/kbd_qwerty.xml
+++ b/java/res/xml-ar/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="ar"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_ar_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_arabic" />
 </Keyboard>
diff --git a/java/res/xml-cs/kbd_qwerty.xml b/java/res/xml-cs/kbd_qwerty.xml
index 9ead49c..9991ea2 100644
--- a/java/res/xml-cs/kbd_qwerty.xml
+++ b/java/res/xml-cs/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="cs"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_qwertz" />
 </Keyboard>
diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml
index 12ea33c..37a50fd 100644
--- a/java/res/xml-da/kbd_qwerty.xml
+++ b/java/res/xml-da/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="da"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+        latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
 </Keyboard>
diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml
index 5c51bbd..89e10b2 100644
--- a/java/res/xml-de/kbd_qwerty.xml
+++ b/java/res/xml-de/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="de"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_qwertz" />
 </Keyboard>
diff --git a/java/res/xml-en/kbd_qwerty.xml b/java/res/xml-en/kbd_qwerty.xml
deleted file mode 100644
index 33e24d3..0000000
--- a/java/res/xml-en/kbd_qwerty.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- TODO: This is work around to avoid resource selection issue. This file must be removed when the
-     issue is sorted out. -->
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
-    latin:keyboardLocale="en,en_US,en_GB"
->
-    <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows" />
-</Keyboard>
diff --git a/java/res/xml-es/kbd_qwerty.xml b/java/res/xml-es/kbd_qwerty.xml
index f986491..3973a6a 100644
--- a/java/res/xml-es/kbd_qwerty.xml
+++ b/java/res/xml-es/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="es,es_US"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_qwerty" />
 </Keyboard>
diff --git a/java/res/xml-fi/kbd_qwerty.xml b/java/res/xml-fi/kbd_qwerty.xml
index e35ab2b..75721e0 100644
--- a/java/res/xml-fi/kbd_qwerty.xml
+++ b/java/res/xml-fi/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="fi"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+        latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
 </Keyboard>
diff --git a/java/res/xml-fr-rCA/kbd_qwerty.xml b/java/res/xml-fr-rCA/kbd_qwerty.xml
index 7f25848..7bdfbad 100644
--- a/java/res/xml-fr-rCA/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCA/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="fr_CA"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_qwerty" />
 </Keyboard>
diff --git a/java/res/xml-fr-rCH/kbd_qwerty.xml b/java/res/xml-fr-rCH/kbd_qwerty.xml
index 2baed3c..41b701d 100644
--- a/java/res/xml-fr-rCH/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCH/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="fr_CH"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_qwertz" />
 </Keyboard>
diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml
index 1b10655..8c730a2 100644
--- a/java/res/xml-fr/kbd_qwerty.xml
+++ b/java/res/xml-fr/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="fr"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_azerty_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_azerty" />
 </Keyboard>
diff --git a/java/res/xml-hu/kbd_qwerty.xml b/java/res/xml-hu/kbd_qwerty.xml
index 250b455..3195d5b 100644
--- a/java/res/xml-hu/kbd_qwerty.xml
+++ b/java/res/xml-hu/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="hu"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_qwertz" />
 </Keyboard>
diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml
index e93927f..dc2c5d3 100644
--- a/java/res/xml-iw/kbd_qwerty.xml
+++ b/java/res/xml-iw/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="iw"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_iw_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_hebrew" />
 </Keyboard>
diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml
index e7a743c..1f4e86e 100644
--- a/java/res/xml-nb/kbd_qwerty.xml
+++ b/java/res/xml-nb/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="nb"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+        latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
 </Keyboard>
diff --git a/java/res/xml-pl/kbd_qwerty.xml b/java/res/xml-pl/kbd_qwerty.xml
index 7d9476d..44312c5 100644
--- a/java/res/xml-pl/kbd_qwerty.xml
+++ b/java/res/xml-pl/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="pl"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_qwerty" />
 </Keyboard>
diff --git a/java/res/xml-pt/kbd_qwerty.xml b/java/res/xml-pt/kbd_qwerty.xml
index 1a89955..f5dcbc6 100644
--- a/java/res/xml-pt/kbd_qwerty.xml
+++ b/java/res/xml-pt/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="pt"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_qwerty" />
 </Keyboard>
diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml
index 826818c..aee1b1b 100644
--- a/java/res/xml-ru/kbd_qwerty.xml
+++ b/java/res/xml-ru/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="ru"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_ru_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_russian" />
 </Keyboard>
diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml
index 6116c75..58fc187 100644
--- a/java/res/xml-sr/kbd_qwerty.xml
+++ b/java/res/xml-sr/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="sr"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_sr_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_serbian" />
 </Keyboard>
diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml
index 69f0b3f..e29d9ab 100644
--- a/java/res/xml-sv/kbd_qwerty.xml
+++ b/java/res/xml-sv/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="sv"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+        latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
 </Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml
index f9096fc..0ff1da9 100644
--- a/java/res/xml-sw600dp/kbd_number.xml
+++ b/java/res/xml-sw600dp/kbd_number.xml
@@ -20,14 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="50%p"
-    latin:rowHeight="25%p"
     latin:keyWidth="16.75%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index cf0e523..20b2849 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -20,14 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="50%p"
-    latin:rowHeight="25%p"
     latin:keyWidth="16.75%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml
index 3565285..a5ae945 100644
--- a/java/res/xml-sw600dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -20,14 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="50%p"
-    latin:rowHeight="25%p"
     latin:keyWidth="16.75%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw600dp/kbd_qwerty.xml b/java/res/xml-sw600dp/kbd_qwerty.xml
deleted file mode 100644
index 9541e13..0000000
--- a/java/res/xml-sw600dp/kbd_qwerty.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<Keyboard
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="50%p"
-    latin:rowHeight="25%p"
-    latin:keyWidth="10%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
->
-    <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows" />
-</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.xml
deleted file mode 100644
index 0bdcd21..0000000
--- a/java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2011, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/kbd_key_styles" />
-    <Row
-        latin:keyWidth="8.0%p"
-        latin:rowEdgeFlags="top"
-    >
-        <Key
-            latin:keyLabel="q"
-            latin:popupCharacters="@string/alternates_for_q"
-            latin:keyXPos="2.15%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="w"
-            latin:popupCharacters="@string/alternates_for_w" />
-        <Key
-            latin:keyLabel="e"
-            latin:popupCharacters="@string/alternates_for_e" />
-        <Key
-            latin:keyLabel="r"
-            latin:popupCharacters="@string/alternates_for_r" />
-        <Key
-            latin:keyLabel="t"
-            latin:popupCharacters="@string/alternates_for_t" />
-        <Key
-            latin:keyLabel="y"
-            latin:popupCharacters="@string/alternates_for_y" />
-        <Key
-            latin:keyLabel="u"
-            latin:popupCharacters="@string/alternates_for_u" />
-        <Key
-            latin:keyLabel="i"
-            latin:popupCharacters="@string/alternates_for_i" />
-        <Key
-            latin:keyLabel="o"
-            latin:popupCharacters="@string/alternates_for_o" />
-        <Key
-            latin:keyLabel="p"
-            latin:popupCharacters="@string/alternates_for_p" />
-        <Key
-            latin:keyLabel="å" />
-        <Key
-            latin:keyStyle="deleteKeyStyle"
-            latin:keyXPos="-10.0%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <Row
-        latin:keyWidth="8.0%p"
-    >
-        <Key
-            latin:keyLabel="a"
-            latin:popupCharacters="@string/alternates_for_a"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="s"
-            latin:popupCharacters="@string/alternates_for_s" />
-        <Key
-            latin:keyLabel="d"
-            latin:popupCharacters="@string/alternates_for_d" />
-        <Key
-            latin:keyLabel="f" />
-        <Key
-            latin:keyLabel="g"
-            latin:popupCharacters="@string/alternates_for_g" />
-        <Key
-            latin:keyLabel="h" />
-        <Key
-            latin:keyLabel="j" />
-        <Key
-            latin:keyLabel="k"
-            latin:popupCharacters="@string/alternates_for_k" />
-        <Key
-            latin:keyLabel="l"
-            latin:popupCharacters="@string/alternates_for_l" />
-        <Key
-            latin:keyLabel="@string/keylabel_for_scandinavia_row2_10"
-            latin:popupCharacters="@string/alternates_for_scandinavia_row2_10" />
-        <Key
-            latin:keyLabel="@string/keylabel_for_scandinavia_row2_11"
-            latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" />
-        <Key
-            latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-14.6%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
-    </Row>
-    <include
-        latin:keyboardLayout="@xml/kbd_qwerty_row3" />
-    <include
-        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
-</merge>
diff --git a/java/res/xml-sw600dp/kbd_rows_arabic.xml b/java/res/xml-sw600dp/kbd_rows_arabic.xml
new file mode 100644
index 0000000..bc37d5a
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_rows_arabic.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- This file for Arabic layout is an alpha version. It allows to enter   -->
+<!-- some right-to-left text, but it has gone through no study whatsoever, -->
+<!-- and needs to be run through UX.                                       -->
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <Row
+        latin:keyWidth="8.0%p"
+    >
+        <Key
+            latin:keyLabel="ض"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="ص" />
+        <Key
+            latin:keyLabel="ث" />
+        <Key
+            latin:keyLabel="ق" />
+        <Key
+            latin:keyLabel="ف"
+            latin:popupCharacters="ف,ڤ" />
+        <Key
+            latin:keyLabel="غ" />
+        <Key
+            latin:keyLabel="ع" />
+        <Key
+            latin:keyLabel="ه"
+            latin:popupCharacters="ه,هـ" />
+        <Key
+            latin:keyLabel="خ" />
+        <Key
+            latin:keyLabel="ح" />
+        <Key
+            latin:keyLabel="ج"
+            latin:popupCharacters="ج,چ" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyXPos="-10.0%p"
+            latin:keyWidth="fillBoth"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="8.0%p"
+    >
+        <Key
+            latin:keyLabel="ش"
+            latin:keyXPos="3.0%p" />
+        <Key
+            latin:keyLabel="س" />
+        <Key
+            latin:keyLabel="ي" />
+        <Key
+            latin:keyLabel="ب"
+            latin:popupCharacters="ب,پ" />
+        <Key
+            latin:keyLabel="ل"
+            latin:popupCharacters="ل,لا" />
+        <Key
+            latin:keyLabel="ا"
+            latin:popupCharacters="ا,أ,إ,آ" />
+        <Key
+            latin:keyLabel="ت" />
+        <Key
+            latin:keyLabel="ن" />
+        <Key
+            latin:keyLabel="م" />
+        <Key
+            latin:keyLabel="ك"
+            latin:popupCharacters="ك,گ" />
+        <Key
+            latin:keyLabel="ط" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyXPos="-14.6%p"
+            latin:keyWidth="fillBoth"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="7.65%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="8.0%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="ئ" />
+        <Key
+            latin:keyLabel="ء" />
+        <Key
+            latin:keyLabel="ؤ" />
+        <Key
+            latin:keyLabel="ر" />
+        <Key
+            latin:keyLabel="ذ" />
+        <Key
+            latin:keyLabel="ى" />
+        <Key
+            latin:keyLabel="ة" />
+        <Key
+            latin:keyLabel="و" />
+        <Key
+            latin:keyLabel="ز"
+            latin:popupCharacters="ز,ژ" />
+        <Key
+            latin:keyLabel="ظ" />
+        <Key
+            latin:keyLabel="د" />
+        <include
+            latin:keyboardLayout="@xml/kbd_row3_right" />
+        </Row>
+    <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_azerty_rows.xml b/java/res/xml-sw600dp/kbd_rows_azerty.xml
similarity index 97%
rename from java/res/xml-sw600dp/kbd_azerty_rows.xml
rename to java/res/xml-sw600dp/kbd_rows_azerty.xml
index 269c6ef..4df45eb 100644
--- a/java/res/xml-sw600dp/kbd_azerty_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_azerty.xml
@@ -24,7 +24,7 @@
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
-        latin:keyWidth="9.0%p"
+        latin:keyWidth="8.5%p"
         latin:rowEdgeFlags="top"
     >
         <Key
@@ -65,11 +65,12 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="9.0%p"
+        latin:keyWidth="8.5%p"
     >
         <Key
             latin:keyLabel="q"
             latin:popupCharacters="@string/alternates_for_q"
+            latin:keyXPos="5.0%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="s"
@@ -101,7 +102,7 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="8.9%p"
+        latin:keyWidth="8.5%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
diff --git a/java/res/xml-sw600dp/kbd_rows_hebrew.xml b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
new file mode 100644
index 0000000..a147537
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <Row
+        latin:keyWidth="8.600%p"
+        latin:rowEdgeFlags="top"
+    >
+        <Key
+            latin:keyLabel="," />
+        <Key
+            latin:keyLabel="." />
+        <Key
+            latin:keyLabel="ק" />
+        <Key
+            latin:keyLabel="ר" />
+        <Key
+            latin:keyLabel="א" />
+        <Key
+            latin:keyLabel="ט" />
+        <Key
+            latin:keyLabel="ו" />
+        <Key
+            latin:keyLabel="ן" />
+        <Key
+            latin:keyLabel="ם" />
+        <Key
+            latin:keyLabel="פ" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyXPos="-12.000%p"
+            latin:keyWidth="fillBoth"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="8.600%p"
+    >
+        <Key
+            latin:keyLabel="ש"
+            latin:keyXPos="4.000%p" />
+        <Key
+            latin:keyLabel="ד" />
+        <Key
+            latin:keyLabel="ג"
+            latin:popupCharacters="ג,ג׳" />
+        <Key
+            latin:keyLabel="כ" />
+        <Key
+            latin:keyLabel="ע" />
+        <Key
+            latin:keyLabel="י"
+            latin:popupCharacters="י,ײַ" />
+        <Key
+            latin:keyLabel="ח"
+            latin:popupCharacters="ח,ח׳" />
+        <Key
+            latin:keyLabel="ל" />
+        <Key
+            latin:keyLabel="ך" />
+        <Key
+            latin:keyLabel="ף" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyXPos="-10.400%p"
+            latin:keyWidth="fillBoth"
+            latin:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        latin:keyWidth="8.600%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="10.000%p"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="ז"
+            latin:popupCharacters="ז,ז׳" />
+        <Key
+            latin:keyLabel="ס" />
+        <Key
+            latin:keyLabel="ב" />
+        <Key
+            latin:keyLabel="ה" />
+        <Key
+            latin:keyLabel="נ" />
+        <Key
+            latin:keyLabel="מ" />
+        <Key
+            latin:keyLabel="צ"
+            latin:popupCharacters="צ,צ׳" />
+        <Key
+            latin:keyLabel="ת"
+            latin:popupCharacters="ת,ת׳" />
+        <Key
+            latin:keyLabel="ץ"
+            latin:popupCharacters="ץ,ץ׳" />
+        <include
+            latin:keyboardLayout="@xml/kbd_row3_right" />
+    </Row>
+    <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_rows.xml b/java/res/xml-sw600dp/kbd_rows_qwerty.xml
similarity index 100%
rename from java/res/xml-sw600dp/kbd_qwerty_rows.xml
rename to java/res/xml-sw600dp/kbd_rows_qwerty.xml
diff --git a/java/res/xml-sw600dp/kbd_qwertz_rows.xml b/java/res/xml-sw600dp/kbd_rows_qwertz.xml
similarity index 100%
rename from java/res/xml-sw600dp/kbd_qwertz_rows.xml
rename to java/res/xml-sw600dp/kbd_rows_qwertz.xml
diff --git a/java/res/xml-sw600dp/kbd_ru_rows.xml b/java/res/xml-sw600dp/kbd_rows_russian.xml
similarity index 100%
rename from java/res/xml-sw600dp/kbd_ru_rows.xml
rename to java/res/xml-sw600dp/kbd_rows_russian.xml
diff --git a/java/res/xml-sw600dp/kbd_azerty_rows.xml b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
similarity index 88%
copy from java/res/xml-sw600dp/kbd_azerty_rows.xml
copy to java/res/xml-sw600dp/kbd_rows_scandinavian.xml
index 269c6ef..3666ead 100644
--- a/java/res/xml-sw600dp/kbd_azerty_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
@@ -24,16 +24,16 @@
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
-        latin:keyWidth="9.0%p"
+        latin:keyWidth="7.9%p"
         latin:rowEdgeFlags="top"
     >
         <Key
-            latin:keyLabel="a"
-            latin:popupCharacters="@string/alternates_for_a"
+            latin:keyLabel="q"
+            latin:popupCharacters="@string/alternates_for_q"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:keyLabel="z"
-            latin:popupCharacters="@string/alternates_for_z" />
+            latin:keyLabel="w"
+            latin:popupCharacters="@string/alternates_for_w" />
         <Key
             latin:keyLabel="e"
             latin:popupCharacters="@string/alternates_for_e" />
@@ -59,17 +59,20 @@
             latin:keyLabel="p"
             latin:popupCharacters="@string/alternates_for_p" />
         <Key
+            latin:keyLabel="å" />
+        <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
             latin:keyWidth="fillBoth"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="9.0%p"
+        latin:keyWidth="7.9%p"
     >
         <Key
-            latin:keyLabel="q"
-            latin:popupCharacters="@string/alternates_for_q"
+            latin:keyLabel="a"
+            latin:keyXPos="3.5%p"
+            latin:popupCharacters="@string/alternates_for_a"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="s"
@@ -93,7 +96,11 @@
             latin:keyLabel="l"
             latin:popupCharacters="@string/alternates_for_l" />
         <Key
-            latin:keyLabel="m" />
+            latin:keyLabel="@string/keylabel_for_scandinavia_row2_10"
+            latin:popupCharacters="@string/alternates_for_scandinavia_row2_10" />
+        <Key
+            latin:keyLabel="@string/keylabel_for_scandinavia_row2_11"
+            latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" />
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-14.6%p"
@@ -101,15 +108,17 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="8.9%p"
+        latin:keyWidth="7.9%p"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.0%p"
             latin:keyEdgeFlags="left" />
+        <Spacer
+            latin:keyWidth="4.35%p" />
         <Key
-            latin:keyLabel="w"
-            latin:popupCharacters="@string/alternates_for_w" />
+            latin:keyLabel="z"
+            latin:popupCharacters="@string/alternates_for_z" />
         <Key
             latin:keyLabel="x" />
         <Key
@@ -124,7 +133,7 @@
             latin:keyLabel="n"
             latin:popupCharacters="@string/alternates_for_n" />
         <Key
-            latin:keyLabel="\'" />
+            latin:keyLabel="m" />
         <switch>
             <case
                 latin:mode="email"
@@ -147,9 +156,11 @@
                     latin:popupCharacters="\?" />
             </default>
         </switch>
+        <Spacer
+            latin:keyWidth="4.35%p" />
         <include
             latin:keyboardLayout="@xml/kbd_row3_right" />
-   </Row>
+    </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_sr_rows.xml b/java/res/xml-sw600dp/kbd_rows_serbian.xml
similarity index 100%
rename from java/res/xml-sw600dp/kbd_sr_rows.xml
rename to java/res/xml-sw600dp/kbd_rows_serbian.xml
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 3593c77..4d3e7d3 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -20,13 +20,6 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="50%p"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_symbols_shift.xml
index 4cef3a7..1743c0f 100644
--- a/java/res/xml-sw600dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw600dp/kbd_symbols_shift.xml
@@ -20,13 +20,6 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="50%p"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw768dp/kbd_number.xml b/java/res/xml-sw768dp/kbd_number.xml
index faab38a..4f33e41 100644
--- a/java/res/xml-sw768dp/kbd_number.xml
+++ b/java/res/xml-sw768dp/kbd_number.xml
@@ -20,15 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
     latin:keyWidth="13.250%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index 0c65233..69169ff 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -20,15 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
     latin:keyWidth="13.250%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw768dp/kbd_phone_symbols.xml b/java/res/xml-sw768dp/kbd_phone_symbols.xml
index da2ac65..e95579c 100644
--- a/java/res/xml-sw768dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -20,15 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
     latin:keyWidth="13.250%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw768dp/kbd_ar_rows.xml b/java/res/xml-sw768dp/kbd_rows_arabic.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_ar_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_arabic.xml
diff --git a/java/res/xml-sw768dp/kbd_azerty_rows.xml b/java/res/xml-sw768dp/kbd_rows_azerty.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_azerty_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_azerty.xml
diff --git a/java/res/xml-sw768dp/kbd_iw_rows.xml b/java/res/xml-sw768dp/kbd_rows_hebrew.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_iw_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_hebrew.xml
diff --git a/java/res/xml-sw768dp/kbd_qwerty_rows.xml b/java/res/xml-sw768dp/kbd_rows_qwerty.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_qwerty_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_qwerty.xml
diff --git a/java/res/xml-sw768dp/kbd_qwertz_rows.xml b/java/res/xml-sw768dp/kbd_rows_qwertz.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_qwertz_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_qwertz.xml
diff --git a/java/res/xml-sw768dp/kbd_ru_rows.xml b/java/res/xml-sw768dp/kbd_rows_russian.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_ru_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_russian.xml
diff --git a/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml
rename to java/res/xml-sw768dp/kbd_rows_scandinavian.xml
diff --git a/java/res/xml-sw768dp/kbd_sr_rows.xml b/java/res/xml-sw768dp/kbd_rows_serbian.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_sr_rows.xml
rename to java/res/xml-sw768dp/kbd_rows_serbian.xml
diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_symbols.xml
index 5b359bf..d1a83c4 100644
--- a/java/res/xml-sw768dp/kbd_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_symbols.xml
@@ -20,14 +20,6 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml-sw768dp/kbd_symbols_shift.xml b/java/res/xml-sw768dp/kbd_symbols_shift.xml
index 94bd761..dde144f 100644
--- a/java/res/xml-sw768dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw768dp/kbd_symbols_shift.xml
@@ -20,14 +20,6 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml/kbd_number.xml b/java/res/xml/kbd_number.xml
index 23b88a5..429b818 100644
--- a/java/res/xml/kbd_number.xml
+++ b/java/res/xml/kbd_number.xml
@@ -20,15 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
     latin:keyWidth="26.67%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml
index e1d1ee8..211f7b7 100644
--- a/java/res/xml/kbd_phone.xml
+++ b/java/res/xml/kbd_phone.xml
@@ -20,15 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
     latin:keyWidth="26.67%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index 2af218c..c651363 100644
--- a/java/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
@@ -20,15 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
     latin:keyWidth="26.67%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index f0c1fa7..40917b9 100644
--- a/java/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -20,16 +20,8 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
     latin:keyboardLocale="en_GB,en_US"
 >
     <include
-        latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+        latin:keyboardLayout="@xml/kbd_rows_qwerty" />
 </Keyboard>
diff --git a/java/res/xml/kbd_qwerty_f1.xml b/java/res/xml/kbd_qwerty_f1.xml
index e89d02d..88dfab1 100644
--- a/java/res/xml/kbd_qwerty_f1.xml
+++ b/java/res/xml/kbd_qwerty_f1.xml
@@ -46,7 +46,7 @@
                 </case>
                 <!-- latin:hasVoiceKey="false" -->
                 <case
-                    latin:webInput="true"
+                    latin:navigateAction="true"
                 >
                     <Key
                         latin:keyLabel="."
diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml
index dfe5de3..95be66d 100644
--- a/java/res/xml/kbd_qwerty_row4.xml
+++ b/java/res/xml/kbd_qwerty_row4.xml
@@ -56,7 +56,7 @@
         </switch>
         <switch>
             <case
-                latin:webInput="true"
+                latin:navigateAction="true"
             >
                 <Key
                     latin:keyStyle="tabKeyStyle"
diff --git a/java/res/xml/kbd_ar_rows.xml b/java/res/xml/kbd_rows_arabic.xml
similarity index 100%
rename from java/res/xml/kbd_ar_rows.xml
rename to java/res/xml/kbd_rows_arabic.xml
diff --git a/java/res/xml/kbd_azerty_rows.xml b/java/res/xml/kbd_rows_azerty.xml
similarity index 100%
rename from java/res/xml/kbd_azerty_rows.xml
rename to java/res/xml/kbd_rows_azerty.xml
diff --git a/java/res/xml/kbd_iw_rows.xml b/java/res/xml/kbd_rows_hebrew.xml
similarity index 100%
rename from java/res/xml/kbd_iw_rows.xml
rename to java/res/xml/kbd_rows_hebrew.xml
diff --git a/java/res/xml/kbd_qwerty_rows.xml b/java/res/xml/kbd_rows_qwerty.xml
similarity index 100%
rename from java/res/xml/kbd_qwerty_rows.xml
rename to java/res/xml/kbd_rows_qwerty.xml
diff --git a/java/res/xml/kbd_qwertz_rows.xml b/java/res/xml/kbd_rows_qwertz.xml
similarity index 100%
rename from java/res/xml/kbd_qwertz_rows.xml
rename to java/res/xml/kbd_rows_qwertz.xml
diff --git a/java/res/xml/kbd_ru_rows.xml b/java/res/xml/kbd_rows_russian.xml
similarity index 100%
rename from java/res/xml/kbd_ru_rows.xml
rename to java/res/xml/kbd_rows_russian.xml
diff --git a/java/res/xml/kbd_qwerty_rows_scandinavia.xml b/java/res/xml/kbd_rows_scandinavian.xml
similarity index 100%
rename from java/res/xml/kbd_qwerty_rows_scandinavia.xml
rename to java/res/xml/kbd_rows_scandinavian.xml
diff --git a/java/res/xml/kbd_sr_rows.xml b/java/res/xml/kbd_rows_serbian.xml
similarity index 100%
rename from java/res/xml/kbd_sr_rows.xml
rename to java/res/xml/kbd_rows_serbian.xml
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index a58a518..8e9124f 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -20,15 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
     latin:keyWidth="10%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index 96e741b..f22d45a 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -20,15 +20,7 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyboardHeight="@dimen/keyboardHeight"
-    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
-    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
-    latin:rowHeight="25%p"
     latin:keyWidth="10%p"
-    latin:horizontalGap="@dimen/key_horizontal_gap"
-    latin:verticalGap="@dimen/key_bottom_gap"
-    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
-    latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
diff --git a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
index 2789bcb..bcdcef7 100644
--- a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
@@ -27,7 +27,7 @@
     private static final Field FIELD_IME_FLAG_NAVIGATE_PREVIOUS = CompatUtils.getField(
             EditorInfo.class, "IME_FLAG_NAVIGATE_PREVIOUS");
     private static final Field FIELD_IME_ACTION_PREVIOUS = CompatUtils.getField(
-            EditorInfo.class, "IME_FLAG_ACTION_PREVIOUS");
+            EditorInfo.class, "IME_ACTION_PREVIOUS");
     private static final Integer OBJ_IME_FLAG_NAVIGATE_NEXT = (Integer) CompatUtils
             .getFieldValue(null, null, FIELD_IME_FLAG_NAVIGATE_NEXT);
     private static final Integer OBJ_IME_FLAG_NAVIGATE_PREVIOUS = (Integer) CompatUtils
diff --git a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
index 5d89669..4929dd9 100644
--- a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
+++ b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
@@ -30,12 +30,14 @@
 import java.util.Locale;
 
 public class SuggestionSpanUtils {
+    // TODO: Use reflection to get field values
     public static final String ACTION_SUGGESTION_PICKED =
             "android.text.style.SUGGESTION_PICKED";
     public static final String SUGGESTION_SPAN_PICKED_AFTER = "after";
     public static final String SUGGESTION_SPAN_PICKED_BEFORE = "before";
     public static final String SUGGESTION_SPAN_PICKED_HASHCODE = "hashcode";
     public static final int SUGGESTION_MAX_SIZE = 5;
+    public static final boolean SUGGESTION_SPAN_IS_SUPPORTED;
 
     private static final Class<?> CLASS_SuggestionSpan = CompatUtils
             .getClass("android.text.style.SuggestionSpan");
@@ -43,24 +45,23 @@
             Context.class, Locale.class, String[].class, int.class, Class.class };
     private static final Constructor<?> CONSTRUCTOR_SuggestionSpan = CompatUtils
             .getConstructor(CLASS_SuggestionSpan, INPUT_TYPE_SuggestionSpan);
-    public static final boolean SUGGESTION_SPAN_IS_SUPPORTED;
     static {
         SUGGESTION_SPAN_IS_SUPPORTED =
                 CLASS_SuggestionSpan != null && CONSTRUCTOR_SuggestionSpan != null;
     }
 
     public static CharSequence getTextWithSuggestionSpan(Context context,
-            CharSequence suggestion, SuggestedWords suggestedWords) {
-        if (TextUtils.isEmpty(suggestion) || CONSTRUCTOR_SuggestionSpan == null
+            CharSequence pickedWord, SuggestedWords suggestedWords) {
+        if (TextUtils.isEmpty(pickedWord) || CONSTRUCTOR_SuggestionSpan == null
                 || suggestedWords == null || suggestedWords.size() == 0) {
-            return suggestion;
+            return pickedWord;
         }
 
         final Spannable spannable;
-        if (suggestion instanceof Spannable) {
-            spannable = (Spannable) suggestion;
+        if (pickedWord instanceof Spannable) {
+            spannable = (Spannable) pickedWord;
         } else {
-            spannable = new SpannableString(suggestion);
+            spannable = new SpannableString(pickedWord);
         }
         final ArrayList<String> suggestionsList = new ArrayList<String>();
         for (int i = 0; i < suggestedWords.size(); ++i) {
@@ -68,7 +69,7 @@
                 break;
             }
             final CharSequence word = suggestedWords.getWord(i);
-            if (!TextUtils.equals(suggestion, word)) {
+            if (!TextUtils.equals(pickedWord, word)) {
                 suggestionsList.add(word.toString());
             }
         }
@@ -78,9 +79,9 @@
                         (Class<?>) SuggestionSpanPickedNotificationReceiver.class };
         final Object ss = CompatUtils.newInstance(CONSTRUCTOR_SuggestionSpan, args);
         if (ss == null) {
-            return suggestion;
+            return pickedWord;
         }
-        spannable.setSpan(ss, 0, suggestion.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        spannable.setSpan(ss, 0, pickedWord.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         return spannable;
     }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 3db214e..58629ba 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -18,7 +18,6 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
 import android.util.Log;
 
@@ -173,11 +172,6 @@
         mDefaultHeight = mDefaultWidth;
         mId = id;
         mProximityInfo = new ProximityInfo(GRID_WIDTH, GRID_HEIGHT);
-
-        final TypedArray attrs = context.obtainStyledAttributes(
-                null, R.styleable.Keyboard, R.attr.keyboardStyle, R.style.Keyboard);
-        attrs.recycle();
-
         loadKeyboard(context, xmlLayoutResId);
     }
 
@@ -440,7 +434,7 @@
 
     private void loadKeyboard(Context context, int xmlLayoutResId) {
         try {
-            KeyboardParser parser = new KeyboardParser(this, context.getResources());
+            KeyboardParser parser = new KeyboardParser(this, context);
             parser.parseKeyboard(xmlLayoutResId);
             // mMinWidth is the width of this keyboard which is maximum width of row.
             mMinWidth = parser.getMaxRowWidth();
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index 7c03ec7..d97bb67 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -16,12 +16,12 @@
 
 package com.android.inputmethod.keyboard;
 
+import android.view.inputmethod.EditorInfo;
+
 import com.android.inputmethod.compat.EditorInfoCompatUtils;
 import com.android.inputmethod.compat.InputTypeCompatUtils;
 import com.android.inputmethod.latin.R;
 
-import android.view.inputmethod.EditorInfo;
-
 import java.util.Arrays;
 import java.util.Locale;
 
@@ -43,7 +43,7 @@
     public final int mMode;
     public final int mXmlId;
     public final int mColorScheme;
-    public final boolean mWebInput;
+    public final boolean mNavigateAction;
     public final boolean mPasswordInput;
     public final boolean mHasSettingsKey;
     public final boolean mVoiceKeyEnabled;
@@ -67,7 +67,10 @@
         this.mMode = mode;
         this.mXmlId = xmlId;
         this.mColorScheme = colorScheme;
-        this.mWebInput = InputTypeCompatUtils.isWebInputType(inputType);
+        // Note: Turn off checking navigation flag to show TAB key for now.
+        this.mNavigateAction = InputTypeCompatUtils.isWebInputType(inputType);
+//                || EditorInfoCompatUtils.hasFlagNavigateNext(imeOptions)
+//                || EditorInfoCompatUtils.hasFlagNavigatePrevious(imeOptions);
         this.mPasswordInput = InputTypeCompatUtils.isPasswordInputType(inputType)
                 || InputTypeCompatUtils.isVisiblePasswordInputType(inputType);
         this.mHasSettingsKey = hasSettingsKey;
@@ -89,7 +92,7 @@
                 mode,
                 xmlId,
                 colorScheme,
-                mWebInput,
+                mNavigateAction,
                 mPasswordInput,
                 hasSettingsKey,
                 voiceKeyEnabled,
@@ -143,7 +146,7 @@
             && other.mMode == this.mMode
             && other.mXmlId == this.mXmlId
             && other.mColorScheme == this.mColorScheme
-            && other.mWebInput == this.mWebInput
+            && other.mNavigateAction == this.mNavigateAction
             && other.mPasswordInput == this.mPasswordInput
             && other.mHasSettingsKey == this.mHasSettingsKey
             && other.mVoiceKeyEnabled == this.mVoiceKeyEnabled
@@ -166,7 +169,7 @@
                 modeName(mMode),
                 EditorInfoCompatUtils.imeOptionsName(mImeAction),
                 colorSchemeName(mColorScheme),
-                (mWebInput ? " webInput" : ""),
+                (mNavigateAction ? " navigateAction" : ""),
                 (mPasswordInput ? " passwordInput" : ""),
                 (mHasSettingsKey ? " hasSettingsKey" : ""),
                 (mVoiceKeyEnabled ? " voiceKeyEnabled" : ""),
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
index 07166b1..20af12b 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
@@ -121,6 +121,7 @@
     public static final String TAG_KEY_STYLE = "key-style";
 
     private final Keyboard mKeyboard;
+    private final Context mContext;
     private final Resources mResources;
 
     private int mHorizontalEdgesPadding;
@@ -131,8 +132,10 @@
     private Row mCurrentRow = null;
     private final KeyStyles mKeyStyles = new KeyStyles();
 
-    public KeyboardParser(Keyboard keyboard, Resources res) {
+    public KeyboardParser(Keyboard keyboard, Context context) {
         mKeyboard = keyboard;
+        mContext = context;
+        final Resources res = context.getResources();
         mResources = res;
         mHorizontalEdgesPadding = (int)res.getDimension(R.dimen.keyboard_horizontal_edges_padding);
     }
@@ -187,8 +190,9 @@
 
     private void parseKeyboardAttributes(XmlResourceParser parser) {
         final Keyboard keyboard = mKeyboard;
-        final TypedArray keyboardAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
-                R.styleable.Keyboard);
+        final TypedArray keyboardAttr = mContext.obtainStyledAttributes(
+                Xml.asAttributeSet(parser), R.styleable.Keyboard, R.attr.keyboardStyle,
+                R.style.Keyboard);
         final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
                 R.styleable.Keyboard_Key);
         try {
@@ -469,8 +473,8 @@
         try {
             final boolean modeMatched = matchTypedValue(a,
                     R.styleable.Keyboard_Case_mode, id.mMode, KeyboardId.modeName(id.mMode));
-            final boolean webInputMatched = matchBoolean(a,
-                    R.styleable.Keyboard_Case_webInput, id.mWebInput);
+            final boolean navigateActionMatched = matchBoolean(a,
+                    R.styleable.Keyboard_Case_navigateAction, id.mNavigateAction);
             final boolean passwordInputMatched = matchBoolean(a,
                     R.styleable.Keyboard_Case_passwordInput, id.mPasswordInput);
             final boolean settingsKeyMatched = matchBoolean(a,
@@ -493,7 +497,7 @@
                     R.styleable.Keyboard_Case_languageCode, id.mLocale.getLanguage());
             final boolean countryCodeMatched = matchString(a,
                     R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry());
-            final boolean selected = modeMatched && webInputMatched && passwordInputMatched
+            final boolean selected = modeMatched && navigateActionMatched && passwordInputMatched
                     && settingsKeyMatched && voiceEnabledMatched && voiceKeyMatched
                     && colorSchemeMatched && imeActionMatched && localeCodeMatched
                     && languageCodeMatched && countryCodeMatched;
@@ -503,7 +507,7 @@
                     textAttr(KeyboardId.colorSchemeName(
                             viewAttr.getInt(
                                     R.styleable.KeyboardView_colorScheme, -1)), "colorScheme"),
-                    booleanAttr(a, R.styleable.Keyboard_Case_webInput, "webInput"),
+                    booleanAttr(a, R.styleable.Keyboard_Case_navigateAction, "navigateAction"),
                     booleanAttr(a, R.styleable.Keyboard_Case_passwordInput, "passwordInput"),
                     booleanAttr(a, R.styleable.Keyboard_Case_hasSettingsKey, "hasSettingsKey"),
                     booleanAttr(a, R.styleable.Keyboard_Case_voiceKeyEnabled, "voiceKeyEnabled"),
diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index 2a29e1f..92d26a0 100644
--- a/java/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -349,9 +349,9 @@
                 dv.setTextColor(0xff808080);
                 dv.setText(info.getDebugString());
                 // TODO: debug view for candidate strip needed.
-                mCandidatesPane.addView(dv);
-                LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)dv.getLayoutParams();
-                lp.gravity = Gravity.BOTTOM;
+//                mCandidatesPane.addView(dv);
+//                LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)dv.getLayoutParams();
+//                lp.gravity = Gravity.BOTTOM;
             }
         }
         if (x != 0) {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 87912eb..fc01d39 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -518,8 +518,9 @@
         LatinKeyboardView inputView = switcher.getKeyboardView();
 
         if (DEBUG) {
-            Log.d(TAG, "onStartInputView: inputType=" + ((attribute == null) ? "none"
-                    : String.format("0x%08x", attribute.inputType)));
+            Log.d(TAG, "onStartInputView: attribute:" + ((attribute == null) ? "none"
+                    : String.format("inputType=0x%08x imeOptions=0x%08x",
+                            attribute.inputType, attribute.imeOptions)));
         }
         // In landscape mode, this method gets called without the input view being created.
         if (inputView == null) {
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index cd9ad79..ef52ceb 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -590,7 +590,6 @@
     for (int i = 0; i < childrenCount; ++i) {
         int newCount;
         int newChildPosition;
-        const int newDepth = depth + 1;
         bool newTraverseAllNodes;
         int newMatchRate;
         int newInputIndex;
@@ -606,7 +605,7 @@
         siblingPos = newSiblingPos;
 
         if (needsToTraverseChildrenNodes) {
-            getWordsRec(newCount, newChildPosition, newDepth, maxDepth, newTraverseAllNodes,
+            getWordsRec(newCount, newChildPosition, newOutputIndex, maxDepth, newTraverseAllNodes,
                     newMatchRate, newInputIndex, newDiffs, skipPos, excessivePos, transposedPos,
                     nextLetters, nextLettersSize);
         }