diff --git a/java/res/values-ca/donottranslate-altchars.xml b/java/res/values-ca/donottranslate-altchars.xml
new file mode 100644
index 000000000..336057be0
--- /dev/null
+++ b/java/res/values-ca/donottranslate-altchars.xml
@@ -0,0 +1,29 @@
+
+
+
+ à,á,ä,â,ã,å,ą,æ,ā,ª
+ 3,è,é,ë,ê,ę,ė,ē
+ 8,í,ï,ì,î,į,ī
+ 9,ò,ó,ö,ô,õ,ø,œ,ō,º
+ 7,ú,ü,ù,û,ū
+ ñ,ń
+ ç,ć,č
+ ŀ,ł
+
diff --git a/java/res/values-cs/donottranslate-altchars.xml b/java/res/values-cs/donottranslate-altchars.xml
index 8440d6932..541cd2154 100644
--- a/java/res/values-cs/donottranslate-altchars.xml
+++ b/java/res/values-cs/donottranslate-altchars.xml
@@ -18,16 +18,17 @@
*/
-->
- á,à,â,ã,ä,å,æ
- 3,é,ě,è,ê,ë
- 8,í,ì,î,ï
- 9,ó,ò,ô,õ,ö,œ,ø
- 7,ů,ú,ù,û,ü
- š,§,ß
- ň,ñ
- č,ç
+ á,à,â,ä,æ,ã,å,ā
+ 3,é,ě,è,ê,ë,ę,ė,ē
+ 8,í,î,ï,ì,į,ī
+ 9,ó,ö,ô,ò,õ,œ,ø,ō
+ 7,ú,ů,û,ü,ù,ū
+ š,ß,ś
+ ň,ñ,ń
+ č,ç,ć
+ ý,ÿ
ď
4,ř
5,ť
- ž
+ 6,ž,ź,ż
diff --git a/java/res/values-da/donottranslate-altchars.xml b/java/res/values-da/donottranslate-altchars.xml
index 09c264e87..46f1644ad 100644
--- a/java/res/values-da/donottranslate-altchars.xml
+++ b/java/res/values-da/donottranslate-altchars.xml
@@ -18,23 +18,18 @@
*/
-->
- á,à,â,ą,ã
- 3,é,è,ê,ë,ę,€
- 8,í,ì,î,ï
- 9,ó,ò,ô,õ
- 7,ú,ù,û,ū
- ś,š,ş,ß
- ń,ñ,ň
- ç,ć,č
- 6,ý,ÿ,ü
- ð,ď
- 4,ř
- 5,ť,þ
- ź,ž,ż
+ á,ä,à,â,ã,ā
+ 3,é,ë
+ 8,í,ï
+ 9,ó,ô,ò,õ,œ,ō
+ 7,ú,ü,û,ù,ū
+ ß,ś,š
+ ñ,ń
+ 6,ý,ÿ
+ ð
ł
- w
æ
ø
ä
- ö,œ
+ ö
diff --git a/java/res/values-de/donottranslate-altchars.xml b/java/res/values-de/donottranslate-altchars.xml
index 141ad8433..8b8b6aed7 100644
--- a/java/res/values-de/donottranslate-altchars.xml
+++ b/java/res/values-de/donottranslate-altchars.xml
@@ -18,8 +18,12 @@
*/
-->
- ä
- 9,ö
- ý,ÿ
+ ä,â,à,á,æ,ã,å,ā
+ 3,ė
+ 9,ö,ô,ò,ó,õ,œ,ø,ō
+ 7,ü,û,ù,ú,ū
+ ß,ś,š
+ ñ,ń
+
6
diff --git a/java/res/values-en/donottranslate-altchars.xml b/java/res/values-en/donottranslate-altchars.xml
index a564a8c0c..3950d7dff 100644
--- a/java/res/values-en/donottranslate-altchars.xml
+++ b/java/res/values-en/donottranslate-altchars.xml
@@ -18,9 +18,11 @@
*/
-->
- à,á,â,ã,ä,å,ā,æ
+ à,á,â,ä,æ,ã,å,ā
3,è,é,ê,ë,ē
- 8,ì,í,î,ï,ī
- 9,ò,ó,ô,õ,ö,ō,œ,ø
- 7,ù,ú,û,ü,ū
+ 8,î,ï,í,ī,ì
+ 9,ô,ö,ò,ó,œ,ø,ō,õ
+ 7,û,ü,ù,ú,ū
+ ñ
+ ç
diff --git a/java/res/values-es/donottranslate-altchars.xml b/java/res/values-es/donottranslate-altchars.xml
index 65d5c1153..99f1663a1 100644
--- a/java/res/values-es/donottranslate-altchars.xml
+++ b/java/res/values-es/donottranslate-altchars.xml
@@ -18,7 +18,11 @@
*/
-->
- á
- 3,é
- 9,ó
+ á,à,ä,â,ã,å,ą,æ,ā,ª
+ 3,é,è,ë,ê,ę,ė,ē
+ 8,í,ï,ì,î,į,ī
+ 9,ó,ò,ö,ô,õ,ø,œ,ō,º
+ 7,ú,ü,ù,û,ū
+ ñ,ń
+ ç,ć,č
diff --git a/java/res/values-fi/donottranslate-altchars.xml b/java/res/values-fi/donottranslate-altchars.xml
new file mode 100644
index 000000000..ff87a3258
--- /dev/null
+++ b/java/res/values-fi/donottranslate-altchars.xml
@@ -0,0 +1,30 @@
+
+
+
+ æ,à,á,â,ã,ā
+ 9,ø,ô,ò,ó,õ,œ,ō
+ 7,ü
+ š,ß,ś
+ ž,ź,ż
+ ö
+ ä
+ ø
+ æ
+
diff --git a/java/res/values-fr/donottranslate-altchars.xml b/java/res/values-fr/donottranslate-altchars.xml
index 830119d52..e01f63f14 100644
--- a/java/res/values-fr/donottranslate-altchars.xml
+++ b/java/res/values-fr/donottranslate-altchars.xml
@@ -18,7 +18,13 @@
*/
-->
- 1,à,á,â,ã,ä,å,æ
+ 1,à,â,æ,á,ä,ã,å,ā,ª
+ 3,é,è,ê,ë,ę,ė,ē
+ 8,î,ï,ì,í,į,ī
+ 9,ô,œ,ö,ò,ó,õ,ø,ō,º
+ 7,û,ù,ü,ú,ū
+ ç,ć,č
+ 6,ÿ
2
diff --git a/java/res/xml-fr-rCA-xlarge/kbd_qwerty.xml b/java/res/values-hu/donottranslate-altchars.xml
similarity index 50%
rename from java/res/xml-fr-rCA-xlarge/kbd_qwerty.xml
rename to java/res/values-hu/donottranslate-altchars.xml
index 92d92f0e6..ae28cc5b8 100644
--- a/java/res/xml-fr-rCA-xlarge/kbd_qwerty.xml
+++ b/java/res/values-hu/donottranslate-altchars.xml
@@ -2,7 +2,7 @@
-
-
-
-
+
+ á,à,â,ä,æ,ã,å,ā
+ 3,é,è,ê,ë,ę,ė,ē
+ 8,í,î,ï,ì,į,ī
+ 9,ó,ö,ő,ô,ò,õ,œ,ø,ō
+ 7,ú,ü,ű,û,ù,ū
+
+ 6
+
diff --git a/java/res/values-it/donottranslate-altchars.xml b/java/res/values-it/donottranslate-altchars.xml
index 1c3dc7e32..1131d4852 100644
--- a/java/res/values-it/donottranslate-altchars.xml
+++ b/java/res/values-it/donottranslate-altchars.xml
@@ -18,8 +18,9 @@
*/
-->
- à,á
- 3,è,é
- 9,ò,ó
- §
+ à,á,â,ä,æ,ã,å,ā,ª
+ 3,è,é,ê,ë,ę,ė,ē
+ 8,ì,í,î,ï,į,ī
+ 9,ò,ó,ô,ö,õ,œ,ø,ō,º
+ 7,ù,ú,û,ü,ū
diff --git a/java/res/values-lt/donottranslate-altchars.xml b/java/res/values-lt/donottranslate-altchars.xml
new file mode 100644
index 000000000..4aba93a3a
--- /dev/null
+++ b/java/res/values-lt/donottranslate-altchars.xml
@@ -0,0 +1,28 @@
+
+
+
+ ą,à,á,â,ä,æ,ã,å,ā
+ 3,ė,ę,è,é,ê,ë,ē
+ 8,į,î,ï,ì,í,ī
+ 7,ų,ū,û,ü,ù,ú
+ š,ß,ś
+ č,ç,ć
+ ž,ź,ż
+
diff --git a/java/res/values-lv/donottranslate-altchars.xml b/java/res/values-lv/donottranslate-altchars.xml
new file mode 100644
index 000000000..05d9bc894
--- /dev/null
+++ b/java/res/values-lv/donottranslate-altchars.xml
@@ -0,0 +1,33 @@
+
+
+
+ ā,à,á,â,ä,æ,ã,å
+ 3,ē,è,é,ê,ë,ę,ė
+ 8,ī,î,ï,ì,í,į
+ 7,ū,û,ü,ù,ú
+ š,ß,ś
+ ņ,ñ,ń
+ č,ç,ć
+ 4,ŗ
+ ž,ź,ż
+ ķ
+ ļ,ł
+ ģ
+
diff --git a/java/res/values-nb/donottranslate-altchars.xml b/java/res/values-nb/donottranslate-altchars.xml
index 91f8b21dc..798e51c9a 100644
--- a/java/res/values-nb/donottranslate-altchars.xml
+++ b/java/res/values-nb/donottranslate-altchars.xml
@@ -18,20 +18,10 @@
*/
-->
- ä,á,à,â,ą,ã
- 3,é,è,ê,ë,ę,€
- 8,í,ì,î,ï
- 9,ö,ó,ò,ô,õ
- 7,ü,ú,ù,û,ū
- ś,š,ş,ß
- ń,ñ,ň
- ç,ć,č
- ð,ď
- 4,ř
- 5,ť,þ
- ź,ž,ż
- ł
- w
+ à,ä,á,â,ã,ā
+ 3,é,è,ê,ë,ę,ė,ē
+ 9,ô,ò,ó,ö,õ,œ,ō
+ 7,ü,û,ù,ú,ū
ø
æ
ö
diff --git a/java/res/values-nl/donottranslate-altchars.xml b/java/res/values-nl/donottranslate-altchars.xml
new file mode 100644
index 000000000..e26a74967
--- /dev/null
+++ b/java/res/values-nl/donottranslate-altchars.xml
@@ -0,0 +1,27 @@
+
+
+
+ á,ä,â,à,æ,ã,å,ā
+ 3,é,ë,ê,è,ę,ė,ē
+ 8,í,ï,ì,î,į,ī
+ 9,ó,ö,ô,ò,õ,œ,ø,ō
+ 7,ú,ü,û,ù,ū
+ ñ,ń
+
diff --git a/java/res/values-pl/donottranslate-altchars.xml b/java/res/values-pl/donottranslate-altchars.xml
index ac099028d..971d73bc5 100644
--- a/java/res/values-pl/donottranslate-altchars.xml
+++ b/java/res/values-pl/donottranslate-altchars.xml
@@ -18,12 +18,12 @@
*/
-->
- ą
- 3,ę
- 9,ó
- ś
- ń
- ć
- ź,ż
+ ą,á,à,â,ä,æ,ã,å,ā
+ 3,ę,è,é,ê,ë,ė,ē
+ 9,ó,ö,ô,ò,õ,œ,ø,ō
+ ś,ß,š
+ ń,ñ
+ ć,ç,č
+ ż,ź,ž
ł
diff --git a/java/res/values-pt/donottranslate-altchars.xml b/java/res/values-pt/donottranslate-altchars.xml
new file mode 100644
index 000000000..a39976151
--- /dev/null
+++ b/java/res/values-pt/donottranslate-altchars.xml
@@ -0,0 +1,27 @@
+
+
+
+ á,ã,à,â,ä,å,æ,ª
+ 3,é,ê,è,ę,ė,ē,ë
+ 8,í,î,ì,ï,į,ī
+ 9,ó,õ,ô,ò,ö,œ,ø,ō,º
+ 7,ú,ü,ù,û,ū
+ ç,č,ć
+
diff --git a/java/res/values-ro/donottranslate-altchars.xml b/java/res/values-ro/donottranslate-altchars.xml
new file mode 100644
index 000000000..728ead472
--- /dev/null
+++ b/java/res/values-ro/donottranslate-altchars.xml
@@ -0,0 +1,25 @@
+
+
+
+ ă,â,à,á,ä,æ,ã,å,ā
+ 8,î,ï,ì,í,į,ī
+ ș,ß,ś,š
+ 5,ț
+
diff --git a/java/res/values-sk/donottranslate-altchars.xml b/java/res/values-sk/donottranslate-altchars.xml
new file mode 100644
index 000000000..6d9836e9c
--- /dev/null
+++ b/java/res/values-sk/donottranslate-altchars.xml
@@ -0,0 +1,35 @@
+
+
+
+ ä,á,à,â,æ,ã,å,ā
+ 3,é,ě,è,ê,ë,ę,ė,ē
+ 8,í,î,ï,ì,į,ī
+ 9,ô,ó,ö,ò,õ,œ,ø,ō
+ 7,ú,ú,û,ü,ù,ū
+ š,ß,ś
+ ň,ñ,ń
+ č,ç,ć
+ 6,ý,ÿ
+ ď
+ 4,ŕ,ř
+ 5,ť
+ ž,ź,ż
+ ľ,ĺ,ł
+
diff --git a/java/res/values-sv/donottranslate-altchars.xml b/java/res/values-sv/donottranslate-altchars.xml
index 46b3803db..d03ae1a6c 100644
--- a/java/res/values-sv/donottranslate-altchars.xml
+++ b/java/res/values-sv/donottranslate-altchars.xml
@@ -18,23 +18,12 @@
*/
-->
- á,à,â,ą,ã
- 3,é,è,ê,ë,ę,€
- 8,í,ì,î,ï
- 9,ó,ò,ô,õ
- 7,ú,ù,û,ū
- ś,š,ş,ß
- ń,ñ,ň
- ç,ć,č
- 6,ý,ÿ,ü
- ð,ď
- 4,ř
- 5,ť,þ
- ź,ž,ż
- ł
- w
+ 3,é,è,ê,ë,ę
+ 9,œ,ô,ò,ó,õ,ō
+ 7,ü,û,ù,ú,ū
+ ß,ś,š
ö
ä
- ø,œ
+ ø
æ
diff --git a/java/res/values-tr/donottranslate-altchars.xml b/java/res/values-tr/donottranslate-altchars.xml
index 1378fa90b..1b83b65c8 100644
--- a/java/res/values-tr/donottranslate-altchars.xml
+++ b/java/res/values-tr/donottranslate-altchars.xml
@@ -18,8 +18,11 @@
*/
-->
- 9,ö,ò,ó,ô,õ,œ,ø
- 7,ü,ù,ú,û
- ş,§,ß
+ â
+ 8,ı,î,ï,ì,í,į,ī
+ 9,ö,ô,œ,ò,ó,õ,ø,ō
+ 7,ü,û,ù,ú,ū
+ ş,ß,ś,š
ğ
+ ç,ć,č
diff --git a/java/res/values/donottranslate-altchars.xml b/java/res/values/donottranslate-altchars.xml
index c5a369f9c..4b1a6ae6d 100644
--- a/java/res/values/donottranslate-altchars.xml
+++ b/java/res/values/donottranslate-altchars.xml
@@ -18,21 +18,22 @@
*/
-->
- à,á,â,ã,ä,å,æ
- 3,è,é,ê,ë
- 8,ì,í,î,ï
- 9,ò,ó,ô,õ,ö,œ,ø
- 7,ù,ú,û,ü
- §,ß
- ñ
- ç
- 6,ý,ÿ
+
+ 3
+ 8
+ 9
+ 7
+
+
+
+ 6
1
2
4
5
+
0
diff --git a/java/res/xml-de-xlarge/kbd_qwerty.xml b/java/res/xml-cs/kbd_qwerty.xml
similarity index 95%
rename from java/res/xml-de-xlarge/kbd_qwerty.xml
rename to java/res/xml-cs/kbd_qwerty.xml
index a23e4fbf0..010bdb3f7 100644
--- a/java/res/xml-de-xlarge/kbd_qwerty.xml
+++ b/java/res/xml-cs/kbd_qwerty.xml
@@ -2,7 +2,7 @@
-
-
-
-
-
-
diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml
index dfca1cdd2..441b7cb17 100644
--- a/java/res/xml-da/kbd_qwerty.xml
+++ b/java/res/xml-da/kbd_qwerty.xml
@@ -18,18 +18,11 @@
*/
-->
-
-
+ latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
diff --git a/java/res/xml-fr-rCH-xlarge/kbd_qwerty.xml b/java/res/xml-hu/kbd_qwerty.xml
similarity index 95%
rename from java/res/xml-fr-rCH-xlarge/kbd_qwerty.xml
rename to java/res/xml-hu/kbd_qwerty.xml
index a23e4fbf0..010bdb3f7 100644
--- a/java/res/xml-fr-rCH-xlarge/kbd_qwerty.xml
+++ b/java/res/xml-hu/kbd_qwerty.xml
@@ -2,7 +2,7 @@
-
-
-
-
-
-
diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml
index 06f1b947a..441b7cb17 100644
--- a/java/res/xml-nb/kbd_qwerty.xml
+++ b/java/res/xml-nb/kbd_qwerty.xml
@@ -18,18 +18,11 @@
*/
-->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ latin:keyboardLayout="@xml/kbd_ru_rows" />
diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml
index 0e5f5ff79..3995e4e27 100644
--- a/java/res/xml-sr/kbd_qwerty.xml
+++ b/java/res/xml-sr/kbd_qwerty.xml
@@ -18,124 +18,16 @@
*/
-->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ latin:keyboardLayout="@xml/kbd_sr_rows" />
diff --git a/java/res/xml-sv-xlarge/kbd_qwerty.xml b/java/res/xml-sv-xlarge/kbd_qwerty.xml
deleted file mode 100644
index bbb38585e..000000000
--- a/java/res/xml-sv-xlarge/kbd_qwerty.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml
index 60d3b45f9..72bdc339e 100644
--- a/java/res/xml-sv/kbd_qwerty.xml
+++ b/java/res/xml-sv/kbd_qwerty.xml
@@ -18,20 +18,11 @@
*/
-->
-
-
+ latin:keyLabel="k"
+ latin:popupCharacters="@string/alternates_for_k" />
diff --git a/java/res/xml-xlarge/kbd_qwerty_row2.xml b/java/res/xml-xlarge/kbd_qwerty_row2.xml
index 1b4393ab2..02bd0a6c9 100644
--- a/java/res/xml-xlarge/kbd_qwerty_row2.xml
+++ b/java/res/xml-xlarge/kbd_qwerty_row2.xml
@@ -48,7 +48,8 @@
+ latin:keyLabel="k"
+ latin:popupCharacters="@string/alternates_for_k" />
diff --git a/java/res/xml-xlarge/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-xlarge/kbd_qwerty_rows_scandinavia.xml
index 8c583ba85..fb2034fb7 100644
--- a/java/res/xml-xlarge/kbd_qwerty_rows_scandinavia.xml
+++ b/java/res/xml-xlarge/kbd_qwerty_rows_scandinavia.xml
@@ -95,7 +95,8 @@
+ latin:keyLabel="k"
+ latin:popupCharacters="@string/alternates_for_k" />
diff --git a/java/res/xml-ru-xlarge/kbd_qwerty.xml b/java/res/xml-xlarge/kbd_ru_rows.xml
similarity index 89%
rename from java/res/xml-ru-xlarge/kbd_qwerty.xml
rename to java/res/xml-xlarge/kbd_ru_rows.xml
index b86002a31..008988a84 100644
--- a/java/res/xml-ru-xlarge/kbd_qwerty.xml
+++ b/java/res/xml-xlarge/kbd_ru_rows.xml
@@ -2,7 +2,7 @@
-
@@ -145,4 +137,4 @@
-
+
diff --git a/java/res/xml-sr-xlarge/kbd_qwerty.xml b/java/res/xml-xlarge/kbd_sr_rows.xml
similarity index 89%
rename from java/res/xml-sr-xlarge/kbd_qwerty.xml
rename to java/res/xml-xlarge/kbd_sr_rows.xml
index 48764e7c7..ce9e20817 100644
--- a/java/res/xml-sr-xlarge/kbd_qwerty.xml
+++ b/java/res/xml-xlarge/kbd_sr_rows.xml
@@ -2,7 +2,7 @@
-
-
@@ -155,4 +146,4 @@
-
+
diff --git a/java/res/xml/kbd_azerty_rows.xml b/java/res/xml/kbd_azerty_rows.xml
index 71109ab67..9eeb22ecb 100644
--- a/java/res/xml/kbd_azerty_rows.xml
+++ b/java/res/xml/kbd_azerty_rows.xml
@@ -93,7 +93,8 @@
+ latin:keyLabel="k"
+ latin:popupCharacters="@string/alternates_for_k" />
diff --git a/java/res/xml/kbd_qwerty_row2.xml b/java/res/xml/kbd_qwerty_row2.xml
index dd0035d93..9ed4553c4 100644
--- a/java/res/xml/kbd_qwerty_row2.xml
+++ b/java/res/xml/kbd_qwerty_row2.xml
@@ -46,7 +46,8 @@
+ latin:keyLabel="k"
+ latin:popupCharacters="@string/alternates_for_k" />
+ latin:keyLabel="k"
+ latin:popupCharacters="@string/alternates_for_k" />
diff --git a/java/res/xml/kbd_ru_rows.xml b/java/res/xml/kbd_ru_rows.xml
new file mode 100644
index 000000000..fa2af3be0
--- /dev/null
+++ b/java/res/xml/kbd_ru_rows.xml
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/res/xml/kbd_sr_rows.xml b/java/res/xml/kbd_sr_rows.xml
new file mode 100644
index 000000000..4a5ed1195
--- /dev/null
+++ b/java/res/xml/kbd_sr_rows.xml
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+