diff --git a/java/res/xml-sw600dp/key_azerty_quote.xml b/java/res/xml-sw600dp/key_azerty_quote.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0e4a8ecddc51f690e938733aa2a92f6dc43841e9
--- /dev/null
+++ b/java/res/xml-sw600dp/key_azerty_quote.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.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <Key
+        latin:keyLabel="\'"
+        latin:keyHintLabel=":"
+        latin:moreKeys=":"
+        latin:keyStyle="hasShiftedLetterHintStyle" />
+</merge>
diff --git a/java/res/xml-sw600dp/rowkeys_azerty1.xml b/java/res/xml-sw600dp/rowkeys_azerty1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ef35f25ce2854dd00b318f8c5f6615d7e876bf98
--- /dev/null
+++ b/java/res/xml-sw600dp/rowkeys_azerty1.xml
@@ -0,0 +1,53 @@
+<?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="a"
+        latin:moreKeys="@string/more_keys_for_a" />
+    <Key
+        latin:keyLabel="z"
+        latin:moreKeys="@string/more_keys_for_z" />
+    <Key
+        latin:keyLabel="e"
+        latin:moreKeys="@string/more_keys_for_e" />
+    <Key
+        latin:keyLabel="r"
+        latin:moreKeys="@string/more_keys_for_r" />
+    <Key
+        latin:keyLabel="t"
+        latin:moreKeys="@string/more_keys_for_t" />
+    <Key
+        latin:keyLabel="y"
+        latin:moreKeys="@string/more_keys_for_y" />
+    <Key
+        latin:keyLabel="u"
+        latin:moreKeys="@string/more_keys_for_u" />
+    <Key
+        latin:keyLabel="i"
+        latin:moreKeys="@string/more_keys_for_i" />
+    <Key
+        latin:keyLabel="o"
+        latin:moreKeys="@string/more_keys_for_o" />
+    <Key
+        latin:keyLabel="p" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_azerty.xml b/java/res/xml-sw600dp/rows_azerty.xml
index 5c799623d9c81012ad1e67e73b3579628eaa356e..e09d8f82456f07bf3815070260e422686d595011 100644
--- a/java/res/xml-sw600dp/rows_azerty.xml
+++ b/java/res/xml-sw600dp/rows_azerty.xml
@@ -26,35 +26,8 @@
     <Row
         latin:keyWidth="8.5%p"
     >
-        <Key
-            latin:keyLabel="a"
-            latin:moreKeys="@string/more_keys_for_a" />
-        <Key
-            latin:keyLabel="z"
-            latin:moreKeys="@string/more_keys_for_z" />
-        <Key
-            latin:keyLabel="e"
-            latin:moreKeys="@string/more_keys_for_e" />
-        <Key
-            latin:keyLabel="r"
-            latin:moreKeys="@string/more_keys_for_r" />
-        <Key
-            latin:keyLabel="t"
-            latin:moreKeys="@string/more_keys_for_t" />
-        <Key
-            latin:keyLabel="y"
-            latin:moreKeys="@string/more_keys_for_y" />
-        <Key
-            latin:keyLabel="u"
-            latin:moreKeys="@string/more_keys_for_u" />
-        <Key
-            latin:keyLabel="i"
-            latin:moreKeys="@string/more_keys_for_i" />
-        <Key
-            latin:keyLabel="o"
-            latin:moreKeys="@string/more_keys_for_o" />
-        <Key
-            latin:keyLabel="p" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_azerty1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-10.0%p"
@@ -63,32 +36,9 @@
     <Row
         latin:keyWidth="8.5%p"
     >
-        <Key
-            latin:keyLabel="q"
+        <include
+            latin:keyboardLayout="@xml/rowkeys_azerty2"
             latin:keyXPos="5.0%p" />
-        <Key
-            latin:keyLabel="s"
-            latin:moreKeys="@string/more_keys_for_s" />
-        <Key
-            latin:keyLabel="d"
-            latin:moreKeys="@string/more_keys_for_d" />
-        <Key
-            latin:keyLabel="f" />
-        <Key
-            latin:keyLabel="g"
-            latin:moreKeys="@string/more_keys_for_g" />
-        <Key
-            latin:keyLabel="h" />
-        <Key
-            latin:keyLabel="j" />
-        <Key
-            latin:keyLabel="k"
-            latin:moreKeys="@string/more_keys_for_k" />
-        <Key
-            latin:keyLabel="l"
-            latin:moreKeys="@string/more_keys_for_l" />
-        <Key
-            latin:keyLabel="m" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyXPos="-14.6%p"
@@ -100,26 +50,8 @@
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.0%p" />
-        <Key
-            latin:keyLabel="w" />
-        <Key
-            latin:keyLabel="x" />
-        <Key
-            latin:keyLabel="c"
-            latin:moreKeys="@string/more_keys_for_c" />
-        <Key
-            latin:keyLabel="v"
-            latin:moreKeys="@string/more_keys_for_v" />
-        <Key
-            latin:keyLabel="b" />
-        <Key
-            latin:keyLabel="n"
-            latin:moreKeys="@string/more_keys_for_n" />
-        <Key
-            latin:keyLabel="\'"
-            latin:keyHintLabel=":"
-            latin:moreKeys=":"
-            latin:keyStyle="hasShiftedLetterHintStyle" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_azerty3" />
         <include
             latin:keyboardLayout="@xml/keys_comma_period" />
         <include
diff --git a/java/res/xml-sw768dp/rows_azerty.xml b/java/res/xml-sw768dp/rows_azerty.xml
index 6023e984bd065cda0b384f4ccc0251477f157acb..e79ca65ad9ec45b222fcb8b7b1584faafec95db9 100644
--- a/java/res/xml-sw768dp/rows_azerty.xml
+++ b/java/res/xml-sw768dp/rows_azerty.xml
@@ -30,35 +30,8 @@
             latin:keyStyle="tabKeyStyle"
             latin:keyLabelFlags="alignLeft"
             latin:keyWidth="7.969%p" />
-        <Key
-            latin:keyLabel="a"
-            latin:moreKeys="@string/more_keys_for_a" />
-        <Key
-            latin:keyLabel="z"
-            latin:moreKeys="@string/more_keys_for_z" />
-        <Key
-            latin:keyLabel="e"
-            latin:moreKeys="@string/more_keys_for_e" />
-        <Key
-            latin:keyLabel="r"
-            latin:moreKeys="@string/more_keys_for_r" />
-        <Key
-            latin:keyLabel="t"
-            latin:moreKeys="@string/more_keys_for_t" />
-        <Key
-            latin:keyLabel="y"
-            latin:moreKeys="@string/more_keys_for_y" />
-        <Key
-            latin:keyLabel="u"
-            latin:moreKeys="@string/more_keys_for_u" />
-        <Key
-            latin:keyLabel="i"
-            latin:moreKeys="@string/more_keys_for_i" />
-        <Key
-            latin:keyLabel="o"
-            latin:moreKeys="@string/more_keys_for_o" />
-        <Key
-            latin:keyLabel="p" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_azerty1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyXPos="-9.219%p"
@@ -71,31 +44,8 @@
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyLabelFlags="alignLeft"
             latin:keyWidth="10.167%p" />
-        <Key
-            latin:keyLabel="q" />
-        <Key
-            latin:keyLabel="s"
-            latin:moreKeys="@string/more_keys_for_s" />
-        <Key
-            latin:keyLabel="d"
-            latin:moreKeys="@string/more_keys_for_d" />
-        <Key
-            latin:keyLabel="f" />
-        <Key
-            latin:keyLabel="g"
-            latin:moreKeys="@string/more_keys_for_g" />
-        <Key
-            latin:keyLabel="h" />
-        <Key
-            latin:keyLabel="j" />
-        <Key
-            latin:keyLabel="k"
-            latin:moreKeys="@string/more_keys_for_k" />
-        <Key
-            latin:keyLabel="l"
-            latin:moreKeys="@string/more_keys_for_l" />
-        <Key
-            latin:keyLabel="m" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_azerty2" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyXPos="-15.704%p"
@@ -107,26 +57,8 @@
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="13.829%p" />
-        <Key
-            latin:keyLabel="w" />
-        <Key
-            latin:keyLabel="x" />
-        <Key
-            latin:keyLabel="c"
-            latin:moreKeys="@string/more_keys_for_c" />
-        <Key
-            latin:keyLabel="v"
-            latin:moreKeys="@string/more_keys_for_v" />
-        <Key
-            latin:keyLabel="b" />
-        <Key
-            latin:keyLabel="n"
-            latin:moreKeys="@string/more_keys_for_n" />
-        <Key
-            latin:keyLabel="\'"
-            latin:keyHintLabel=":"
-            latin:moreKeys=":"
-            latin:keyStyle="hasShiftedLetterHintStyle" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_azerty3" />
         <include
             latin:keyboardLayout="@xml/keys_comma_period" />
         <Key
diff --git a/java/res/xml/key_azerty_quote.xml b/java/res/xml/key_azerty_quote.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e1d180443ad40d0c5418d9ba2ae2bbba6976d76e
--- /dev/null
+++ b/java/res/xml/key_azerty_quote.xml
@@ -0,0 +1,37 @@
+<?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:keyboardSetElement="alphabetManualShifted|alphabetShiftLockShifted"
+        >
+            <Key
+                latin:keyLabel=":" />
+        </case>
+        <default>
+            <Key
+                latin:keyLabel="\'"
+                latin:moreKeys="\@string/more_keys_for_single_quote" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_azerty1.xml b/java/res/xml/rowkeys_azerty1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..99834321f14888f12075572f3c384ee4af54cde7
--- /dev/null
+++ b/java/res/xml/rowkeys_azerty1.xml
@@ -0,0 +1,73 @@
+<?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="a"
+        latin:keyHintLabel="1"
+        latin:additionalMoreKeys="1"
+        latin:moreKeys="@string/more_keys_for_a" />
+    <Key
+        latin:keyLabel="z"
+        latin:keyHintLabel="2"
+        latin:additionalMoreKeys="2"
+        latin:moreKeys="@string/more_keys_for_z" />
+    <Key
+        latin:keyLabel="e"
+        latin:keyHintLabel="3"
+        latin:additionalMoreKeys="3"
+        latin:moreKeys="@string/more_keys_for_e" />
+    <Key
+        latin:keyLabel="r"
+        latin:keyHintLabel="4"
+        latin:additionalMoreKeys="4"
+        latin:moreKeys="@string/more_keys_for_r" />
+    <Key
+        latin:keyLabel="t"
+        latin:keyHintLabel="5"
+        latin:additionalMoreKeys="5"
+        latin:moreKeys="@string/more_keys_for_t" />
+    <Key
+        latin:keyLabel="y"
+        latin:keyHintLabel="6"
+        latin:additionalMoreKeys="6"
+        latin:moreKeys="@string/more_keys_for_y" />
+    <Key
+        latin:keyLabel="u"
+        latin:keyHintLabel="7"
+        latin:additionalMoreKeys="7"
+        latin:moreKeys="@string/more_keys_for_u" />
+    <Key
+        latin:keyLabel="i"
+        latin:keyHintLabel="8"
+        latin:additionalMoreKeys="8"
+        latin:moreKeys="@string/more_keys_for_i" />
+    <Key
+        latin:keyLabel="o"
+        latin:keyHintLabel="9"
+        latin:additionalMoreKeys="9"
+        latin:moreKeys="@string/more_keys_for_o" />
+    <Key
+        latin:keyLabel="p"
+        latin:keyHintLabel="0"
+        latin:additionalMoreKeys="0" />
+</merge>
diff --git a/java/res/xml/rowkeys_azerty2.xml b/java/res/xml/rowkeys_azerty2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..11bcd67c7bd10becd2c38cbbb0f7af28adb9626c
--- /dev/null
+++ b/java/res/xml/rowkeys_azerty2.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"
+>
+    <Key
+        latin:keyLabel="q" />
+    <Key
+        latin:keyLabel="s"
+        latin:moreKeys="@string/more_keys_for_s" />
+    <Key
+        latin:keyLabel="d"
+        latin:moreKeys="@string/more_keys_for_d" />
+    <Key
+        latin:keyLabel="f" />
+    <Key
+        latin:keyLabel="g"
+        latin:moreKeys="@string/more_keys_for_g" />
+    <Key
+        latin:keyLabel="h" />
+    <Key
+        latin:keyLabel="j" />
+    <Key
+        latin:keyLabel="k"
+        latin:moreKeys="@string/more_keys_for_k" />
+    <Key
+        latin:keyLabel="l"
+        latin:moreKeys="@string/more_keys_for_l" />
+    <Key
+        latin:keyLabel="m" />
+</merge>
diff --git a/java/res/xml/rowkeys_azerty3.xml b/java/res/xml/rowkeys_azerty3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a0eaccdccdc80550ecda48ba7727f14fc91fed9
--- /dev/null
+++ b/java/res/xml/rowkeys_azerty3.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"
+>
+    <Key
+        latin:keyLabel="w" />
+    <Key
+        latin:keyLabel="x" />
+    <Key
+        latin:keyLabel="c"
+        latin:moreKeys="@string/more_keys_for_c" />
+    <Key
+        latin:keyLabel="v"
+        latin:moreKeys="@string/more_keys_for_v" />
+    <Key
+        latin:keyLabel="b" />
+    <Key
+        latin:keyLabel="n"
+        latin:moreKeys="@string/more_keys_for_n" />
+    <include
+        latin:keyboardLayout="@xml/key_azerty_quote" />
+</merge>
diff --git a/java/res/xml/rows_azerty.xml b/java/res/xml/rows_azerty.xml
index bd3ff6f4b29ec50e49503ac6ee5646cc4b819fe7..a52504c4f500ca9542e95baf21a76f3fbedf900b 100644
--- a/java/res/xml/rows_azerty.xml
+++ b/java/res/xml/rows_azerty.xml
@@ -26,86 +26,14 @@
     <Row
         latin:keyWidth="10%p"
     >
-        <Key
-            latin:keyLabel="a"
-            latin:keyHintLabel="1"
-            latin:additionalMoreKeys="1"
-            latin:moreKeys="@string/more_keys_for_a" />
-        <Key
-            latin:keyLabel="z"
-            latin:keyHintLabel="2"
-            latin:additionalMoreKeys="2"
-            latin:moreKeys="@string/more_keys_for_z" />
-        <Key
-            latin:keyLabel="e"
-            latin:keyHintLabel="3"
-            latin:additionalMoreKeys="3"
-            latin:moreKeys="@string/more_keys_for_e" />
-        <Key
-            latin:keyLabel="r"
-            latin:keyHintLabel="4"
-            latin:additionalMoreKeys="4"
-            latin:moreKeys="@string/more_keys_for_r" />
-        <Key
-            latin:keyLabel="t"
-            latin:keyHintLabel="5"
-            latin:additionalMoreKeys="5"
-            latin:moreKeys="@string/more_keys_for_t" />
-        <Key
-            latin:keyLabel="y"
-            latin:keyHintLabel="6"
-            latin:additionalMoreKeys="6"
-            latin:moreKeys="@string/more_keys_for_y" />
-        <Key
-            latin:keyLabel="u"
-            latin:keyHintLabel="7"
-            latin:additionalMoreKeys="7"
-            latin:moreKeys="@string/more_keys_for_u" />
-        <Key
-            latin:keyLabel="i"
-            latin:keyHintLabel="8"
-            latin:additionalMoreKeys="8"
-            latin:moreKeys="@string/more_keys_for_i" />
-        <Key
-            latin:keyLabel="o"
-            latin:keyHintLabel="9"
-            latin:additionalMoreKeys="9"
-            latin:moreKeys="@string/more_keys_for_o" />
-        <Key
-            latin:keyLabel="p"
-            latin:keyHintLabel="0"
-            latin:additionalMoreKeys="0"
-            latin:keyWidth="fillRight" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_azerty1" />
     </Row>
     <Row
         latin:keyWidth="10%p"
     >
-        <Key
-            latin:keyLabel="q" />
-        <Key
-            latin:keyLabel="s"
-            latin:moreKeys="@string/more_keys_for_s" />
-        <Key
-            latin:keyLabel="d"
-            latin:moreKeys="@string/more_keys_for_d" />
-        <Key
-            latin:keyLabel="f" />
-        <Key
-            latin:keyLabel="g"
-            latin:moreKeys="@string/more_keys_for_g" />
-        <Key
-            latin:keyLabel="h" />
-        <Key
-            latin:keyLabel="j" />
-        <Key
-            latin:keyLabel="k"
-            latin:moreKeys="@string/more_keys_for_k" />
-        <Key
-            latin:keyLabel="l"
-            latin:moreKeys="@string/more_keys_for_l" />
-        <Key
-            latin:keyLabel="m"
-            latin:keyWidth="fillRight" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_azerty2" />
     </Row>
     <Row
         latin:keyWidth="10%p"
@@ -114,25 +42,8 @@
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="15%p"
             latin:visualInsetsRight="1%p" />
-        <Key
-            latin:keyLabel="w" />
-        <Key
-            latin:keyLabel="x" />
-        <Key
-            latin:keyLabel="c"
-
-            latin:moreKeys="@string/more_keys_for_c" />
-        <Key
-            latin:keyLabel="v"
-            latin:moreKeys="@string/more_keys_for_v" />
-        <Key
-            latin:keyLabel="b" />
-        <Key
-            latin:keyLabel="n"
-            latin:moreKeys="@string/more_keys_for_n" />
-        <Key
-            latin:keyLabel="\'"
-            latin:moreKeys="@string/more_keys_for_single_quote" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_azerty3" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight"