diff --git a/java/res/values/donottranslate-altchars.xml b/java/res/values/donottranslate-altchars.xml
index e77957578742dcbb221062545833f5e26278f21b..71ed6d2de0852a3fb39587670c2d80239a9f772f 100644
--- a/java/res/values/donottranslate-altchars.xml
+++ b/java/res/values/donottranslate-altchars.xml
@@ -47,6 +47,7 @@
     <string name="alternates_for_currency_dollar">¢,£,€,¥,₱</string>
     <string name="alternates_for_currency_euro">¢,£,$,¥,₱</string>
     <string name="alternates_for_currency_pound">¢,$,€,¥,₱</string>
+    <string name="alternates_for_currency_general">¢,$,€,£,¥,₱</string>
     <string name="alternates_for_smiley">":-)|:-) ,:-(|:-( ,;-)|;-) ,:-P|:-P ,=-O|=-O ,:-*|:-* ,:O|:O ,B-)|B-) ,:-$|:-$ ,:-!|:-! ,:-[|:-[ ,O:-)|O:-) ,:-\\\\\\\\|:-\\\\\\\\ ,:\'(|:\'( ,:-D|:-D "</string>
     <string name="alternates_for_punctuation">"\\,,\?,!,:,-,\',\",(,),/,;,+,&amp;,\@"</string>
     <string name="alternates_for_web_tab_punctuation">".,\\,,\?,!,:,-,\',\",(,),/,;,+,&amp;,\@"</string>
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index aa9b1831c6731d0cecc761967a4abd62f5e632ca..bd6736a7bae5b410cb82b678e16f3bf04c5befb3 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -50,12 +50,24 @@
         latin:keyIconShifted="iconShiftedShiftKey"
         latin:parentStyle="functionalKeyStyle"
         latin:isSticky="true" />
-    <key-style
-        latin:styleName="deleteKeyStyle"
-        latin:code="@integer/key_delete"
-        latin:keyIcon="iconDeleteKey"
-        latin:parentStyle="functionalKeyStyle"
-        latin:isRepeatable="true" />
+    <switch>
+        <case latin:languageCode="iw">
+            <key-style
+                latin:styleName="deleteKeyStyle"
+                latin:code="@integer/key_delete"
+                latin:keyIcon="iconDeleteRtlKey"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isRepeatable="true" />
+        </case>
+        <default>
+            <key-style
+                latin:styleName="deleteKeyStyle"
+                latin:code="@integer/key_delete"
+                latin:keyIcon="iconDeleteKey"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isRepeatable="true" />
+        </default>
+    </switch>
     <key-style
         latin:styleName="returnKeyStyle"
         latin:code="@integer/key_return"
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row3.xml b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
index 278db13fce4ca5b56ae911314414548cc8bea54d..b4eed8a7c11be0a003a2642179ddb468ca7360c8 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
@@ -46,29 +46,9 @@
             latin:popupCharacters="@string/alternates_for_n" />
         <Key
             latin:keyLabel="m" />
-        <switch>
-            <case
-                latin:mode="email"
-            >
-                <Key
-                    latin:keyLabel="," />
-                <Key
-                    latin:keyLabel="." />
-            </case>
-            <default>
-                <Key
-                    latin:keyLabel=","
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel="!"
-                    latin:popupCharacters="!" />
-                <Key
-                    latin:keyLabel="."
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel="\?"
-                    latin:popupCharacters="\?" />
-            </default>
-        </switch>
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right" />
+            latin:keyboardLayout="@xml/kbd_row3_comma_period" />
+        <include
+            latin:keyboardLayout="@xml/kbd_row3_smiley" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
index c457c69b47aa37e5f210eefd4b60370927d21d34..5cd47d913cb297ac47e32dbfde8f062a46e6ed97 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
@@ -59,46 +59,15 @@
             latin:keyWidth="39.750%p" />
         <switch>
             <case
-                latin:mode="email"
-            >
-                <Key
-                    latin:keyLabel="-"
-                    latin:keyWidth="9.750%p" />
-            </case>
-            <case
-                latin:mode="url"
-            >
-                <Key
-                    latin:keyLabel="/"
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel=":"
-                    latin:popupCharacters=":"
-                    latin:keyWidth="9.750%p" />
-            </case>
-            <default>
-                <Key
-                    latin:keyLabel="\'"
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel="&quot;"
-                    latin:popupCharacters="&quot;"
-                    latin:keyWidth="9.750%p" />
-            </default>
-        </switch>
-        <switch>
-            <case
-                latin:mode="email"
+                latin:languageCode="iw"
             >
-                <Key
-                    latin:keyLabel="_"
-                    latin:keyWidth="9.750%p" />
+                <include
+                    latin:keyboardLayout="@xml/kbd_row3_comma_period" />
             </case>
+            <!-- not languageCode="iw" -->
             <default>
-                <Key
-                    latin:keyLabel="-"
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel="_"
-                    latin:popupCharacters="_"
-                    latin:keyWidth="9.750%p" />
+                <include
+                    latin:keyboardLayout="@xml/kbd_row4_apostrophe_dash" />
             </default>
         </switch>
         <Spacer
diff --git a/java/res/xml-sw768dp/kbd_row3_right2.xml b/java/res/xml-sw600dp/kbd_row3_comma_period.xml
similarity index 100%
rename from java/res/xml-sw768dp/kbd_row3_right2.xml
rename to java/res/xml-sw600dp/kbd_row3_comma_period.xml
diff --git a/java/res/xml-sw600dp/kbd_row3_right.xml b/java/res/xml-sw600dp/kbd_row3_smiley.xml
similarity index 100%
rename from java/res/xml-sw600dp/kbd_row3_right.xml
rename to java/res/xml-sw600dp/kbd_row3_smiley.xml
diff --git a/java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml b/java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml
new file mode 100644
index 0000000000000000000000000000000000000000..402bb92f9e75c477e1385b043dea2e21c9b64714
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:mode="email"
+        >
+            <Key
+                latin:keyLabel="-" />
+        </case>
+        <case
+            latin:mode="url"
+        >
+            <Key
+                latin:keyLabel="/"
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLabel=":"
+                latin:popupCharacters=":" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel="\'"
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLabel="&quot;"
+                latin:popupCharacters="&quot;" />
+        </default>
+    </switch>
+    <switch>
+        <case
+            latin:mode="email"
+        >
+            <Key
+                latin:keyLabel="_" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel="-"
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLabel="_"
+                latin:popupCharacters="_" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_rows_arabic.xml b/java/res/xml-sw600dp/kbd_rows_arabic.xml
index bc37d5a9fbd4456ce1174595e90e572c27998a15..f1a4755e7e463558ddf7317e458a52e15e22eece 100644
--- a/java/res/xml-sw600dp/kbd_rows_arabic.xml
+++ b/java/res/xml-sw600dp/kbd_rows_arabic.xml
@@ -128,7 +128,7 @@
         <Key
             latin:keyLabel="د" />
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right" />
+            latin:keyboardLayout="@xml/kbd_row3_smiley" />
         </Row>
     <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_rows_azerty.xml b/java/res/xml-sw600dp/kbd_rows_azerty.xml
index 7ba716bc5d1a1c79f2803fd9c414aa55f8578fac..698ef2240191bb5a5de42662b154546fabc58ad7 100644
--- a/java/res/xml-sw600dp/kbd_rows_azerty.xml
+++ b/java/res/xml-sw600dp/kbd_rows_azerty.xml
@@ -149,7 +149,7 @@
             </default>
         </switch>
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right" />
+            latin:keyboardLayout="@xml/kbd_row3_smiley" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_rows_hebrew.xml b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
index a1475376b56b8a219bebc9fe49a8a06790c864d2..87409159ec0acbad6fdd1db749cb45aa8a0f1c9d 100644
--- a/java/res/xml-sw600dp/kbd_rows_hebrew.xml
+++ b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
@@ -24,13 +24,11 @@
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
-        latin:keyWidth="8.600%p"
+        latin:keyWidth="9.0%p"
         latin:rowEdgeFlags="top"
     >
-        <Key
-            latin:keyLabel="," />
-        <Key
-            latin:keyLabel="." />
+        <include
+            latin:keyboardLayout="@xml/kbd_row4_apostrophe_dash" />
         <Key
             latin:keyLabel="×§" />
         <Key
@@ -54,48 +52,78 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="8.600%p"
+        latin:keyWidth="9.0%p"
     >
         <Key
             latin:keyLabel="ש"
-            latin:keyXPos="4.000%p" />
+            latin:keyXPos="4.500%p" />
         <Key
             latin:keyLabel="ד" />
         <Key
             latin:keyLabel="×’"
-            latin:popupCharacters="ג,ג׳" />
+            latin:popupCharacters="ג׳" />
         <Key
             latin:keyLabel="×›" />
         <Key
             latin:keyLabel="×¢" />
         <Key
             latin:keyLabel="×™"
-            latin:popupCharacters="י,ײַ" />
+            latin:popupCharacters="ײַ" />
         <Key
             latin:keyLabel="×—"
-            latin:popupCharacters="ח,ח׳" />
+            latin:popupCharacters="ח׳" />
         <Key
             latin:keyLabel="ל" />
         <Key
             latin:keyLabel="ך" />
         <Key
             latin:keyLabel="×£" />
-        <Key
-            latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-10.400%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="8.600%p"
+        latin:keyWidth="8.9%p"
     >
-        <Key
-            latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="10.000%p"
-            latin:keyEdgeFlags="left" />
+        <!-- kbd_row3_smiley -->
+        <switch>
+            <case
+                latin:mode="email"
+            >
+                <Key
+                    latin:keyLabel="\@"
+                    latin:keyWidth="10.0%p"
+                    latin:keyEdgeFlags="left" />
+            </case>
+            <case
+                latin:mode="url"
+            >
+                <Key
+                    latin:keyLabel="-"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLabel="_"
+                    latin:popupCharacters="_"
+                    latin:keyWidth="10.0%p"
+                    latin:keyEdgeFlags="left" />
+            </case>
+            <case
+                latin:imeAction="actionSearch"
+            >
+                <Key
+                    latin:keyLabel=":"
+                    latin:keyLabelOption="hasUppercaseLetter"
+                    latin:keyHintLabel="+"
+                    latin:popupCharacters="+"
+                    latin:keyWidth="10.0%p"
+                    latin:keyEdgeFlags="left" />
+            </case>
+            <default>
+                <Key
+                    latin:keyStyle="smileyKeyStyle"
+                    latin:keyWidth="10.0%p"
+                    latin:keyEdgeFlags="left" />
+            </default>
+        </switch>
         <Key
             latin:keyLabel="×–"
-            latin:popupCharacters="ז,ז׳" />
+            latin:popupCharacters="ז׳" />
         <Key
             latin:keyLabel="ס" />
         <Key
@@ -108,15 +136,19 @@
             latin:keyLabel="מ" />
         <Key
             latin:keyLabel="צ"
-            latin:popupCharacters="צ,צ׳" />
+            latin:popupCharacters="צ׳" />
         <Key
             latin:keyLabel="ת"
-            latin:popupCharacters="ת,ת׳" />
+            latin:popupCharacters="ת׳" />
         <Key
             latin:keyLabel="×¥"
-            latin:popupCharacters="ץ,ץ׳" />
-        <include
-            latin:keyboardLayout="@xml/kbd_row3_right" />
+            latin:popupCharacters="ץ׳" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyXPos="-10.400%p"
+            latin:keyWidth="fillBoth"
+            latin:keyEdgeFlags="right" />
     </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </merge>
diff --git a/java/res/xml-sw600dp/kbd_rows_qwertz.xml b/java/res/xml-sw600dp/kbd_rows_qwertz.xml
index 7f85fe778ebe33e23251da9e5d1dbc2901877a3e..7ec895e0ab7abdbd4b1583dc22c094ff33366358 100644
--- a/java/res/xml-sw600dp/kbd_rows_qwertz.xml
+++ b/java/res/xml-sw600dp/kbd_rows_qwertz.xml
@@ -114,7 +114,7 @@
             </default>
         </switch>
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right" />
+            latin:keyboardLayout="@xml/kbd_row3_smiley" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_rows_russian.xml b/java/res/xml-sw600dp/kbd_rows_russian.xml
index 4c42d5e0863eaa6bb785f3f334bd9eee635d032a..4452989820a9a521e1940b0caf46c9b3c04ad690 100644
--- a/java/res/xml-sw600dp/kbd_rows_russian.xml
+++ b/java/res/xml-sw600dp/kbd_rows_russian.xml
@@ -139,7 +139,7 @@
             </default>
         </switch>
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right" />
+            latin:keyboardLayout="@xml/kbd_row3_smiley" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_rows_scandinavian.xml b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
index 645ef625ab8560307ab301ea172dd1daa488d7b6..5ac2b36002675e80a4c925ee01de1723fe12989b 100644
--- a/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
+++ b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
@@ -134,32 +134,12 @@
             latin:popupCharacters="@string/alternates_for_n" />
         <Key
             latin:keyLabel="m" />
-        <switch>
-            <case
-                latin:mode="email"
-            >
-                <Key
-                    latin:keyLabel="," />
-                <Key
-                    latin:keyLabel="." />
-            </case>
-            <default>
-                <Key
-                    latin:keyLabel=","
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel="!"
-                    latin:popupCharacters="!" />
-                <Key
-                    latin:keyLabel="."
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel="\?"
-                    latin:popupCharacters="\?" />
-            </default>
-        </switch>
+        <include
+            latin:keyboardLayout="@xml/kbd_row3_comma_period" />
         <Spacer
             latin:keyWidth="4.35%p" />
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right" />
+            latin:keyboardLayout="@xml/kbd_row3_smiley" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_rows_serbian.xml b/java/res/xml-sw600dp/kbd_rows_serbian.xml
index 4dfe9440000892987e413a4dba4b0836da644c35..5d39fd4f1843ebb6cf64c29c3302dd010aeb08bd 100644
--- a/java/res/xml-sw600dp/kbd_rows_serbian.xml
+++ b/java/res/xml-sw600dp/kbd_rows_serbian.xml
@@ -114,30 +114,10 @@
             latin:keyLabel="Ñ’" />
         <Key
             latin:keyLabel="ж" />
-        <switch>
-            <case
-                latin:mode="email"
-            >
-                <Key
-                    latin:keyLabel="," />
-                <Key
-                    latin:keyLabel="." />
-            </case>
-            <default>
-                <Key
-                    latin:keyLabel=","
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel="!"
-                    latin:popupCharacters="!" />
-                <Key
-                    latin:keyLabel="."
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel="\?"
-                    latin:popupCharacters="\?" />
-            </default>
-        </switch>
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right" />
+            latin:keyboardLayout="@xml/kbd_row3_comma_period" />
+        <include
+            latin:keyboardLayout="@xml/kbd_row3_smiley" />
     </Row>
     <include
         latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index fc2a14856c4fd76c4e5452216a612e304506bd1f..19aeab6dcdbb4c53d1af9dda61c3b3bacfbf5658 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -158,16 +158,13 @@
             latin:keyStyle="spaceKeyStyle"
             latin:keyXPos="30.750%p"
             latin:keyWidth="39.750%p" />
-                <!-- Note: DroidSans doesn't have double-high-reversed-quotation
-                    '\u201f' glyph. -->
-                <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" -->
+        <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. -->
+        <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" -->
         <Key
             latin:keyLabel="&quot;"
-            latin:popupCharacters="“,”,«,»,‘,’,‚,‛"
-            latin:keyWidth="9.750%p" />
+            latin:popupCharacters="“,”,«,»,‘,’,‚,‛" />
         <Key
-            latin:keyLabel="_"
-            latin:keyWidth="9.750%p" />
+            latin:keyLabel="_" />
         <Spacer
             latin:keyXPos="-10.00%p"
             latin:keyWidth="0%p" />
diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index 4c1e3b63e256094958a7e8b76e959e97007cb2e1..867a3bbe551b595781bc6f5427000a3f87df7c54 100644
--- a/java/res/xml-sw768dp/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
@@ -32,12 +32,24 @@
         latin:keyIconShifted="iconShiftedShiftKey"
         latin:parentStyle="functionalKeyStyle"
         latin:isSticky="true" />
-    <key-style
-        latin:styleName="deleteKeyStyle"
-        latin:code="@integer/key_delete"
-        latin:keyIcon="iconDeleteKey"
-        latin:parentStyle="functionalKeyStyle"
-        latin:isRepeatable="true" />
+    <switch>
+        <case latin:languageCode="iw">
+            <key-style
+                latin:styleName="deleteKeyStyle"
+                latin:code="@integer/key_delete"
+                latin:keyIcon="iconDeleteRtlKey"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isRepeatable="true" />
+        </case>
+        <default>
+            <key-style
+                latin:styleName="deleteKeyStyle"
+                latin:code="@integer/key_delete"
+                latin:keyIcon="iconDeleteKey"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isRepeatable="true" />
+        </default>
+    </switch>
     <key-style
         latin:styleName="returnKeyStyle"
         latin:code="@integer/key_return"
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row3.xml b/java/res/xml-sw768dp/kbd_qwerty_row3.xml
index 7297ea512c6535af4cfd05bddbf6c04b42433282..9041a7764b47c75e484bfb88b119e631e46952f4 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row3.xml
@@ -47,7 +47,7 @@
         <Key
             latin:keyLabel="m" />
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right2" />
+            latin:keyboardLayout="@xml/kbd_row3_comma_period" />
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyXPos="-13.750%p"
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
index bdef89dcc73805015ecf9a04289e50513ead9edc..48201c9ec9f9f2eca2ea06516e376f7d46cb0067 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
@@ -90,41 +90,14 @@
             latin:keyWidth="37.500%p" />
         <switch>
             <case
-                latin:mode="email"
+                latin:languageCode="iw"
             >
-                <Key
-                    latin:keyLabel="-" />
-            </case>
-            <case
-                latin:mode="url"
-            >
-                <Key
-                    latin:keyLabel="/"
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel=":"
-                    latin:popupCharacters=":" />
-            </case>
-            <default>
-                <Key
-                    latin:keyLabel="\'"
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel="&quot;"
-                    latin:popupCharacters="&quot;" />
-            </default>
-        </switch>
-        <switch>
-            <case
-                latin:mode="email"
-            >
-                <Key
-                    latin:keyLabel="_" />
+                <include
+                    latin:keyboardLayout="@xml/kbd_row3_comma_period" />
             </case>
             <default>
-                <Key
-                    latin:keyLabel="-"
-                    latin:keyLabelOption="hasUppercaseLetter"
-                    latin:keyHintLabel="_"
-                    latin:popupCharacters="_" />
+                <include
+                    latin:keyboardLayout="@xml/kbd_row4_apostrophe_dash" />
             </default>
         </switch>
         <switch>
diff --git a/java/res/xml-sw768dp/kbd_row3_comma_period.xml b/java/res/xml-sw768dp/kbd_row3_comma_period.xml
new file mode 100644
index 0000000000000000000000000000000000000000..25453160f19bb80975aefaf41cb8681db7818ab1
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_row3_comma_period.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:mode="email"
+        >
+            <Key
+                latin:keyLabel="," />
+            <Key
+                latin:keyLabel="." />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel=","
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLabel="!"
+                latin:popupCharacters="!" />
+            <Key
+                latin:keyLabel="."
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLabel="\?"
+                latin:popupCharacters="\?" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-sw768dp/kbd_row4_apostrophe_dash.xml b/java/res/xml-sw768dp/kbd_row4_apostrophe_dash.xml
new file mode 100644
index 0000000000000000000000000000000000000000..402bb92f9e75c477e1385b043dea2e21c9b64714
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_row4_apostrophe_dash.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:mode="email"
+        >
+            <Key
+                latin:keyLabel="-" />
+        </case>
+        <case
+            latin:mode="url"
+        >
+            <Key
+                latin:keyLabel="/"
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLabel=":"
+                latin:popupCharacters=":" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel="\'"
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLabel="&quot;"
+                latin:popupCharacters="&quot;" />
+        </default>
+    </switch>
+    <switch>
+        <case
+            latin:mode="email"
+        >
+            <Key
+                latin:keyLabel="_" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel="-"
+                latin:keyLabelOption="hasUppercaseLetter"
+                latin:keyHintLabel="_"
+                latin:popupCharacters="_" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-sw768dp/kbd_rows_hebrew.xml b/java/res/xml-sw768dp/kbd_rows_hebrew.xml
index 5275a1f1586cb6d7336f3f40492240ab1e401523..0ef68b6486c66f805b144cc3ad97c0215de28371 100644
--- a/java/res/xml-sw768dp/kbd_rows_hebrew.xml
+++ b/java/res/xml-sw768dp/kbd_rows_hebrew.xml
@@ -24,16 +24,15 @@
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
     <Row
-        latin:keyWidth="8.000%p"
+        latin:keyWidth="8.282%p"
     >
         <Key
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelOption="alignLeft"
+            latin:keyWidth="7.969%p"
             latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="," />
-        <Key
-            latin:keyLabel="." />
+        <include
+            latin:keyboardLayout="@xml/kbd_row4_apostrophe_dash" />
         <Key
             latin:keyLabel="×§" />
         <Key
@@ -57,12 +56,12 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="8.000%p"
+        latin:keyWidth="8.125%p"
     >
         <Key
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelOption="alignLeft"
-            latin:keyWidth="9.600%p"
+            latin:keyWidth="11.172%p"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="ש" />
@@ -70,39 +69,31 @@
             latin:keyLabel="ד" />
         <Key
             latin:keyLabel="×’"
-            latin:popupCharacters="ג,ג׳" />
+            latin:popupCharacters="ג׳" />
         <Key
             latin:keyLabel="×›" />
         <Key
             latin:keyLabel="×¢" />
         <Key
             latin:keyLabel="×™"
-            latin:popupCharacters="י,ײַ" />
+            latin:popupCharacters="ײַ" />
         <Key
             latin:keyLabel="×—"
-            latin:popupCharacters="ח,ח׳" />
+            latin:popupCharacters="ח׳" />
         <Key
             latin:keyLabel="ל" />
         <Key
             latin:keyLabel="ך" />
         <Key
             latin:keyLabel="×£" />
-        <Key
-            latin:keyStyle="returnKeyStyle"
-            latin:keyXPos="-10.400%p"
-            latin:keyWidth="fillBoth"
-            latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyWidth="8.000%p"
+        latin:keyWidth="8.047%p"
     >
-        <Key
-            latin:keyStyle="shiftKeyStyle"
-            latin:keyWidth="13.200%p"
-            latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="×–"
-            latin:popupCharacters="ז,ז׳" />
+            latin:popupCharacters="ז׳"
+            latin:keyXPos="13.829%p" />
         <Key
             latin:keyLabel="ס" />
         <Key
@@ -115,13 +106,19 @@
             latin:keyLabel="מ" />
         <Key
             latin:keyLabel="צ"
-            latin:popupCharacters="צ,צ׳" />
+            latin:popupCharacters="צ׳" />
         <Key
             latin:keyLabel="ת"
-            latin:popupCharacters="ת,ת׳" />
+            latin:popupCharacters="ת׳" />
         <Key
             latin:keyLabel="×¥"
-            latin:popupCharacters="ץ,ץ׳" />
+            latin:popupCharacters="ץ׳" />
+        <Key
+            latin:keyStyle="returnKeyStyle"
+            latin:keyXPos="-10.400%p"
+            latin:keyWidth="fillBoth"
+            latin:keyEdgeFlags="right" />
     </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </merge>
diff --git a/java/res/xml-sw768dp/kbd_rows_russian.xml b/java/res/xml-sw768dp/kbd_rows_russian.xml
index ee91481c1375a48f2669d920d9fb95b273dc236e..35b2c8a1a60f05084000326933f7486c8cd52030 100644
--- a/java/res/xml-sw768dp/kbd_rows_russian.xml
+++ b/java/res/xml-sw768dp/kbd_rows_russian.xml
@@ -123,7 +123,7 @@
         <Key
             latin:keyLabel="ÑŽ" />
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right2" />
+            latin:keyboardLayout="@xml/kbd_row3_comma_period" />
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="fillBoth"
diff --git a/java/res/xml-sw768dp/kbd_rows_scandinavian.xml b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
index 7e9f604f53644f482087c353f8a74feb9acd172d..c20dceea8cae1eaf1db34ce237f60e4723d4a9ce 100644
--- a/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
+++ b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
@@ -139,7 +139,7 @@
         <Key
             latin:keyLabel="m" />
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right2" />
+            latin:keyboardLayout="@xml/kbd_row3_comma_period" />
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyXPos="-12.750%p"
diff --git a/java/res/xml-sw768dp/kbd_rows_serbian.xml b/java/res/xml-sw768dp/kbd_rows_serbian.xml
index 4997dabb949d556c9f5e056bfdf95d16e5223b5e..f1576de456897b2081152355d7ccdbf1d18a355e 100644
--- a/java/res/xml-sw768dp/kbd_rows_serbian.xml
+++ b/java/res/xml-sw768dp/kbd_rows_serbian.xml
@@ -118,7 +118,7 @@
         <Key
             latin:keyLabel="м" />
         <include
-            latin:keyboardLayout="@xml/kbd_row3_right2" />
+            latin:keyboardLayout="@xml/kbd_row3_comma_period" />
         <Key
             latin:keyStyle="returnKeyStyle"
             latin:keyXPos="-13.750%p"
diff --git a/java/res/xml/kbd_currency_key_styles.xml b/java/res/xml/kbd_currency_key_styles.xml
index 9d3bb4725401c466c3dbba510daead8d9076837b..d2c711766536e28bbd1e46c389d5d28f6fa9fd6a 100644
--- a/java/res/xml/kbd_currency_key_styles.xml
+++ b/java/res/xml/kbd_currency_key_styles.xml
@@ -80,6 +80,14 @@
                 latin:keyLabel="€"
                 latin:popupCharacters="@string/alternates_for_currency_euro" />
         </case>
+        <case
+            latin:languageCode="iw"
+        >
+            <key-style
+                latin:styleName="currencyKeyStyle"
+                latin:keyLabel="₪"
+                latin:popupCharacters="@string/alternates_for_currency_general" />
+        </case>
         <!-- United Kingdom -->
         <case
             latin:countryCode="GB"
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index 139d4eb18aec9802eacce169fb8b805fffd4e691..00a445e1611825802aff7bd5584f6dfbd1a31aa4 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -60,7 +60,7 @@
         latin:parentStyle="functionalKeyStyle"
         latin:isSticky="true" />
     <switch>
-        <case latin:localeCode="ar|iw">
+        <case latin:languageCode="ar|iw">
             <key-style
                 latin:styleName="deleteKeyStyle"
                 latin:code="@integer/key_delete"
diff --git a/java/res/xml/kbd_rows_hebrew.xml b/java/res/xml/kbd_rows_hebrew.xml
index c3c8f7d3ea518858b70b7c836945d6ccd852e07e..af348851599062634fa3c9b23f905c1f3db12500 100644
--- a/java/res/xml/kbd_rows_hebrew.xml
+++ b/java/res/xml/kbd_rows_hebrew.xml
@@ -18,9 +18,6 @@
 */
 -->
 
-<!-- This file for Hebrew layout is an alpha version. It allows to enter   -->
-<!-- some right-to-left text, but it has gone through no study whatsoever, -->
-<!-- and needs to be run through UX.                                       -->
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
@@ -63,15 +60,18 @@
         <Key
             latin:keyLabel="ד" />
         <Key
-            latin:keyLabel="×’" />
+            latin:keyLabel="×’"
+            latin:popupCharacters="ג׳" />
         <Key
             latin:keyLabel="×›" />
         <Key
             latin:keyLabel="×¢" />
         <Key
-            latin:keyLabel="×™" />
+            latin:keyLabel="×™"
+            latin:popupCharacters="ײַ" />
         <Key
-            latin:keyLabel="×—" />
+            latin:keyLabel="×—"
+            latin:popupCharacters="ח׳" />
         <Key
             latin:keyLabel="ל" />
         <Key
@@ -86,6 +86,7 @@
     >
         <Key
             latin:keyLabel="×–"
+            latin:popupCharacters="ז׳"
             latin:keyXPos="5%p"
             latin:keyEdgeFlags="left" />
         <Key
@@ -99,13 +100,17 @@
         <Key
             latin:keyLabel="מ" />
         <Key
-            latin:keyLabel="צ" />
+            latin:keyLabel="צ"
+            latin:popupCharacters="צ׳" />
         <Key
-            latin:keyLabel="ת" />
+            latin:keyLabel="ת"
+            latin:popupCharacters="ת׳" />
         <Key
             latin:keyLabel="×¥"
+            latin:popupCharacters="ץ׳"
             latin:keyEdgeFlags="right" />
         <!-- Here is 5%p space -->
     </Row>
-    <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </merge>