diff --git a/java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml b/java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..b562b18
--- /dev/null
+++ b/java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+    <!-- Symbols that are suggested between words -->
+    <string name="suggested_punctuations" translatable="false">:,;,\",(|),)|(,\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-iw/config-spacing-and-punctuations.xml b/java/res/values-iw/config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..9a9e6ee
--- /dev/null
+++ b/java/res/values-iw/config-spacing-and-punctuations.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+    <!-- Symbols that are suggested between words -->
+    <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",(|),)|(,\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-sw600dp/config-spacing-and-punctuations.xml b/java/res/values-sw600dp/config-spacing-and-punctuations.xml
index 9c12cf4..4d19412 100644
--- a/java/res/values-sw600dp/config-spacing-and-punctuations.xml
+++ b/java/res/values-sw600dp/config-spacing-and-punctuations.xml
@@ -19,5 +19,5 @@
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- Symbols that are suggested between words -->
-    <string name="suggested_punctuations" translatable="false">:,;,\",!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,\',-,/,@,_</string>
+    <string name="suggested_punctuations" translatable="false">:,;,\",(,),\',-,/,@,_</string>
 </resources>
diff --git a/java/res/values/config-spacing-and-punctuations.xml b/java/res/values/config-spacing-and-punctuations.xml
index 1dd2e1f..ad5663d 100644
--- a/java/res/values/config-spacing-and-punctuations.xml
+++ b/java/res/values/config-spacing-and-punctuations.xml
@@ -21,7 +21,7 @@
     <!-- TODO: these settings depend on the language. They should be put either in the dictionary
          header, or in the subtype maybe? -->
     <!-- Symbols that are suggested between words -->
-    <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,\',-,/,@,_</string>
+    <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",(,),\',-,/,@,_</string>
     <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
     <string name="symbols_preceded_by_space" translatable="false">([{&amp;</string>
     <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
diff --git a/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
index ab99ec5..76ac6bb 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
@@ -23,7 +23,7 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
                 latin:keySpec="["
diff --git a/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml b/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
index 5443396..f18fb50 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
@@ -23,7 +23,7 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
                 latin:keySpec=";"
diff --git a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
index c95ca2e..ff1a2c8 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
@@ -23,7 +23,7 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
                 latin:keySpec=","
diff --git a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
index 5389e22..5c7506e 100644
--- a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
+++ b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
@@ -21,87 +21,98 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <Key
-        latin:keySpec="`"
-        latin:keyHintLabel="~"
-        latin:additionalMoreKeys="~"
-        latin:keyStyle="hasShiftedLetterHintStyle" />
-    <Key
-        latin:keySpec="1"
-        latin:keyHintLabel="!"
-        latin:additionalMoreKeys="!"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_exclamation,!text/more_keys_for_symbols_1" />
-    <Key
-        latin:keySpec="2"
-        latin:keyHintLabel="\@"
-        latin:additionalMoreKeys="\@"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_2" />
-    <Key
-        latin:keySpec="3"
-        latin:keyHintLabel="\#"
-        latin:additionalMoreKeys="\#"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_3" />
-    <Key
-        latin:keySpec="4"
-        latin:keyHintLabel="$"
-        latin:additionalMoreKeys="$"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_4" />
-    <Key
-        latin:keySpec="5"
-        latin:keyHintLabel="%"
-        latin:additionalMoreKeys="\\%"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_5" />
-    <Key
-        latin:keySpec="6"
-        latin:keyHintLabel="^"
-        latin:additionalMoreKeys="^"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_6" />
-    <Key
-        latin:keySpec="7"
-        latin:keyHintLabel="&amp;"
-        latin:additionalMoreKeys="&amp;"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_7" />
-    <Key
-        latin:keySpec="8"
-        latin:keyHintLabel="*"
-        latin:additionalMoreKeys="*"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_8" />
-    <Key
-        latin:keySpec="9"
-        latin:keyHintLabel="("
-        latin:additionalMoreKeys="("
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_9" />
-    <Key
-        latin:keySpec="0"
-        latin:keyHintLabel=")"
-        latin:additionalMoreKeys=")"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_0" />
-    <!-- U+2013: "–" EN DASH
-         U+2014: "—" EM DASH
-         U+00B7: "·" MIDDLE DOT -->
-    <Key
-        latin:keySpec="-"
-        latin:keyHintLabel="_"
-        latin:additionalMoreKeys="_"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
-    <!-- U+221E: "∞" INFINITY
-         U+2260: "≠" NOT EQUAL TO
-         U+2248: "≈" ALMOST EQUAL TO -->
-    <Key
-        latin:keySpec="="
-        latin:keyHintLabel="+"
-        latin:additionalMoreKeys="+"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="&#x221E;,&#x2260;,&#x2248;" />
+    <switch>
+        <case
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
+        >
+            <Key
+                latin:keySpec="`"
+                latin:keyHintLabel="~"
+                latin:additionalMoreKeys="~"
+                latin:keyStyle="hasShiftedLetterHintStyle" />
+            <Key
+                latin:keySpec="1"
+                latin:keyHintLabel="!"
+                latin:additionalMoreKeys="!"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/more_keys_for_exclamation,!text/more_keys_for_symbols_1" />
+            <Key
+                latin:keySpec="2"
+                latin:keyHintLabel="\@"
+                latin:additionalMoreKeys="\@"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/more_keys_for_symbols_2" />
+            <Key
+                latin:keySpec="3"
+                latin:keyHintLabel="\#"
+                latin:additionalMoreKeys="\#"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/more_keys_for_symbols_3" />
+            <Key
+                latin:keySpec="4"
+                latin:keyHintLabel="$"
+                latin:additionalMoreKeys="$"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/more_keys_for_symbols_4" />
+            <Key
+                latin:keySpec="5"
+                latin:keyHintLabel="%"
+                latin:additionalMoreKeys="\\%"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/more_keys_for_symbols_5" />
+            <Key
+                latin:keySpec="6"
+                latin:keyHintLabel="^"
+                latin:additionalMoreKeys="^"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/more_keys_for_symbols_6" />
+            <Key
+                latin:keySpec="7"
+                latin:keyHintLabel="&amp;"
+                latin:additionalMoreKeys="&amp;"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/more_keys_for_symbols_7" />
+            <Key
+                latin:keySpec="8"
+                latin:keyHintLabel="*"
+                latin:additionalMoreKeys="*"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/more_keys_for_symbols_8" />
+            <Key
+                latin:keySpec="9"
+                latin:keyHintLabel="("
+                latin:additionalMoreKeys="("
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/more_keys_for_symbols_9" />
+            <Key
+                latin:keySpec="0"
+                latin:keyHintLabel=")"
+                latin:additionalMoreKeys=")"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/more_keys_for_symbols_0" />
+            <!-- U+2013: "–" EN DASH
+                 U+2014: "—" EM DASH
+                 U+00B7: "·" MIDDLE DOT -->
+            <Key
+                latin:keySpec="-"
+                latin:keyHintLabel="_"
+                latin:additionalMoreKeys="_"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
+            <!-- U+221E: "∞" INFINITY
+                 U+2260: "≠" NOT EQUAL TO
+                 U+2248: "≈" ALMOST EQUAL TO -->
+            <Key
+                latin:keySpec="="
+                latin:keyHintLabel="+"
+                latin:additionalMoreKeys="+"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="&#x221E;,&#x2260;,&#x2248;" />
+        </case>
+        <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" -->
+        <default>
+            <include
+                 latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
+        </default>
+    </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/rows_pcqwerty.xml b/java/res/xml-sw600dp/rows_pcqwerty.xml
index b503d83..73b7e47 100644
--- a/java/res/xml-sw600dp/rows_pcqwerty.xml
+++ b/java/res/xml-sw600dp/rows_pcqwerty.xml
@@ -26,19 +26,8 @@
     <Row
         latin:keyWidth="7.0%p"
     >
-        <switch>
-            <case
-                latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
-            >
-                <include
-                    latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
-            </case>
-            <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
-            <default>
-                <include
-                     latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
-            </default>
-        </switch>
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
diff --git a/java/res/xml/key_f1.xml b/java/res/xml/key_f1.xml
index d3a7539..0a89fe3 100644
--- a/java/res/xml/key_f1.xml
+++ b/java/res/xml/key_f1.xml
@@ -42,7 +42,6 @@
             <Key
                 latin:keySpec="!text/keylabel_for_comma"
                 latin:keyLabelFlags="hasPopupHint"
-                latin:additionalMoreKeys="!text/more_keys_for_comma"
                 latin:keyStyle="f1MoreKeysStyle" />
         </case>
         <!-- latin:supportsSwitchingToShortcutIme="true" -->
@@ -57,7 +56,7 @@
             <Key
                 latin:keySpec="!text/keylabel_for_comma"
                 latin:keyLabelFlags="hasPopupHint"
-                latin:additionalMoreKeys="!text/more_keys_for_comma,!text/shortcut_as_more_key"
+                latin:additionalMoreKeys="!text/shortcut_as_more_key"
                 latin:keyStyle="f1MoreKeysStyle" />
         </default>
     </switch>
diff --git a/java/res/xml/keys_comma_period_symbols.xml b/java/res/xml/keys_comma_period_symbols.xml
index 5221d34..53c3343 100644
--- a/java/res/xml/keys_comma_period_symbols.xml
+++ b/java/res/xml/keys_comma_period_symbols.xml
@@ -22,8 +22,7 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keySpec="!text/keylabel_for_comma"
-        latin:moreKeys="!text/more_keys_for_comma" />
+        latin:keySpec="!text/keylabel_for_comma" />
     <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
     <Key
         latin:keySpec="."
diff --git a/java/res/xml/keys_pcqwerty2_right3.xml b/java/res/xml/keys_pcqwerty2_right3.xml
index 9e62b09..b188cff 100644
--- a/java/res/xml/keys_pcqwerty2_right3.xml
+++ b/java/res/xml/keys_pcqwerty2_right3.xml
@@ -23,7 +23,7 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
                 latin:keySpec="["
diff --git a/java/res/xml/keys_pcqwerty3_right2.xml b/java/res/xml/keys_pcqwerty3_right2.xml
index d889216..8a1f60f 100644
--- a/java/res/xml/keys_pcqwerty3_right2.xml
+++ b/java/res/xml/keys_pcqwerty3_right2.xml
@@ -23,7 +23,7 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
                 latin:keySpec=";"
diff --git a/java/res/xml/keys_pcqwerty4_right3.xml b/java/res/xml/keys_pcqwerty4_right3.xml
index f32d809..6beba20 100644
--- a/java/res/xml/keys_pcqwerty4_right3.xml
+++ b/java/res/xml/keys_pcqwerty4_right3.xml
@@ -23,7 +23,7 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
                 latin:keySpec=","
diff --git a/java/res/xml/rowkeys_pcqwerty1.xml b/java/res/xml/rowkeys_pcqwerty1.xml
index fdb5072..3695733 100644
--- a/java/res/xml/rowkeys_pcqwerty1.xml
+++ b/java/res/xml/rowkeys_pcqwerty1.xml
@@ -21,61 +21,72 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <Key
-        latin:keySpec="`"
-        latin:additionalMoreKeys="~" />
-    <Key
-        latin:keySpec="1"
-        latin:additionalMoreKeys="!,!text/more_keys_for_exclamation"
-        latin:moreKeys="!text/more_keys_for_symbols_1" />
-    <Key
-        latin:keySpec="2"
-        latin:additionalMoreKeys="\@"
-        latin:moreKeys="!text/more_keys_for_symbols_2" />
-    <Key
-        latin:keySpec="3"
-        latin:additionalMoreKeys="\#"
-        latin:moreKeys="!text/more_keys_for_symbols_3" />
-    <Key
-        latin:keySpec="4"
-        latin:additionalMoreKeys="$"
-        latin:moreKeys="!text/more_keys_for_symbols_4" />
-    <Key
-        latin:keySpec="5"
-        latin:additionalMoreKeys="\\%"
-        latin:moreKeys="!text/more_keys_for_symbols_5" />
-    <Key
-        latin:keySpec="6"
-        latin:additionalMoreKeys="^"
-        latin:moreKeys="!text/more_keys_for_symbols_6" />
-    <Key
-        latin:keySpec="7"
-        latin:additionalMoreKeys="&amp;"
-        latin:moreKeys="!text/more_keys_for_symbols_7" />
-    <Key
-        latin:keySpec="8"
-        latin:additionalMoreKeys="*"
-        latin:moreKeys="!text/more_keys_for_symbols_8" />
-    <Key
-        latin:keySpec="9"
-        latin:additionalMoreKeys="("
-        latin:moreKeys="!text/more_keys_for_symbols_9" />
-    <Key
-        latin:keySpec="0"
-        latin:additionalMoreKeys=")"
-        latin:moreKeys="!text/more_keys_for_symbols_0" />
-    <!-- U+2013: "–" EN DASH
-         U+2014: "—" EM DASH
-         U+00B7: "·" MIDDLE DOT -->
-    <Key
-        latin:keySpec="-"
-        latin:additionalMoreKeys="_"
-        latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
-    <!-- U+221E: "∞" INFINITY
-         U+2260: "≠" NOT EQUAL TO
-         U+2248: "≈" ALMOST EQUAL TO -->
-    <Key
-        latin:keySpec="="
-        latin:additionalMoreKeys="+"
-        latin:moreKeys="!fixedColumnOrder!4,&#x221E;,&#x2260;,&#x2248;,%" />
+    <switch>
+        <case
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
+        >
+            <Key
+                latin:keySpec="`"
+                latin:additionalMoreKeys="~" />
+            <Key
+                latin:keySpec="1"
+                latin:additionalMoreKeys="!,!text/more_keys_for_exclamation"
+                latin:moreKeys="!text/more_keys_for_symbols_1" />
+            <Key
+                latin:keySpec="2"
+                latin:additionalMoreKeys="\@"
+                latin:moreKeys="!text/more_keys_for_symbols_2" />
+            <Key
+                latin:keySpec="3"
+                latin:additionalMoreKeys="\#"
+                latin:moreKeys="!text/more_keys_for_symbols_3" />
+            <Key
+                latin:keySpec="4"
+                latin:additionalMoreKeys="$"
+                latin:moreKeys="!text/more_keys_for_symbols_4" />
+            <Key
+                latin:keySpec="5"
+                latin:additionalMoreKeys="\\%"
+                latin:moreKeys="!text/more_keys_for_symbols_5" />
+            <Key
+                latin:keySpec="6"
+                latin:additionalMoreKeys="^"
+                latin:moreKeys="!text/more_keys_for_symbols_6" />
+            <Key
+                latin:keySpec="7"
+                latin:additionalMoreKeys="&amp;"
+                latin:moreKeys="!text/more_keys_for_symbols_7" />
+            <Key
+                latin:keySpec="8"
+                latin:additionalMoreKeys="*"
+                latin:moreKeys="!text/more_keys_for_symbols_8" />
+            <Key
+                latin:keySpec="9"
+                latin:additionalMoreKeys="("
+                latin:moreKeys="!text/more_keys_for_symbols_9" />
+            <Key
+                latin:keySpec="0"
+                latin:additionalMoreKeys=")"
+                latin:moreKeys="!text/more_keys_for_symbols_0" />
+            <!-- U+2013: "–" EN DASH
+                 U+2014: "—" EM DASH
+                 U+00B7: "·" MIDDLE DOT -->
+            <Key
+                latin:keySpec="-"
+                latin:additionalMoreKeys="_"
+                latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
+            <!-- U+221E: "∞" INFINITY
+                 U+2260: "≠" NOT EQUAL TO
+                 U+2248: "≈" ALMOST EQUAL TO -->
+            <Key
+                latin:keySpec="="
+                latin:additionalMoreKeys="+"
+                latin:moreKeys="!fixedColumnOrder!4,&#x221E;,&#x2260;,&#x2248;,%" />
+        </case>
+        <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" -->
+        <default>
+            <include
+                 latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
+        </default>
+    </switch>
 </merge>
diff --git a/java/res/xml/rows_pcqwerty.xml b/java/res/xml/rows_pcqwerty.xml
index 8846989..a5ed745 100644
--- a/java/res/xml/rows_pcqwerty.xml
+++ b/java/res/xml/rows_pcqwerty.xml
@@ -26,19 +26,8 @@
     <Row
         latin:keyWidth="7.692%p"
     >
-        <switch>
-            <case
-                latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
-            >
-                <include
-                    latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
-            </case>
-            <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
-            <default>
-                <include
-                     latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
-            </default>
-        </switch>
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
     </Row>
     <Row
         latin:keyWidth="7.692%p"
diff --git a/java/src/com/android/inputmethod/event/Combiner.java b/java/src/com/android/inputmethod/event/Combiner.java
index ab6b70c..c3869a2 100644
--- a/java/src/com/android/inputmethod/event/Combiner.java
+++ b/java/src/com/android/inputmethod/event/Combiner.java
@@ -16,14 +16,22 @@
 
 package com.android.inputmethod.event;
 
+import java.util.ArrayList;
+
 /**
- * A generic interface for combiners.
+ * A generic interface for combiners. Combiners are objects that transform chains of input events
+ * into committable strings and manage feedback to show to the user on the combining state.
  */
 public interface Combiner {
     /**
-     * Combine an event with the existing state and return the new event.
+     * Process an event, possibly combining it with the existing state and return the new event.
+     *
+     * If this event does not result in any new event getting passed down the chain, this method
+     * returns null. It may also modify the previous event list if appropriate.
+     *
+     * @param previousEvents the previous events in this composition.
      * @param event the event to combine with the existing state.
      * @return the resulting event.
      */
-    Event combine(Event event);
+    Event processEvent(ArrayList<Event> previousEvents, Event event);
 }
diff --git a/java/src/com/android/inputmethod/event/CombinerChain.java b/java/src/com/android/inputmethod/event/CombinerChain.java
new file mode 100644
index 0000000..0e01c81
--- /dev/null
+++ b/java/src/com/android/inputmethod/event/CombinerChain.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.event;
+
+import com.android.inputmethod.latin.utils.CollectionUtils;
+
+import java.util.ArrayList;
+
+/**
+ * This class implements the logic chain between receiving events and generating code points.
+ *
+ * Event sources are multiple. It may be a hardware keyboard, a D-PAD, a software keyboard,
+ * or any exotic input source.
+ * This class will orchestrate the composing chain that starts with an event as its input. Each
+ * composer will be given turns one after the other.
+ * The output is composed of two sequences of code points: the first, representing the already
+ * finished combining part, will be shown normally as the composing string, while the second is
+ * feedback on the composing state and will typically be shown with different styling such as
+ * a colored background.
+ */
+public class CombinerChain {
+    // TODO: Create an object type to represent input material + visual feedback + decoding state
+
+    private final ArrayList<Combiner> mCombiners;
+
+    /**
+     * Create an combiner chain.
+     *
+     * The combiner chain takes events as inputs and outputs code points and combining state.
+     * For example, if the input language is Japanese, the combining chain will typically perform
+     * kana conversion.
+     *
+     * @param combinerList A list of combiners to be applied in order.
+     */
+    public CombinerChain(final Combiner... combinerList) {
+        mCombiners = CollectionUtils.newArrayList();
+        // The dead key combiner is always active, and always first
+        mCombiners.add(new DeadKeyCombiner());
+    }
+
+    // Pass a new event through the whole chain.
+    public void processEvent(final ArrayList<Event> previousEvents, final Event newEvent) {
+        final ArrayList<Event> modifiablePreviousEvents = new ArrayList<Event>(previousEvents);
+        Event event = newEvent;
+        for (final Combiner combiner : mCombiners) {
+            // A combiner can never return more than one event; it can return several
+            // code points, but they should be encapsulated within one event.
+            event = combiner.processEvent(modifiablePreviousEvents, event);
+            if (null == event) {
+                // Combiners return null if they eat the event.
+                return;
+            }
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/event/DeadKeyCombiner.java b/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
index ae86397..f77ce63 100644
--- a/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
+++ b/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
@@ -21,14 +21,17 @@
 
 import com.android.inputmethod.latin.Constants;
 
+import java.util.ArrayList;
+
 /**
  * A combiner that handles dead keys.
  */
 public class DeadKeyCombiner implements Combiner {
+    // TODO: make this a list of events instead
     final StringBuilder mDeadSequence = new StringBuilder();
 
     @Override
-    public Event combine(final Event event) {
+    public Event processEvent(final ArrayList<Event> previousEvents, final Event event) {
         if (null == event) return null; // Just in case some combiner is broken
         if (TextUtils.isEmpty(mDeadSequence)) {
             if (event.isDead()) {
diff --git a/java/src/com/android/inputmethod/event/EventInterpreter.java b/java/src/com/android/inputmethod/event/EventInterpreter.java
deleted file mode 100644
index bcf10fc..0000000
--- a/java/src/com/android/inputmethod/event/EventInterpreter.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-package com.android.inputmethod.event;
-
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import java.util.ArrayList;
-
-/**
- * This class implements the logic between receiving events and generating code points.
- *
- * Event sources are multiple. It may be a hardware keyboard, a D-PAD, a software keyboard,
- * or any exotic input source.
- * This class will orchestrate the decoding chain that starts with an event and ends up with
- * a stream of code points + decoding state.
- */
-public class EventInterpreter {
-    // TODO: Implement an object pool for events, as we'll create a lot of them
-    // TODO: Create a combiner
-    // TODO: Create an object type to represent input material + visual feedback + decoding state
-
-    private final EventDecoderSpec mDecoderSpec;
-    private final ArrayList<Combiner> mCombiners;
-
-    /**
-     * Create an event interpreter according to a specification.
-     *
-     * The specification contains information about what to do with events. Typically, it will
-     * contain information about the type of keyboards - for example, if hardware keyboard(s) is/are
-     * attached, their type will be included here so that the decoder knows what to do with each
-     * keypress (a 10-key keyboard is not handled like a qwerty-ish keyboard).
-     * It also contains information for combining characters. For example, if the input language
-     * is Japanese, the specification will typically request kana conversion.
-     * Also note that the specification can be null. This means that we need to create a default
-     * interpreter that does no specific combining, and assumes the most common cases.
-     *
-     * @param specification the specification for event interpretation. null for default.
-     */
-    public EventInterpreter(final EventDecoderSpec specification) {
-        mDecoderSpec = null != specification ? specification : new EventDecoderSpec();
-        mCombiners = CollectionUtils.newArrayList();
-        mCombiners.add(new DeadKeyCombiner());
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 2ac51de..1d9ee90 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -111,30 +111,30 @@
         /*  29: 5 */ "keylabel_for_east_slavic_row2_11",
         /*  30: 5 */ "keylabel_for_east_slavic_row3_5",
         /*  31: 5 */ "more_keys_for_cyrillic_soft_sign",
-        /*  32: 5 */ "more_keys_for_punctuation",
-        /*  33: 4 */ "more_keys_for_nordic_row2_11",
-        /*  34: 4 */ "keylabel_for_symbols_1",
-        /*  35: 4 */ "keylabel_for_symbols_2",
-        /*  36: 4 */ "keylabel_for_symbols_3",
-        /*  37: 4 */ "keylabel_for_symbols_4",
-        /*  38: 4 */ "keylabel_for_symbols_5",
-        /*  39: 4 */ "keylabel_for_symbols_6",
-        /*  40: 4 */ "keylabel_for_symbols_7",
-        /*  41: 4 */ "keylabel_for_symbols_8",
-        /*  42: 4 */ "keylabel_for_symbols_9",
-        /*  43: 4 */ "keylabel_for_symbols_0",
-        /*  44: 4 */ "label_to_symbol_key",
-        /*  45: 4 */ "label_to_symbol_with_microphone_key",
-        /*  46: 4 */ "additional_more_keys_for_symbols_1",
-        /*  47: 4 */ "additional_more_keys_for_symbols_2",
-        /*  48: 4 */ "additional_more_keys_for_symbols_3",
-        /*  49: 4 */ "additional_more_keys_for_symbols_4",
-        /*  50: 4 */ "additional_more_keys_for_symbols_5",
-        /*  51: 4 */ "additional_more_keys_for_symbols_6",
-        /*  52: 4 */ "additional_more_keys_for_symbols_7",
-        /*  53: 4 */ "additional_more_keys_for_symbols_8",
-        /*  54: 4 */ "additional_more_keys_for_symbols_9",
-        /*  55: 4 */ "additional_more_keys_for_symbols_0",
+        /*  32: 4 */ "more_keys_for_nordic_row2_11",
+        /*  33: 4 */ "keylabel_for_symbols_1",
+        /*  34: 4 */ "keylabel_for_symbols_2",
+        /*  35: 4 */ "keylabel_for_symbols_3",
+        /*  36: 4 */ "keylabel_for_symbols_4",
+        /*  37: 4 */ "keylabel_for_symbols_5",
+        /*  38: 4 */ "keylabel_for_symbols_6",
+        /*  39: 4 */ "keylabel_for_symbols_7",
+        /*  40: 4 */ "keylabel_for_symbols_8",
+        /*  41: 4 */ "keylabel_for_symbols_9",
+        /*  42: 4 */ "keylabel_for_symbols_0",
+        /*  43: 4 */ "label_to_symbol_key",
+        /*  44: 4 */ "label_to_symbol_with_microphone_key",
+        /*  45: 4 */ "additional_more_keys_for_symbols_1",
+        /*  46: 4 */ "additional_more_keys_for_symbols_2",
+        /*  47: 4 */ "additional_more_keys_for_symbols_3",
+        /*  48: 4 */ "additional_more_keys_for_symbols_4",
+        /*  49: 4 */ "additional_more_keys_for_symbols_5",
+        /*  50: 4 */ "additional_more_keys_for_symbols_6",
+        /*  51: 4 */ "additional_more_keys_for_symbols_7",
+        /*  52: 4 */ "additional_more_keys_for_symbols_8",
+        /*  53: 4 */ "additional_more_keys_for_symbols_9",
+        /*  54: 4 */ "additional_more_keys_for_symbols_0",
+        /*  55: 3 */ "more_keys_for_punctuation",
         /*  56: 3 */ "more_keys_for_star",
         /*  57: 3 */ "keyspec_left_parenthesis",
         /*  58: 3 */ "keyspec_right_parenthesis",
@@ -177,78 +177,77 @@
         /*  95: 2 */ "more_keys_for_right_parenthesis",
         /*  96: 2 */ "more_keys_for_arabic_diacritics",
         /*  97: 2 */ "keylabel_for_comma",
-        /*  98: 2 */ "more_keys_for_comma",
-        /*  99: 2 */ "keyhintlabel_for_tablet_comma",
-        /* 100: 2 */ "more_keys_for_tablet_comma",
-        /* 101: 2 */ "keyhintlabel_for_period",
-        /* 102: 2 */ "more_keys_for_period",
-        /* 103: 2 */ "keyhintlabel_for_tablet_period",
-        /* 104: 2 */ "keylabel_for_symbols_question",
-        /* 105: 2 */ "keylabel_for_symbols_semicolon",
-        /* 106: 2 */ "keylabel_for_symbols_percent",
-        /* 107: 2 */ "more_keys_for_symbols_semicolon",
-        /* 108: 2 */ "more_keys_for_symbols_percent",
-        /* 109: 1 */ "more_keys_for_v",
-        /* 110: 1 */ "more_keys_for_j",
-        /* 111: 1 */ "more_keys_for_cyrillic_ka",
-        /* 112: 1 */ "more_keys_for_cyrillic_a",
-        /* 113: 1 */ "more_keys_for_east_slavic_row2_11",
-        /* 114: 1 */ "more_keys_for_currency_dollar",
-        /* 115: 1 */ "more_keys_for_tablet_punctuation",
-        /* 116: 1 */ "more_keys_for_plus",
-        /* 117: 1 */ "more_keys_for_less_than",
-        /* 118: 1 */ "more_keys_for_greater_than",
-        /* 119: 1 */ "keylabel_for_period",
-        /* 120: 1 */ "keylabel_for_tablet_period",
-        /* 121: 1 */ "more_keys_for_exclamation",
-        /* 122: 1 */ "more_keys_for_q",
-        /* 123: 1 */ "more_keys_for_x",
-        /* 124: 1 */ "keylabel_for_q",
-        /* 125: 1 */ "keylabel_for_w",
-        /* 126: 1 */ "keylabel_for_y",
-        /* 127: 1 */ "keylabel_for_x",
-        /* 128: 0 */ "more_keys_for_currency",
-        /* 129: 0 */ "more_keys_for_symbols_1",
-        /* 130: 0 */ "more_keys_for_symbols_2",
-        /* 131: 0 */ "more_keys_for_symbols_3",
-        /* 132: 0 */ "more_keys_for_symbols_4",
-        /* 133: 0 */ "more_keys_for_symbols_5",
-        /* 134: 0 */ "more_keys_for_symbols_6",
-        /* 135: 0 */ "more_keys_for_symbols_7",
-        /* 136: 0 */ "more_keys_for_symbols_8",
-        /* 137: 0 */ "more_keys_for_symbols_9",
-        /* 138: 0 */ "more_keys_for_symbols_0",
-        /* 139: 0 */ "more_keys_for_am_pm",
-        /* 140: 0 */ "settings_as_more_key",
-        /* 141: 0 */ "shortcut_as_more_key",
-        /* 142: 0 */ "action_next_as_more_key",
-        /* 143: 0 */ "action_previous_as_more_key",
-        /* 144: 0 */ "label_to_more_symbol_key",
-        /* 145: 0 */ "label_to_more_symbol_for_tablet_key",
-        /* 146: 0 */ "label_to_phone_numeric_key",
-        /* 147: 0 */ "label_to_phone_symbols_key",
-        /* 148: 0 */ "label_time_am",
-        /* 149: 0 */ "label_time_pm",
-        /* 150: 0 */ "keylabel_for_popular_domain",
-        /* 151: 0 */ "more_keys_for_popular_domain",
-        /* 152: 0 */ "keyspecs_for_left_parenthesis_more_keys",
-        /* 153: 0 */ "keyspecs_for_right_parenthesis_more_keys",
-        /* 154: 0 */ "single_laqm_raqm",
-        /* 155: 0 */ "single_raqm_laqm",
-        /* 156: 0 */ "double_laqm_raqm",
-        /* 157: 0 */ "double_raqm_laqm",
-        /* 158: 0 */ "single_lqm_rqm",
-        /* 159: 0 */ "single_9qm_lqm",
-        /* 160: 0 */ "single_9qm_rqm",
-        /* 161: 0 */ "single_rqm_9qm",
-        /* 162: 0 */ "double_lqm_rqm",
-        /* 163: 0 */ "double_9qm_lqm",
-        /* 164: 0 */ "double_9qm_rqm",
-        /* 165: 0 */ "double_rqm_9qm",
-        /* 166: 0 */ "more_keys_for_single_quote",
-        /* 167: 0 */ "more_keys_for_double_quote",
-        /* 168: 0 */ "more_keys_for_tablet_double_quote",
-        /* 169: 0 */ "emoji_key_as_more_key",
+        /*  98: 2 */ "keyhintlabel_for_tablet_comma",
+        /*  99: 2 */ "more_keys_for_tablet_comma",
+        /* 100: 2 */ "keyhintlabel_for_period",
+        /* 101: 2 */ "more_keys_for_period",
+        /* 102: 2 */ "keyhintlabel_for_tablet_period",
+        /* 103: 2 */ "keylabel_for_symbols_question",
+        /* 104: 2 */ "keylabel_for_symbols_semicolon",
+        /* 105: 2 */ "keylabel_for_symbols_percent",
+        /* 106: 2 */ "more_keys_for_symbols_semicolon",
+        /* 107: 2 */ "more_keys_for_symbols_percent",
+        /* 108: 1 */ "more_keys_for_v",
+        /* 109: 1 */ "more_keys_for_j",
+        /* 110: 1 */ "more_keys_for_cyrillic_ka",
+        /* 111: 1 */ "more_keys_for_cyrillic_a",
+        /* 112: 1 */ "more_keys_for_east_slavic_row2_11",
+        /* 113: 1 */ "more_keys_for_currency_dollar",
+        /* 114: 1 */ "more_keys_for_tablet_punctuation",
+        /* 115: 1 */ "more_keys_for_plus",
+        /* 116: 1 */ "more_keys_for_less_than",
+        /* 117: 1 */ "more_keys_for_greater_than",
+        /* 118: 1 */ "keylabel_for_period",
+        /* 119: 1 */ "keylabel_for_tablet_period",
+        /* 120: 1 */ "more_keys_for_exclamation",
+        /* 121: 1 */ "more_keys_for_q",
+        /* 122: 1 */ "more_keys_for_x",
+        /* 123: 1 */ "keylabel_for_q",
+        /* 124: 1 */ "keylabel_for_w",
+        /* 125: 1 */ "keylabel_for_y",
+        /* 126: 1 */ "keylabel_for_x",
+        /* 127: 0 */ "more_keys_for_currency",
+        /* 128: 0 */ "more_keys_for_symbols_1",
+        /* 129: 0 */ "more_keys_for_symbols_2",
+        /* 130: 0 */ "more_keys_for_symbols_3",
+        /* 131: 0 */ "more_keys_for_symbols_4",
+        /* 132: 0 */ "more_keys_for_symbols_5",
+        /* 133: 0 */ "more_keys_for_symbols_6",
+        /* 134: 0 */ "more_keys_for_symbols_7",
+        /* 135: 0 */ "more_keys_for_symbols_8",
+        /* 136: 0 */ "more_keys_for_symbols_9",
+        /* 137: 0 */ "more_keys_for_symbols_0",
+        /* 138: 0 */ "more_keys_for_am_pm",
+        /* 139: 0 */ "settings_as_more_key",
+        /* 140: 0 */ "shortcut_as_more_key",
+        /* 141: 0 */ "action_next_as_more_key",
+        /* 142: 0 */ "action_previous_as_more_key",
+        /* 143: 0 */ "label_to_more_symbol_key",
+        /* 144: 0 */ "label_to_more_symbol_for_tablet_key",
+        /* 145: 0 */ "label_to_phone_numeric_key",
+        /* 146: 0 */ "label_to_phone_symbols_key",
+        /* 147: 0 */ "label_time_am",
+        /* 148: 0 */ "label_time_pm",
+        /* 149: 0 */ "keylabel_for_popular_domain",
+        /* 150: 0 */ "more_keys_for_popular_domain",
+        /* 151: 0 */ "keyspecs_for_left_parenthesis_more_keys",
+        /* 152: 0 */ "keyspecs_for_right_parenthesis_more_keys",
+        /* 153: 0 */ "single_laqm_raqm",
+        /* 154: 0 */ "single_raqm_laqm",
+        /* 155: 0 */ "double_laqm_raqm",
+        /* 156: 0 */ "double_raqm_laqm",
+        /* 157: 0 */ "single_lqm_rqm",
+        /* 158: 0 */ "single_9qm_lqm",
+        /* 159: 0 */ "single_9qm_rqm",
+        /* 160: 0 */ "single_rqm_9qm",
+        /* 161: 0 */ "double_lqm_rqm",
+        /* 162: 0 */ "double_9qm_lqm",
+        /* 163: 0 */ "double_9qm_rqm",
+        /* 164: 0 */ "double_rqm_9qm",
+        /* 165: 0 */ "more_keys_for_single_quote",
+        /* 166: 0 */ "more_keys_for_double_quote",
+        /* 167: 0 */ "more_keys_for_tablet_double_quote",
+        /* 168: 0 */ "emoji_key_as_more_key",
     };
 
     private static final String EMPTY = "";
@@ -270,10 +269,8 @@
         /* double_angle_quotes */ "!text/double_laqm_raqm",
         /* keylabel_for_currency */ "$",
         /* more_keys_for_r ~ */
-        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        /* ~ more_keys_for_cyrillic_soft_sign */
-        /* more_keys_for_punctuation */ "!fixedColumnOrder!8,;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,#,!,\\,,?,&,\\%,+,\",-,:,',@",
-        /* more_keys_for_nordic_row2_11 */ EMPTY,
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ more_keys_for_nordic_row2_11 */
         /* keylabel_for_symbols_1 */ "1",
         /* keylabel_for_symbols_2 */ "2",
         /* keylabel_for_symbols_3 */ "3",
@@ -292,6 +289,7 @@
         /* additional_more_keys_for_symbols_1 ~ */
         EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
         /* ~ additional_more_keys_for_symbols_0 */
+        /* more_keys_for_punctuation */ "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&",
         // U+2020: "†" DAGGER
         // U+2021: "‡" DOUBLE DAGGER
         // U+2605: "★" BLACK STAR
@@ -339,8 +337,8 @@
         /* more_keys_for_arabic_diacritics */ EMPTY,
         // Comma key
         /* keylabel_for_comma */ ",",
-        /* more_keys_for_comma ~ */
-        EMPTY, EMPTY, EMPTY, EMPTY,
+        /* keyhintlabel_for_tablet_comma ~ */
+        EMPTY, EMPTY, EMPTY,
         /* ~ keyhintlabel_for_period */
         /* more_keys_for_period */ "!text/more_keys_for_punctuation",
         /* keyhintlabel_for_tablet_period */ EMPTY,
@@ -359,7 +357,7 @@
         // U+00A5: "¥" YEN SIGN
         // U+20B1: "₱" PESO SIGN
         /* more_keys_for_currency_dollar */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
-        /* more_keys_for_tablet_punctuation */ "!fixedColumnOrder!7,;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,#,',\\,,&,\\%,+,\",-,:,@",
+        /* more_keys_for_tablet_punctuation */ "!autoColumnOrder!7,\\,,',#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,@,:,-,\",+,\\%,&",
         // U+00B1: "±" PLUS-MINUS SIGN
         /* more_keys_for_plus */ "\u00B1",
         /* more_keys_for_less_than */ "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote",
@@ -531,10 +529,8 @@
         /* label_to_alpha_key */ "\u0623\u200C\u0628\u200C\u062C",
         /* more_keys_for_s ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null,
-        /* ~ more_keys_for_cyrillic_soft_sign */
-        /* more_keys_for_punctuation */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(|),)|(",
-        /* more_keys_for_nordic_row2_11 */ null,
+        null, null, null, null, null, null, null, null,
+        /* ~ more_keys_for_nordic_row2_11 */
         // U+0661: "١" ARABIC-INDIC DIGIT ONE
         /* keylabel_for_symbols_1 */ "\u0661",
         // U+0662: "٢" ARABIC-INDIC DIGIT TWO
@@ -573,6 +569,7 @@
         // U+066B: "٫" ARABIC DECIMAL SEPARATOR
         // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
         /* additional_more_keys_for_symbols_0 */ "0,\u066B,\u066C",
+        /* more_keys_for_punctuation */ null,
         // U+2605: "★" BLACK STAR
         // U+066D: "٭" ARABIC FIVE POINTED STAR
         /* more_keys_for_star */ "\u2605,\u066D",
@@ -634,7 +631,6 @@
         /* more_keys_for_arabic_diacritics */ "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064D|\u064D, \u064C|\u064C, \u064B|\u064B, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064F|\u064F, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
         // U+060C: "،" ARABIC COMMA
         /* keylabel_for_comma */ "\u060C",
-        /* more_keys_for_comma */ "\\,",
         /* keyhintlabel_for_tablet_comma */ "\u061F",
         /* more_keys_for_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'",
         // U+0651: "ّ" ARABIC SHADDA
@@ -807,23 +803,23 @@
         /* more_keys_for_l */ "l\u00B7l,\u0142",
         /* more_keys_for_g ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null,
-        /* ~ more_keys_for_cyrillic_soft_sign */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null,
+        /* ~ additional_more_keys_for_symbols_0 */
         // U+00B7: "·" MIDDLE DOT
-        /* more_keys_for_punctuation */ "!fixedColumnOrder!9,;,/,(,),#,\u00B7,!,\\,,?,&,\\%,+,\",-,:,',@",
-        /* more_keys_for_nordic_row2_11 ~ */
+        /* more_keys_for_punctuation */ "!autoColumnOrder!9,\\,,?,!,\u00B7,#,),(,/,;,',@,:,-,\",+,\\%,&",
+        /* more_keys_for_star ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null,
         /* ~ more_keys_for_swiss_row2_11 */
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* keylabel_for_spanish_row2_10 */ "\u00E7",
         /* more_keys_for_bullet ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null,
+        null, null, null, null, null, null,
         /* ~ more_keys_for_currency_dollar */
-        /* more_keys_for_tablet_punctuation */ "!fixedColumnOrder!8,;,/,(,),#,\u00B7,',\\,,&,\\%,+,\",-,:,@",
+        /* more_keys_for_tablet_punctuation */ "!autoColumnOrder!8,\\,,',\u00B7,#,),(,/,;,@,:,-,\",+,\\%,&",
     };
 
     /* Language cs: Czech */
@@ -967,8 +963,8 @@
         // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
         /* more_keys_for_nordic_row2_10 */ "\u00E4",
         /* keylabel_for_east_slavic_row1_9 ~ */
-        null, null, null, null, null, null,
-        /* ~ more_keys_for_punctuation */
+        null, null, null, null, null,
+        /* ~ more_keys_for_cyrillic_soft_sign */
         // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         /* more_keys_for_nordic_row2_11 */ "\u00F6",
     };
@@ -1237,7 +1233,6 @@
         /* keylabel_for_spanish_row2_10 */ "\u0135",
         /* more_keys_for_bullet ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null,
         /* ~ more_keys_for_symbols_percent */
         // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
         /* more_keys_for_v */ "w,\u0175",
@@ -1310,11 +1305,13 @@
         /* more_keys_for_n */ "\u00F1,\u0144",
         /* single_quotes ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_cyrillic_soft_sign */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null,
+        /* ~ additional_more_keys_for_symbols_0 */
         // U+00A1: "¡" INVERTED EXCLAMATION MARK
         // U+00BF: "¿" INVERTED QUESTION MARK
-        /* more_keys_for_punctuation */ "!fixedColumnOrder!9,\u00A1,;,/,(,),#,!,\\,,?,\u00BF,&,\\%,+,\",-,:,',@",
+        /* more_keys_for_punctuation */ "!autoColumnOrder!9,\\,,?,!,#,),(,/,;,\u00A1,',@,:,-,\",+,\\%,&,\u00BF",
     };
 
     /* Language et_EE: Estonian (Estonia) */
@@ -1491,13 +1488,8 @@
         // U+FDFC: "﷼" RIAL SIGN
         /* keylabel_for_currency */ "\uFDFC",
         /* more_keys_for_r ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_cyrillic_soft_sign */
-        // U+061F: "؟" ARABIC QUESTION MARK
-        // U+060C: "،" ARABIC COMMA
-        // U+061B: "؛" ARABIC SEMICOLON
-        /* more_keys_for_punctuation */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis",
-        /* more_keys_for_nordic_row2_11 */ null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ more_keys_for_nordic_row2_11 */
         // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
         /* keylabel_for_symbols_1 */ "\u06F1",
         // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
@@ -1536,6 +1528,7 @@
         // U+066B: "٫" ARABIC DECIMAL SEPARATOR
         // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
         /* additional_more_keys_for_symbols_0 */ "0,\u066B,\u066C",
+        /* more_keys_for_punctuation */ null,
         // U+2605: "★" BLACK STAR
         // U+066D: "٭" ARABIC FIVE POINTED STAR
         /* more_keys_for_star */ "\u2605,\u066D",
@@ -1593,7 +1586,6 @@
         /* more_keys_for_arabic_diacritics */ "!fixedColumnOrder!7, \u0655|\u0655, \u0652|\u0652, \u0651|\u0651, \u064C|\u064C, \u064D|\u064D, \u064B|\u064B, \u0654|\u0654, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u064F|\u064F, \u0650|\u0650, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
         // U+060C: "،" ARABIC COMMA
         /* keylabel_for_comma */ "\u060C",
-        /* more_keys_for_comma */ "\\,",
         /* keyhintlabel_for_tablet_comma */ "\u061F",
         /* more_keys_for_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
         // U+064B: "ً" ARABIC FATHATAN
@@ -1664,8 +1656,8 @@
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         /* more_keys_for_nordic_row2_10 */ "\u00F8",
         /* keylabel_for_east_slavic_row1_9 ~ */
-        null, null, null, null, null, null,
-        /* ~ more_keys_for_punctuation */
+        null, null, null, null, null,
+        /* ~ more_keys_for_cyrillic_soft_sign */
         // U+00E6: "æ" LATIN SMALL LETTER AE
         /* more_keys_for_nordic_row2_11 */ "\u00E6",
     };
@@ -1813,7 +1805,7 @@
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keylabel_for_currency */ "\u20B9",
         /* more_keys_for_r ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ more_keys_for_nordic_row2_11 */
         // U+0967: "१" DEVANAGARI DIGIT ONE
         /* keylabel_for_symbols_1 */ "\u0967",
@@ -1951,21 +1943,22 @@
         /* label_to_alpha_key */ "\u0531\u0532\u0533",
         /* more_keys_for_s ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null,
-        /* ~ more_keys_for_cyrillic_soft_sign */
-        // U+058A: "֊" ARMENIAN HYPHEN
-        // U+055C: "՜" ARMENIAN EXCLAMATION MARK
-        // U+055D: "՝" ARMENIAN COMMA
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ additional_more_keys_for_symbols_0 */
         // U+055E: "՞" ARMENIAN QUESTION MARK
-        // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING
+        // U+055C: "՜" ARMENIAN EXCLAMATION MARK
         // U+055A: "՚" ARMENIAN APOSTROPHE
+        // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING
+        // U+055D: "՝" ARMENIAN COMMA
         // U+055B: "՛" ARMENIAN EMPHASIS MARK
+        // U+058A: "֊" ARMENIAN HYPHEN
+        // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
         // U+055F: "՟" ARMENIAN ABBREVIATION MARK
-        /* more_keys_for_punctuation */ "!fixedColumnOrder!8,!,?,\u0559,\u055A,.,\u055C,\\,,\u055E,:,;,\u055F,\u00AB,\u00BB,\u058A,\u055D,\u055B",
-        /* more_keys_for_nordic_row2_11 ~ */
+        /* more_keys_for_punctuation */ "!autoColumnOrder!8,\\,,\u055E,\u055C,.,\u055A,\u0559,?,!,\u055D,\u055B,\u058A,\u00BB,\u00AB,\u055F,;,:",
+        /* more_keys_for_star ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null,
         /* ~ keyspec_right_single_angle_quote */
         // U+058F: "֏" ARMENIAN DRAM SIGN
         // TODO: Enable this when we have glyph for the following letter
@@ -1980,7 +1973,7 @@
         /* more_keys_for_h ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ more_keys_for_greater_than */
         // U+0589: "։" ARMENIAN FULL STOP
         /* keylabel_for_period */ "\u0589",
@@ -2114,7 +2107,7 @@
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null,
-        /* ~ additional_more_keys_for_symbols_0 */
+        /* ~ more_keys_for_punctuation */
         // U+2605: "★" BLACK STAR
         /* more_keys_for_star */ "\u2605",
         // The all letters need to be mirrored are found at
@@ -2142,7 +2135,7 @@
         /* keylabel_for_tablet_comma ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ more_keys_for_tablet_punctuation */
         // U+00B1: "±" PLUS-MINUS SIGN
         // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
@@ -2192,7 +2185,7 @@
         /* keylabel_for_east_slavic_row3_5 */ "\u0438",
         // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
         /* more_keys_for_cyrillic_soft_sign */ "\u044A",
-        /* more_keys_for_punctuation ~ */
+        /* more_keys_for_nordic_row2_11 ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2210,7 +2203,7 @@
         /* more_keys_for_cyrillic_o */ "\u04E9",
         /* keylabel_for_south_slavic_row1_6 ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ more_keys_for_j */
         // U+049B: "қ" CYRILLIC SMALL LETTER KA WITH DESCENDER
         /* more_keys_for_cyrillic_ka */ "\u049B",
@@ -2237,7 +2230,7 @@
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ more_keys_for_east_slavic_row2_11 */
         // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
         /* more_keys_for_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
@@ -2271,7 +2264,7 @@
         /* keylabel_for_east_slavic_row3_5 */ "\u0438",
         // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
         /* more_keys_for_cyrillic_soft_sign */ "\u044A",
-        /* more_keys_for_punctuation ~ */
+        /* more_keys_for_nordic_row2_11 ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2605,8 +2598,8 @@
         // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         /* more_keys_for_nordic_row2_10 */ "\u00F6",
         /* keylabel_for_east_slavic_row1_9 ~ */
-        null, null, null, null, null, null,
-        /* ~ more_keys_for_punctuation */
+        null, null, null, null, null,
+        /* ~ more_keys_for_cyrillic_soft_sign */
         // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
         /* more_keys_for_nordic_row2_11 */ "\u00E4",
     };
@@ -2627,7 +2620,7 @@
         // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
         /* keylabel_for_currency */ "\u0930\u0941.",
         /* more_keys_for_r ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ more_keys_for_nordic_row2_11 */
         // U+0967: "१" DEVANAGARI DIGIT ONE
         /* keylabel_for_symbols_1 */ "\u0967",
@@ -3170,8 +3163,8 @@
         // U+0153: "œ" LATIN SMALL LIGATURE OE
         /* more_keys_for_nordic_row2_10 */ "\u00F8,\u0153",
         /* keylabel_for_east_slavic_row1_9 ~ */
-        null, null, null, null, null, null,
-        /* ~ more_keys_for_punctuation */
+        null, null, null, null, null,
+        /* ~ more_keys_for_cyrillic_soft_sign */
         // U+00E6: "æ" LATIN SMALL LETTER AE
         /* more_keys_for_nordic_row2_11 */ "\u00E6",
     };
@@ -3379,7 +3372,7 @@
         /* keylabel_for_east_slavic_row3_5 */ "\u0438",
         // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
         /* more_keys_for_cyrillic_soft_sign */ "\u044A",
-        /* more_keys_for_punctuation ~ */
+        /* more_keys_for_nordic_row2_11 ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -3660,7 +3653,7 @@
         /* more_keys_for_cyrillic_u ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null,
+        null, null, null,
         /* ~ more_keys_for_v */
         // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
         /* more_keys_for_j */ "\u0135",
@@ -3670,36 +3663,36 @@
     // Currently we are dropping the region from the key.
     private static final Object[] LANGUAGES_AND_TEXTS = {
     // "locale", TEXT_ARRAY,  /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */
-        "DEFAULT", LANGUAGE_DEFAULT, /* 170/170 default */
+        "DEFAULT", LANGUAGE_DEFAULT, /* 169/169 default */
         "af", LANGUAGE_af,    /*   7/ 12 Afrikaans */
-        "ar", LANGUAGE_ar,    /*  58/109 Arabic */
+        "ar", LANGUAGE_ar,    /*  56/108 Arabic */
         "az", LANGUAGE_az_AZ, /*   8/ 17 Azerbaijani (Azerbaijan) */
         "be", LANGUAGE_be_BY, /*   9/ 32 Belarusian (Belarus) */
         "bg", LANGUAGE_bg,    /*   2/ 10 Bulgarian */
-        "ca", LANGUAGE_ca,    /*  11/116 Catalan */
+        "ca", LANGUAGE_ca,    /*  11/115 Catalan */
         "cs", LANGUAGE_cs,    /*  17/ 21 Czech */
-        "da", LANGUAGE_da,    /*  19/ 34 Danish */
+        "da", LANGUAGE_da,    /*  19/ 33 Danish */
         "de", LANGUAGE_de,    /*  16/ 92 German */
         "el", LANGUAGE_el,    /*   1/ 10 Greek */
         "en", LANGUAGE_en,    /*   8/ 11 English */
-        "eo", LANGUAGE_eo,    /*  26/128 Esperanto */
-        "es", LANGUAGE_es,    /*   8/ 33 Spanish */
+        "eo", LANGUAGE_eo,    /*  26/127 Esperanto */
+        "es", LANGUAGE_es,    /*   8/ 56 Spanish */
         "et", LANGUAGE_et_EE, /*  22/ 27 Estonian (Estonia) */
         "eu", LANGUAGE_eu_ES, /*   7/  8 Basque (Spain) */
-        "fa", LANGUAGE_fa,    /*  61/119 Persian */
-        "fi", LANGUAGE_fi,    /*  10/ 34 Finnish */
+        "fa", LANGUAGE_fa,    /*  59/118 Persian */
+        "fi", LANGUAGE_fi,    /*  10/ 33 Finnish */
         "fr", LANGUAGE_fr,    /*  13/ 92 French */
         "gl", LANGUAGE_gl_ES, /*   7/  8 Gallegan (Spain) */
-        "hi", LANGUAGE_hi,    /*  24/ 56 Hindi */
+        "hi", LANGUAGE_hi,    /*  24/ 55 Hindi */
         "hr", LANGUAGE_hr,    /*   9/ 19 Croatian */
         "hu", LANGUAGE_hu,    /*   9/ 19 Hungarian */
-        "hy", LANGUAGE_hy_AM, /*   8/122 Armenian (Armenia) */
+        "hy", LANGUAGE_hy_AM, /*   8/121 Armenian (Armenia) */
         "is", LANGUAGE_is,    /*  10/ 15 Icelandic */
         "it", LANGUAGE_it,    /*   5/  5 Italian */
-        "iw", LANGUAGE_iw,    /*  20/117 Hebrew */
+        "iw", LANGUAGE_iw,    /*  20/116 Hebrew */
         "ka", LANGUAGE_ka_GE, /*   3/ 10 Georgian (Georgia) */
-        "kk", LANGUAGE_kk,    /*  15/114 Kazakh */
-        "km", LANGUAGE_km_KH, /*   2/115 Khmer (Cambodia) */
+        "kk", LANGUAGE_kk,    /*  15/113 Kazakh */
+        "km", LANGUAGE_km_KH, /*   2/114 Khmer (Cambodia) */
         "ky", LANGUAGE_ky,    /*  10/ 81 Kirghiz */
         "lo", LANGUAGE_lo_LA, /*   2/ 20 Lao (Laos) */
         "lt", LANGUAGE_lt,    /*  18/ 22 Lithuanian */
@@ -3707,8 +3700,8 @@
         "mk", LANGUAGE_mk,    /*   9/ 86 Macedonian */
         "mn", LANGUAGE_mn_MN, /*   2/ 20 Mongolian (Mongolia) */
         "my", LANGUAGE_my_MM, /*   1/ 10 Burmese (Myanmar) */
-        "nb", LANGUAGE_nb,    /*  11/ 34 Norwegian Bokmål */
-        "ne", LANGUAGE_ne_NP, /*  24/ 56 Nepali (Nepal) */
+        "nb", LANGUAGE_nb,    /*  11/ 33 Norwegian Bokmål */
+        "ne", LANGUAGE_ne_NP, /*  24/ 55 Nepali (Nepal) */
         "nl", LANGUAGE_nl,    /*   9/ 12 Dutch */
         "pl", LANGUAGE_pl,    /*  10/ 16 Polish */
         "pt", LANGUAGE_pt,    /*   6/  6 Portuguese */
@@ -3718,7 +3711,7 @@
         "sk", LANGUAGE_sk,    /*  20/ 22 Slovak */
         "sl", LANGUAGE_sl,    /*   8/ 19 Slovenian */
         "sr", LANGUAGE_sr,    /*  11/ 86 Serbian */
-        "sv", LANGUAGE_sv,    /*  21/ 34 Swedish */
+        "sv", LANGUAGE_sv,    /*  21/ 33 Swedish */
         "sw", LANGUAGE_sw,    /*   9/ 17 Swahili */
         "th", LANGUAGE_th,    /*   2/ 20 Thai */
         "tl", LANGUAGE_tl,    /*   7/  8 Tagalog */
@@ -3726,7 +3719,7 @@
         "uk", LANGUAGE_uk,    /*  11/ 80 Ukrainian */
         "vi", LANGUAGE_vi,    /*   8/ 20 Vietnamese */
         "zu", LANGUAGE_zu,    /*   8/ 11 Zulu */
-        "zz", LANGUAGE_zz,    /*  19/111 Alphabet */
+        "zz", LANGUAGE_zz,    /*  19/110 Alphabet */
     };
 
     static {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index fc5c7f7..b6d4776 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -169,7 +169,6 @@
 
         private int mDelayUpdateSuggestions;
         private int mDelayUpdateShiftState;
-        private long mDoubleSpacePeriodTimerStart;
 
         public UIHandler(final LatinIME ownerInstance) {
             super(ownerInstance);
@@ -283,10 +282,6 @@
             sendMessageDelayed(obtainMessage(MSG_UPDATE_SHIFT_STATE), mDelayUpdateShiftState);
         }
 
-        public void cancelUpdateShiftState() {
-            removeMessages(MSG_UPDATE_SHIFT_STATE);
-        }
-
         @UsedForTesting
         public void removeAllMessages() {
             for (int i = 0; i <= MSG_LAST; ++i) {
@@ -314,19 +309,6 @@
             obtainMessage(MSG_ON_END_BATCH_INPUT, suggestedWords).sendToTarget();
         }
 
-        public void startDoubleSpacePeriodTimer() {
-            mDoubleSpacePeriodTimerStart = SystemClock.uptimeMillis();
-        }
-
-        public void cancelDoubleSpacePeriodTimer() {
-            mDoubleSpacePeriodTimerStart = 0;
-        }
-
-        public boolean isAcceptingDoubleSpacePeriod() {
-            return SystemClock.uptimeMillis() - mDoubleSpacePeriodTimerStart
-                    < getOwnerInstance().mSettings.getCurrent().mDoubleSpacePeriodTimeout;
-        }
-
         // Working variables for the following methods.
         private boolean mIsOrientationChanging;
         private boolean mPendingSuccessiveImsCallback;
@@ -882,7 +864,6 @@
         setNeutralSuggestionStrip();
 
         mHandler.cancelUpdateSuggestionStrip();
-        mHandler.cancelDoubleSpacePeriodTimer();
 
         mainKeyboardView.setMainDictionaryAvailability(null != suggest
                 ? suggest.mDictionaryFacilitator.hasMainDictionary() : false);
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index 2ac11aa..29382fe 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -16,6 +16,7 @@
 
 package com.android.inputmethod.latin;
 
+import com.android.inputmethod.event.CombinerChain;
 import com.android.inputmethod.event.Event;
 import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.CoordinateUtils;
@@ -40,6 +41,8 @@
     public static final int CAPS_MODE_AUTO_SHIFTED = 0x5;
     public static final int CAPS_MODE_AUTO_SHIFT_LOCKED = 0x7;
 
+    private CombinerChain mCombinerChain;
+
     // An array of code points representing the characters typed so far.
     // The array is limited to MAX_WORD_LENGTH code points, but mTypedWord extends past that
     // and mCodePointSize can go past that. If mCodePointSize is greater than MAX_WORD_LENGTH,
@@ -87,6 +90,7 @@
     private boolean mIsFirstCharCapitalized;
 
     public WordComposer() {
+        mCombinerChain = new CombinerChain();
         mPrimaryKeyCodes = new int[MAX_WORD_LENGTH];
         mEvents = CollectionUtils.newArrayList();
         mTypedWord = new StringBuilder(MAX_WORD_LENGTH);
@@ -101,6 +105,7 @@
     }
 
     public WordComposer(final WordComposer source) {
+        mCombinerChain = source.mCombinerChain;
         mPrimaryKeyCodes = Arrays.copyOf(source.mPrimaryKeyCodes, source.mPrimaryKeyCodes.length);
         mEvents = new ArrayList<Event>(source.mEvents);
         mTypedWord = new StringBuilder(source.mTypedWord);
@@ -187,6 +192,7 @@
         final int keyX = event.mX;
         final int keyY = event.mY;
         final int newIndex = size();
+        mCombinerChain.processEvent(mEvents, event);
         mTypedWord.appendCodePoint(primaryCode);
         mEvents.add(event);
         refreshSize();
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 1eff427..8faf175 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -28,7 +28,6 @@
 
 import com.android.inputmethod.compat.SuggestionSpanUtils;
 import com.android.inputmethod.event.Event;
-import com.android.inputmethod.event.EventInterpreter;
 import com.android.inputmethod.event.InputTransaction;
 import com.android.inputmethod.keyboard.KeyboardSwitcher;
 import com.android.inputmethod.latin.Constants;
@@ -96,6 +95,7 @@
     // TODO: This boolean is persistent state and causes large side effects at unexpected times.
     // Find a way to remove it for readability.
     private boolean mIsAutoCorrectionIndicatorOn;
+    private long mDoubleSpacePeriodCountdownStart;
 
     public InputLogic(final LatinIME latinIME,
             final SuggestionStripViewAccessor suggestionStripViewAccessor) {
@@ -138,6 +138,7 @@
         // In some cases (namely, after rotation of the device) editorInfo.initialSelStart is lying
         // so we try using some heuristics to find out about these and fix them.
         mConnection.tryFixLyingCursorPosition();
+        cancelDoubleSpacePeriodCountdown();
         mInputLogicHandler = new InputLogicHandler(mLatinIME, this);
     }
 
@@ -406,7 +407,7 @@
 
         // TODO: Consolidate the double-space period timer, mLastKeyTime, and the space state.
         if (event.mCodePoint != Constants.CODE_SPACE) {
-            handler.cancelDoubleSpacePeriodTimer();
+            cancelDoubleSpacePeriodCountdown();
         }
 
         boolean didAutoCorrect = false;
@@ -847,7 +848,7 @@
 
         if (Constants.CODE_SPACE == codePoint) {
             if (inputTransaction.mSettingsValues.isSuggestionsRequested()) {
-                if (maybeDoubleSpacePeriod(inputTransaction.mSettingsValues, handler)) {
+                if (maybeDoubleSpacePeriod(inputTransaction)) {
                     inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
                     mSpaceState = SpaceState.DOUBLE;
                 } else if (!mSuggestedWords.isPunctuationSuggestions()) {
@@ -855,7 +856,7 @@
                 }
             }
 
-            handler.startDoubleSpacePeriodTimer();
+            startDoubleSpacePeriodCountdown(inputTransaction);
             handler.postUpdateSuggestionStrip();
         } else {
             if (swapWeakSpace) {
@@ -952,7 +953,7 @@
                 return;
             }
             if (SpaceState.DOUBLE == inputTransaction.mSpaceState) {
-                handler.cancelDoubleSpacePeriodTimer();
+                cancelDoubleSpacePeriodCountdown();
                 if (mConnection.revertDoubleSpacePeriod()) {
                     // No need to reset mSpaceState, it has already be done (that's why we
                     // receive it as a parameter)
@@ -1100,6 +1101,19 @@
         return false;
     }
 
+    public void startDoubleSpacePeriodCountdown(final InputTransaction inputTransaction) {
+        mDoubleSpacePeriodCountdownStart = inputTransaction.mTimestamp;
+    }
+
+    public void cancelDoubleSpacePeriodCountdown() {
+        mDoubleSpacePeriodCountdownStart = 0;
+    }
+
+    public boolean isDoubleSpacePeriodCountdownActive(final InputTransaction inputTransaction) {
+        return inputTransaction.mTimestamp - mDoubleSpacePeriodCountdownStart
+                < inputTransaction.mSettingsValues.mDoubleSpacePeriodTimeout;
+    }
+
     /**
      * Apply the double-space-to-period transformation if applicable.
      *
@@ -1112,14 +1126,12 @@
      * method applies the transformation and returns true. Otherwise, it does nothing and
      * returns false.
      *
-     * @param settingsValues the current values of the settings.
+     * @param inputTransaction The transaction in progress.
      * @return true if we applied the double-space-to-period transformation, false otherwise.
      */
-    private boolean maybeDoubleSpacePeriod(final SettingsValues settingsValues,
-            // TODO: remove this argument
-            final LatinIME.UIHandler handler) {
-        if (!settingsValues.mUseDoubleSpacePeriod) return false;
-        if (!handler.isAcceptingDoubleSpacePeriod()) return false;
+    private boolean maybeDoubleSpacePeriod(final InputTransaction inputTransaction) {
+        if (!inputTransaction.mSettingsValues.mUseDoubleSpacePeriod) return false;
+        if (!isDoubleSpacePeriodCountdownActive(inputTransaction)) return false;
         // We only do this when we see two spaces and an accepted code point before the cursor.
         // The code point may be a surrogate pair but the two spaces may not, so we need 4 chars.
         final CharSequence lastThree = mConnection.getTextBeforeCursor(4, 0);
@@ -1135,10 +1147,10 @@
                 Character.isSurrogatePair(lastThree.charAt(0), lastThree.charAt(1)) ?
                         Character.codePointAt(lastThree, 0) : lastThree.charAt(length - 3);
         if (canBeFollowedByDoubleSpacePeriod(firstCodePoint)) {
-            handler.cancelDoubleSpacePeriodTimer();
+            cancelDoubleSpacePeriodCountdown();
             mConnection.deleteSurroundingText(2, 0);
-            final String textToInsert =
-                    settingsValues.mSpacingAndPunctuations.mSentenceSeparatorAndSpace;
+            final String textToInsert = inputTransaction.mSettingsValues.mSpacingAndPunctuations
+                    .mSentenceSeparatorAndSpace;
             mConnection.commitText(textToInsert, 1);
             if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
                 ResearchLogger.latinIME_maybeDoubleSpacePeriod(textToInsert,
diff --git a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
index 5954758..796921f 100644
--- a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
+++ b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
@@ -18,7 +18,6 @@
 
 import android.content.res.Resources;
 
-import com.android.inputmethod.keyboard.internal.KeyboardTextsSet;
 import com.android.inputmethod.keyboard.internal.MoreKeySpec;
 import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.PunctuationSuggestions;
@@ -61,10 +60,8 @@
         // English variants. German rules (not "German typography") also have small gotchas.
         mUsesAmericanTypography = Locale.ENGLISH.getLanguage().equals(locale.getLanguage());
         mUsesGermanRules = Locale.GERMAN.getLanguage().equals(locale.getLanguage());
-        final KeyboardTextsSet textsSet = new KeyboardTextsSet();
-        textsSet.setLocale(locale);
         final String[] suggestPuncsSpec = MoreKeySpec.splitKeySpecs(
-                textsSet.resolveTextReference(res.getString(R.string.suggested_punctuations)));
+                res.getString(R.string.suggested_punctuations));
         mSuggestPuncList = PunctuationSuggestions.newPunctuationSuggestions(suggestPuncsSpec);
     }
 
diff --git a/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java b/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
index ca8bef3..7d937a9 100644
--- a/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
@@ -20,6 +20,7 @@
 import android.content.SharedPreferences;
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
+import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.inputmethod.latin.InputAttributes;
@@ -82,7 +83,17 @@
         if (inputAttributes == null || inputAttributes.mIsPasswordField) {
             return false;
         }
-        return hasNewImportantNotice(context) && !isInSystemSetupWizard(context);
+        if (isInSystemSetupWizard(context)) {
+            return false;
+        }
+        if (!hasNewImportantNotice(context)) {
+            return false;
+        }
+        final String importantNoticeTitle = getNextImportantNoticeTitle(context);
+        if (TextUtils.isEmpty(importantNoticeTitle)) {
+            return false;
+        }
+        return true;
     }
 
     public static void updateLastImportantNoticeVersion(final Context context) {
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
index e691639..bbffc8d 100644
--- a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
@@ -25,8 +25,8 @@
 
 @SmallTest
 public class KeyboardLayoutSetSubtypesCountTests extends KeyboardLayoutSetTestsBase {
-    private static final int NUMBER_OF_SUBTYPES = 63;
-    private static final int NUMBER_OF_ASCII_CAPABLE_SUBTYPES = 40;
+    private static final int NUMBER_OF_SUBTYPES = 66;
+    private static final int NUMBER_OF_ASCII_CAPABLE_SUBTYPES = 42;
     private static final int NUMBER_OF_PREDEFINED_ADDITIONAL_SUBTYPES = 2;
 
     private static String toString(final ArrayList<InputMethodSubtype> subtypeList) {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java b/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
index 838f987..b0493d3 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
@@ -72,7 +72,7 @@
         public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
             if (isPhone) {
                 // U+060C: "،" ARABIC COMMA
-                return joinKeys(key("\u060C", joinMoreKeys(",", SETTINGS_KEY)));
+                return joinKeys(key("\u060C", SETTINGS_KEY));
             }
             return super.getKeysLeftToSpacebar(isPhone);
         }
@@ -312,7 +312,7 @@
                     // U+00BF: "¿" INVERTED QUESTION MARK
                     .replaceKeyOfLabel("?", key("\u061F", joinMoreKeys("?", "\u00BF")))
                     // U+060C: "،" ARABIC COMMA
-                    .replaceKeyOfLabel(",", key("\u060C", moreKey(",")))
+                    .replaceKeyOfLabel(",", "\u060C")
                     // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
                     // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS
                     .replaceKeyOfLabel("(", key("(", ")",
@@ -342,7 +342,7 @@
                     // U+266A: "♪" EIGHTH NOTE
                     .setMoreKeysOf("\u2022", "\u266A")
                     // U+060C: "،" ARABIC COMMA
-                    .replaceKeyOfLabel(",", key("\u060C", moreKey(",")))
+                    .replaceKeyOfLabel(",", "\u060C")
                     .build();
         }
     }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java b/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java
new file mode 100644
index 0000000..204bb01
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Armenian Phonetic alphabet keyboard.
+ */
+public final class ArmenianPhonetic extends LayoutBase {
+    private static final String LAYOUT_NAME = "armenian_phonetic";
+
+    public ArmenianPhonetic(final LayoutCustomizer customizer) {
+        super(customizer, ArmenianSymbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class ArmenianPhoneticCustomizer extends LayoutCustomizer {
+        public ArmenianPhoneticCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return ARMENIAN_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            if (isPhone) {
+                return EMPTY_KEYS;
+            }
+            // U+055C: "՜" ARMENIAN EXCLAMATION MARK
+            // U+00A1: "¡" INVERTED EXCLAMATION MARK
+            // U+055E: "՞" ARMENIAN QUESTION MARK
+            // U+00BF: "¿" INVERTED QUESTION MARK
+            return joinKeys(key("!", joinMoreKeys("\u055C", "\u00A1")),
+                    key("?", joinMoreKeys("\u055E", "\u00BF")),
+                    SHIFT_KEY);
+        }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            // U+0589: "։" ARMENIAN FULL STOP
+            // U+055D: "՝" ARMENIAN COMMA
+            final ExpectedKey fullStopKey = key("\u0589", getPunctuationMoreKeys(isPhone));
+            return isPhone ? joinKeys(fullStopKey) : joinKeys("\u055D", fullStopKey);
+        }
+
+        @Override
+        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+            return ARMENIAN_PUNCTUATION_MORE_KEYS;
+        }
+
+        // U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB
+        // U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
+        // U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM
+        private static final ExpectedKey ARMENIAN_ALPHABET_KEY = key(
+                "\u0531\u0532\u0533", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+055E: "՞" ARMENIAN QUESTION MARK
+        // U+055C: "՜" ARMENIAN EXCLAMATION MARK
+        // U+055A: "՚" ARMENIAN APOSTROPHE
+        // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING
+        // U+055D: "՝" ARMENIAN COMMA
+        // U+055B: "՛" ARMENIAN EMPHASIS MARK
+        // U+058A: "֊" ARMENIAN HYPHEN
+        // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+055F: "՟" ARMENIAN ABBREVIATION MARK
+        private static final ExpectedKey[] ARMENIAN_PUNCTUATION_MORE_KEYS = joinMoreKeys(
+                ",", "\u055E", "\u055C", ".", "\u055A", "\u0559", "?", "!",
+                "\u055D", "\u055B", "\u058A", "\u00BB", "\u00AB", "\u055F", ";", ":");
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        if (isPhone) {
+            // U+056D: "խ" ARMENIAN SMALL LETTER XEH
+            // U+0577: "շ" ARMENIAN SMALL LETTER SHA
+            builder.addKeysOnTheRightOfRow(3, "\u056D")
+                    .addKeysOnTheRightOfRow(4, "\u0577");
+        } else {
+            // U+056D: "խ" ARMENIAN SMALL LETTER XEH
+            // U+0577: "շ" ARMENIAN SMALL LETTER SHA
+            builder.addKeysOnTheRightOfRow(2, "\u056D")
+                    .addKeysOnTheRightOfRow(3, "\u0577");
+        }
+        return builder.build();
+    }
+
+    // Helper method to create alphabet layout by adding special function keys.
+    @Override
+    ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+            final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, key(ENTER_KEY, EMOJI_KEY));
+        } else {
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheRightOfRow(3, ENTER_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
+                    .addKeysOnTheRightOfRow(5, EMOJI_KEY);
+        }
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
+        return builder;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0567: "է" ARMENIAN SMALL LETTER EH
+                    key("\u0567", moreKey("1")),
+                    // U+0569: "թ" ARMENIAN SMALL LETTER TO
+                    key("\u0569", moreKey("2")),
+                    // U+0583: "փ" ARMENIAN SMALL LETTER PIWR
+                    key("\u0583", moreKey("3")),
+                    // U+0571: "ձ" ARMENIAN SMALL LETTER JA
+                    key("\u0571", moreKey("4")),
+                    // U+057B: "ջ" ARMENIAN SMALL LETTER JHEH
+                    key("\u057B", moreKey("5")),
+                    // U+0580: "ր" ARMENIAN SMALL LETTER REH
+                    key("\u0580", moreKey("6")),
+                    // U+0579: "չ" ARMENIAN SMALL LETTER CHA
+                    key("\u0579", moreKey("7")),
+                    // U+0573: "ճ" ARMENIAN SMALL LETTER CHEH
+                    key("\u0573", moreKey("8")),
+                    // U+056A: "ժ" ARMENIAN SMALL LETTER ZHE
+                    key("\u056A", moreKey("9")),
+                    // U+056E: "ծ" ARMENIAN SMALL LETTER CA
+                    key("\u056E", moreKey("0")))
+            .setKeysOfRow(2,
+                    // U+0584: "ք" ARMENIAN SMALL LETTER KEH
+                    // U+0578: "ո" ARMENIAN SMALL LETTER VO
+                    "\u0584", "\u0578",
+                    // U+0565: "ե" ARMENIAN SMALL LETTER ECH
+                    // U+0587: "և" ARMENIAN SMALL LIGATURE ECH YIWN
+                    key("\u0565", moreKey("\u0587")),
+                    // U+057C: "ռ" ARMENIAN SMALL LETTER RA
+                    // U+057F: "տ" ARMENIAN SMALL LETTER TIWN
+                    // U+0568: "ը" ARMENIAN SMALL LETTER ET
+                    // U+0582: "ւ" ARMENIAN SMALL LETTER YIWN
+                    // U+056B: "ի" ARMENIAN SMALL LETTER INI
+                    // U+0585: "օ" ARMENIAN SMALL LETTER OH
+                    // U+057A: "պ" ARMENIAN SMALL LETTER PEH
+                    "\u057C", "\u057F", "\u0568", "\u0582", "\u056B", "\u0585", "\u057A")
+            .setKeysOfRow(3,
+                    // U+0561: "ա" ARMENIAN SMALL LETTER AYB
+                    // U+057D: "ս" ARMENIAN SMALL LETTER SEH
+                    // U+0564: "դ" ARMENIAN SMALL LETTER DA
+                    // U+0586: "ֆ" ARMENIAN SMALL LETTER FEH
+                    // U+0563: "գ" ARMENIAN SMALL LETTER GIM
+                    // U+0570: "հ" ARMENIAN SMALL LETTER HO
+                    // U+0575: "յ" ARMENIAN SMALL LETTER YI
+                    // U+056F: "կ" ARMENIAN SMALL LETTER KEN
+                    // U+056C: "լ" ARMENIAN SMALL LETTER LIWN
+                    "\u0561", "\u057D", "\u0564", "\u0586", "\u0563", "\u0570", "\u0575", "\u056F",
+                    "\u056C")
+            .setKeysOfRow(4,
+                    // U+0566: "զ" ARMENIAN SMALL LETTER ZA
+                    // U+0572: "ղ" ARMENIAN SMALL LETTER GHAD
+                    // U+0581: "ց" ARMENIAN SMALL LETTER CO
+                    // U+057E: "վ" ARMENIAN SMALL LETTER VEW
+                    // U+0562: "բ" ARMENIAN SMALL LETTER BEN
+                    // U+0576: "ն" ARMENIAN SMALL LETTER NOW
+                    // U+0574: "մ" ARMENIAN SMALL LETTER MEN
+                    "\u0566", "\u0572", "\u0581", "\u057E", "\u0562", "\u0576", "\u0574")
+            .build();
+
+    private static final class ArmenianSymbols extends Symbols {
+        public ArmenianSymbols(final LayoutCustomizer customizer) { super(customizer); }
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(
+                    super.getLayout(isPhone));
+            // U+055C: "՜" ARMENIAN EXCLAMATION MARK
+            // U+00A1: "¡" INVERTED EXCLAMATION MARK
+            // U+055E: "՞" ARMENIAN QUESTION MARK
+            // U+00BF: "¿" INVERTED QUESTION MARK
+            builder.setMoreKeysOf("!", "\u055C", "\u00A1")
+                    .setMoreKeysOf("?", "\u055E", "\u00BF");
+            return builder.build();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java b/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
index 6da817f..a007089 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
@@ -70,7 +70,7 @@
         public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
             if (isPhone) {
                 // U+060C: "،" ARABIC COMMA
-                return joinKeys(key("\u060C", joinMoreKeys(",", SETTINGS_KEY)));
+                return joinKeys(key("\u060C", SETTINGS_KEY));
             }
             return super.getKeysLeftToSpacebar(isPhone);
         }
@@ -315,7 +315,7 @@
                     // U+00BF: "¿" INVERTED QUESTION MARK
                     .replaceKeyOfLabel("?", key("\u061F", joinMoreKeys("?", "\u00BF")))
                     // U+060C: "،" ARABIC COMMA
-                    .replaceKeyOfLabel(",", key("\u060C", moreKey(",")))
+                    .replaceKeyOfLabel(",", "\u060C")
                     // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
                     // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS
                     .replaceKeyOfLabel("(", key("(", ")",
@@ -345,7 +345,7 @@
                     // U+266A: "♪" EIGHTH NOTE
                     .setMoreKeysOf("\u2022", "\u266A")
                     // U+060C: "،" ARABIC COMMA
-                    .replaceKeyOfLabel(",", key("\u060C", moreKey(",")))
+                    .replaceKeyOfLabel(",", "\u060C")
                     // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
                     // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
                     // U+2264: "≤" LESS-THAN OR EQUAL TO
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java b/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java
index 83446de..552f0d3 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java
@@ -91,12 +91,12 @@
         private static final ExpectedKey CURRENCY_NEW_SHEQEL = key("\u20AA",
                 Symbols.CURRENCY_GENERIC_MORE_KEYS);
         private static final ExpectedKey[] RTL_PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
-                ";", "/", key("(", ")"), key(")", "("), "#", "!", ",", "?",
-                "&", "%", "+", "\"", "-", ":", "'", "@");
+                ",", "?", "!", "#", key(")", "("), key("(", ")"), "/", ";",
+                "'", "@", ":", "-", "\"", "+", "%", "&");
         // Punctuation more keys for tablet form factor.
         private static final ExpectedKey[] RTL_TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
-                ";", "/", key("(", ")"), key(")", "("), "#", "'", ",",
-                "&", "%", "+", "\"", "-", ":", "@");
+                ",", "'", "#", key(")", "("), key("(", ")"), "/", ";",
+                "@", ":", "-", "\"", "+", "%", "&");
     }
 
     @Override
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
index d870931..09cc8f9 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
@@ -270,13 +270,12 @@
 
     // Punctuation more keys for phone form factor.
     public static final ExpectedKey[] PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
-            ";", "/", "(", ")", "#", "!", ",", "?",
-            "&", "%", "+", "\"", "-", ":", "'", "@");
-
+            ",", "?", "!", "#", ")", "(", "/", ";",
+            "'", "@", ":", "-", "\"", "+", "%", "&");
     // Punctuation more keys for tablet form factor.
     public static final ExpectedKey[] TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
-            ";", "/", "(", ")", "#", "'", ",",
-            "&", "%", "+", "\"", "-", ":", "@");
+            ",", "'", "#", ")", "(", "/", ";",
+            "@", ":", "-", "\"", "+", "%", "&");
 
    /**
      * Helper method to create alphabet layout adding special function keys.
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/PcQwerty.java b/tests/src/com/android/inputmethod/keyboard/layout/PcQwerty.java
new file mode 100644
index 0000000..9da6dcc
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/PcQwerty.java
@@ -0,0 +1,227 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * The PC QWERTY alphabet keyboard.
+ */
+public final class PcQwerty extends LayoutBase {
+    private static final String LAYOUT_NAME = "pcqwerty";
+
+    public PcQwerty(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class PcQwertyCustomizer extends LayoutCustomizer {
+        public PcQwertyCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return joinKeys(SHIFT_KEY);
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return joinKeys(SHIFT_KEY);
+        }
+
+        @Override
+        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
+            return joinKeys(SETTINGS_KEY);
+        }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            return isPhone ? joinKeys(key(ENTER_KEY, EMOJI_KEY)) : joinKeys(EMOJI_KEY);
+        }
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        customizer.setAccentedLetters(builder);
+        builder.replaceKeyOfLabel(ROW1_1, key("`", moreKey("~")))
+                .replaceKeyOfLabel(ROW2_11, key("[", moreKey("{")))
+                .replaceKeyOfLabel(ROW2_12, key("]", moreKey("}")))
+                .replaceKeyOfLabel(ROW2_13, key("\\", moreKey("|")))
+                .replaceKeyOfLabel(ROW3_10, key(";", moreKey(":")))
+                .replaceKeyOfLabel(ROW3_11, key("'", joinMoreKeys(additionalMoreKey("\""),
+                        customizer.getDoubleQuoteMoreKeys(),
+                        customizer.getSingleQuoteMoreKeys())))
+                .setAdditionalMoreKeysPositionOf("'", 4)
+                .replaceKeyOfLabel(ROW4_8, key(",", moreKey("<")))
+                .replaceKeyOfLabel(ROW4_9, key(".", moreKey(">")))
+                // U+00BF: "¿" INVERTED QUESTION MARK
+                .replaceKeyOfLabel(ROW4_10, key("/", joinMoreKeys("?", "\u00BF")));
+        if (isPhone) {
+            // U+221E: "∞" INFINITY
+            // U+2260: "≠" NOT EQUAL TO
+            // U+2248: "≈" ALMOST EQUAL TO
+            builder.replaceKeyOfLabel(ROW1_13, key("=",
+                    joinMoreKeys("\u221E", "\u2260", "\u2248", "+")));
+        } else {
+            // U+221E: "∞" INFINITY
+            // U+2260: "≠" NOT EQUAL TO
+            // U+2248: "≈" ALMOST EQUAL TO
+            builder.replaceKeyOfLabel(ROW1_13, key("=",
+                    joinMoreKeys("+", "\u221E", "\u2260", "\u2248")));
+        }
+        return builder.build();
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        final ExpectedKeyboardBuilder builder;
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED
+                || elementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED) {
+            builder = new ExpectedKeyboardBuilder(getCommonAlphabetLayout(isPhone));
+        } else {
+            builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+            final LayoutCustomizer customizer = getCustomizer();
+            customizer.setAccentedLetters(builder);
+            builder.setKeysOfRow(1,
+                    "~",
+                    // U+00A1: "¡" INVERTED EXCLAMATION MARK
+                    key("!", moreKey("\u00A1")),
+                    "@", "#",
+                    customizer.getCurrencyKey(),
+                    // U+2030: "‰" PER MILLE SIGN
+                    key("%", moreKey("\u2030")),
+                    "^", "&",
+                    // U+2020: "†" DAGGER
+                    // U+2021: "‡" DOUBLE DAGGER
+                    // U+2605: "★" BLACK STAR
+                    key("*", joinMoreKeys("\u2020", "\u2021", "\u2605")),
+                    "(", ")", "_",
+                    // U+00B1: "±" PLUS-MINUS SIGN
+                    // U+00D7: "×" MULTIPLICATION SIGN
+                    // U+00F7: "÷" DIVISION SIGN
+                    // U+221A: "√" SQUARE ROOT
+                    key("+", joinMoreKeys("\u00B1", "\u00D7", "\u00F7", "\u221A")))
+                    .replaceKeyOfLabel(ROW2_11, key("{"))
+                    .replaceKeyOfLabel(ROW2_12, key("}"))
+                    .replaceKeyOfLabel(ROW2_13, key("|"))
+                    .replaceKeyOfLabel(ROW3_10, key(":"))
+                    .replaceKeyOfLabel(ROW3_11, key("\"", joinMoreKeys(
+                            customizer.getDoubleQuoteMoreKeys(),
+                            customizer.getSingleQuoteMoreKeys())))
+                    // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+                    // U+2264: "≤" LESS-THAN OR EQUAL TO
+                    // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    .replaceKeyOfLabel(ROW4_8, key("<", joinMoreKeys("\u2039", "\u2264", "\u00AB")))
+                    // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+                    // U+2265: "≥" GREATER-THAN EQUAL TO
+                    // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    .replaceKeyOfLabel(ROW4_9, key(">", joinMoreKeys("\u203A", "\u2265", "\u00BB")))
+                    // U+00BF: "¿" INVERTED QUESTION MARK
+                    .replaceKeyOfLabel(ROW4_10, key("?", moreKey("\u00BF")));
+        }
+        builder.toUpperCase(getLocale());
+        return builder.build();
+    }
+
+    // Helper method to create alphabet layout by adding special function keys.
+    @Override
+    ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+            final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(3, DELETE_KEY);
+        } else {
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(2, TAB_KEY)
+                    .addKeysOnTheRightOfRow(3, ENTER_KEY);
+        }
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
+        return builder;
+    }
+
+    @Override
+    public ExpectedKey[][] getLayout(final boolean isPhone, final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_SYMBOLS
+                || elementId == KeyboardId.ELEMENT_SYMBOLS_SHIFTED) {
+            return null;
+        }
+        return super.getLayout(isPhone, elementId);
+    }
+
+    private static final String ROW1_1 = "ROW1_1";
+    private static final String ROW1_13 = "ROW1_13";
+    private static final String ROW2_11 = "ROW2_11";
+    private static final String ROW2_12 = "ROW2_12";
+    private static final String ROW2_13 = "ROW2_13";
+    private static final String ROW3_10 = "ROW3_10";
+    private static final String ROW3_11 = "ROW3_11";
+    private static final String ROW4_8 = "ROW4_8";
+    private static final String ROW4_9 = "ROW4_9";
+    private static final String ROW4_10 = "ROW4_10";
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    ROW1_1,
+                    // U+00A1: "¡" INVERTED EXCLAMATION MARK
+                    // U+00B9: "¹" SUPERSCRIPT ONE
+                    // U+00BD: "½" VULGAR FRACTION ONE HALF
+                    // U+2153: "⅓" VULGAR FRACTION ONE THIRD
+                    // U+00BC: "¼" VULGAR FRACTION ONE QUARTER
+                    // U+215B: "⅛" VULGAR FRACTION ONE EIGHTH
+                    key("1", joinMoreKeys(
+                            "!", "\u00A1", "\u00B9", "\u00BD", "\u2153", "\u00BC", "\u215B")),
+                    // U+00B2: "²" SUPERSCRIPT TWO
+                    // U+2154: "⅔" VULGAR FRACTION TWO THIRDS
+                    key("2", joinMoreKeys("@", "\u00B2", "\u2154")),
+                    // U+00B3: "³" SUPERSCRIPT THREE
+                    // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
+                    // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
+                    key("3", joinMoreKeys("#", "\u00B3", "\u00BE", "\u215C")),
+                    // U+2074: "⁴" SUPERSCRIPT FOUR
+                    key("4", joinMoreKeys("$", "\u2074")),
+                    // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
+                    key("5", joinMoreKeys("%", "\u215D")),
+                    key("6", moreKey("^")),
+                    // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
+                    key("7", joinMoreKeys("&", "\u215E")),
+                    key("8", moreKey("*")),
+                    key("9", moreKey("(")),
+                    // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
+                    // U+2205: "∅" EMPTY SET
+                    key("0", joinMoreKeys(")", "\u207F", "\u2205")),
+                    // U+2013: "–" EN DASH
+                    // U+2014: "—" EM DASH
+                    // U+00B7: "·" MIDDLE DOT
+                    key("-", joinMoreKeys("_", "\u2013", "\u2014", "\u00B7")),
+                    ROW1_13)
+            .setKeysOfRow(2, "q", "w", "e", "r", "t", "y", "u", "i", "o", "p",
+                    ROW2_11, ROW2_12, ROW2_13)
+            .setKeysOfRow(3, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW3_10, ROW3_11)
+            .setKeysOfRow(4, "z", "x", "c", "v", "b", "n", "m", ROW4_8, ROW4_9, ROW4_10)
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
index a13ec75..6176f6a 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
@@ -109,10 +109,14 @@
     // Icon ids.
     private static final int ICON_DELETE = KeyboardIconsSet.getIconId(
             KeyboardIconsSet.NAME_DELETE_KEY);
+    private static final int ICON_TAB = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_TAB_KEY);
     private static final int ICON_SHORTCUT = KeyboardIconsSet.getIconId(
             KeyboardIconsSet.NAME_SHORTCUT_KEY);
     private static final int ICON_SETTINGS = KeyboardIconsSet.getIconId(
             KeyboardIconsSet.NAME_SETTINGS_KEY);
+    private static final int ICON_LANGUAGE_SWITCH = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_LANGUAGE_SWITCH_KEY);
     private static final int ICON_ENTER = KeyboardIconsSet.getIconId(
             KeyboardIconsSet.NAME_ENTER_KEY);
     private static final int ICON_EMOJI = KeyboardIconsSet.getIconId(
@@ -120,8 +124,11 @@
 
     // Functional keys.
     public static final ExpectedKey DELETE_KEY = key(ICON_DELETE, Constants.CODE_DELETE);
+    public static final ExpectedKey TAB_KEY = key(ICON_TAB, Constants.CODE_TAB);
     public static final ExpectedKey SHORTCUT_KEY = key(ICON_SHORTCUT, Constants.CODE_SHORTCUT);
     public static final ExpectedKey SETTINGS_KEY = key(ICON_SETTINGS, Constants.CODE_SETTINGS);
+    public static final ExpectedKey LANGUAGE_SWITCH_KEY = key(
+            ICON_LANGUAGE_SWITCH, Constants.CODE_LANGUAGE_SWITCH);
     public static final ExpectedKey ENTER_KEY = key(ICON_ENTER, Constants.CODE_ENTER);
     public static final ExpectedKey EMOJI_KEY = key(ICON_EMOJI, Constants.CODE_EMOJI);
     public static final ExpectedKey SPACE_KEY = key(
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/SpanishCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/SpanishCustomizer.java
index da4a83c..8974ad6 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/SpanishCustomizer.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/SpanishCustomizer.java
@@ -38,8 +38,8 @@
     private static final ExpectedKey[] PHONE_PUNCTUATION_MORE_KEYS = AbstractLayoutBase.joinKeys(
             // U+00A1: "¡" INVERTED EXCLAMATION MARK
             // U+00BF: "¿" INVERTED QUESTION MARK
-            "\u00A1", ";", "/", "(", ")", "#", "!", ",", "?",
-            "\u00BF", "&", "%", "+", "\"", "-", ":", "'", "@");
+            ",", "?", "!", "#", ")", "(", "/", ";", "\u00A1",
+            "'", "@", ":", "-", "\"", "+", "%", "&", "\u00BF");
 
     @Override
     public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArmenianAMPhonetic.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArmenianAMPhonetic.java
new file mode 100644
index 0000000..327e943
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArmenianAMPhonetic.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.ArmenianPhonetic;
+import com.android.inputmethod.keyboard.layout.ArmenianPhonetic.ArmenianPhoneticCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * hy_AM: Armenian (Armenia) Phonetic/armenian_phonetic
+ */
+@SmallTest
+public final class TestsArmenianAMPhonetic extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("hy", "AM");
+    private static final LayoutBase LAYOUT = new ArmenianPhonetic(
+            new ArmenianPhoneticCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCatalan.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCatalan.java
index 988eb81..151a0a6 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCatalan.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCatalan.java
@@ -48,12 +48,12 @@
 
         // U+00B7: "·" MIDDLE DOT
         private static final ExpectedKey[] PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
-                ";", "/", "(", ")", "#", "\u00B7", "!", ",", "?",
-                "&", "%", "+", "\"", "-", ":", "'", "@");
+                ",", "?", "!", "\u00B7", "#", ")", "(", "/", ";",
+                "'", "@", ":", "-", "\"", "+", "%", "&");
 
         private static final ExpectedKey[] TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
-                ";", "/", "(", ")", "#", "\u00B7", "'", ",",
-                "&", "%", "+", "\"", "-", ":", "@");
+                ",", "'", "\u00B7", "#", ")", "(", "/", ";",
+                "@", ":", "-", "\"", "+", "%", "&");
 
         @Override
         public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguagePcQwerty.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguagePcQwerty.java
new file mode 100644
index 0000000..cd8d43c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguagePcQwerty.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.PcQwerty;
+import com.android.inputmethod.keyboard.layout.PcQwerty.PcQwertyCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * zz: Alphabet/pcqwerty
+ */
+@SmallTest
+public final class TestsNoLanguagePcQwerty extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("zz");
+    private static final LayoutBase LAYOUT = new PcQwerty(new NoLanguagePcQwertyCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class NoLanguagePcQwertyCustomizer extends PcQwertyCustomizer {
+        private final NoLanguageCustomizer mNoLanguageCustomizer;
+
+        public NoLanguagePcQwertyCustomizer(final Locale locale) {
+            super(locale);
+            mNoLanguageCustomizer = new NoLanguageCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mNoLanguageCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
diff --git a/tools/dicttool/Android.mk b/tools/dicttool/Android.mk
index 948c03b..0e9c14e 100644
--- a/tools/dicttool/Android.mk
+++ b/tools/dicttool/Android.mk
@@ -35,6 +35,7 @@
 # a significant part of the dependencies are mocked in the compat/ directory, with empty or
 # nearly-empty implementations, for parts that we don't use in Dicttool.
 LATINIME_SRCS_FOR_DICTTOOL := \
+        event/Combiner.java \
         event/Event.java \
         latin/BinaryDictionary.java \
         latin/DicTraverseSession.java \
diff --git a/java/src/com/android/inputmethod/event/EventDecoderSpec.java b/tools/dicttool/compat/com/android/inputmethod/event/CombinerChain.java
similarity index 64%
rename from java/src/com/android/inputmethod/event/EventDecoderSpec.java
rename to tools/dicttool/compat/com/android/inputmethod/event/CombinerChain.java
index 303b4b4..66ad60c 100644
--- a/java/src/com/android/inputmethod/event/EventDecoderSpec.java
+++ b/tools/dicttool/compat/com/android/inputmethod/event/CombinerChain.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2014 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.
@@ -16,11 +16,11 @@
 
 package com.android.inputmethod.event;
 
-/**
- * Class describing a decoder chain. This will depend on the language and the input medium (soft
- * or hard keyboard for example).
- */
-public class EventDecoderSpec {
-    public EventDecoderSpec() {
-    }
+import com.android.inputmethod.latin.utils.CollectionUtils;
+
+import java.util.ArrayList;
+
+public class CombinerChain {
+    public CombinerChain(final Combiner... combinerList) {}
+    public void processEvent(final ArrayList<Event> previousEvents, final Event newEvent) {}
 }
diff --git a/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
index 4bbe343..dcff29a 100644
--- a/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
@@ -64,7 +64,6 @@
     <string name="additional_more_keys_for_symbols_0">0,&#x066B;,&#x066C;</string>
     <!-- U+060C: "،" ARABIC COMMA -->
     <string name="keylabel_for_comma">&#x060C;</string>
-    <string name="more_keys_for_comma">"\\,"</string>
     <!-- U+0651: "ّ" ARABIC SHADDA -->
     <string name="keyhintlabel_for_period">&#x0651;</string>
     <string name="more_keys_for_period">!text/more_keys_for_arabic_diacritics</string>
@@ -85,7 +84,6 @@
     <string name="keylabel_for_tablet_comma">"&#x060C;"</string>
     <string name="keyhintlabel_for_tablet_comma">"&#x061F;"</string>
     <string name="more_keys_for_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,\",\'"</string>
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,&#x060C;,&#x061F;,@,&amp;,\\%,+,&#x061B;,/,(|),)|("</string>
     <!-- U+266A: "♪" EIGHTH NOTE -->
     <string name="more_keys_for_bullet">&#x266A;</string>
     <!-- U+2605: "★" BLACK STAR
diff --git a/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
index 8865a60..574be24 100644
--- a/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
@@ -71,8 +71,8 @@
          U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
     <string name="more_keys_for_l">l&#x00B7;l,&#x0142;</string>
     <!-- U+00B7: "·" MIDDLE DOT -->
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!9,;,/,(,),#,&#x00B7;,!,\\,,?,&amp;,\\%,+,\",-,:,',@"</string>
-    <string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!8,;,/,(,),#,&#x00B7;,',\\,,&amp;,\\%,+,\",-,:,@"</string>
+    <string name="more_keys_for_punctuation">"!autoColumnOrder!9,\\,,?,!,&#x00B7;,#,),(,/,;,',@,:,-,\",+,\\%,&amp;"</string>
+    <string name="more_keys_for_tablet_punctuation">"!autoColumnOrder!8,\\,,',&#x00B7;,#,),(,/,;,@,:,-,\",+,\\%,&amp;"</string>
     <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
     <string name="keylabel_for_spanish_row2_10">&#x00E7;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml
index 453d5c1..1737502 100644
--- a/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml
@@ -69,5 +69,5 @@
     <string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x010D;</string>
     <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK
          U+00BF: "¿" INVERTED QUESTION MARK -->
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!9,&#x00A1;,;,/,(,),#,!,\\,,?,&#x00BF;,&amp;,\\%,+,\",-,:,',@"</string>
-</resources>
+    <string name="more_keys_for_punctuation">"!autoColumnOrder!9,\\,,?,!,#,),(,/,;,&#x00A1;,',@,:,-,\",+,\\%,&amp;,&#x00BF;"</string>
+ </resources>
diff --git a/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
index 56993be..b886195 100644
--- a/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
@@ -64,7 +64,6 @@
     <string name="additional_more_keys_for_symbols_0">0,&#x066B;,&#x066C;</string>
     <!-- U+060C: "،" ARABIC COMMA -->
     <string name="keylabel_for_comma">&#x060C;</string>
-    <string name="more_keys_for_comma">"\\,"</string>
     <!-- U+064B: "ً" ARABIC FATHATAN -->
     <string name="keyhintlabel_for_period">&#x064B;</string>
     <string name="more_keys_for_period">!text/more_keys_for_arabic_diacritics</string>
@@ -89,10 +88,6 @@
     <string name="more_keys_for_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote"</string>
     <!-- U+FDFC: "﷼" RIAL SIGN -->
     <string name="keylabel_for_currency">&#xFDFC;</string>
-    <!-- U+061F: "؟" ARABIC QUESTION MARK
-         U+060C: "،" ARABIC COMMA
-         U+061B: "؛" ARABIC SEMICOLON -->
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,&#x060C;,&#x061F;,@,&amp;,\\%,+,&#x061B;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis"</string>
     <!-- U+266A: "♪" EIGHTH NOTE -->
     <string name="more_keys_for_bullet">&#x266A;</string>
     <!-- U+2605: "★" BLACK STAR
diff --git a/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
index a17dc10..8ab78d0 100644
--- a/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
@@ -23,20 +23,22 @@
          U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
          U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM -->
     <string name="label_to_alpha_key">&#x0531;&#x0532;&#x0533;</string>
-    <!-- U+058A: "֊" ARMENIAN HYPHEN -->
-    <!-- U+055C: "՜" ARMENIAN EXCLAMATION MARK -->
-    <!-- U+055D: "՝" ARMENIAN COMMA -->
-    <!-- U+055E: "՞" ARMENIAN QUESTION MARK -->
-    <!-- U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING -->
-    <!-- U+055A: "՚" ARMENIAN APOSTROPHE -->
-    <!-- U+055B: "՛" ARMENIAN EMPHASIS MARK -->
-    <!-- U+055F: "՟" ARMENIAN ABBREVIATION MARK -->
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,!,?,&#x0559;,&#x055A;,.,&#x055C;,\\,,&#x055E;,:,;,&#x055F;,&#x00AB;,&#x00BB;,&#x058A;,&#x055D;,&#x055B;"</string>
-    <!-- U+055E: "՞" ARMENIAN QUESTION MARK -->
-    <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
+    <!-- U+055E: "՞" ARMENIAN QUESTION MARK
+         U+055C: "՜" ARMENIAN EXCLAMATION MARK
+         U+055A: "՚" ARMENIAN APOSTROPHE
+         U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING
+         U+055D: "՝" ARMENIAN COMMA
+         U+055B: "՛" ARMENIAN EMPHASIS MARK
+         U+058A: "֊" ARMENIAN HYPHEN
+         U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+         U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+         U+055F: "՟" ARMENIAN ABBREVIATION MARK -->
+    <string name="more_keys_for_punctuation">"!autoColumnOrder!8,\\,,&#x055E;,&#x055C;,.,&#x055A;,&#x0559;,?,!,&#x055D;,&#x055B;,&#x058A;,&#x00BB;,&#x00AB;,&#x055F;,;,:"</string>
+    <!-- U+055E: "՞" ARMENIAN QUESTION MARK
+         U+00BF: "¿" INVERTED QUESTION MARK -->
     <string name="more_keys_for_question">&#x055E;,&#x00BF;</string>
-    <!-- U+055C: "՜" ARMENIAN EXCLAMATION MARK -->
-    <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
+    <!-- U+055C: "՜" ARMENIAN EXCLAMATION MARK
+         U+00A1: "¡" INVERTED EXCLAMATION MARK -->
     <string name="more_keys_for_exclamation">&#x055C;,&#x00A1;</string>
     <!-- U+058F: "֏" ARMENIAN DRAM SIGN -->
     <!-- TODO: Enable this when we have glyph for the following letter
diff --git a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
index 1ea3018..79f2c65 100644
--- a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
@@ -82,8 +82,8 @@
     <string name="more_keys_for_currency_dollar">&#x00A2;,&#x00A3;,&#x20AC;,&#x00A5;,&#x20B1;</string>
     <string name="keylabel_for_currency">$</string>
     <string name="more_keys_for_currency">$,&#x00A2;,&#x20AC;,&#x00A3;,&#x00A5;,&#x20B1;</string>
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,#,!,\\,,?,&amp;,\\%,+,\",-,:,',@"</string>
-    <string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!7,;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,#,',\\,,&amp;,\\%,+,\",-,:,@"</string>
+    <string name="more_keys_for_punctuation">"!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&amp;"</string>
+    <string name="more_keys_for_tablet_punctuation">"!autoColumnOrder!7,\\,,',#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,@,:,-,\",+,\\%,&amp;"</string>
     <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
     <string name="keylabel_for_spanish_row2_10">&#x00F1;</string>
     <!-- U+2020: "†" DAGGER
@@ -177,7 +177,6 @@
     <string name="keyspec_right_single_angle_quote">&#x203A;</string>
     <!-- Comma key -->
     <string name="keylabel_for_comma">,</string>
-    <string name="more_keys_for_comma"></string>
     <string name="keylabel_for_tablet_comma">,</string>
     <string name="keyhintlabel_for_tablet_comma"></string>
     <string name="more_keys_for_tablet_comma"></string>
