Manual merge of the following Gingerbread changes logically

I8b38e280
Ia3929bb0
If925b546
I1062763d
I901e36aa

bug: 3100311
Change-Id: Ic7e01277ec816e77d34732599b2b9552668b81c2
diff --git a/java/res/drawable-hdpi/hint_popup.9.png b/java/res/drawable-hdpi/hint_popup.9.png
new file mode 100644
index 0000000..b5ec003
--- /dev/null
+++ b/java/res/drawable-hdpi/hint_popup.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/hint_popup.9.png b/java/res/drawable-mdpi/hint_popup.9.png
new file mode 100644
index 0000000..444cc26
--- /dev/null
+++ b/java/res/drawable-mdpi/hint_popup.9.png
Binary files differ
diff --git a/java/res/xml/kbd_popup_narrow_template.xml b/java/res/xml/kbd_popup_narrow_template.xml
index 23c686e..9b78711 100644
--- a/java/res/xml/kbd_popup_narrow_template.xml
+++ b/java/res/xml/kbd_popup_narrow_template.xml
@@ -18,10 +18,10 @@
 */
 -->
 
-<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
-    android:keyWidth="9.45%p"
-    android:horizontalGap="0px"
-    android:verticalGap="0px"
-    android:keyHeight="@dimen/popup_key_height"
+<Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    latin:keyWidth="9.45%p"
+    latin:horizontalGap="0px"
+    latin:verticalGap="0px"
+    latin:keyHeight="@dimen/popup_key_height"
     >
 </Keyboard>
diff --git a/java/res/xml/kbd_qwerty_black_row4.xml b/java/res/xml/kbd_qwerty_black_row4.xml
index 1718603..330ddda 100644
--- a/java/res/xml/kbd_qwerty_black_row4.xml
+++ b/java/res/xml/kbd_qwerty_black_row4.xml
@@ -40,6 +40,7 @@
             latin:keyWidth="40%p" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation" />
         <Key
             latin:codes="@integer/key_return"
@@ -59,7 +60,7 @@
             latin:keyWidth="20%p"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:keyLabel="/" />
+            latin:codes="@integer/key_f1" />
         <Key
             latin:codes="@integer/key_space"
             latin:keyIcon="@drawable/sym_bkeyboard_space"
@@ -67,6 +68,7 @@
             latin:keyWidth="40%p" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation" />
         <Key
             latin:codes="@integer/key_return"
@@ -86,7 +88,7 @@
             latin:keyWidth="20%p"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:keyLabel="\@" />
+            latin:codes="@integer/key_f1" />
         <Key
             latin:codes="@integer/key_space"
             latin:keyIcon="@drawable/sym_bkeyboard_space"
@@ -94,6 +96,7 @@
             latin:keyWidth="40%p" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation" />
         <Key
             latin:codes="@integer/key_return"
@@ -121,10 +124,12 @@
             latin:keyWidth="40%p" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation" />
         <Key
             latin:keyLabel=":-)"
             latin:keyOutputText=":-) "
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_smileys"
             latin:keyWidth="20%p"
             latin:keyEdgeFlags="right" />
@@ -153,6 +158,7 @@
             latin:keyWidth="20%p" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation" />
         <Key
             latin:codes="@integer/key_return"
@@ -184,6 +190,7 @@
             latin:keyWidth="30%p" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation" />
         <Key
             latin:codes="@integer/key_return"
@@ -207,7 +214,7 @@
             latin:keyIcon="@drawable/sym_bkeyboard_settings"
             latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
         <Key
-            latin:keyLabel="/" />
+            latin:codes="@integer/key_f1" />
         <Key
             latin:codes="@integer/key_space"
             latin:keyIcon="@drawable/sym_bkeyboard_space"
@@ -215,6 +222,7 @@
             latin:keyWidth="30%p" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation" />
         <Key
             latin:codes="@integer/key_return"
@@ -238,7 +246,7 @@
             latin:keyIcon="@drawable/sym_bkeyboard_settings"
             latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
         <Key
-            latin:keyLabel="\@" />
+            latin:codes="@integer/key_f1" />
         <Key
             latin:codes="@integer/key_space"
             latin:keyIcon="@drawable/sym_bkeyboard_space"
@@ -246,6 +254,7 @@
             latin:keyWidth="30%p" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation" />
         <Key
             latin:codes="@integer/key_return"
@@ -277,10 +286,12 @@
             latin:keyWidth="30%p" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation" />
         <Key
             latin:keyLabel=":-)"
             latin:keyOutputText=":-) "
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_smileys"
             latin:keyWidth="25%p"
             latin:keyEdgeFlags="right" />
@@ -312,6 +323,7 @@
             latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation" />
         <Key
             latin:codes="@integer/key_return"
diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml
index 124008f..17b7c52 100644
--- a/java/res/xml/kbd_qwerty_row4.xml
+++ b/java/res/xml/kbd_qwerty_row4.xml
@@ -43,6 +43,7 @@
             latin:isModifier="true" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation"
             latin:isModifier="true" />
         <Key
@@ -65,7 +66,7 @@
             latin:isModifier="true"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:keyLabel="/"
+            latin:codes="@integer/key_f1"
             latin:isModifier="true" />
         <Key
             latin:codes="@integer/key_space"
@@ -75,6 +76,7 @@
             latin:isModifier="true" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation"
             latin:isModifier="true" />
         <Key
@@ -97,7 +99,7 @@
             latin:isModifier="true"
             latin:keyEdgeFlags="left" />
         <Key
-            latin:keyLabel="\@"
+            latin:codes="@integer/key_f1"
             latin:isModifier="true" />
         <Key
             latin:codes="@integer/key_space"
@@ -107,6 +109,7 @@
             latin:isModifier="true" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation"
             latin:isModifier="true" />
         <Key
@@ -139,11 +142,13 @@
             latin:isModifier="true" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation"
             latin:isModifier="true" />
         <Key
             latin:keyLabel=":-)"
             latin:keyOutputText=":-) "
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_smileys"
             latin:keyWidth="20%p"
             latin:isModifier="true"
@@ -177,6 +182,7 @@
             latin:isModifier="true" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation"
             latin:isModifier="true" />
         <Key
@@ -214,6 +220,7 @@
             latin:isModifier="true" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation"
             latin:isModifier="true" />
         <Key
@@ -241,7 +248,7 @@
             latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
             latin:isModifier="true" />
         <Key
-            latin:keyLabel="/"
+            latin:codes="@integer/key_f1"
             latin:isModifier="true" />
         <Key
             latin:codes="@integer/key_space"
@@ -251,6 +258,7 @@
             latin:isModifier="true" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation"
             latin:isModifier="true" />
         <Key
@@ -278,7 +286,7 @@
             latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
             latin:isModifier="true" />
         <Key
-            latin:keyLabel="\@"
+            latin:codes="@integer/key_f1"
             latin:isModifier="true" />
         <Key
             latin:codes="@integer/key_space"
@@ -288,6 +296,7 @@
             latin:isModifier="true" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation"
             latin:isModifier="true" />
         <Key
@@ -325,11 +334,13 @@
             latin:isModifier="true" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation"
             latin:isModifier="true" />
         <Key
             latin:keyLabel=":-)"
             latin:keyOutputText=":-) "
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_smileys"
             latin:keyWidth="25%p"
             latin:isModifier="true"
@@ -367,6 +378,7 @@
             latin:isModifier="true" />
         <Key
             latin:keyLabel="."
+            latin:keyHintIcon="@drawable/hint_popup"
             latin:popupKeyboard="@xml/popup_punctuation"
             latin:isModifier="true" />
         <Key
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index 83fb5a7..608ddda 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -143,70 +143,63 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyboardMode="@+id/mode_symbols"
+        latin:keyboardMode="@+id/mode_symbols_normal"
         latin:rowEdgeFlags="bottom"
     >
-        <Key
-            latin:codes="@integer/key_symbol"
-            latin:keyLabel="@string/label_alpha_key"
-            latin:keyWidth="20%p"
-            latin:isModifier="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:codes="@integer/key_f1"
-            latin:isModifier="true" />
-        <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="40%p"
-            latin:isModifier="true" />
-        <Key
-            latin:keyLabel="."
-            latin:popupKeyboard="@xml/popup_punctuation"
-            latin:isModifier="true" />
-        <Key
-            latin:codes="@integer/key_return"
-            latin:keyIcon="@drawable/sym_keyboard_return"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-            latin:keyWidth="20%p"
-            latin:isModifier="true"
-            latin:keyEdgeFlags="right" />
+        <include latin:keyboardLayout="@xml/kbd_symbols_row4_common" />
     </Row>
     <Row
-        latin:keyboardMode="@+id/mode_symbols_with_settings_key"
+        latin:keyboardMode="@+id/mode_symbols_url"
         latin:rowEdgeFlags="bottom"
     >
-        <Key
-            latin:codes="@integer/key_symbol"
-            latin:keyLabel="@string/label_alpha_key"
-            latin:keyWidth="15%p"
-            latin:isModifier="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:codes="@integer/key_settings"
-            latin:keyIcon="@drawable/sym_keyboard_settings"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            latin:isModifier="true" />
-        <Key
-            latin:codes="@integer/key_f1"
-            latin:isModifier="true" />
-        <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="30%p"
-            latin:isModifier="true" />
-        <Key
-            latin:keyLabel="."
-            latin:popupKeyboard="@xml/popup_punctuation"
-            latin:isModifier="true" />
-        <Key
-            latin:codes="@integer/key_return"
-            latin:keyIcon="@drawable/sym_keyboard_return"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-            latin:keyWidth="25%p"
-            latin:isModifier="true"
-            latin:keyEdgeFlags="right" />
+        <include latin:keyboardLayout="@xml/kbd_symbols_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_email"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_im"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_row4_im" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_webentry"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_normal_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_url_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_email_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_im_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_row4_im_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_webentry_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_row4_common_with_settings_key" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml/kbd_symbols_black.xml b/java/res/xml/kbd_symbols_black.xml
index b6a069c..9e401a1 100644
--- a/java/res/xml/kbd_symbols_black.xml
+++ b/java/res/xml/kbd_symbols_black.xml
@@ -142,59 +142,63 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyboardMode="@+id/mode_symbols"
+        latin:keyboardMode="@+id/mode_symbols_normal"
         latin:rowEdgeFlags="bottom"
     >
-        <Key
-            latin:codes="@integer/key_symbol"
-            latin:keyLabel="@string/label_alpha_key"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:codes="@integer/key_f1" />
-        <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_bkeyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="40%p" />
-        <Key
-            latin:keyLabel="."
-            latin:popupKeyboard="@xml/popup_punctuation" />
-        <Key
-            latin:codes="@integer/key_return"
-            latin:keyIcon="@drawable/sym_bkeyboard_return"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
+        <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common" />
     </Row>
     <Row
-        latin:keyboardMode="@+id/mode_symbols_with_settings_key"
+        latin:keyboardMode="@+id/mode_symbols_url"
         latin:rowEdgeFlags="bottom"
     >
-        <Key
-            latin:codes="@integer/key_symbol"
-            latin:keyLabel="@string/label_alpha_key"
-            latin:keyWidth="15%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:codes="@integer/key_settings"
-            latin:keyIcon="@drawable/sym_bkeyboard_settings"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
-        <Key
-            latin:codes="@integer/key_f1" />
-        <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_bkeyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="30%p" />
-        <Key
-            latin:keyLabel="."
-            latin:popupKeyboard="@xml/popup_punctuation" />
-        <Key
-            latin:codes="@integer/key_return"
-            latin:keyIcon="@drawable/sym_bkeyboard_return"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-            latin:keyWidth="25%p"
-            latin:keyEdgeFlags="right" />
+        <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_email"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_im"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_im" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_webentry"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_normal_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_url_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_email_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_im_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_im_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_webentry_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common_with_settings_key" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml/kbd_symbols_black_row4_common.xml b/java/res/xml/kbd_symbols_black_row4_common.xml
new file mode 100644
index 0000000..7433eca
--- /dev/null
+++ b/java/res/xml/kbd_symbols_black_row4_common.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="20%p"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_f1" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_bkeyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="40%p" />
+    <Key
+        latin:keyLabel="."
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_punctuation" />
+    <Key
+        latin:codes="@integer/key_return"
+        latin:keyIcon="@drawable/sym_bkeyboard_return"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+        latin:keyWidth="20%p"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_black_row4_common_with_settings_key.xml b/java/res/xml/kbd_symbols_black_row4_common_with_settings_key.xml
new file mode 100644
index 0000000..bbb1699
--- /dev/null
+++ b/java/res/xml/kbd_symbols_black_row4_common_with_settings_key.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="15%p"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_settings"
+        latin:keyIcon="@drawable/sym_bkeyboard_settings"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
+    <Key
+        latin:codes="@integer/key_f1" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_bkeyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="30%p" />
+    <Key
+        latin:keyLabel="."
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_punctuation" />
+    <Key
+        latin:codes="@integer/key_return"
+        latin:keyIcon="@drawable/sym_bkeyboard_return"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+        latin:keyWidth="25%p"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_black_row4_im.xml b/java/res/xml/kbd_symbols_black_row4_im.xml
new file mode 100644
index 0000000..a1546b7
--- /dev/null
+++ b/java/res/xml/kbd_symbols_black_row4_im.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="20%p"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_f1" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_bkeyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="40%p" />
+    <Key
+        latin:keyLabel="."
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_punctuation" />
+    <Key
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_smileys"
+        latin:keyWidth="20%p"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_black_row4_im_with_settings_key.xml b/java/res/xml/kbd_symbols_black_row4_im_with_settings_key.xml
new file mode 100644
index 0000000..4cab461
--- /dev/null
+++ b/java/res/xml/kbd_symbols_black_row4_im_with_settings_key.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="15%p"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_settings"
+        latin:keyIcon="@drawable/sym_bkeyboard_settings"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
+    <Key
+        latin:codes="@integer/key_f1" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_bkeyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="30%p" />
+    <Key
+        latin:keyLabel="."
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_punctuation" />
+    <Key
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_smileys"
+        latin:keyWidth="25%p"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_row4_common.xml b/java/res/xml/kbd_symbols_row4_common.xml
new file mode 100644
index 0000000..ef7cdca
--- /dev/null
+++ b/java/res/xml/kbd_symbols_row4_common.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="20%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_f1"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_keyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="40%p"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel="."
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_punctuation"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_return"
+        latin:keyIcon="@drawable/sym_keyboard_return"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+        latin:keyWidth="20%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_row4_common_with_settings_key.xml b/java/res/xml/kbd_symbols_row4_common_with_settings_key.xml
new file mode 100644
index 0000000..54b8542
--- /dev/null
+++ b/java/res/xml/kbd_symbols_row4_common_with_settings_key.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="15%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_settings"
+        latin:keyIcon="@drawable/sym_keyboard_settings"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_f1"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_keyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="30%p"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel="."
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_punctuation"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_return"
+        latin:keyIcon="@drawable/sym_keyboard_return"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+        latin:keyWidth="25%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_row4_im.xml b/java/res/xml/kbd_symbols_row4_im.xml
new file mode 100644
index 0000000..c7d679b
--- /dev/null
+++ b/java/res/xml/kbd_symbols_row4_im.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="20%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_f1"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_keyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="40%p"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel="."
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_punctuation"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_smileys"
+        latin:keyWidth="20%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_row4_im_with_settings_key.xml b/java/res/xml/kbd_symbols_row4_im_with_settings_key.xml
new file mode 100644
index 0000000..7cc209b
--- /dev/null
+++ b/java/res/xml/kbd_symbols_row4_im_with_settings_key.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="15%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_settings"
+        latin:keyIcon="@drawable/sym_keyboard_settings"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_f1"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_keyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="30%p"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel="."
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_punctuation"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_smileys"
+        latin:keyWidth="25%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index d83706b..b8f8fae 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -122,68 +122,63 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyboardMode="@+id/mode_symbols"
+        latin:keyboardMode="@+id/mode_symbols_normal"
         latin:rowEdgeFlags="bottom"
     >
-        <Key
-            latin:codes="@integer/key_symbol"
-            latin:keyLabel="@string/label_alpha_key"
-            latin:keyWidth="20%p"
-            latin:isModifier="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="„"
-            latin:isModifier="true" />
-        <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="40%p"
-            latin:isModifier="true" />
-        <Key
-            latin:keyLabel="…"
-            latin:isModifier="true" />
-        <Key
-            latin:codes="@integer/key_return"
-            latin:keyIcon="@drawable/sym_keyboard_return"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-            latin:keyWidth="20%p"
-            latin:isModifier="true"
-            latin:keyEdgeFlags="right" />
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common" />
     </Row>
     <Row
-        latin:keyboardMode="@+id/mode_symbols_with_settings_key"
+        latin:keyboardMode="@+id/mode_symbols_url"
         latin:rowEdgeFlags="bottom"
     >
-        <Key
-            latin:codes="@integer/key_symbol"
-            latin:keyLabel="@string/label_alpha_key"
-            latin:keyWidth="15%p"
-            latin:isModifier="true"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:codes="@integer/key_settings"
-            latin:keyIcon="@drawable/sym_keyboard_settings"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            latin:isModifier="true" />
-        <Key
-            latin:keyLabel="„"
-            latin:isModifier="true" />
-        <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="30%p"
-            latin:isModifier="true" />
-        <Key
-            latin:keyLabel="…"
-            latin:isModifier="true" />
-        <Key
-            latin:codes="@integer/key_return"
-            latin:keyIcon="@drawable/sym_keyboard_return"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-            latin:keyWidth="25%p"
-            latin:isModifier="true"
-            latin:keyEdgeFlags="right" />
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_email"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_im"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_im" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_webentry"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_normal_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_url_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_email_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_im_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_im_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_webentry_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common_with_settings_key" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml/kbd_symbols_shift_black.xml b/java/res/xml/kbd_symbols_shift_black.xml
index e5f8abf..34684a6 100644
--- a/java/res/xml/kbd_symbols_shift_black.xml
+++ b/java/res/xml/kbd_symbols_shift_black.xml
@@ -121,57 +121,63 @@
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
-        latin:keyboardMode="@+id/mode_symbols"
+        latin:keyboardMode="@+id/mode_symbols_normal"
         latin:rowEdgeFlags="bottom"
     >
-        <Key
-            latin:codes="@integer/key_symbol"
-            latin:keyLabel="@string/label_alpha_key"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:keyLabel="„" />
-        <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_bkeyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="40%p" />
-        <Key
-            latin:keyLabel="…" />
-        <Key
-            latin:codes="@integer/key_return"
-            latin:keyIcon="@drawable/sym_bkeyboard_return"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-            latin:keyWidth="20%p"
-            latin:keyEdgeFlags="right" />
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common" />
     </Row>
     <Row
-        latin:keyboardMode="@+id/mode_symbols_with_settings_key"
+        latin:keyboardMode="@+id/mode_symbols_url"
         latin:rowEdgeFlags="bottom"
     >
-        <Key
-            latin:codes="@integer/key_symbol"
-            latin:keyLabel="@string/label_alpha_key"
-            latin:keyWidth="15%p"
-            latin:keyEdgeFlags="left" />
-        <Key
-            latin:codes="@integer/key_settings"
-            latin:keyIcon="@drawable/sym_bkeyboard_settings"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
-        <Key
-            latin:keyLabel="„" />
-        <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_bkeyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="30%p" />
-        <Key
-            latin:keyLabel="…" />
-        <Key
-            latin:codes="@integer/key_return"
-            latin:keyIcon="@drawable/sym_bkeyboard_return"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_return"
-            latin:keyWidth="25%p"
-            latin:keyEdgeFlags="right" />
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_email"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_im"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_im" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_webentry"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_normal_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_url_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_email_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_im_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_im_with_settings_key" />
+    </Row>
+    <Row
+        latin:keyboardMode="@+id/mode_symbols_webentry_with_settings_key"
+        latin:rowEdgeFlags="bottom"
+    >
+        <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common_with_settings_key" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml/kbd_symbols_shift_black_row4_common.xml b/java/res/xml/kbd_symbols_shift_black_row4_common.xml
new file mode 100644
index 0000000..beb5b3d
--- /dev/null
+++ b/java/res/xml/kbd_symbols_shift_black_row4_common.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="20%p"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:keyLabel="„" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_bkeyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="40%p" />
+    <Key
+        latin:keyLabel="…" />
+    <Key
+        latin:codes="@integer/key_return"
+        latin:keyIcon="@drawable/sym_bkeyboard_return"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+        latin:keyWidth="20%p"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_shift_black_row4_common_with_settings_key.xml b/java/res/xml/kbd_symbols_shift_black_row4_common_with_settings_key.xml
new file mode 100644
index 0000000..97f882a
--- /dev/null
+++ b/java/res/xml/kbd_symbols_shift_black_row4_common_with_settings_key.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="15%p"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_settings"
+        latin:keyIcon="@drawable/sym_bkeyboard_settings"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
+    <Key
+        latin:keyLabel="„" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_bkeyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="30%p" />
+    <Key
+        latin:keyLabel="…" />
+    <Key
+        latin:codes="@integer/key_return"
+        latin:keyIcon="@drawable/sym_bkeyboard_return"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+        latin:keyWidth="25%p"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_shift_black_row4_im.xml b/java/res/xml/kbd_symbols_shift_black_row4_im.xml
new file mode 100644
index 0000000..c0263c2
--- /dev/null
+++ b/java/res/xml/kbd_symbols_shift_black_row4_im.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="20%p"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:keyLabel="„" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_bkeyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="40%p" />
+    <Key
+        latin:keyLabel="…" />
+    <Key
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_smileys"
+        latin:keyWidth="20%p"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_shift_black_row4_im_with_settings_key.xml b/java/res/xml/kbd_symbols_shift_black_row4_im_with_settings_key.xml
new file mode 100644
index 0000000..14d6a0b
--- /dev/null
+++ b/java/res/xml/kbd_symbols_shift_black_row4_im_with_settings_key.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="15%p"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_settings"
+        latin:keyIcon="@drawable/sym_bkeyboard_settings"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_settings" />
+    <Key
+        latin:keyLabel="„" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_bkeyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="30%p" />
+    <Key
+        latin:keyLabel="…" />
+    <Key
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_smileys"
+        latin:keyWidth="25%p"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_shift_row4_common.xml b/java/res/xml/kbd_symbols_shift_row4_common.xml
new file mode 100644
index 0000000..4d5199e
--- /dev/null
+++ b/java/res/xml/kbd_symbols_shift_row4_common.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="20%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:keyLabel="„"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_keyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="40%p"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel="…"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_return"
+        latin:keyIcon="@drawable/sym_keyboard_return"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+        latin:keyWidth="20%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_shift_row4_common_with_settings_key.xml b/java/res/xml/kbd_symbols_shift_row4_common_with_settings_key.xml
new file mode 100644
index 0000000..df570ea
--- /dev/null
+++ b/java/res/xml/kbd_symbols_shift_row4_common_with_settings_key.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="15%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_settings"
+        latin:keyIcon="@drawable/sym_keyboard_settings"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel="„"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_keyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="30%p"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel="…"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_return"
+        latin:keyIcon="@drawable/sym_keyboard_return"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+        latin:keyWidth="25%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_shift_row4_im.xml b/java/res/xml/kbd_symbols_shift_row4_im.xml
new file mode 100644
index 0000000..69c6092
--- /dev/null
+++ b/java/res/xml/kbd_symbols_shift_row4_im.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="20%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:keyLabel="„"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_keyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="40%p"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel="…"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_smileys"
+        latin:keyWidth="20%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/kbd_symbols_shift_row4_im_with_settings_key.xml b/java/res/xml/kbd_symbols_shift_row4_im_with_settings_key.xml
new file mode 100644
index 0000000..aad6e40
--- /dev/null
+++ b/java/res/xml/kbd_symbols_shift_row4_im_with_settings_key.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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"
+>
+    <Key
+        latin:codes="@integer/key_symbol"
+        latin:keyLabel="@string/label_alpha_key"
+        latin:keyWidth="15%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="left" />
+    <Key
+        latin:codes="@integer/key_settings"
+        latin:keyIcon="@drawable/sym_keyboard_settings"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel="„"
+        latin:isModifier="true" />
+    <Key
+        latin:codes="@integer/key_space"
+        latin:keyIcon="@drawable/sym_keyboard_space"
+        latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+        latin:keyWidth="30%p"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel="…"
+        latin:isModifier="true" />
+    <Key
+        latin:keyLabel=":-)"
+        latin:keyOutputText=":-) "
+        latin:keyHintIcon="@drawable/hint_popup"
+        latin:popupKeyboard="@xml/popup_smileys"
+        latin:keyWidth="25%p"
+        latin:isModifier="true"
+        latin:keyEdgeFlags="right" />
+</merge>
diff --git a/java/res/xml/popup_at.xml b/java/res/xml/popup_at.xml
new file mode 100644
index 0000000..4b19d4f
--- /dev/null
+++ b/java/res/xml/popup_at.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    latin:keyWidth="10%p"
+    latin:horizontalGap="0px"
+    latin:verticalGap="0px"
+    latin:keyHeight="@dimen/popup_key_height"
+>
+    <Row
+        latin:rowEdgeFlags="top|bottom"
+    >
+        <Key
+            latin:codes="@integer/key_settings"
+            latin:keyIcon="@drawable/sym_keyboard_settings"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="\@"
+            latin:keyEdgeFlags="right" />
+    </Row>
+</Keyboard>
diff --git a/java/res/xml/popup_slash.xml b/java/res/xml/popup_slash.xml
new file mode 100644
index 0000000..1ace909
--- /dev/null
+++ b/java/res/xml/popup_slash.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    latin:keyWidth="10%p"
+    latin:horizontalGap="0px"
+    latin:verticalGap="0px"
+    latin:keyHeight="@dimen/popup_key_height"
+>
+    <Row
+        latin:rowEdgeFlags="top|bottom"
+    >
+        <Key
+            latin:codes="@integer/key_settings"
+            latin:keyIcon="@drawable/sym_keyboard_settings"
+            latin:keyEdgeFlags="left" />
+        <Key
+            latin:keyLabel="/"
+            latin:keyEdgeFlags="right" />
+    </Row>
+</Keyboard>