Support PC QWERTY layout

Bug: 4460018
Change-Id: I9a29f6a322af66f6a152fa1883b3686c5f7a3328
diff --git a/java/res/xml/kbd_pcqwerty.xml b/java/res/xml/kbd_pcqwerty.xml
new file mode 100644
index 0000000..cebca4f
--- /dev/null
+++ b/java/res/xml/kbd_pcqwerty.xml
@@ -0,0 +1,29 @@
+<?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:rowHeight="20%p"
+    latin:verticalGap="3.20%p"
+    latin:touchPositionCorrectionData="@null"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_pcqwerty" />
+</Keyboard>
diff --git a/java/res/xml/kbd_pcqwerty_symbols.xml b/java/res/xml/kbd_pcqwerty_symbols.xml
new file mode 100644
index 0000000..fd64e5b
--- /dev/null
+++ b/java/res/xml/kbd_pcqwerty_symbols.xml
@@ -0,0 +1,29 @@
+<?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:rowHeight="20%p"
+    latin:verticalGap="3.20%p"
+    latin:touchPositionCorrectionData="@null"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_pcqwerty_symbols" />
+</Keyboard>
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index 4341b79..f0e9170 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -147,8 +147,8 @@
         latin:keyIconPreview="!icon/tab_key_preview" />
     <switch>
         <!-- When this qwerty keyboard has no shortcut keys but shortcut key is enabled, then symbol
-             keyboard will have a shortcut key. That means we should use
-             iconToSymbolKeyWithShortcutKey here. -->
+             keyboard will have a shortcut key. That means we should use label_to_symbol_key label
+             and shortcut_for_label icon. -->
         <case
             latin:shortcutKeyEnabled="true"
             latin:hasShortcutKey="false"
diff --git a/java/res/xml/keyboard_layout_set_pcqwerty.xml b/java/res/xml/keyboard_layout_set_pcqwerty.xml
new file mode 100644
index 0000000..9367ed0
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_pcqwerty.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.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_pcqwerty"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_pcqwerty_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_pcqwerty_symbols" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keys_pcqwerty2_right3.xml b/java/res/xml/keys_pcqwerty2_right3.xml
new file mode 100644
index 0000000..2065e6b
--- /dev/null
+++ b/java/res/xml/keys_pcqwerty2_right3.xml
@@ -0,0 +1,51 @@
+<?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:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+        >
+            <Key
+                latin:keyLabel="["
+                latin:moreKeys="{" />
+            <Key
+                latin:keyLabel="]"
+                latin:moreKeys="}" />
+            <!-- U+00A6: "¦" BROKEN BAR -->
+            <Key
+                latin:keyLabel="\\"
+                latin:moreKeys="\\|,&#x00A6;" />
+        </case>
+        <!-- keyboardLayoutSetElement="alphabet*Shifted|symbols*" -->
+        <default>
+            <Key
+                latin:keyLabel="{" />
+            <Key
+                latin:keyLabel="}" />
+            <!-- U+00A6: "¦" BROKEN BAR -->
+            <Key
+                latin:keyLabel="|"
+                latin:moreKeys="&#x00A6;" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/keys_pcqwerty3_right2.xml b/java/res/xml/keys_pcqwerty3_right2.xml
new file mode 100644
index 0000000..fd9d3b8
--- /dev/null
+++ b/java/res/xml/keys_pcqwerty3_right2.xml
@@ -0,0 +1,54 @@
+<?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:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+        >
+            <Key
+                latin:keyLabel=";"
+                latin:moreKeys=":" />
+            <Key
+                latin:keyLabel="\'"
+                latin:moreKeys="&quot;" />
+        </case>
+        <!-- keyboardLayoutSetElement="alphabet*Shifted|symbols*" -->
+        <default>
+            <Key
+                latin:keyLabel=":" />
+            <!-- U+2018: "‘" LEFT SINGLE QUOTATION MARK
+                 U+2019: "’" RIGHT SINGLE QUOTATION MARK
+                 U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+                 U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+                 U+201C: "“" LEFT DOUBLE QUOTATION MARK
+                 U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+                 U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+                 U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
+            <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK.
+                 moreKeys="!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x2018;,&#x2019;,&#x201A;,&#x201B;" -->
+            <Key
+                latin:keyLabel="&quot;"
+                latin:moreKeys="!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x2018;,&#x2019;,&#x201A;,&#x201B;" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/keys_pcqwerty4_right3.xml b/java/res/xml/keys_pcqwerty4_right3.xml
new file mode 100644
index 0000000..7795b3d
--- /dev/null
+++ b/java/res/xml/keys_pcqwerty4_right3.xml
@@ -0,0 +1,59 @@
+<?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:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+        >
+            <Key
+                latin:keyLabel=","
+                latin:moreKeys="&lt;" />
+            <Key
+                latin:keyLabel="."
+                latin:moreKeys="&gt;" />
+            <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
+            <Key
+                latin:keyLabel="/"
+                latin:moreKeys="\?,&#x00BF;" />
+        </case>
+        <!-- keyboardLayoutSetElement="alphabet*Shifted|symbols*" -->
+        <default>
+            <!-- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+                 U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+                 U+2264: "≤" LESS-THAN OR EQUAL TO
+                 U+2265: "≥" GREATER-THAN EQUAL TO
+                 U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                 U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+            <Key
+                latin:keyLabel="&lt;"
+                latin:moreKeys="!fixedColumnOrder!3,&#x2039;,&#x2264;,&#x00AB;" />
+            <Key
+                latin:keyLabel="&gt;"
+                latin:moreKeys="!fixedColumnOrder!3,&#x203A;,&#x2265;,&#x00BB;" />
+            <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
+            <Key
+                latin:keyLabel="\?"
+                latin:moreKeys="&#x00BF;" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/keys_pcqwerty_symbols1.xml b/java/res/xml/keys_pcqwerty_symbols1.xml
new file mode 100644
index 0000000..bf48b1f
--- /dev/null
+++ b/java/res/xml/keys_pcqwerty_symbols1.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"
+>
+    <!-- U+00AC: "¬" NOT SIGN -->
+    <Key
+        latin:keyLabel="~"
+        latin:moreKeys="&#x00AC;" />
+    <!-- U+00A1: "¡" NVERTED EXCLAMATION MARK -->
+    <Key
+        latin:keyLabel="!"
+        latin:moreKeys="&#x00A1;" />
+    <Key
+        latin:keyLabel="\@" />
+    <Key
+        latin:keyLabel="#" />
+    <Key
+        latin:keyLabel="$" />
+    <!-- U+2030: "‰" PER MILLE SIGN -->
+    <Key
+        latin:keyLabel="%"
+        latin:moreKeys="&#x2030;" />
+    <Key
+        latin:keyLabel="^" />
+    <Key
+        latin:keyLabel="&amp;" />
+    <Key
+        latin:keyLabel="*"
+        latin:moreKeys="!text/more_keys_for_star" />
+    <Key
+        latin:keyLabel="(" />
+    <Key
+        latin:keyLabel=")" />
+    <Key
+        latin:keyLabel="_" />
+    <Key
+        latin:keyLabel="+" />
+</merge>
diff --git a/java/res/xml/keys_pcqwerty_symbols2.xml b/java/res/xml/keys_pcqwerty_symbols2.xml
new file mode 100644
index 0000000..d0ea984
--- /dev/null
+++ b/java/res/xml/keys_pcqwerty_symbols2.xml
@@ -0,0 +1,59 @@
+<?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+2022: "•" BULLET -->
+    <Key
+        latin:keyLabel="&#x2022;"
+        latin:moreKeys="!text/more_keys_for_bullet" />
+    <!-- U+00B1: "±" PLUS-MINUS SIGN -->
+    <Key
+        latin:keyLabel="&#x00B1;" />
+    <!-- U+00AC: "¬" NOT SIGN -->
+    <Key
+        latin:keyLabel="&#x00AC;" />
+    <!-- U+00A6: "¦" BROKEN BAR -->
+    <Key
+        latin:keyLabel="&#x00A6;" />
+    <!-- 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+03CC: "σ" GREEK SMALL LETTER SIGMA
+         U+03A3: "Σ" GREEK CAPITAL LETTER SIGMA -->
+    <Key
+        latin:keyLabel="&#x03C3;"
+        latin:moreKeys="&#x03A3;" />
+    <!-- U+00B5: "µ" MICRO SIGN -->
+    <Key
+        latin:keyLabel="&#x00B5;" />
+    <!-- U+00F7: "÷" DIVISION SIGN -->
+    <Key
+        latin:keyLabel="&#x00F7;" />
+    <!-- U+00D7: "×" MULTIPLICATION SIGN -->
+    <Key
+        latin:keyLabel="&#x00D7;" />
+</merge>
diff --git a/java/res/xml/keys_pcqwerty_symbols3.xml b/java/res/xml/keys_pcqwerty_symbols3.xml
new file mode 100644
index 0000000..35279de
--- /dev/null
+++ b/java/res/xml/keys_pcqwerty_symbols3.xml
@@ -0,0 +1,54 @@
+<?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+00A3: "£" POUND SIGN; -->
+    <Key
+        latin:keyLabel="&#x00A3;" />
+    <!-- U+00A2: "¢" CENT SIGN -->
+    <Key
+        latin:keyLabel="&#x00A2;" />
+    <!-- U+20AC: "€" EURO SIGN -->
+    <Key
+        latin:keyLabel="&#x20AC;" />
+    <!-- U+00A5: "¥" YEN SIGN -->
+    <Key
+        latin:keyLabel="&#x00A5;" />
+    <!-- U+00A4: "¤" CURRENCY SIGN -->
+    <Key
+        latin:keyLabel="&#x00A4;" />
+    <!-- U+00B0: "°" DEGREE SIGN
+         U+2032: "′" PRIME
+         U+2033: "″" DOUBLE PRIME -->
+    <Key
+        latin:keyLabel="&#x00B0;"
+        latin:moreKeys="&#x2032;,&#x2033;" />
+    <!-- U+2260: "≠" NOT EQUAL TO -->
+    <Key
+        latin:keyLabel="&#x2260;" />
+    <!-- U+2248: "≈" ALMOST EQUAL TO -->
+    <Key
+        latin:keyLabel="&#x2248;" />
+    <!-- U+221E: "∞" INFINITY -->
+    <Key
+        latin:keyLabel="&#x221E;" />
+</merge>
diff --git a/java/res/xml/keys_pcqwerty_symbols4.xml b/java/res/xml/keys_pcqwerty_symbols4.xml
new file mode 100644
index 0000000..3c628f0
--- /dev/null
+++ b/java/res/xml/keys_pcqwerty_symbols4.xml
@@ -0,0 +1,49 @@
+<?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 -->
+    <Key
+        latin:keyLabel="&#x00B6;" />
+    <!-- U+00A7: "§" SECTION SIGN -->
+    <Key
+        latin:keyLabel="&#x00A7;" />
+    <!-- U+2191: "↑" UPWARDS ARROW
+         U+2193: "↓" DOWNWARDS ARROW
+         U+2190: "←" LEFTWARDS ARROW
+         U+2192: "→" RIGHTWARDS ARROW -->
+    <Key
+        latin:keyLabel="&#x2191;"
+        latin:moreKeys="&#x2193;" />
+    <Key
+        latin:keyLabel="&#x2190;"
+        latin:moreKeys="&#x2192;" />
+</merge>
diff --git a/java/res/xml/row_pcqwerty5.xml b/java/res/xml/row_pcqwerty5.xml
new file mode 100644
index 0000000..c9ee32c
--- /dev/null
+++ b/java/res/xml/row_pcqwerty5.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"
+>
+    <Row
+        latin:keyWidth="7.692%p"
+    >
+        <switch>
+            <case
+                latin:keyboardLayoutSetElement="symbols|symbolsShifted"
+            >
+                <Key
+                    latin:keyStyle="toAlphaKeyStyle"
+                    latin:keyWidth="11.538%p" />
+            </case>
+            <!-- keyboardLayoutSetElement="alphabet*" -->
+            <default>
+                <Key
+                    latin:keyStyle="toSymbolKeyStyle"
+                    latin:keyIcon="!icon/undefined"
+                    latin:keyLabel="!text/label_to_symbol_key_pcqwerty"
+                    latin:keyWidth="11.538%p" />
+            </default>
+        </switch>
+        <switch>
+            <case
+                latin:shortcutKeyEnabled="true"
+            >
+                <Key
+                    latin:keyStyle="shortcutKeyStyle" />
+            </case>
+        </switch>
+        <switch>
+            <case
+                latin:languageSwitchKeyEnabled="true"
+            >
+                <Key
+                    latin:keyStyle="languageSwitchKeyStyle"
+                    latin:keyXPos="19.230%p" />
+                <Key
+                    latin:keyStyle="spaceKeyStyle"
+                    latin:keyWidth="53.844%p" />
+            </case>
+            <!-- languageSwitchKeyEnabled="false" -->
+            <default>
+                <Key
+                    latin:keyStyle="spaceKeyStyle"
+                    latin:keyXPos="19.230%p"
+                    latin:keyWidth="61.536%p" />
+            </default>
+        </switch>
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+</merge>
diff --git a/java/res/xml/rowkeys_pcqwerty1.xml b/java/res/xml/rowkeys_pcqwerty1.xml
new file mode 100644
index 0000000..0ecda35
--- /dev/null
+++ b/java/res/xml/rowkeys_pcqwerty1.xml
@@ -0,0 +1,87 @@
+<?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:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+        >
+            <!-- U+00AC: "¬" NOT SIGN -->
+            <Key
+                latin:keyLabel="`"
+                latin:moreKeys="~"
+                latin:additionalMoreKeys="&#x00AC;" />
+            <!-- U+00A1: "¡" NVERTED EXCLAMATION MARK -->
+            <Key
+                latin:keyLabel="1"
+                latin:additionalMoreKeys="!"
+                latin:moreKeys="&#x00A1;,!text/more_keys_for_symbols_1" />
+            <Key
+                latin:keyLabel="2"
+                latin:additionalMoreKeys="\@"
+                latin:moreKeys="!text/more_keys_for_symbols_2" />
+            <Key
+                latin:keyLabel="3"
+                latin:additionalMoreKeys="#"
+                latin:moreKeys="!text/more_keys_for_symbols_3" />
+            <Key
+                latin:keyLabel="4"
+                latin:additionalMoreKeys="$"
+                latin:moreKeys="!text/more_keys_for_symbols_4" />
+            <Key
+                latin:keyLabel="5"
+                latin:additionalMoreKeys="\\%"
+                latin:moreKeys="!text/more_keys_for_symbols_5" />
+            <Key
+                latin:keyLabel="6"
+                latin:additionalMoreKeys="^"
+                latin:moreKeys="!text/more_keys_for_symbols_6" />
+            <Key
+                latin:keyLabel="7"
+                latin:additionalMoreKeys="&amp;"
+                latin:moreKeys="!text/more_keys_for_symbols_7" />
+            <Key
+                latin:keyLabel="8"
+                latin:additionalMoreKeys="*,%"
+                latin:moreKeys="!text/more_keys_for_symbols_8" />
+            <Key
+                latin:keyLabel="9"
+                latin:additionalMoreKeys="("
+                latin:moreKeys="!text/more_keys_for_symbols_9" />
+            <Key
+                latin:keyLabel="0"
+                latin:additionalMoreKeys=")"
+                latin:moreKeys="!text/more_keys_for_symbols_0" />
+            <Key
+                latin:keyLabel="-"
+                latin:moreKeys="_" />
+            <Key
+                latin:keyLabel="="
+                latin:moreKeys="+" />
+        </case>
+        <!-- keyboardLayoutSetElement="alphabet*Shifted|symbols*" -->
+        <default>
+            <include
+                latin:keyboardLayout="@xml/keys_pcqwerty_symbols1" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_pcqwerty2.xml b/java/res/xml/rowkeys_pcqwerty2.xml
new file mode 100644
index 0000000..cedf475
--- /dev/null
+++ b/java/res/xml/rowkeys_pcqwerty2.xml
@@ -0,0 +1,41 @@
+<?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:keyboardLayoutSetElement="symbols|symbolsShifted"
+        >
+            <include
+                latin:keyboardLayout="@xml/keys_pcqwerty_symbols2" />
+        </case>
+        <default>
+            <!-- The keys on this PC layout row2 consist of the letters of QWERTY layout row1 and
+                 some symbols keys. -->
+            <include
+                latin:keyboardLayout="@xml/rowkeys_qwerty1"
+                latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" />
+        </default>
+    </switch>
+    <include
+        latin:keyboardLayout="@xml/keys_pcqwerty2_right3" />
+</merge>
diff --git a/java/res/xml/rowkeys_pcqwerty3.xml b/java/res/xml/rowkeys_pcqwerty3.xml
new file mode 100644
index 0000000..5044e5f
--- /dev/null
+++ b/java/res/xml/rowkeys_pcqwerty3.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"
+>
+    <switch>
+        <case
+            latin:keyboardLayoutSetElement="symbols|symbolsShifted"
+        >
+            <include
+                latin:keyboardLayout="@xml/keys_pcqwerty_symbols3" />
+        </case>
+        <default>
+            <!-- The keys on this PC layout row3 consist of the letters of QWERTY layout row2 and
+                 some symbols keys. -->
+            <include
+                latin:keyboardLayout="@xml/rowkeys_qwerty2" />
+        </default>
+    </switch>
+    <include
+        latin:keyboardLayout="@xml/keys_pcqwerty3_right2" />
+</merge>
diff --git a/java/res/xml/rowkeys_pcqwerty4.xml b/java/res/xml/rowkeys_pcqwerty4.xml
new file mode 100644
index 0000000..4071e8c
--- /dev/null
+++ b/java/res/xml/rowkeys_pcqwerty4.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"
+>
+    <switch>
+        <case
+            latin:keyboardLayoutSetElement="symbols|symbolsShifted"
+        >
+            <include
+                latin:keyboardLayout="@xml/keys_pcqwerty_symbols4" />
+        </case>
+        <default>
+            <!-- The keys on this PC layout row4 consist of the letters of QWERTY layout row3 and
+                 some symbols keys. -->
+            <include
+                latin:keyboardLayout="@xml/rowkeys_qwerty3" />
+        </default>
+    </switch>
+    <include
+        latin:keyboardLayout="@xml/keys_pcqwerty4_right3" />
+</merge>
diff --git a/java/res/xml/rows_pcqwerty.xml b/java/res/xml/rows_pcqwerty.xml
new file mode 100644
index 0000000..a5ed745
--- /dev/null
+++ b/java/res/xml/rows_pcqwerty.xml
@@ -0,0 +1,65 @@
+<?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" />
+    <Row
+        latin:keyWidth="7.692%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
+    </Row>
+    <Row
+        latin:keyWidth="7.692%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty2" />
+    </Row>
+    <Row
+        latin:keyWidth="7.692%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty3"
+            latin:keyXPos="3.846%p" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight"
+            latin:visualInsetsLeft="1%p" />
+    </Row>
+    <Row
+        latin:keyWidth="7.692%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="11.538%p"
+            latin:visualInsetsRight="1%p" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty4" />
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="fillRight"
+            latin:visualInsetsLeft="1%p" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/row_pcqwerty5" />
+</merge>
diff --git a/java/res/xml/rows_pcqwerty_symbols.xml b/java/res/xml/rows_pcqwerty_symbols.xml
new file mode 100644
index 0000000..107a4ad
--- /dev/null
+++ b/java/res/xml/rows_pcqwerty_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="7.692%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
+    </Row>
+    <Row
+        latin:keyWidth="7.692%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty2" />
+    </Row>
+    <Row
+        latin:keyWidth="7.692%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty3"
+            latin:keyXPos="3.846%p" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight"
+            latin:visualInsetsLeft="1%p" />
+    </Row>
+    <Row
+        latin:keyWidth="7.692%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty4"
+            latin:keyXPos="11.538%p" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/row_pcqwerty5" />
+</merge>