From e0502496da24e658124538bb0bd9a867e4c1d1c0 Mon Sep 17 00:00:00 2001
From: Satoshi Kataoka <satok@google.com>
Date: Wed, 4 Sep 2013 08:53:12 +0000
Subject: [PATCH] Revert "Remove symbols shifted layout"

This reverts commit c02a365485cb777137cbab8ff8f60c4b36fa0f7a.

Change-Id: I11d31632469a594c0637f035bdd74ba60b2ac33e
---
 java/res/xml-sw600dp/kbd_10_10_7_symbols.xml  | 27 +++++++
 .../xml-sw600dp/kbd_10_10_7_symbols_shift.xml | 27 +++++++
 java/res/xml-sw600dp/row_symbols4.xml         | 16 +++-
 java/res/xml-sw600dp/row_symbols_shift4.xml   | 40 ++++++++++
 java/res/xml-sw600dp/rowkeys_symbols2.xml     | 75 +++++++++++++++++++
 java/res/xml-sw600dp/rowkeys_symbols3.xml     | 57 ++++++++++++++
 .../xml-sw600dp/rowkeys_symbols_shift1.xml    | 56 ++++++++++++++
 .../xml-sw600dp/rowkeys_symbols_shift2.xml    | 52 +++++++++++++
 .../xml-sw600dp/rowkeys_symbols_shift3.xml    | 46 ++++++++++++
 java/res/xml-sw600dp/rows_10_10_7_symbols.xml | 60 +++++++++++++++
 .../rows_10_10_7_symbols_shift.xml            | 60 +++++++++++++++
 java/res/xml-sw600dp/rows_symbols.xml         | 17 +++--
 java/res/xml-sw600dp/rows_symbols_shift.xml   | 61 +++++++++++++++
 java/res/xml/kbd_10_10_7_symbols_shift.xml    | 27 +++++++
 java/res/xml/kbd_symbols_shift.xml            | 27 +++++++
 java/res/xml/kbd_thai_symbols_shift.xml       | 27 +++++++
 ...y_currency.xml => key_styles_currency.xml} | 48 +++++++++---
 ...lar.xml => key_styles_currency_dollar.xml} | 17 ++++-
 ..._euro.xml => key_styles_currency_euro.xml} | 18 ++++-
 java/res/xml/keyboard_layout_set_arabic.xml   |  3 +
 java/res/xml/keyboard_layout_set_azerty.xml   |  3 +
 .../res/xml/keyboard_layout_set_bulgarian.xml |  3 +
 .../xml/keyboard_layout_set_bulgarian_bds.xml |  3 +
 java/res/xml/keyboard_layout_set_colemak.xml  |  3 +
 java/res/xml/keyboard_layout_set_dvorak.xml   |  3 +
 .../xml/keyboard_layout_set_east_slavic.xml   |  3 +
 java/res/xml/keyboard_layout_set_farsi.xml    |  3 +
 java/res/xml/keyboard_layout_set_georgian.xml |  3 +
 java/res/xml/keyboard_layout_set_greek.xml    |  3 +
 java/res/xml/keyboard_layout_set_hebrew.xml   |  3 +
 java/res/xml/keyboard_layout_set_hindi.xml    |  3 +
 .../res/xml/keyboard_layout_set_mongolian.xml |  3 +
 java/res/xml/keyboard_layout_set_nordic.xml   |  3 +
 java/res/xml/keyboard_layout_set_qwerty.xml   |  3 +
 java/res/xml/keyboard_layout_set_qwertz.xml   |  3 +
 .../xml/keyboard_layout_set_south_slavic.xml  |  3 +
 java/res/xml/keyboard_layout_set_spanish.xml  |  3 +
 java/res/xml/keyboard_layout_set_thai.xml     |  3 +
 java/res/xml/keys_parentheses.xml             | 32 ++++++++
 java/res/xml/row_symbols4.xml                 |  5 +-
 java/res/xml/row_symbols_shift4.xml           | 47 ++++++++++++
 java/res/xml/rowkeys_symbols2.xml             | 38 +++-------
 java/res/xml/rowkeys_symbols3.xml             | 19 ++---
 java/res/xml/rowkeys_symbols_shift1.xml       | 50 +++++++++++++
 java/res/xml/rowkeys_symbols_shift2.xml       | 55 ++++++++++++++
 java/res/xml/rowkeys_symbols_shift3.xml       | 42 +++++++++++
 java/res/xml/rows_armenian_phonetic.xml       |  2 +
 java/res/xml/rows_nepali_traditional.xml      |  2 +
 java/res/xml/rows_symbols.xml                 |  7 +-
 java/res/xml/rows_symbols_shift.xml           | 56 ++++++++++++++
 .../keyboard/internal/KeyboardState.java      |  2 +-
 .../keyboard/internal/KeyboardTextsSet.java   |  6 +-
 .../values-iw/donottranslate-more-keys.xml    |  5 +-
 .../res/values/donottranslate-more-keys.xml   |  3 +-
 54 files changed, 1112 insertions(+), 74 deletions(-)
 create mode 100644 java/res/xml-sw600dp/kbd_10_10_7_symbols.xml
 create mode 100644 java/res/xml-sw600dp/kbd_10_10_7_symbols_shift.xml
 create mode 100644 java/res/xml-sw600dp/row_symbols_shift4.xml
 create mode 100644 java/res/xml-sw600dp/rowkeys_symbols2.xml
 create mode 100644 java/res/xml-sw600dp/rowkeys_symbols3.xml
 create mode 100644 java/res/xml-sw600dp/rowkeys_symbols_shift1.xml
 create mode 100644 java/res/xml-sw600dp/rowkeys_symbols_shift2.xml
 create mode 100644 java/res/xml-sw600dp/rowkeys_symbols_shift3.xml
 create mode 100644 java/res/xml-sw600dp/rows_10_10_7_symbols.xml
 create mode 100644 java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml
 create mode 100644 java/res/xml-sw600dp/rows_symbols_shift.xml
 create mode 100644 java/res/xml/kbd_10_10_7_symbols_shift.xml
 create mode 100644 java/res/xml/kbd_symbols_shift.xml
 create mode 100644 java/res/xml/kbd_thai_symbols_shift.xml
 rename java/res/xml/{key_currency.xml => key_styles_currency.xml} (72%)
 rename java/res/xml/{key_dollar.xml => key_styles_currency_dollar.xml} (64%)
 rename java/res/xml/{key_euro.xml => key_styles_currency_euro.xml} (64%)
 create mode 100644 java/res/xml/keys_parentheses.xml
 create mode 100644 java/res/xml/row_symbols_shift4.xml
 create mode 100644 java/res/xml/rowkeys_symbols_shift1.xml
 create mode 100644 java/res/xml/rowkeys_symbols_shift2.xml
 create mode 100644 java/res/xml/rowkeys_symbols_shift3.xml
 create mode 100644 java/res/xml/rows_symbols_shift.xml

diff --git a/java/res/xml-sw600dp/kbd_10_10_7_symbols.xml b/java/res/xml-sw600dp/kbd_10_10_7_symbols.xml
new file mode 100644
index 0000000000..dd545b5ef8
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_10_10_7_symbols.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_10_10_7_symbols" />
+</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_10_10_7_symbols_shift.xml b/java/res/xml-sw600dp/kbd_10_10_7_symbols_shift.xml
new file mode 100644
index 0000000000..c36f0097e9
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_10_10_7_symbols_shift.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_10_10_7_symbols_shift" />
+</Keyboard>
diff --git a/java/res/xml-sw600dp/row_symbols4.xml b/java/res/xml-sw600dp/row_symbols4.xml
index 26ce1ebf47..f138d8ef49 100644
--- a/java/res/xml-sw600dp/row_symbols4.xml
+++ b/java/res/xml-sw600dp/row_symbols4.xml
@@ -28,13 +28,21 @@
         <Key
             latin:keyStyle="toAlphaKeyStyle"
             latin:keyWidth="10.0%p" />
+        <Key
+            latin:keyLabel="/" />
+        <include
+            latin:keyboardLayout="@xml/key_f1" />
         <include
             latin:keyXPos="28.0%p"
             latin:keyboardLayout="@xml/key_space"
             latin:backgroundType="normal" />
-        <Spacer />
-        <Spacer />
-        <include
-            latin:keyboardLayout="@xml/key_f2" />
+        <Key
+            latin:keyLabel="&quot;"
+            latin:moreKeys="!text/more_keys_for_tablet_double_quote" />
+        <Key
+            latin:keyLabel="_" />
+        <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+        <Spacer
+            latin:keyWidth="fillRight" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/row_symbols_shift4.xml b/java/res/xml-sw600dp/row_symbols_shift4.xml
new file mode 100644
index 0000000000..29befa92a5
--- /dev/null
+++ b/java/res/xml-sw600dp/row_symbols_shift4.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Row
+        latin:keyWidth="9.0%p"
+        latin:backgroundType="functional"
+    >
+        <Key
+            latin:keyStyle="toAlphaKeyStyle"
+            latin:keyWidth="10.0%p" />
+        <!-- Here is empty space. -->
+        <include
+            latin:keyXPos="28.0%p"
+            latin:keyboardLayout="@xml/key_space"
+            latin:backgroundType="normal" />
+        <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
+        <Spacer
+            latin:keyWidth="fillRight" />
+    </Row>
+</merge>
diff --git a/java/res/xml-sw600dp/rowkeys_symbols2.xml b/java/res/xml-sw600dp/rowkeys_symbols2.xml
new file mode 100644
index 0000000000..14abb42f97
--- /dev/null
+++ b/java/res/xml-sw600dp/rowkeys_symbols2.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:languageCode="fa"
+        >
+            <!-- U+066C: "Ù¬" ARABIC THOUSANDS SEPARATOR -->
+            <Key
+                latin:keyLabel="&#x066C;"
+                latin:keyHintLabel="&amp;"
+                latin:keyLabelFlags="hasPopupHint|hasShiftedLetterHint"
+                latin:moreKeys="&amp;" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel="\#" />
+        </default>
+    </switch>
+    <Key
+        latin:keyStyle="currencyKeyStyle" />
+    <Key
+        latin:keyLabel="!text/keylabel_for_symbols_percent"
+        latin:moreKeys="!text/more_keys_for_symbols_percent" />
+    <switch>
+        <case
+            latin:languageCode="fa"
+        >
+            <!-- U+066B: "Ù«" ARABIC DECIMAL SEPARATOR -->
+            <Key
+                latin:keyLabel="&#x066B;"
+                latin:keyHintLabel="\#"
+                latin:keyLabelFlags="hasPopupHint|hasShiftedLetterHint"
+                latin:moreKeys="\#" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel="&amp;" />
+        </default>
+    </switch>
+    <Key
+        latin:keyLabel="*"
+        latin:moreKeys="!text/more_keys_for_star" />
+    <!-- U+2013: "–" EN DASH
+         U+2014: "—" EM DASH
+         U+00B7: "·" MIDDLE DOT -->
+    <Key
+        latin:keyLabel="-"
+        latin:moreKeys="_,&#x2013;,&#x2014;,&#x00B7;" />
+    <Key
+        latin:keyLabel="+"
+        latin:moreKeys="!text/more_keys_for_plus" />
+    <include
+        latin:keyboardLayout="@xml/keys_parentheses" />
+</merge>
diff --git a/java/res/xml-sw600dp/rowkeys_symbols3.xml b/java/res/xml-sw600dp/rowkeys_symbols3.xml
new file mode 100644
index 0000000000..30fba3812c
--- /dev/null
+++ b/java/res/xml-sw600dp/rowkeys_symbols3.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/keys_less_greater" />
+    <!-- U+2260: "≠" NOT EQUAL TO
+         U+2248: "≈" ALMOST EQUAL TO -->
+    <Key
+        latin:keyLabel="="
+        latin:moreKeys="&#x2260;,&#x2248;" />
+    <switch>
+        <case
+            latin:mode="url"
+        >
+            <Key
+                latin:keyLabel="\'" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel=":" />
+        </default>
+    </switch>
+    <Key
+        latin:keyLabel="!text/keylabel_for_symbols_semicolon"
+        latin:moreKeys="!text/more_keys_for_symbols_semicolon" />
+    <Key
+        latin:keyLabel="!text/keylabel_for_comma"
+        latin:moreKeys="!text/more_keys_for_comma" />
+    <Key
+        latin:keyLabel="." />
+    <Key
+        latin:keyLabel="!"
+        latin:moreKeys="!text/more_keys_for_symbols_exclamation" />
+    <Key
+        latin:keyLabel="!text/keylabel_for_symbols_question"
+        latin:moreKeys="!text/more_keys_for_symbols_question" />
+</merge>
diff --git a/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml b/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml
new file mode 100644
index 0000000000..3549fdda45
--- /dev/null
+++ b/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Key
+        latin:keyLabel="~" />
+    <Key
+        latin:keyLabel="`" />
+    <Key
+        latin:keyLabel="|" />
+    <!-- U+2022: "•" BULLET -->
+    <Key
+        latin:keyLabel="&#x2022;"
+        latin:moreKeys="!text/more_keys_for_bullet" />
+    <!-- U+221A: "√" SQUARE ROOT -->
+    <Key
+        latin:keyLabel="&#x221A;" />
+    <!-- U+03C0: "Ï€" GREEK SMALL LETTER PI
+         U+03A0: "Π" GREEK CAPITAL LETTER PI -->
+    <Key
+        latin:keyLabel="&#x03C0;"
+        latin:moreKeys="&#x03A0;" />
+    <!-- U+00F7: "÷" DIVISION SIGN -->
+    <Key
+        latin:keyLabel="&#x00F7;" />
+    <!-- U+00D7: "×" MULTIPLICATION SIGN -->
+    <Key
+        latin:keyLabel="&#x00D7;" />
+    <!-- U+00A7: "§" SECTION SIGN
+         U+00B6: "¶" PILCROW SIGN -->
+    <Key
+        latin:keyLabel="&#x00A7;"
+        latin:moreKeys="&#x00B6;" />
+    <!-- U+0394: "Δ" GREEK CAPITAL LETTER DELTA -->
+    <Key
+        latin:keyLabel="&#x0394;" />
+</merge>
diff --git a/java/res/xml-sw600dp/rowkeys_symbols_shift2.xml b/java/res/xml-sw600dp/rowkeys_symbols_shift2.xml
new file mode 100644
index 0000000000..2048b73357
--- /dev/null
+++ b/java/res/xml-sw600dp/rowkeys_symbols_shift2.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Key
+        latin:keyStyle="moreCurrency1KeyStyle" />
+    <Key
+        latin:keyStyle="moreCurrency2KeyStyle" />
+    <Key
+        latin:keyStyle="moreCurrency3KeyStyle" />
+    <Key
+        latin:keyStyle="moreCurrency4KeyStyle" />
+    <!-- U+2191: "↑" UPWARDS ARROW
+         U+2193: "↓" DOWNWARDS ARROW
+         U+2190: "←" LEFTWARDS ARROW
+         U+2192: "→" RIGHTWARDS ARROW -->
+    <Key
+        latin:keyLabel="^"
+        latin:moreKeys="&#x2191;,&#x2193;,&#x2190;,&#x2192;" />
+    <!-- U+00B0: "°" DEGREE SIGN
+         U+2032: "′" PRIME
+         U+2033: "″" DOUBLE PRIME -->
+    <Key
+        latin:keyLabel="&#x00B0;"
+        latin:moreKeys="&#x2032;,&#x2033;" />
+    <!-- U+00B1: "±" PLUS-MINUS SIGN
+         U+221E: "∞" INFINITY -->
+    <Key
+        latin:keyLabel="&#x00B1;"
+        latin:moreKeys="&#x221E;" />
+    <include
+        latin:keyboardLayout="@xml/keys_curly_brackets" />
+</merge>
diff --git a/java/res/xml-sw600dp/rowkeys_symbols_shift3.xml b/java/res/xml-sw600dp/rowkeys_symbols_shift3.xml
new file mode 100644
index 0000000000..8bd8656391
--- /dev/null
+++ b/java/res/xml-sw600dp/rowkeys_symbols_shift3.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Key
+        latin:keyLabel="\\" />
+    <!-- U+00A9: "©" COPYRIGHT SIGN -->
+    <Key
+        latin:keyLabel="&#x00A9;" />
+    <!-- U+00AE: "®" REGISTERED SIGN -->
+    <Key
+        latin:keyLabel="&#x00AE;" />
+    <!-- U+2122: "â„¢" TRADE MARK SIGN -->
+    <Key
+        latin:keyLabel="&#x2122;" />
+    <!-- U+2105: "â„…" CARE OF -->
+    <Key
+        latin:keyLabel="&#x2105;" />
+    <include
+        latin:keyboardLayout="@xml/keys_square_brackets" />
+    <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
+    <Key
+        latin:keyLabel="&#x00A1;" />
+    <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
+    <Key
+        latin:keyLabel="&#x00BF;" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_10_10_7_symbols.xml b/java/res/xml-sw600dp/rows_10_10_7_symbols.xml
new file mode 100644
index 0000000000..0e4710c375
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_10_10_7_symbols.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/key_styles_common" />
+    <include
+        latin:keyboardLayout="@xml/key_styles_currency" />
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <Key
+            latin:keyStyle="toMoreSymbolKeyStyle"
+            latin:keyWidth="10.0%p" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols3" />
+        <Key
+            latin:keyStyle="toMoreSymbolKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/row_symbols4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml b/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml
new file mode 100644
index 0000000000..3d3b59f229
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/key_styles_common" />
+    <include
+        latin:keyboardLayout="@xml/key_styles_currency" />
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols_shift1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols_shift2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <Key
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
+            latin:keyWidth="10.0%p" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols_shift3" />
+        <Key
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/row_symbols_shift4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_symbols.xml b/java/res/xml-sw600dp/rows_symbols.xml
index dee79e64fb..3d0593dab4 100644
--- a/java/res/xml-sw600dp/rows_symbols.xml
+++ b/java/res/xml-sw600dp/rows_symbols.xml
@@ -23,6 +23,8 @@
 >
     <include
         latin:keyboardLayout="@xml/key_styles_common" />
+    <include
+        latin:keyboardLayout="@xml/key_styles_currency" />
     <Row
         latin:keyWidth="9.0%p"
     >
@@ -36,22 +38,23 @@
         latin:keyWidth="9.0%p"
     >
         <include
-            latin:keyboardLayout="@xml/rowkeys_symbols2" />
+            latin:keyboardLayout="@xml/rowkeys_symbols2"
+            latin:keyXPos="4.5%p" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
-    <Row
+        <Row
         latin:keyWidth="9.0%p"
     >
+        <Key
+            latin:keyStyle="toMoreSymbolKeyStyle"
+            latin:keyWidth="10.0%p" />
         <include
-            latin:keyXPos="1.0%p"
             latin:keyboardLayout="@xml/rowkeys_symbols3" />
         <Key
-            latin:keyLabel="," />
-        <include
-            latin:keyboardLayout="@xml/key_symbols_period"
-            latin:backgroundType="normal" />
+            latin:keyStyle="toMoreSymbolKeyStyle"
+            latin:keyWidth="fillRight" />
     </Row>
     <include
         latin:keyboardLayout="@xml/row_symbols4" />
diff --git a/java/res/xml-sw600dp/rows_symbols_shift.xml b/java/res/xml-sw600dp/rows_symbols_shift.xml
new file mode 100644
index 0000000000..0050c0c154
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_symbols_shift.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/key_styles_common" />
+    <include
+        latin:keyboardLayout="@xml/key_styles_currency" />
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols_shift1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols_shift2"
+            latin:keyXPos="4.5%p" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="9.0%p"
+    >
+        <Key
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
+            latin:keyWidth="10.0%p" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols_shift3" />
+        <Key
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/row_symbols_shift4" />
+</merge>
diff --git a/java/res/xml/kbd_10_10_7_symbols_shift.xml b/java/res/xml/kbd_10_10_7_symbols_shift.xml
new file mode 100644
index 0000000000..a2d67caf40
--- /dev/null
+++ b/java/res/xml/kbd_10_10_7_symbols_shift.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_symbols_shift" />
+</Keyboard>
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
new file mode 100644
index 0000000000..932ec017eb
--- /dev/null
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2008, 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:touchPositionCorrectionData="@array/touch_position_correction_data_default"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_symbols_shift" />
+</Keyboard>
diff --git a/java/res/xml/kbd_thai_symbols_shift.xml b/java/res/xml/kbd_thai_symbols_shift.xml
new file mode 100644
index 0000000000..a2d67caf40
--- /dev/null
+++ b/java/res/xml/kbd_thai_symbols_shift.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_symbols_shift" />
+</Keyboard>
diff --git a/java/res/xml/key_currency.xml b/java/res/xml/key_styles_currency.xml
similarity index 72%
rename from java/res/xml/key_currency.xml
rename to java/res/xml/key_styles_currency.xml
index 2e4f828cea..60333eeb4c 100644
--- a/java/res/xml/key_currency.xml
+++ b/java/res/xml/key_styles_currency.xml
@@ -2,7 +2,7 @@
 <!--
 /*
 **
-** Copyright 2013, The Android Open Source Project
+** 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.
@@ -18,7 +18,6 @@
 */
 -->
 
-<!-- TODO: Move these definitions to text resources and remove key_currency.xml. -->
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
@@ -27,7 +26,7 @@
             latin:passwordInput="true"
         >
             <include
-                latin:keyboardLayout="@xml/key_dollar" />
+                latin:keyboardLayout="@xml/key_styles_currency_dollar" />
         </case>
         <!-- Countries using Euro currency, 23 countries as of November 2012.
               1. Andorra (ca_AD, ca_ES)
@@ -57,7 +56,7 @@
             latin:countryCode="AD|AT|BE|CY|EE|FI|FR|DE|GR|IE|IT|XK|LU|MT|MO|ME|NL|PT|SM|SK|SI|ES|VA"
         >
             <include
-                latin:keyboardLayout="@xml/key_euro" />
+                latin:keyboardLayout="@xml/key_styles_currency_euro" />
         </case>
         <!-- Note: Some subtype locale may not have country code, and it it supposed to indicate the
              country where the language originally/mainly spoken. -->
@@ -81,7 +80,7 @@
             latin:localeCode="da|de|es|el|fi|fr|it|nl|sk|sl|sv|tr"
         >
             <include
-                latin:keyboardLayout="@xml/key_euro" />
+                latin:keyboardLayout="@xml/key_styles_currency_euro" />
         </case>
         <!-- ca: Catalan (Andorra, Spain)
              et: Estonian (Estonia)
@@ -91,7 +90,7 @@
             latin:languageCode="ca|et|lb|mt"
         >
             <include
-                latin:keyboardLayout="@xml/key_euro" />
+                latin:keyboardLayout="@xml/key_styles_currency_euro" />
         </case>
         <!-- fa: Persian (Rial and Afgahni)
              hi: Hindi (Indian Rupee)
@@ -105,9 +104,26 @@
         <case
             latin:languageCode="fa|hi|iw|mn|th|uk|vi"
         >
-            <Key
+            <!-- U+00A3: "£" POUND SIGN
+                 U+20AC: "€" EURO SIGN
+                 U+00A2: "¢" CENT SIGN -->
+            <key-style
+                latin:styleName="currencyKeyStyle"
                 latin:keyLabel="!text/keylabel_for_currency"
                 latin:moreKeys="!text/more_keys_for_currency" />
+            <key-style
+                latin:styleName="moreCurrency1KeyStyle"
+                latin:keyLabel="&#x00A3;" />
+            <key-style
+                latin:styleName="moreCurrency2KeyStyle"
+                latin:keyLabel="&#x20AC;" />
+            <key-style
+                latin:styleName="moreCurrency3KeyStyle"
+                latin:keyLabel="$"
+                latin:moreKeys="&#x00A2;" />
+            <key-style
+                latin:styleName="moreCurrency4KeyStyle"
+                latin:keyLabel="&#x00A2;" />
         </case>
         <!-- GB: United Kingdom (Pound) -->
         <case
@@ -118,14 +134,28 @@
                  U+00A5: "Â¥" YEN SIGN
                  U+00A2: "¢" CENT SIGN
                  U+20B1: "₱" PESO SIGN -->
-            <Key
+            <key-style
+                latin:styleName="currencyKeyStyle"
                 latin:keyLabel="&#x00A3;"
                 latin:moreKeys="&#x00A2;,$,&#x20AC;,&#x00A5;,&#x20B1;" />
+            <key-style
+                latin:styleName="moreCurrency1KeyStyle"
+                latin:keyLabel="&#x20AC;" />
+            <key-style
+                latin:styleName="moreCurrency2KeyStyle"
+                latin:keyLabel="&#x00A5;" />
+            <key-style
+                latin:styleName="moreCurrency3KeyStyle"
+                latin:keyLabel="$"
+                latin:moreKeys="&#x00A2;" />
+            <key-style
+                latin:styleName="moreCurrency4KeyStyle"
+                latin:keyLabel="&#x00A2;" />
         </case>
         <!-- ar: Arabic (Dollar and Rial) -->
         <default>
             <include
-                latin:keyboardLayout="@xml/key_dollar" />
+                latin:keyboardLayout="@xml/key_styles_currency_dollar" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/key_dollar.xml b/java/res/xml/key_styles_currency_dollar.xml
similarity index 64%
rename from java/res/xml/key_dollar.xml
rename to java/res/xml/key_styles_currency_dollar.xml
index 118c7a2914..674a3966da 100644
--- a/java/res/xml/key_dollar.xml
+++ b/java/res/xml/key_styles_currency_dollar.xml
@@ -2,7 +2,7 @@
 <!--
 /*
 **
-** Copyright 2013, The Android Open Source Project
+** 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.
@@ -23,7 +23,20 @@
          U+00A2: "¢" CENT SIGN
          U+20AC: "€" EURO SIGN
          U+00A5: "Â¥" YEN SIGN -->
-    <Key
+    <key-style
+        latin:styleName="currencyKeyStyle"
         latin:keyLabel="$"
         latin:moreKeys="!text/more_keys_for_currency_dollar" />
+    <key-style
+        latin:styleName="moreCurrency1KeyStyle"
+        latin:keyLabel="&#x00A3;" />
+    <key-style
+        latin:styleName="moreCurrency2KeyStyle"
+        latin:keyLabel="&#x00A2;" />
+    <key-style
+        latin:styleName="moreCurrency3KeyStyle"
+        latin:keyLabel="&#x20AC;" />
+    <key-style
+        latin:styleName="moreCurrency4KeyStyle"
+        latin:keyLabel="&#x00A5;" />
 </merge>
diff --git a/java/res/xml/key_euro.xml b/java/res/xml/key_styles_currency_euro.xml
similarity index 64%
rename from java/res/xml/key_euro.xml
rename to java/res/xml/key_styles_currency_euro.xml
index 820ced97c4..c1b5e0384f 100644
--- a/java/res/xml/key_euro.xml
+++ b/java/res/xml/key_styles_currency_euro.xml
@@ -2,7 +2,7 @@
 <!--
 /*
 **
-** Copyright 2013, The Android Open Source Project
+** 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.
@@ -24,7 +24,21 @@
          U+00A3: "£" POUND SIGN
          U+00A5: "Â¥" YEN SIGN
          U+20B1: "₱" PESO SIGN -->
-    <Key
+    <key-style
+        latin:styleName="currencyKeyStyle"
         latin:keyLabel="&#x20AC;"
         latin:moreKeys="&#x00A2;,&#x00A3;,$,&#x00A5;,&#x20B1;" />
+    <key-style
+        latin:styleName="moreCurrency1KeyStyle"
+        latin:keyLabel="&#x00A3;" />
+    <key-style
+        latin:styleName="moreCurrency2KeyStyle"
+        latin:keyLabel="&#x00A5;" />
+    <key-style
+        latin:styleName="moreCurrency3KeyStyle"
+        latin:keyLabel="$"
+        latin:moreKeys="&#x00A2;" />
+    <key-style
+        latin:styleName="moreCurrency4KeyStyle"
+        latin:keyLabel="&#x00A2;" />
 </merge>
diff --git a/java/res/xml/keyboard_layout_set_arabic.xml b/java/res/xml/keyboard_layout_set_arabic.xml
index 9eb11dc5e9..10e95bd30d 100644
--- a/java/res/xml/keyboard_layout_set_arabic.xml
+++ b/java/res/xml/keyboard_layout_set_arabic.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_azerty.xml b/java/res/xml/keyboard_layout_set_azerty.xml
index 03d8ce72be..4d144edbc0 100644
--- a/java/res/xml/keyboard_layout_set_azerty.xml
+++ b/java/res/xml/keyboard_layout_set_azerty.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_10_10_7_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_10_10_7_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_bulgarian.xml b/java/res/xml/keyboard_layout_set_bulgarian.xml
index 0b92af8e41..c6fdff9a23 100644
--- a/java/res/xml/keyboard_layout_set_bulgarian.xml
+++ b/java/res/xml/keyboard_layout_set_bulgarian.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_bulgarian_bds.xml b/java/res/xml/keyboard_layout_set_bulgarian_bds.xml
index d185a85b44..a36b3bd524 100644
--- a/java/res/xml/keyboard_layout_set_bulgarian_bds.xml
+++ b/java/res/xml/keyboard_layout_set_bulgarian_bds.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_colemak.xml b/java/res/xml/keyboard_layout_set_colemak.xml
index fd4254291b..c18f13225f 100644
--- a/java/res/xml/keyboard_layout_set_colemak.xml
+++ b/java/res/xml/keyboard_layout_set_colemak.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_10_10_7_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_10_10_7_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_dvorak.xml b/java/res/xml/keyboard_layout_set_dvorak.xml
index 851a271173..eb8e0c5399 100644
--- a/java/res/xml/keyboard_layout_set_dvorak.xml
+++ b/java/res/xml/keyboard_layout_set_dvorak.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_10_10_7_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_10_10_7_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_east_slavic.xml b/java/res/xml/keyboard_layout_set_east_slavic.xml
index 9dc2846686..8d66faf8f6 100644
--- a/java/res/xml/keyboard_layout_set_east_slavic.xml
+++ b/java/res/xml/keyboard_layout_set_east_slavic.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_farsi.xml b/java/res/xml/keyboard_layout_set_farsi.xml
index ef29e1ae8a..b9a91e3a89 100644
--- a/java/res/xml/keyboard_layout_set_farsi.xml
+++ b/java/res/xml/keyboard_layout_set_farsi.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_georgian.xml b/java/res/xml/keyboard_layout_set_georgian.xml
index 181c997137..36d0916530 100644
--- a/java/res/xml/keyboard_layout_set_georgian.xml
+++ b/java/res/xml/keyboard_layout_set_georgian.xml
@@ -43,6 +43,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_greek.xml b/java/res/xml/keyboard_layout_set_greek.xml
index 2e4a28692f..b376e4fe3a 100644
--- a/java/res/xml/keyboard_layout_set_greek.xml
+++ b/java/res/xml/keyboard_layout_set_greek.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_hebrew.xml b/java/res/xml/keyboard_layout_set_hebrew.xml
index c8ac31c7eb..212816dfe8 100644
--- a/java/res/xml/keyboard_layout_set_hebrew.xml
+++ b/java/res/xml/keyboard_layout_set_hebrew.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_10_10_7_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_10_10_7_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_hindi.xml b/java/res/xml/keyboard_layout_set_hindi.xml
index 1bd3d72fbf..e850c7ebca 100644
--- a/java/res/xml/keyboard_layout_set_hindi.xml
+++ b/java/res/xml/keyboard_layout_set_hindi.xml
@@ -43,6 +43,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_mongolian.xml b/java/res/xml/keyboard_layout_set_mongolian.xml
index bbf3c09459..2d364f6821 100644
--- a/java/res/xml/keyboard_layout_set_mongolian.xml
+++ b/java/res/xml/keyboard_layout_set_mongolian.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_nordic.xml b/java/res/xml/keyboard_layout_set_nordic.xml
index ce6fc635ba..1f00f440e1 100644
--- a/java/res/xml/keyboard_layout_set_nordic.xml
+++ b/java/res/xml/keyboard_layout_set_nordic.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_qwerty.xml b/java/res/xml/keyboard_layout_set_qwerty.xml
index 98b3582d4e..8215170813 100644
--- a/java/res/xml/keyboard_layout_set_qwerty.xml
+++ b/java/res/xml/keyboard_layout_set_qwerty.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_qwertz.xml b/java/res/xml/keyboard_layout_set_qwertz.xml
index 789dcfa627..f9e87a66fc 100644
--- a/java/res/xml/keyboard_layout_set_qwertz.xml
+++ b/java/res/xml/keyboard_layout_set_qwertz.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_south_slavic.xml b/java/res/xml/keyboard_layout_set_south_slavic.xml
index eaeaa1c4b8..36666b91b0 100644
--- a/java/res/xml/keyboard_layout_set_south_slavic.xml
+++ b/java/res/xml/keyboard_layout_set_south_slavic.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_spanish.xml b/java/res/xml/keyboard_layout_set_spanish.xml
index 500e23a104..57cef52342 100644
--- a/java/res/xml/keyboard_layout_set_spanish.xml
+++ b/java/res/xml/keyboard_layout_set_spanish.xml
@@ -27,6 +27,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_10_10_7_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_10_10_7_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keyboard_layout_set_thai.xml b/java/res/xml/keyboard_layout_set_thai.xml
index 146b413d28..94713e3d4e 100644
--- a/java/res/xml/keyboard_layout_set_thai.xml
+++ b/java/res/xml/keyboard_layout_set_thai.xml
@@ -43,6 +43,9 @@
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_thai_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_thai_symbols_shift" />
     <Element
         latin:elementName="phone"
         latin:elementKeyboard="@xml/kbd_phone" />
diff --git a/java/res/xml/keys_parentheses.xml b/java/res/xml/keys_parentheses.xml
new file mode 100644
index 0000000000..25e89c9307
--- /dev/null
+++ b/java/res/xml/keys_parentheses.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Key
+        latin:keyLabel="("
+        latin:code="!code/key_left_parenthesis"
+        latin:moreKeys="!text/more_keys_for_left_parenthesis" />
+    <Key
+        latin:keyLabel=")"
+        latin:code="!code/key_right_parenthesis"
+        latin:moreKeys="!text/more_keys_for_right_parenthesis" />
+</merge>
diff --git a/java/res/xml/row_symbols4.xml b/java/res/xml/row_symbols4.xml
index bea139aba6..96e550cd2f 100644
--- a/java/res/xml/row_symbols4.xml
+++ b/java/res/xml/row_symbols4.xml
@@ -46,9 +46,8 @@
         <include
             latin:keyXPos="25%p"
             latin:keyboardLayout="@xml/key_space" />
-        <include
-            latin:keyboardLayout="@xml/key_symbols_period"
-            latin:backgroundType="functional" />
+        <Key
+            latin:keyStyle="punctuationKeyStyle" />
         <Key
             latin:keyStyle="emojiKeyStyle"
             latin:keyWidth="fillRight" />
diff --git a/java/res/xml/row_symbols_shift4.xml b/java/res/xml/row_symbols_shift4.xml
new file mode 100644
index 0000000000..99a685c452
--- /dev/null
+++ b/java/res/xml/row_symbols_shift4.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Row
+        latin:keyWidth="10%p"
+    >
+        <Key
+            latin:keyStyle="toAlphaKeyStyle"
+            latin:keyWidth="15%p" />
+        <!-- U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+             U+201E: "„" DOUBLE LOW-9 QUOTATION MARK -->
+        <Key
+            latin:keyLabel="&#x201E;"
+            latin:moreKeys="&#x201A;"
+            latin:backgroundType="functional" />
+        <include
+            latin:keyXPos="25%p"
+            latin:keyboardLayout="@xml/key_space" />
+        <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
+        <Key
+            latin:keyLabel="&#x2026;"
+            latin:backgroundType="functional" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+</merge>
diff --git a/java/res/xml/rowkeys_symbols2.xml b/java/res/xml/rowkeys_symbols2.xml
index 9d629f1c80..3e27f1579e 100644
--- a/java/res/xml/rowkeys_symbols2.xml
+++ b/java/res/xml/rowkeys_symbols2.xml
@@ -43,12 +43,8 @@
                 latin:keyLabel="\#" />
         </default>
     </switch>
-    <!-- TODO: Remove key_currency.xml and uncomment the following definition. -->
-<!--     <Key -->
-<!--         latin:keyLabel="!text/keylabel_for_currency" -->
-<!--         latin:moreKeys="!text/more_keys_for_currency" /> -->
-    <include
-        latin:keyboardLayout="@xml/key_currency" />
+    <Key
+        latin:keyStyle="currencyKeyStyle" />
     <Key
         latin:keyLabel="!text/keylabel_for_symbols_percent"
         latin:moreKeys="!text/more_keys_for_symbols_percent" />
@@ -57,27 +53,15 @@
     <Key
         latin:keyLabel="*"
         latin:moreKeys="!text/more_keys_for_star" />
-    <!-- U+00B1: "±" PLUS-MINUS SIGN
-         U+00D7: "×" MULTIPLICATION SIGN
-         U+00F7: "÷" DIVISION SIGN
-         U+221A: "√" SQUARE ROOT -->
-     <Key
-        latin:keyLabel="+"
-        latin:moreKeys="!text/more_keys_for_plus,&#x00B1;,&#x00D7;,&#x00F7;,&#x221A;" />
-    <!-- U+221E: "∞" INFINITY
-         U+2264: "≤" LESS-THAN OR EQUAL TO
-         U+2265: "≥" GREATER-THAN EQUAL TO
-         U+2260: "≠" NOT EQUAL TO
-         U+2248: "≈" ALMOST EQUAL TO -->
+    <!-- U+2013: "–" EN DASH
+         U+2014: "—" EM DASH
+         U+00B7: "·" MIDDLE DOT -->
     <Key
-        latin:keyLabel="="
-        latin:moreKeys="!fixedColumnOrder!5,&#x221E;,&#x2264;,&#x2265;,&#x2260;,&#x2248;" />
+        latin:keyLabel="-"
+        latin:moreKeys="_,&#x2013;,&#x2014;,&#x00B7;" />
     <Key
-        latin:keyLabel="("
-        latin:code="!code/key_left_parenthesis"
-        latin:moreKeys="!text/more_keys_for_left_parenthesis" />
-    <Key
-        latin:keyLabel=")"
-        latin:code="!code/key_right_parenthesis"
-        latin:moreKeys="!text/more_keys_for_right_parenthesis" />
+        latin:keyLabel="+"
+        latin:moreKeys="!text/more_keys_for_plus" />
+    <include
+        latin:keyboardLayout="@xml/keys_parentheses" />
 </merge>
diff --git a/java/res/xml/rowkeys_symbols3.xml b/java/res/xml/rowkeys_symbols3.xml
index 9e9dfd8bd6..7722ca9aec 100644
--- a/java/res/xml/rowkeys_symbols3.xml
+++ b/java/res/xml/rowkeys_symbols3.xml
@@ -24,9 +24,6 @@
     <Key
         latin:keyLabel="!"
         latin:moreKeys="!text/more_keys_for_symbols_exclamation" />
-    <Key
-        latin:keyLabel="!text/keylabel_for_symbols_question"
-        latin:moreKeys="!text/more_keys_for_symbols_question" />
     <switch>
         <case
             latin:languageCode="fa"
@@ -36,11 +33,11 @@
             <Key
                 latin:keyLabel="&#x00AB;"
                 latin:code="0x00BB"
-                latin:moreKeys="!fixedColumnOrder!6,!text/more_keys_for_double_quote,&quot;" />
+                latin:moreKeys="!text/more_keys_for_double_quote" />
             <Key
                 latin:keyLabel="&#x00BB;"
                 latin:code="0x00AB"
-                latin:moreKeys="!fixedColumnOrder!6,!text/more_keys_for_single_quote,\'" />
+                latin:moreKeys="!text/more_keys_for_single_quote" />
         </case>
         <default>
             <Key
@@ -51,18 +48,14 @@
                 latin:moreKeys="!text/more_keys_for_single_quote" />
         </default>
     </switch>
-    <!-- U+2013: "–" EN DASH
-         U+2014: "—" EM DASH
-         U+00B7: "·" MIDDLE DOT -->
-    <Key
-        latin:keyLabel="-"
-        latin:moreKeys="_,~,&#x2013;,&#x2014;,&#x00B7;" />
     <Key
         latin:keyLabel=":" />
     <Key
         latin:keyLabel="!text/keylabel_for_symbols_semicolon"
         latin:moreKeys="!text/more_keys_for_symbols_semicolon" />
     <Key
-        latin:keyLabel="/"
-        latin:moreKeys="\\|,\\\\,^" />
+        latin:keyLabel="/" />
+    <Key
+        latin:keyLabel="!text/keylabel_for_symbols_question"
+        latin:moreKeys="!text/more_keys_for_symbols_question" />
 </merge>
diff --git a/java/res/xml/rowkeys_symbols_shift1.xml b/java/res/xml/rowkeys_symbols_shift1.xml
new file mode 100644
index 0000000000..fea8ae3379
--- /dev/null
+++ b/java/res/xml/rowkeys_symbols_shift1.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Key
+        latin:keyLabel="~" />
+    <Key
+        latin:keyLabel="`" />
+    <Key
+        latin:keyLabel="|" />
+    <!-- U+2022: "•" BULLET -->
+    <Key
+        latin:keyLabel="&#x2022;"
+        latin:moreKeys="!text/more_keys_for_bullet" />
+    <!-- U+221A: "√" SQUARE ROOT -->
+    <Key
+        latin:keyLabel="&#x221A;" />
+    <!-- U+03C0: "Ï€" GREEK SMALL LETTER PI
+         U+03A0: "Π" GREEK CAPITAL LETTER PI  -->
+    <Key
+        latin:keyLabel="&#x03C0;"
+        latin:moreKeys="&#x03A0;" />
+    <!-- U+00F7: "÷" DIVISION SIGN -->
+    <Key
+        latin:keyLabel="&#x00F7;" />
+    <!-- U+00D7: "×" MULTIPLICATION SIGN -->
+    <Key
+        latin:keyLabel="&#x00D7;" />
+    <include
+        latin:keyboardLayout="@xml/keys_curly_brackets" />
+</merge>
diff --git a/java/res/xml/rowkeys_symbols_shift2.xml b/java/res/xml/rowkeys_symbols_shift2.xml
new file mode 100644
index 0000000000..3fd8aacb63
--- /dev/null
+++ b/java/res/xml/rowkeys_symbols_shift2.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Key
+        latin:keyStyle="nonSpecialBackgroundTabKeyStyle" />
+    <Key
+        latin:keyStyle="moreCurrency1KeyStyle" />
+    <Key
+        latin:keyStyle="moreCurrency2KeyStyle" />
+    <Key
+        latin:keyStyle="moreCurrency3KeyStyle" />
+    <!-- U+00B0: "°" DEGREE SIGN
+         U+2032: "′" PRIME
+         U+2033: "″" DOUBLE PRIME -->
+    <Key
+        latin:keyLabel="&#x00B0;"
+        latin:moreKeys="&#x2032;,&#x2033;" />
+    <!-- U+2191: "↑" UPWARDS ARROW
+         U+2193: "↓" DOWNWARDS ARROW
+         U+2190: "←" LEFTWARDS ARROW
+         U+2192: "→" RIGHTWARDS ARROW -->
+    <Key
+        latin:keyLabel="^"
+        latin:moreKeys="&#x2191;,&#x2193;,&#x2190;,&#x2192;" />
+    <Key
+        latin:keyLabel="_" />
+    <!-- U+2260: "≠" NOT EQUAL TO
+         U+2248: "≈" ALMOST EQUAL TO
+         U+221E: "∞" INFINITY -->
+    <Key
+        latin:keyLabel="="
+        latin:moreKeys="&#x2260;,&#x2248;,&#x221E;" />
+    <include
+        latin:keyboardLayout="@xml/keys_square_brackets" />
+</merge>
diff --git a/java/res/xml/rowkeys_symbols_shift3.xml b/java/res/xml/rowkeys_symbols_shift3.xml
new file mode 100644
index 0000000000..a35af218fe
--- /dev/null
+++ b/java/res/xml/rowkeys_symbols_shift3.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <!-- U+2122: "â„¢" TRADE MARK SIGN -->
+    <Key
+        latin:keyLabel="&#x2122;" />
+    <!-- U+00AE: "®" REGISTERED SIGN -->
+    <Key
+        latin:keyLabel="&#x00AE;" />
+    <!-- U+00A9: "©" COPYRIGHT SIGN -->
+    <Key
+        latin:keyLabel="&#x00A9;" />
+    <!-- U+00B6: "¶" PILCROW SIGN
+         U+00A7: "§" SECTION SIGN -->
+    <Key
+        latin:keyLabel="&#x00B6;"
+        latin:moreKeys="&#x00A7;" />
+    <Key
+        latin:keyLabel="\\" />
+    <include
+        latin:keyboardLayout="@xml/keys_less_greater" />
+</merge>
diff --git a/java/res/xml/rows_armenian_phonetic.xml b/java/res/xml/rows_armenian_phonetic.xml
index 282dd411bc..ea8870e1ae 100644
--- a/java/res/xml/rows_armenian_phonetic.xml
+++ b/java/res/xml/rows_armenian_phonetic.xml
@@ -23,6 +23,8 @@
 >
     <include
         latin:keyboardLayout="@xml/key_styles_common" />
+    <include
+        latin:keyboardLayout="@xml/key_styles_currency" />
     <Row
         latin:keyWidth="10.0%p"
     >
diff --git a/java/res/xml/rows_nepali_traditional.xml b/java/res/xml/rows_nepali_traditional.xml
index fecdc7d5b0..7789135ae7 100644
--- a/java/res/xml/rows_nepali_traditional.xml
+++ b/java/res/xml/rows_nepali_traditional.xml
@@ -23,6 +23,8 @@
 >
     <include
         latin:keyboardLayout="@xml/key_styles_common" />
+    <include
+        latin:keyboardLayout="@xml/key_styles_currency" />
     <Row
         latin:keyWidth="9.091%p"
     >
diff --git a/java/res/xml/rows_symbols.xml b/java/res/xml/rows_symbols.xml
index 27010cbd6f..bd1a57e75a 100644
--- a/java/res/xml/rows_symbols.xml
+++ b/java/res/xml/rows_symbols.xml
@@ -23,6 +23,8 @@
 >
     <include
         latin:keyboardLayout="@xml/key_styles_common" />
+    <include
+        latin:keyboardLayout="@xml/key_styles_currency" />
     <Row
         latin:keyWidth="10%p"
     >
@@ -38,8 +40,11 @@
     <Row
         latin:keyWidth="10%p"
     >
+        <Key
+            latin:keyStyle="toMoreSymbolKeyStyle"
+            latin:keyWidth="15%p"
+            latin:visualInsetsRight="1%p" />
         <include
-            latin:keyXPos="5%p"
             latin:keyboardLayout="@xml/rowkeys_symbols3" />
         <Key
             latin:keyStyle="deleteKeyStyle"
diff --git a/java/res/xml/rows_symbols_shift.xml b/java/res/xml/rows_symbols_shift.xml
new file mode 100644
index 0000000000..9c03d90b58
--- /dev/null
+++ b/java/res/xml/rows_symbols_shift.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/key_styles_common" />
+    <include
+        latin:keyboardLayout="@xml/key_styles_currency" />
+    <Row
+        latin:keyWidth="10%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols_shift1" />
+    </Row>
+    <Row
+        latin:keyWidth="10%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols_shift2" />
+    </Row>
+    <Row
+        latin:keyWidth="10%p"
+    >
+        <Key
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
+            latin:keyWidth="15%p"
+            latin:visualInsetsRight="1%p" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_symbols_shift3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight"
+            latin:visualInsetsLeft="1%p" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/row_symbols_shift4" />
+</merge>
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
index 710eed9b8b..b3491d8070 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
@@ -45,8 +45,8 @@ public final class KeyboardState {
         public void setAlphabetAutomaticShiftedKeyboard();
         public void setAlphabetShiftLockedKeyboard();
         public void setAlphabetShiftLockShiftedKeyboard();
-        public void setSymbolsKeyboard();
         public void setEmojiKeyboard();
+        public void setSymbolsKeyboard();
         public void setSymbolsShiftedKeyboard();
 
         /**
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index 6d053f5c0e..63da954f32 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -288,7 +288,8 @@ public final class KeyboardTextsSet {
         // U+2666: "♦" BLACK DIAMOND SUIT
         // U+2663: "♣" BLACK CLUB SUIT
         /* 55 */ "\u266A,\u2665,\u2660,\u2666,\u2663",
-        /* 56 */ EMPTY,
+        // U+00B1: "±" PLUS-MINUS SIGN
+        /* 56 */ "\u00B1",
         // The all letters need to be mirrored are found at
         // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
         /* 57 */ "!fixedColumnOrder!3,<,{,[",
@@ -1922,8 +1923,9 @@ public final class KeyboardTextsSet {
         // U+2605: "★" BLACK STAR
         /* 54 */ "\u2605",
         /* 55 */ null,
+        // U+00B1: "±" PLUS-MINUS SIGN
         // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
-        /* 56 */ "\uFB29",
+        /* 56 */ "\u00B1,\uFB29",
         // The all letters need to be mirrored are found at
         // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
         /* 57 */ "!fixedColumnOrder!3,<|>,{|},[|]",
diff --git a/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
index 3067a1d018..feaed4c98f 100644
--- a/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
@@ -25,8 +25,9 @@
     <string name="label_to_alpha_key">&#x05D0;&#x05D1;&#x05D2;</string>
     <!-- U+2605: "★" BLACK STAR -->
     <string name="more_keys_for_star">&#x2605;</string>
-    <!-- U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN -->
-    <string name="more_keys_for_plus">&#xFB29;</string>
+    <!-- U+00B1: "±" PLUS-MINUS SIGN
+         U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN -->
+    <string name="more_keys_for_plus">&#x00B1;,&#xFB29;</string>
     <!-- The all letters need to be mirrored are found at
          http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
     <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,&lt;|&gt;,{|},[|]</string>
diff --git a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
index 3657d02e20..3732505ed4 100644
--- a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
@@ -88,7 +88,8 @@
          U+2666: "♦" BLACK DIAMOND SUIT
          U+2663: "♣" BLACK CLUB SUIT -->
     <string name="more_keys_for_bullet">&#x266A;,&#x2665;,&#x2660;,&#x2666;,&#x2663;</string>
-    <string name="more_keys_for_plus"></string>
+    <!-- U+00B1: "±" PLUS-MINUS SIGN -->
+    <string name="more_keys_for_plus">&#x00B1;</string>
     <!-- The all letters need to be mirrored are found at
          http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
     <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,&lt;,{,[</string>
-- 
GitLab