Merge "Retain keyboard layout while orientation change"
diff --git a/java/proguard.flags b/java/proguard.flags
index 44416ec..3959500 100644
--- a/java/proguard.flags
+++ b/java/proguard.flags
@@ -31,6 +31,6 @@
   *;
 }
 
--keep class com.android.inputmethod.keyboard.internal.MiniKeyboardBuilder$MiniKeyboardLayoutParams {
+-keep class com.android.inputmethod.keyboard.internal.MiniKeyboardBuilder$MiniKeyboardParams {
   <init>(...);
 }
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png
deleted file mode 100644
index 3e4eff6..0000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_label_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_label_mic.png
new file mode 100644
index 0000000..25702cf
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_bkeyboard_label_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_123_mic.png b/java/res/drawable-hdpi/sym_keyboard_123_mic.png
deleted file mode 100644
index 6f0aec2..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_123_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_123_mic_holo.png b/java/res/drawable-hdpi/sym_keyboard_123_mic_holo.png
deleted file mode 100644
index ed66f75..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_123_mic_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_label_mic.png b/java/res/drawable-hdpi/sym_keyboard_label_mic.png
new file mode 100644
index 0000000..4e0a8ed
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_label_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_label_mic_holo.png b/java/res/drawable-hdpi/sym_keyboard_label_mic_holo.png
new file mode 100644
index 0000000..2280243
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_label_mic_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_123_mic.png b/java/res/drawable-mdpi/sym_bkeyboard_123_mic.png
deleted file mode 100644
index 0749b5f..0000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_123_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_label_mic.png b/java/res/drawable-mdpi/sym_bkeyboard_label_mic.png
new file mode 100644
index 0000000..7f0b135
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_bkeyboard_label_mic.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_123_mic.png b/java/res/drawable-mdpi/sym_keyboard_123_mic.png
deleted file mode 100644
index 35afe08..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_123_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_123_mic_holo.png b/java/res/drawable-mdpi/sym_keyboard_123_mic_holo.png
deleted file mode 100644
index 4814e51..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_123_mic_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_label_mic.png b/java/res/drawable-mdpi/sym_keyboard_label_mic.png
new file mode 100644
index 0000000..a354d53
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_label_mic.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_label_mic_holo.png b/java/res/drawable-mdpi/sym_keyboard_label_mic_holo.png
new file mode 100644
index 0000000..d51adbe
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_label_mic_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_123_mic.png b/java/res/drawable-xhdpi/sym_bkeyboard_123_mic.png
deleted file mode 100644
index 0aefaa1..0000000
--- a/java/res/drawable-xhdpi/sym_bkeyboard_123_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_label_mic.png b/java/res/drawable-xhdpi/sym_bkeyboard_label_mic.png
new file mode 100644
index 0000000..9bd1d65
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_label_mic.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_123_mic.png b/java/res/drawable-xhdpi/sym_keyboard_123_mic.png
deleted file mode 100644
index bcb0979..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_123_mic.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_123_mic_holo.png b/java/res/drawable-xhdpi/sym_keyboard_123_mic_holo.png
deleted file mode 100644
index 0c75058..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_123_mic_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_label_mic.png b/java/res/drawable-xhdpi/sym_keyboard_label_mic.png
new file mode 100644
index 0000000..49810a0
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_label_mic.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_label_mic_holo.png b/java/res/drawable-xhdpi/sym_keyboard_label_mic_holo.png
new file mode 100644
index 0000000..a7d3eaa
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_label_mic_holo.png
Binary files differ
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml
index 239c800..70369ed 100644
--- a/java/res/values-af/strings.xml
+++ b/java/res/values-af/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android-sleutelbord"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android-sleutelbordinstellings"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Invoeropsies"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibreer met sleuteldruk"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Klank met sleuteldruk"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Opspring by druk van sleutel"</string>
@@ -58,9 +60,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Wys in portretmodus"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Versteek altyd"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Wys instellingsleutel"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Outomaties"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Wys altyd"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Versteek altyd"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Outokorrigering"</string>
     <!-- outdated translation 6881047311475758267 -->     <string name="auto_correction_summary" msgid="5625751551134658006">"Korrigeer outomaties die vorige woord"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Af"</string>
diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml
index 5479304..862b338 100644
--- a/java/res/values-am/strings.xml
+++ b/java/res/values-am/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"የAndroid ቁልፍሰሌዳ"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"የAndroid ቁልፍሰሌዳ ቅንብሮች"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"ግቤት አማራጮች"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"በቁልፍመጫንጊዜ አንዝር"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"በቁልፍ መጫን ላይ የሚወጣ ድምፅ"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"ቁልፍ ጫን ላይ ብቅ ባይ"</string>
@@ -58,9 +60,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"በቁመት ሁነታ አሳይ"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"ሁልጊዜ ደብቅ"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"የቅንብሮች ቁልፍ አሳይ"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"ራስ ሰር"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"ሁልጊዜ አሳይ"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"ሁልጊዜ ደብቅ"</string>
     <string name="auto_correction" msgid="4979925752001319458">"በራስ ማስተካከል"</string>
     <!-- outdated translation 6881047311475758267 -->     <string name="auto_correction_summary" msgid="5625751551134658006">"የቀደመውን ቃል በራስሰር አስተካክል"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ውጪ"</string>
diff --git a/java/res/values-ar/donottranslate-altchars.xml b/java/res/values-ar/donottranslate-altchars.xml
index 9706665..0e4f265 100644
--- a/java/res/values-ar/donottranslate-altchars.xml
+++ b/java/res/values-ar/donottranslate-altchars.xml
@@ -61,10 +61,10 @@
     <string name="keylabel_for_symbols_percent">\u066a</string>
     <string name="alternates_for_comma">,</string>
     <string name="alternates_for_f1">,</string>
-    <!-- @icon/5 is iconSettingsKey -->
-    <string name="alternates_for_f1_settings">\\,,\@icon/5|\@integer/key_settings</string>
-    <!-- @icon/10 is iconTabKey -->
-    <string name="alternates_for_f1_navigate">\\,,\@icon/10|\@integer/key_tab</string>
+    <!-- @icon/3 is iconSettingsKey -->
+    <string name="alternates_for_f1_settings">\\,,\@icon/3|\@integer/key_settings</string>
+    <!-- @icon/7 is iconTabKey -->
+    <string name="alternates_for_f1_navigate">\\,,\@icon/7|\@integer/key_tab</string>
     <string name="alternates_for_symbols_question">\?,¿</string>
     <string name="alternates_for_symbols_semicolon">;</string>
     <string name="alternates_for_symbols_percent">%,‰</string>
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index 935dd2b..49edcb2 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"لوحة مفاتيح Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"إعدادات لوحة مفاتيح Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"خيارات الإرسال"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"اهتزاز عند الضغط على مفتاح"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"صوت عند الضغط على مفتاح"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"انبثاق عند الضغط على المفاتيح"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"عرض في وضع رأسي"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"إخفاء دومًا"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"عرض مفتاح الإعدادات"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"تلقائي"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"إظهار بشكل دائم"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"إخفاء دومًا"</string>
     <string name="auto_correction" msgid="4979925752001319458">"التصحيح التلقائي"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"تؤدي المسافة والترقيم إلى تصحيح الكلمات المكتوبة بشكل غير صحيح"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"إيقاف"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"ميكروفون على لوحة مفاتيح الرموز"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"الإدخال الصوتي مُعطل"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"تحديد طريقة الإرسال"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"تهيئة طرق الإدخال"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"لغات الإدخال"</string>
     <string name="select_language" msgid="2573265881207142437">"تحديد لغات الإدخال"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← المس مرة أخرى للحفظ"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"المس لتصحيح الكلمات"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"المس الكلمات التي تم إدخالها لتصحيحها، وذلك فقط عندما تكون الاقتراحات مرئية."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"مظهر لوحة المفاتيح"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"الألمانية (QWERTY)"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"الإنجليزية (المملكة المتحدة)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"الإنجليزية (الولايات المتحدة)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"وضع دراسة سهولة الاستخدام"</string>
 </resources>
diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml
index 851b05b..9e6aa2d 100644
--- a/java/res/values-bg/strings.xml
+++ b/java/res/values-bg/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Клавиатура на Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Настройки на клавиатурата на Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Опции за въвеждане"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Да вибрира при натискане на клавиш"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Звук при натискане на клавиш"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Изскачащ прозорец при натискане на клавиш"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Показване с вертикална ориентация"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Винаги да се скрива"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Показване на клавиша за настройки"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Автоматично"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Да се показва винаги"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Да се скрива винаги"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Автоко"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Клавишът за интервал и пунктуация авт. поправя сгрешени думи"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Изкл."</string>
diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml
index d2a8353..a1c1e80 100644
--- a/java/res/values-ca/strings.xml
+++ b/java/res/values-ca/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Teclat Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Configuració del teclat d\'Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opcions d\'entrada"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibra en prémer tecles"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"So en prémer una tecla"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Finestra emergent en prémer un botó"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Mostra en mode vertical"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Amaga sempre"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Mostra la tecla de configuració"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automàtic"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostra sempre"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Amaga sempre"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Correcció automàtica"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Barra espaiadora i punt. correg. autom. paraules mal escrites"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desactiva"</string>
diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index 79c66b8..8660bd1 100644
--- a/java/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Klávesnice Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Nastavení klávesnice Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti zadávání textu a dat"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Při stisku klávesy vibrovat"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Zvuk při stisku klávesy"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Zobrazit znaky při stisku klávesy"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Zobrazit v režimu na výšku"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Vždy skrývat"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Zobrazit klávesu Nastavení"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automaticky"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vždy zobrazovat"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Vždy skrývat"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Automatické opravy"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Stisknutím mezerníku a interpunkce se automaticky opravují chybně napsaná slova"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Vypnuto"</string>
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index a4ac4e1..6972509 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android-tastatur"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Indstillinger for Android-tastatur"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Indstillinger for input"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibration ved tastetryk"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Lyd ved tastetryk"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Popup ved tastetryk"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Vis i portrættilstand"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Skjul altid"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Vis indstillingsnøgle"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatisk"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vis altid"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Skjul altid"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Automatisk retning"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Mellemrumstast og tegnsætning retter automatisk forkerte ord"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Fra"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. på symboltastatur"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Stemmeinput deaktiveret"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Vælg inputmetode"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Konfigurer inputmetoder"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Inputsprog"</string>
     <string name="select_language" msgid="2573265881207142437">"Vælg inputsprog"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tryk igen for at gemme"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Tryk for at rette ord"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Tryk på de indtastede ord for at rette dem. Kun når der er synlige forslag."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturtema"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Tysk QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannien)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tilstand for brugsstudie"</string>
 </resources>
diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml
index b2d5e92..0e987c3 100644
--- a/java/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android-Tastatur"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android-Tastatureinstellungen"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Eingabeoptionen"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrieren b. Tastendruck"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Ton bei Tastendruck"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop-up bei Tastendruck"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Im Hochformat anzeigen"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Immer ausblenden"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Einstellungstaste anz."</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatisch"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Immer anzeigen"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Immer ausblenden"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Autokorrektur"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Korrektur fehlerhafter Wörter durch Leertaste und Satzzeichen"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Aus"</string>
diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml
index 60a7d86..f452c67 100644
--- a/java/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Πληκτρολόγιο Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Ρυθμίσεις πληκτρολογίου Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Επιλογές εισόδου"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Δόνηση κατά το πάτημα πλήκτρων"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Ήχος κατά το πάτημα πλήκτρων"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Εμφάνιση με το πάτημα πλήκτρου"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Εμφάνιση σε λειτουργία κατακόρυφης προβολής"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Πάντα απόκρυψη"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Εμφάνιση πλήκτρου ρυθμίσεων"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Αυτόματο"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Να εμφανίζεται πάντα"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Πάντα απόκρυψη"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Αυτόματη διόρθωση"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Τα πλήκτρα διαστήματος και στίξης διορθ. αυτόμ. λάθος λέξεις"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Απενεργοποίηση"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Μικ. στο πληκ. συμβ."</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Απεν. φωνητ. είσοδος"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Επιλογή μεθόδου εισόδου"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Διαμόρφωση μεθόδων εισαγωγής"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Γλώσσες εισόδου"</string>
     <string name="select_language" msgid="2573265881207142437">"Επιλογή γλωσσών εισαγωγής"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Αγγίξτε ξανά για αποθήκευση"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Αγγίξτε για διόρθωση λέξεων"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Αγγίξτε τις λέξες για να τις διορθώσετε, μόνο όταν οι προτάσεις είναι ορατές"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Θέμα πληκτρολογίου"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Γερμανικά QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Αγγλικά (ΗΒ)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Αγγλικά (ΗΠΑ)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Λειτουργία μελέτης χρηστικότητας"</string>
 </resources>
diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml
index a4930ea..f31158d 100644
--- a/java/res/values-en-rGB/strings.xml
+++ b/java/res/values-en-rGB/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android keyboard"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android keyboard settings"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Input options"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrate on key-press"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Sound on key-press"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop-up on key press"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Show on portrait mode"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Always hide"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Show settings key"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatic"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Always show"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Always hide"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Auto-correction"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Spacebar and punctuation correct mistyped words automatically"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Off"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic on symbols keyboard"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Voice input is disabled"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Select input method"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Configure input methods"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Input languages"</string>
     <string name="select_language" msgid="2573265881207142437">"Select input languages"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Touch again to save"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Touch to correct words"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Touch words entered to correct them, only when suggestions are visible"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Keyboard theme"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"German QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"English (UK)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"English (US)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Usability study mode"</string>
 </resources>
diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index 30e7aa6..f66f46c 100644
--- a/java/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Teclado de Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Configuración de teclado de Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opciones de entrada"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar al pulsar teclas"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Sonar al pulsar las teclas"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Aviso emergente al pulsar tecla"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Mostrar en modo retrato"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ocultar siempre"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Mostrar tecla de configuración"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automático"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostrar siempre"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Ocultar siempre"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Corrección automática"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"La barra espaciadora y puntuación insertan automáticamente las palabras corregidas"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desactivado"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micrófono en el teclado de símbolos"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"La entrada por voz está inhabilitada"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Seleccionar método de entrada"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
     <string name="select_language" msgid="2573265881207142437">"Seleccionar idiomas de entrada"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tocar de nuevo para guardar"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Tocar para corregir palabras"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Toca las palabras ingresadas que desees corregir solo cuando las sugerencias estén visibles."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema del teclado"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"QWERTY alemán"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Inglés (Reino Unido)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Inglés (EE.UU.)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudio de usabilidad"</string>
 </resources>
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index 96ef88c..bb996ff 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Teclado de Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Ajustes del teclado de Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opciones introducción texto"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar al pulsar tecla"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Sonido al pulsar tecla"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Popup al pulsar tecla"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Mostrar en modo vertical"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ocultar siempre"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Mostrar tecla de ajustes"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automáticamente"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostrar siempre"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Ocultar siempre"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Autocorrección"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Espacio y punt para corregir errores"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desactivada"</string>
diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml
index 1ac2d41..66971f2 100644
--- a/java/res/values-fa/strings.xml
+++ b/java/res/values-fa/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"صفحه کلید Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"تنظیمات صفحه کلید Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"گزینه های ورودی"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"لرزش با فشار کلید"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"صدا با فشار کلید"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"بازشو با فشار کلید"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"نمایش در حالت عمودی"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"همیشه پنهان شود"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"نمایش کلید تنظیمات"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"خودکار"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"همیشه نمایش"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"همیشه پنهان"</string>
     <string name="auto_correction" msgid="4979925752001319458">"تصحیح خودکار"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"کلید فاصله و علائم نگارشی به صورت خودکار کلماتی را که غلط تایپ شده اند تصحیح می کنند"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"خاموش"</string>
diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml
index 30c03cf..a065da9 100644
--- a/java/res/values-fi/strings.xml
+++ b/java/res/values-fi/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android-näppäimistö"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android-näppäimistön asetukset"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Syöttövalinnat"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Käytä värinää näppäimiä painettaessa"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Toista ääni näppäimiä painettaessa"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Ponnahdusikkuna painalluksella"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Näytä pystysuunnassa"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Piilota aina"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Näytä asetukset-näppäin"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automaattinen"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Näytä aina"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Piilota aina"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Autom. korjaus"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Välilyönnit ja välimerkit korjaavat väärinkirjoitetut sanat automaattisesti"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Älä käytä"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. symbolinäppäim."</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Ääniohjaus on pois käytöstä"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Valitse syöttötapa"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Määritä syöttötavat"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Syöttökielet"</string>
     <string name="select_language" msgid="2573265881207142437">"Valitse syöttökielet"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tallenna koskettamalla uudelleen"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Korjaa sanoja koskettamalla"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Korjaa annetut sanat napauttamalla. (Vain, kun ehdotuksia on näkyvillä.)"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Näppäimistöteema"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"saksa, QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"englanti (UK)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"englanti (USA)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Käytettävyystutkimustila"</string>
 </resources>
diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index bca7e78..e8238ee 100644
--- a/java/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Clavier Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Paramètres du clavier Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Options de saisie"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrer à chaque touche"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Son à chaque touche"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Agrandir les caractères"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Afficher en mode Portrait"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Toujours masquer"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Afficher touche param."</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatique"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Toujours afficher"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Toujours masquer"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Correction auto."</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Corriger autom. orthographe (pression sur barre espace/signes ponctuation)"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Désactiver"</string>
diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml
index a4d8a65..24ecf19 100644
--- a/java/res/values-hr/strings.xml
+++ b/java/res/values-hr/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android tipkovnica"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Postavke tipkovnice za Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opcije ulaza"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibracija pri pritisku na tipku"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Zvuk pri pritisku tipke"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Povećanja na pritisak tipke"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Prikaži u portretnom načinu"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Uvijek sakrij"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Prikaži tipku postavki"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatski"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Uvijek prikaži"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Uvijek sakrij"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Samoispravak"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Razm. i intrp. aut. ispr. kr. rči."</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Isključeno"</string>
diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml
index f3cbc31..be96f3f 100644
--- a/java/res/values-hu/strings.xml
+++ b/java/res/values-hu/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android-billentyűzet"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android billentyűzetbeállítások"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Beviteli beállítások"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Rezgés billentyű megnyomása esetén"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Hangjelzés billentyű megnyomása esetén"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Legyen nagyobb billentyű lenyomásakor"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Megjelenítés álló tájolásban"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Mindig rejtve"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Beállítások billentyű megjelenítése"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatikus"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mindig látszik"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Mindig rejtve"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Automatikus javítás"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Szóköz és központozás automatikusan javítja az elgépelést"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Ki"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. a szimbólumoknál"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hangbevivel KI"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Beviteli mód kiválasztása"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Beviteli módok beállítása"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Beviteli nyelvek"</string>
     <string name="select_language" msgid="2573265881207142437">"Válassza ki a beviteli nyelveket"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Érintse meg újra a mentéshez"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Javítás a szavak megérintésével"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"A beírt szavakat csak akkor javíthatja ki megérintve, ha látszanak javaslatok"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Billentyűzettéma"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Német QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"angol (Egyesült Királyság)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"angol (Egyesült Államok)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Használhatósági teszt"</string>
 </resources>
diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml
index e47fe37..b211ca1 100644
--- a/java/res/values-in/strings.xml
+++ b/java/res/values-in/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Keyboard Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Setelan keyboard Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opsi masukan"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Getar jika tombol ditekan"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Berbunyi jika tombol ditekan"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Muncul saat tombol ditekan"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Tampilkan pada mode potret"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Selalu sembunyikan"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Lihat tombol setelan"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Otomatis"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Selalu tampilkan"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Selalu sembunyikan"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Koreksi otomatis"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Bilah spasi dan tanda baca secara otomatis dikoreksi pada kata yang salah ketik"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Mati"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik pada keyboard simbol"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Masukan suara dinonaktifkan"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Pilih metode masukan"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Konfigurasi metode masukan"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Bahasa masukan"</string>
     <string name="select_language" msgid="2573265881207142437">"Pilih bahasa masukan"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Sentuh sekali lagi untuk menyimpan"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Sentuh untuk memperbaiki kata"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Sentuh kata yang dimasukkan untuk memperbaikinya, hanya saat saran dapat dilihat"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema keyboard"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"QWERTY Jerman"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Inggris (UK)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Inggris (AS)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modus studi daya guna"</string>
 </resources>
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 72e2653..52ef8d6 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Tastiera Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Impostazioni tastiera Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opzioni inserimento"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrazione tasti"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Suono tasti"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Popup sui tasti"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Mostra in modalità verticale"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Nascondi sempre"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Mostra tasto impostaz."</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatico"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostra sempre"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Nascondi sempre"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Correzione automatica"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Barra spaziatrice/punteggiatura correggono parole con errori"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Off"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic su tastiera simboli"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Comandi vocali disatt."</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Seleziona metodo di inserimento"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Configura metodi di immissione"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Lingue comandi"</string>
     <string name="select_language" msgid="2573265881207142437">"Seleziona lingue di immissione"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tocca di nuovo per salvare"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Tocca per correggere"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Tocca le parole inserite per correggerle, solo quando sono visibili i suggerimenti"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema della tastiera"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"QWERTY tedesca"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Inglese (UK)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Inglese (USA)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modalità Studio sull\'usabilità"</string>
 </resources>
diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml
index e431cd0..81c0942 100644
--- a/java/res/values-iw/strings.xml
+++ b/java/res/values-iw/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"מקלדת Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"הגדרות מקלדת של Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"אפשרויות קלט"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"רטט עם לחיצה על מקשים"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"צלילים עם לחיצה על מקשים"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"חלון קופץ עם לחיצה על מקשים"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"הצג בפריסה לאורך"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"הסתר תמיד"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"הצג מקש הגדרות"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"אוטומטי"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"הצג תמיד"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"הסתר תמיד"</string>
     <string name="auto_correction" msgid="4979925752001319458">"תיקון אוטומטי"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"מקש הרווח ופיסוק מתקנים אוטומטית שגיאות הקלדה"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"כבוי"</string>
@@ -63,7 +62,7 @@
     <string name="label_next_key" msgid="362972844525672568">"הבא"</string>
     <string name="label_done_key" msgid="2441578748772529288">"בוצע"</string>
     <string name="label_send_key" msgid="2815056534433717444">"שלח"</string>
-    <string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+    <string name="label_to_alpha_key" msgid="4793983863798817523">"אבג"</string>
     <string name="label_more_key" msgid="3760239494604948502">"עוד"</string>
     <string name="label_pause_key" msgid="181098308428035340">"השהה"</string>
     <string name="label_wait_key" msgid="6402152600878093134">"המתן"</string>
diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index cc6f000..051aed5 100644
--- a/java/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Androidキーボード"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Androidキーボードの設定"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"入力オプション"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"キー操作バイブ"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"キー操作音"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"キー押下時ポップアップ"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"縦向きで表示"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"常に非表示"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"設定キーを表示"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"自動"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"常に表示"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"常に非表示"</string>
     <string name="auto_correction" msgid="4979925752001319458">"自動修正"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"誤入力をスペースまたは句読点キーで修正する"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"OFF"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"記号キーボードのマイク"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"音声入力は無効です"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"入力方法の選択"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"入力方法の設定"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"入力言語"</string>
     <string name="select_language" msgid="2573265881207142437">"入力言語の選択"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"←保存するにはもう一度タップ"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"タップして語句を修正"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"候補が表示されているときのみ、入力した語句をタップして修正する"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"キーボードのテーマ"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"ドイツ語QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"英語(英国)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"英語(米国)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"使いやすさの研究モード"</string>
 </resources>
diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml
index 32d8e5a..a33bc81 100644
--- a/java/res/values-ko/strings.xml
+++ b/java/res/values-ko/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android 키보드"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android 키보드 설정"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"입력 옵션"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"키를 누를 때 진동 발생"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"키를 누를 때 소리 발생"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"키를 누를 때 팝업"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"세로 모드로 표시"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"항상 숨기기"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"설정 키 표시"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"자동"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"항상 표시"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"항상 숨기기"</string>
     <string name="auto_correction" msgid="4979925752001319458">"자동 수정"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"스페이스바와 문장부호 키를 사용하면 오타가 자동으로 교정됩니다."</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"사용 안함"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"기호 키보드의 마이크"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"음성 입력이 사용 중지됨"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"입력 방법 선택"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"입력 방법 설정"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"입력 언어"</string>
     <string name="select_language" msgid="2573265881207142437">"입력 언어 선택"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← 저장하려면 다시 터치하세요."</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"터치하여 단어 수정"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"입력한 단어를 터치하여 수정(추천 단어가 표시되는 경우에만)"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"키보드 테마"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"독일어 QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"영어(영국)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"영어(미국)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"가용성 연구 모드"</string>
 </resources>
diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml
index 15f9c0e..546d82f 100644
--- a/java/res/values-lt/strings.xml
+++ b/java/res/values-lt/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"„Android“ klaviatūra"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"„Android“ klaviatūros nustatymai"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Įvesties parinktys"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibruoti, kai paspaudžiami klavišai"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Klavišo paspaudimo garsas"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Iššoka paspaudus klavišą"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Rodyti stačiuoju režimu"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Visada slėpti"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Rodyti nustatymų raktą"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatinis"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Visada rodyti"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Visada slėpti"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Automatinis taisymas"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Tarpo kl. ir skyr. ženkl. aut. išt. neteis. įv. žodž."</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Išjungta"</string>
diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml
index 78728ea..20cd333 100644
--- a/java/res/values-lv/strings.xml
+++ b/java/res/values-lv/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android tastatūra"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android tastatūras iestatījumi"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Ievades opcijas"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrēt, nospiežot taustiņu"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Skaņa, nospiežot taustiņu"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Nospiežot taustiņu, parādīt uznirstošo izvēlni"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Rādīt portreta režīmā"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Vienmēr slēpt"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Rādīt iestatījumu taustiņu"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automātiski"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vienmēr rādīt"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Vienmēr slēpt"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Automāt. korekcija"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Atstarpes taustiņš un interpunkcija; automātiska kļūdainu vārdu labošana"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Izslēgta"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr.uz simb.tastat."</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Balss iev. atspējota"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Atlasīt ievades metodi"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Ievades metožu konfigurēšana"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Ievades valodas"</string>
     <string name="select_language" msgid="2573265881207142437">"Atlasīt ievades valodas"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Pieskarieties vēlreiz, lai saglabātu"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Pieskarties, lai izlabotu vārdus"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Pieskarties ievadītajiem vārdiem, lai tos labotu (tikai tad, ja tiek rādīti ieteikumi)."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tastatūras motīvs"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Vācu valodas QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Angļu valoda (Lielbritānija)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Angļu valoda (ASV)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Lietojamības izpētes režīms"</string>
 </resources>
diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml
index 907cddb..e801609 100644
--- a/java/res/values-ms/strings.xml
+++ b/java/res/values-ms/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Papan kekunci Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Tetapan papan kekunci Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Pilihan input"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Getar pada tekanan kekunci"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Bunyi pada tekanan kekunci"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop timbul pada tekanan kunci"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Tunjukkan pada mod potret"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Sentiasa sembunyikan"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Tunjukkan kekunci tetapan"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatik"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Sentiasa tunjukkan"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Sentiasa sembunyikan"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Auto Pembetulan"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Bar ruang dan tanda baca secara automatik membetulkan perkataan yang ditaip salah"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Matikan"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. pd kekunci smbl"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Input suara dilmphkn"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Pilih kaedah input"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Konfigurasikan kaedah masukan"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Bahasa input"</string>
     <string name="select_language" msgid="2573265881207142437">"Pilih bahasa input"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Sentuh sekali lagi untuk menyimpan"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Sentuh untuk membetulkan perkataan"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Sentuh perkataan yang dimasukkan untuk membetulkannya, hanya apabila cadangan boleh dilihat"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema papan kekunci"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"QWERTY Bahasa Jerman"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Bahasa Inggeris (UK)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Bahasa Inggeris (AS)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mod kajian kebolehgunaan"</string>
 </resources>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index 8e188ce..c45f54f 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Skjermtastatur"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Innstillinger for skjermtastatur"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Inndataalternativer"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrer ved tastetrykk"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Lyd ved tastetrykk"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Hurtigvindu ved tastetrykk"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Vis i stående modus"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Skjul alltid"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Vis innstillingsnøkkel"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatisk"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vis alltid"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Skjul alltid"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Automatisk retting"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Mellomromstast og skilletegn retter automat. feilstavede ord"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Av"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofon på talltastatur"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Taleinndata er deaktiv."</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Velg inndatametode"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Konfigurer inndatametoder"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Inndataspråk"</string>
     <string name="select_language" msgid="2573265881207142437">"Velg inndataspråk"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"Trykk på nytt for å lagre"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Trykk for å endre ord"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Når forslag er synlige, kan du trykke på ord du har skrevet inn, for å endre dem"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturtema"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Tysk QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannia)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Nyttighetsmodus"</string>
 </resources>
diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index 9c267cb..f168c29 100644
--- a/java/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android-toetsenbord"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Instellingen voor Android-toetsenbord"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Invoeropties"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Trillen bij toetsaanslag"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Geluid bij toetsaanslag"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop-up bij toetsaanslag"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Weergeven in staande modus"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Altijd verbergen"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Instellingscode weergeven"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatisch"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Altijd weergeven"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Altijd verbergen"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Autocorrectie"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Met spatiebalk en interpunctie worden verkeerd gespelde woorden automatisch gecorrigeerd"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Uitgeschakeld"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic op symb.toetsb."</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Spraakinvoer is uit"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Invoermethode selecteren"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Invoermethoden configureren"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Invoertalen"</string>
     <string name="select_language" msgid="2573265881207142437">"Invoertalen selecteren"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Raak nogmaals aan om op te slaan"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Raak aan om woorden te corrigeren"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Ingevoerde woorden aanraken om ze te verbeteren, alleen mogelijk wanneer suggesties zichtbaar zijn"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Toetsenbordthema"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Duits QWERTY-toetsenbord"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Engels (Verenigd Koninkrijk)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Engels (Verenigde Staten)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modus voor gebruiksvriendelijkheidsonderzoek"</string>
 </resources>
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index 616118b..34cea08 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Klawiatura Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Ustawienia klawiatury Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opcje wprowadzania"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Wibracja przy naciśnięciu"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Dźwięk przy naciśnięciu"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Powiększ po naciśnięciu"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Pokaż w trybie pionowym"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Zawsze ukrywaj"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Pokaż klawisz ustawień"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatycznie"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Zawsze pokazuj"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Zawsze ukrywaj"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Autokorekta"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Spacja i znaki przestankowe poprawiają błędnie wpisane słowa"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Wyłącz"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofon na klawiaturze z symbolami"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Wprowadzanie głosowe jest wyłączone"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Wybierz sposób wprowadzania tekstu"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Konfigurowanie metod wprowadzania"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Języki wprowadzania"</string>
     <string name="select_language" msgid="2573265881207142437">"Wybierz języki wprowadzania"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Dotknij ponownie, aby zapisać"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Popraw dotknięte słowo"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Dotykaj wprowadzonych słów, aby je poprawiać tylko wówczas, gdy widoczne są sugestie."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Motyw klawiatury"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Niemiecka QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Angielska (Wielka Brytania)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Angielska (USA)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tryb badania przydatności"</string>
 </resources>
diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index 7735b7b..1ac77a0 100644
--- a/java/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Teclado do Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Definições de teclado do Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opções de introdução"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar ao primir as teclas"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Som ao premir as teclas"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Mostrar popup ao premir tecla"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Mostrar no modo de retrato"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ocultar sempre"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Mostrar tecla das definições"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automático"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostrar sempre"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Ocultar sempre"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Auto correcção"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Correcção automática de palavras mal escritas c/ barra de espaços e pontuação"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desligar"</string>
diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml
index 935cbb9..f7417c2 100644
--- a/java/res/values-pt/strings.xml
+++ b/java/res/values-pt/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Teclado Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Configurações de teclado Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opções de entrada"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar ao tocar a tecla"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Som ao tocar a tecla"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Exibir pop-up ao digitar"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Mostrar em modo retrato"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Sempre ocultar"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Mostrar tecla de config."</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automático"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostrar sempre"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Sempre ocultar"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Autocorreção"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"A barra de espaço e a pontuação corrigem automaticamente palavras com erro de digitação"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desativado"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic. no teclado"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Texto por voz desat."</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Selecionar método de entrada"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
     <string name="select_language" msgid="2573265881207142437">"Selecionar idiomas de entrada"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Toque novamente para salvar"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Tocar para corrigir"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Toque nas palavras digitadas para corrigi-las apenas quando as sugestões estiverem visíveis"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema do teclado"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Alemão QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Inglês (Reino Unido)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Inglês (EUA)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudo de utilização"</string>
 </resources>
diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml
index 35ba376..0bc5b29 100644
--- a/java/res/values-rm/strings.xml
+++ b/java/res/values-rm/strings.xml
@@ -24,6 +24,8 @@
     <string name="english_ime_settings" msgid="6661589557206947774">"Parameters da la tastatura Android"</string>
     <!-- no translation found for english_ime_input_options (3909945612939668554) -->
     <skip />
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar cun smatgar in buttun"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Tun cun smatgar in buttun"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop-up cun smatgar ina tasta"</string>
@@ -64,12 +66,6 @@
     <skip />
     <!-- no translation found for prefs_settings_key (4623341240804046498) -->
     <skip />
-    <!-- no translation found for settings_key_mode_auto_name (2993460277873684680) -->
-    <skip />
-    <!-- no translation found for settings_key_mode_always_show_name (3047567041784760575) -->
-    <skip />
-    <!-- no translation found for settings_key_mode_always_hide_name (7833948046716923994) -->
-    <skip />
     <!-- outdated translation 7911639788808958255 -->     <string name="auto_correction" msgid="4979925752001319458">"Propostas da pleds"</string>
     <!-- outdated translation 6881047311475758267 -->     <string name="auto_correction_summary" msgid="5625751551134658006">"Curreger automaticamain il pled precedent"</string>
     <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml
index 9a048a8..a459a59 100644
--- a/java/res/values-ro/strings.xml
+++ b/java/res/values-ro/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Tastatură Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Setările tastaturii Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opţiuni de introducere text"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrare la apăsarea tastei"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Sunet la apăsarea tastei"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Fereastră pop-up la apăsarea tastei"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Afişaţi în modul Portret"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ascundeţi întotdeauna"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Afişaţi tasta setări"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automat"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Afişaţi întotdeauna"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Ascundeţi întotdeauna"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Autocorecţie"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Corectare automată cuvinte prin bară spaţiu/semne punctuaţie"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Dezactivată"</string>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index 509348b..8ed8132 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Клавиатура Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Настройки клавиатуры Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Параметры ввода"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Виброотклик клавиш"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Звук клавиш"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Увеличение нажатых"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Показать вертикально"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Всегда скрывать"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Кнопка настроек"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Автоматически"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Всегда показывать"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Всегда скрывать"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Автоисправление"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Автоматическое исправление опечаток при вводе знака препинания или пробела"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Откл."</string>
diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml
index 1486e01..6a9a206 100644
--- a/java/res/values-sk/strings.xml
+++ b/java/res/values-sk/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Klávesnica Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Nastavenia klávesnice Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti zadávania textu a údajov"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Pri stlačení klávesu vibrovať"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Zvuk pri stlačení klávesu"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Zobraziť znaky pri stlačení klávesu"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Zobraziť v režime na výšku"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Vždy skrývať"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Zobraziť kláves Nastavenia"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automaticky"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vždy zobrazovať"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Vždy skrývať"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Automatické opravy"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Stlačením medzerníka a interpunkcie sa aut. opravia chybné slová"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Vypnuté"</string>
diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml
index 6fcd82a..7552046 100644
--- a/java/res/values-sl/strings.xml
+++ b/java/res/values-sl/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Tipkovnica Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Nastavitve tipkovnice Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti vnosa"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibriranje ob pritisku tipke"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Zvok ob pritisku tipke"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pojavno okno ob pritisku tipke"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Pokaži v pokončnem načinu"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Vedno skrij"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Pokaži tipko za nastavitve"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Samodejno"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vedno pokaži"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Vedno skrij"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Samodejni popravek"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Preslednica in ločila samodejno popravijo napačno vtipkane besede"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Izklopljeno"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. na tipk. s sim."</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Glas. vnos je onem."</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Izberite način vnosa"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Nastavitev načinov vnosa"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Jeziki vnosa"</string>
     <string name="select_language" msgid="2573265881207142437">"Izberite jezike vnosa"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Še enkrat se dotaknite, da shranite"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Dotaknite se besed in jih popravite"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Dotaknite se vnesenih besed in jih popravite, samo ko so predlogi vidni"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema tipkovnice"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Nemška QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"angl. (bri.)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"angl. (ZDA)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Način za preučevanje uporabnosti"</string>
 </resources>
diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml
index 74c6e3e..8243f0c 100644
--- a/java/res/values-sr/strings.xml
+++ b/java/res/values-sr/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android тастатура"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Подешавања Android тастатуре"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Опције уноса"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Вибрирај на притисак тастера"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Звук на притисак тастера"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Искачући прозор приликом притиска тастера"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Прикажи у усправном режиму"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Увек сакриј"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Прикажи тастер за подешавања"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Аутоматски"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Увек прикажи"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Увек сакриј"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Аутоматско исправљање"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Размак и интерпункција аутоматски исправљају грешке у куцању"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Искључи"</string>
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index c259ab9..10647e4 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Androids tangentbord"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Inställningar för Androids tangentbord"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Inmatningsalternativ"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrera vid tangenttryck"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Knappljud"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Popup vid knapptryck"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Visa stående"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Dölj alltid"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Visa inställningsknapp"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatiskt"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Visa alltid"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Dölj alltid"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Autokorrigering"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Blanksteg/skiljetecken rättar felstavning"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Av"</string>
diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml
index 7d469da..369534f 100644
--- a/java/res/values-sw/strings.xml
+++ b/java/res/values-sw/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Kibodi ya Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Mipangilio ya kibodi ya Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Chaguo za uingizaji"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Tetema unabofya kitufe"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Toa sauti unapobofya kitufe"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Ibuka kitufe kinapobonyezwa"</string>
@@ -58,9 +60,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Onyesha kwenye hali wima"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ficha kila wakati"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Onyesha kitufe cha mipangilio"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Kiotomatiki"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Onyesha kila wakati"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">" Ficha kila mara"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Usahihishaji Kioto"</string>
     <!-- outdated translation 6881047311475758267 -->     <string name="auto_correction_summary" msgid="5625751551134658006">"Sahihisha neno lililotangulia kiotomatiki"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Zima"</string>
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml
index 4c73f39..ade376a 100644
--- a/java/res/values-sw600dp/config.xml
+++ b/java/res/values-sw600dp/config.xml
@@ -20,6 +20,7 @@
 
 <resources>
     <bool name="config_enable_show_settings_key_option">true</bool>
+    <bool name="config_default_show_settings_key">true</bool>
     <bool name="config_enable_show_voice_key_option">false</bool>
     <bool name="config_enable_show_popup_on_keypress_option">false</bool>
     <bool name="config_enable_show_recorrection_option">false</bool>
diff --git a/java/res/values-sw768dp/config.xml b/java/res/values-sw768dp/config.xml
index 2dcf7b8..091d62e 100644
--- a/java/res/values-sw768dp/config.xml
+++ b/java/res/values-sw768dp/config.xml
@@ -20,6 +20,7 @@
 
 <resources>
     <bool name="config_enable_show_settings_key_option">false</bool>
+    <bool name="config_default_show_settings_key">true</bool>
     <bool name="config_enable_show_voice_key_option">false</bool>
     <bool name="config_enable_show_popup_on_keypress_option">false</bool>
     <bool name="config_enable_show_recorrection_option">false</bool>
diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml
index b0e21d1..de7d74e 100644
--- a/java/res/values-th/strings.xml
+++ b/java/res/values-th/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"แป้นพิมพ์ Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"การตั้งค่าแป้นพิมพ์ Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"ตัวเลือกการป้อนข้อมูล"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"สั่นเมื่อกดปุ่ม"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"ส่งเสียงเมื่อกดปุ่ม"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"ป๊อปอัปเมื่อกดแป้น"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"แสดงในโหมดแนวตั้ง"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"ซ่อนทุกครั้ง"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"แสดงแป้นการตั้งค่า"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"อัตโนมัติ"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"แสดงตลอดเวลา"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"ซ่อนตลอดเวลา"</string>
     <string name="auto_correction" msgid="4979925752001319458">"การแก้ไขอัตโนมัติ"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"กดเว้นวรรคและเครื่องหมายจะแก้คำผิดอัตโนมัติ"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ปิด"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"ไมค์บนแป้นพิมพ์สัญลักษณ์"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"ปิดใช้งานป้อนข้อมูลด้วยเสียง"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"เลือกวิธีการป้อนข้อมูล"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"กำหนดค่าวิธีการป้อนข้อมูล"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"ภาษาในการป้อนข้อมูล"</string>
     <string name="select_language" msgid="2573265881207142437">"เลือกภาษาสำหรับการป้อนข้อมูล"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← แตะอีกครั้งเพื่อบันทึก"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"แตะเพื่อแก้ไขคำ"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"แตะคำที่ป้อนไว้เพื่อแก้ไข เฉพาะเมื่อเห็นข้อเสนอแนะเท่านั้น"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"ชุดรูปแบบแป้นพิมพ์"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"QWERTY ภาษาเยอรมัน"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"อังกฤษ (สหราชอาณาจักร)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"อังกฤษ (สหรัฐอเมริกา)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"โหมดศึกษาประโยชน์ในการใช้งาน"</string>
 </resources>
diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml
index 61779ad..482afb8 100644
--- a/java/res/values-tl/strings.xml
+++ b/java/res/values-tl/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android keyboard"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Mga setting ng Android keyboard"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Mga pagpipilian sa input"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Mag-vibrate sa keypress"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Tunog sa keypress"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Popup sa keypress"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Ipakita sa portrait mode"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Palaging itago"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Ipakita ang key ng mga setting"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Awtomatiko"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Palaging ipakita"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Palaging itago"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Awtomatikong pagwasto"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Awto tinatama ng spacebar at bantas ang maling na-type"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Naka-off"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic sa keyboard ng mga simbolo"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hindi pinagana ang voice input"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Pumili ng paraan ng pag-input"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"I-configure ang mga pamamaraan ng pag-input"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Mag-input ng mga wika"</string>
     <string name="select_language" msgid="2573265881207142437">"Pumili ng mga wika ng input"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Pinduting muli upang i-save"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Pindutin upang itama ang mga salita"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Pindutin ang mga inilagay na salita upang iwasto ang mga ito, kapag nakikita lang ang mga suhestiyon"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema ng keyboard"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"German QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Ingles (UK)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Ingles (US)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Study mode ng pagiging kapaki-pakinabang"</string>
 </resources>
diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index 6c67bc0..381a3a5 100644
--- a/java/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android klavyesi"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android klavye ayarları"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Giriş seçenekleri"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Tuşa basıldığında titret"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Tuşa basıldığında ses çıkar"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Tuşa basıldığında pop-up aç"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Dikey modda göster"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Her zaman gizle"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Ayarları göster tuşu"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Otomatik"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Her zaman göster"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Her zaman gizle"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Otomatik düzeltme"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Boşluk çbğ ve nokt işr yanlış yazılan kelimeleri oto düzeltir"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Kapalı"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Simge klavysnd mikrf"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Sesle grş devre dışı"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Giriş yöntemini seç"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Giriş yöntemlerini yapılandır"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Giriş dilleri"</string>
     <string name="select_language" msgid="2573265881207142437">"Giriş dillerini seçin"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Kaydetmek için tekrar dokunun"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Kelimeleri düzeltmek için dokunun"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Yalnızca öneriler görünür olduğunda, düzeltmek için girilen kelimelere dokunun"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Klavye teması"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Almanca QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"İngilizce (İngiltere)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"İngilizce (ABD)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Kullanılabilirlik çalışması modu"</string>
 </resources>
diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml
index 9d089a0..498e4f4 100644
--- a/java/res/values-uk/strings.xml
+++ b/java/res/values-uk/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Клавіатура Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Налашт-ня клавіат. Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Парам. введення"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Вібр при натиску клав."</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Звук при натиску клав."</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Сплив. при нат.клав."</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Показувати в книжковому режимі"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Завжди ховати"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Показ. клав. налашт."</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Автоматично"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Завжди показ."</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Завжди ховати"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Автомат. виправлення"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Пробіл і пунктуація автоматично виправляють слова з помилками"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Вимк."</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Miкр. на симв. клавіат."</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Голос. ввід вимкнено"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Вибрати метод введення"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Налаштувати методи введення"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Мови вводу"</string>
     <string name="select_language" msgid="2573265881207142437">"Вибрати мову введення"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Торкн. ще, щоб збер."</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Торкн., щоб виправ. слова"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Торкніться введених слів, щоб виправити їх, лише коли ввімкнено пропозиції"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Тема клавіатури"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Німецька клавіатура QWERTY"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Англійська (Великобританія)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Англійська (США)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим вивчення зручності у використанні"</string>
 </resources>
diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml
index 3dfcf16..50211d7 100644
--- a/java/res/values-vi/strings.xml
+++ b/java/res/values-vi/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Bàn phím Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Cài đặt bàn phím Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Tùy chọn nhập"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Rung khi nhấn phím"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Âm thanh khi nhấn phím"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Cửa sổ bật lên khi nhấn phím"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Hiển thị trên chế độ khổ đứng"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Luôn ẩn"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Hiển thị phím cài đặt"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Tự động"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Luôn hiển thị"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Luôn ẩn"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Tự động sửa"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"Phím cách và dấu câu tự động sửa từ nhập sai"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Tắt"</string>
@@ -131,8 +130,7 @@
     <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micrô trên bàn phím biểu tượng"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Nhập liệu bằng giọng nói đã bị vô hiệu hóa"</string>
     <string name="selectInputMethod" msgid="315076553378705821">"Chọn phương thức nhập"</string>
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Định cấu hình phương thức nhập"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Ngôn ngữ nhập"</string>
     <string name="select_language" msgid="2573265881207142437">"Chọn ngôn ngữ nhập"</string>
     <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Chạm lại để lưu"</string>
@@ -142,11 +140,8 @@
     <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Chạm để sửa từ"</string>
     <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Chạm các từ đã nhập để sửa, chỉ khi các đề xuất hiển thị"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Chủ đề bàn phím"</string>
-    <!-- no translation found for subtype_de_qwerty (3358900499589259491) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
+    <string name="subtype_de_qwerty" msgid="3358900499589259491">"Bàn phím QWERTY tiếng Đức"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Tiếng Anh (Anh)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Tiếng Anh (Mỹ)"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Chế độ nghiên cứu tính khả dụng"</string>
 </resources>
diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index 8a94cd8..61bfa7e 100644
--- a/java/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android 键盘"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android 键盘设置"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"输入选项"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"按键时振动"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"按键时播放音效"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"按键时显示弹出窗口"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"以纵向模式显示"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"始终隐藏"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"显示设置键"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"自动"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"始终显示"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"始终隐藏"</string>
     <string name="auto_correction" msgid="4979925752001319458">"自动更正"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"空格键或标点自动更正拼写错误的字词"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"关闭"</string>
diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index 38d9a2f..6921188 100644
--- a/java/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Android 鍵盤"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android 鍵盤設定"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"輸入選項"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"按鍵時震動"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"按鍵時播放音效"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"按鍵時顯示彈出式視窗"</string>
@@ -45,9 +47,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"以垂直模式顯示"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"永遠隱藏"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"顯示設定金鑰"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"自動"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"一律顯示"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"永遠隱藏"</string>
     <string name="auto_correction" msgid="4979925752001319458">"自動修正"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"自動插入空白鍵和標點符號鍵盤,以修正拼字錯誤"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"關閉"</string>
diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml
index de59bcc..b8d9106 100644
--- a/java/res/values-zu/strings.xml
+++ b/java/res/values-zu/strings.xml
@@ -23,6 +23,8 @@
     <string name="english_ime_name" msgid="7252517407088836577">"Ikhibhodi ye-Android"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Izilungiselelo zekhibhodi ye-Android"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"Okukhethwa kukho kokungenayo"</string>
+    <!-- no translation found for spell_checker_service_name (2003013122022285508) -->
+    <skip />
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Dlidlizelisa ngokucindezela inkinobho"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Umsindo wokucindezela ukhiye"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Ugaxekile ngokucindezela ukhiye"</string>
@@ -58,9 +60,6 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Bonisa kwimodi emile"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Fihla njalo"</string>
     <string name="prefs_settings_key" msgid="4623341240804046498">"Bonisa ukhiye wezilungiselelo"</string>
-    <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Okuzenzakalelayo"</string>
-    <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Bonisa njalo"</string>
-    <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Fihla njalo"</string>
     <string name="auto_correction" msgid="4979925752001319458">"Ukulungisa okuzenzakalelayo"</string>
     <!-- outdated translation 6881047311475758267 -->     <string name="auto_correction_summary" msgid="5625751551134658006">"Ngokuzenzakalelayo ilungisa igama elandulele"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Valiwe"</string>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index af7484f..ab52271 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -154,15 +154,14 @@
         <attr name="isRtlKeyboard" format="boolean" />
         <!-- Icon set for key top and key preview. -->
         <attr name="iconShiftKey" format="reference" />
-        <attr name="iconToSymbolKey" format="reference" />
-        <attr name="iconToSymbolKeyWithShortcut" format="reference" />
         <attr name="iconDeleteKey" format="reference" />
         <attr name="iconSettingsKey" format="reference" />
-        <attr name="iconShortcutKey" format="reference" />
         <attr name="iconSpaceKey" format="reference" />
         <attr name="iconReturnKey" format="reference" />
         <attr name="iconSearchKey" format="reference" />
         <attr name="iconTabKey" format="reference" />
+        <attr name="iconShortcutKey" format="reference" />
+        <attr name="iconShortcutForLabel" format="reference" />
         <attr name="iconShiftedShiftKey" format="reference" />
         <attr name="iconPreviewTabKey" format="reference" />
         <attr name="iconPreviewSettingsKey" format="reference" />
@@ -202,32 +201,33 @@
             <flag name="hasPopupHint" value="0x200" />
             <flag name="hasUppercaseLetter" value="0x400" />
             <flag name="hasHintLabel" value="0x800" />
+            <flag name="withIconLeft" value="0x1000" />
+            <flag name="withIconRight" value="0x2000" />
         </attr>
         <!-- The icon to display on the key instead of the label. -->
         <attr name="keyIcon" format="enum">
             <!-- This should be aligned with KeyboardIcons.ICON_* -->
             <enum name="iconShiftKey" value="1" />
-            <enum name="iconToSymbolKey" value="2" />
-            <enum name="iconToSymbolKeyWithShortcut" value="3" />
-            <enum name="iconDeleteKey" value="4" />
-            <enum name="iconSettingsKey" value="5" />
-            <enum name="iconShortcutKey" value="6" />
-            <enum name="iconSpaceKey" value="7" />
-            <enum name="iconReturnKey" value="8" />
-            <enum name="iconSearchKey" value="9" />
-            <enum name="iconTabKey" value="10" />
+            <enum name="iconDeleteKey" value="2" />
+            <enum name="iconSettingsKey" value="3" />
+            <enum name="iconSpaceKey" value="4" />
+            <enum name="iconReturnKey" value="5" />
+            <enum name="iconSearchKey" value="6" />
+            <enum name="iconTabKey" value="7" />
+            <enum name="iconShortcutKey" value="8" />
+            <enum name="iconShortcutForLabel" value="9" />
         </attr>
         <!-- Shift key icon for shifted state -->
         <attr name="keyIconShifted" format="enum">
             <!-- This should be aligned with KeyboardIcons.ICON_SHIFTED_* -->
-            <enum name="iconShiftedShiftKey" value="11" />
+            <enum name="iconShiftedShiftKey" value="10" />
         </attr>
         <!-- The icon to show in the popup preview. -->
         <attr name="keyIconPreview" format="enum">
             <!-- This should be aligned with KeyboardIcons.ICON_PREVIEW_* -->
-            <enum name="iconPreviewTabKey" value="12" />
-            <enum name="iconPreviewSettingsKey" value="13" />
-            <enum name="iconPreviewShortcutKey" value="14" />
+            <enum name="iconPreviewTabKey" value="11" />
+            <enum name="iconPreviewSettingsKey" value="12" />
+            <enum name="iconPreviewShortcutKey" value="13" />
         </attr>
         <!-- The key style to specify a set of key attributes defined by <key_style/> -->
         <attr name="keyStyle" format="string" />
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index ed7e0e5..731f63f 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -20,6 +20,7 @@
 
 <resources>
     <bool name="config_enable_show_settings_key_option">true</bool>
+    <bool name="config_default_show_settings_key">false</bool>
     <bool name="config_enable_show_voice_key_option">true</bool>
     <bool name="config_enable_show_popup_on_keypress_option">true</bool>
     <bool name="config_enable_show_recorrection_option">true</bool>
diff --git a/java/res/values/donottranslate-altchars.xml b/java/res/values/donottranslate-altchars.xml
index 0502650..fbde4b9 100644
--- a/java/res/values/donottranslate-altchars.xml
+++ b/java/res/values/donottranslate-altchars.xml
@@ -82,10 +82,10 @@
     <string name="keylabel_for_symbols_percent">%</string>
     <string name="alternates_for_comma"></string>
     <string name="alternates_for_f1"></string>
-    <!-- @icon/5 is iconSettingsKey -->
-    <string name="alternates_for_f1_settings">\@icon/5|\@integer/key_settings</string>
-    <!-- @icon/10 is iconTabKey -->
-    <string name="alternates_for_f1_navigate">\@icon/10|\@integer/key_tab</string>
+    <!-- @icon/3 is iconSettingsKey -->
+    <string name="alternates_for_f1_settings">\@icon/3|\@integer/key_settings</string>
+    <!-- @icon/7 is iconTabKey -->
+    <string name="alternates_for_f1_navigate">\@icon/7|\@integer/key_tab</string>
     <string name="alternates_for_symbols_question">¿</string>
     <string name="alternates_for_symbols_semicolon"></string>
     <string name="alternates_for_symbols_percent">‰</string>
diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index 7d6021b..0d18d90 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -32,8 +32,11 @@
     magic_space_swapping_symbols | magic_space_stripping_symbols |
             magic_space_neutral_symbols \ non_word_separator_symbols -->
 
-    <!-- Label for ALT modifier key.  Must be short to fit on key! -->
-    <string name="label_alt_key">ALT</string>
+    <!-- Label for "switch to more symbol" modifier key.  Must be short to fit on key! -->
+    <string name="label_to_more_symbol_key">= \\ &lt;</string>
+    <!-- Label for "switch to more symbol" modifier key on tablets.  Must be short to fit on key! -->
+    <string name="label_to_more_symbol_for_tablet_key">\\ ^ [ {</string>
+
     <!-- Label for "Tab" key.  Must be short to fit on key! -->
     <string name="label_tab_key">Tab</string>
     <!-- Label for "switch to phone numeric" key.  Must be short to fit on key! -->
diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml
index ff758dc..23d163c 100644
--- a/java/res/values/keyboard-icons-black.xml
+++ b/java/res/values/keyboard-icons-black.xml
@@ -22,14 +22,14 @@
              sym_bkeyboard_voice_off
           -->
         <item name="iconShiftKey">@drawable/sym_bkeyboard_shift</item>
-        <item name="iconToSymbolKeyWithShortcut">@drawable/sym_bkeyboard_123_mic</item>
         <item name="iconDeleteKey">@drawable/sym_bkeyboard_delete</item>
         <item name="iconSettingsKey">@drawable/sym_bkeyboard_settings</item>
-        <item name="iconShortcutKey">@drawable/sym_bkeyboard_mic</item>
         <item name="iconSpaceKey">@drawable/sym_bkeyboard_space</item>
         <item name="iconReturnKey">@drawable/sym_bkeyboard_return</item>
         <item name="iconSearchKey">@drawable/sym_bkeyboard_search</item>
         <item name="iconTabKey">@drawable/sym_bkeyboard_tab</item>
+        <item name="iconShortcutKey">@drawable/sym_bkeyboard_mic</item>
+        <item name="iconShortcutForLabel">@drawable/sym_bkeyboard_label_mic</item>
         <item name="iconShiftedShiftKey">@drawable/sym_bkeyboard_shift_locked</item>
         <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
         <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_feedback_settings</item>
diff --git a/java/res/values/keyboard-icons-ics.xml b/java/res/values/keyboard-icons-ics.xml
index 62859e3..f619691 100644
--- a/java/res/values/keyboard-icons-ics.xml
+++ b/java/res/values/keyboard-icons-ics.xml
@@ -21,14 +21,14 @@
              sym_keyboard_123_mic_holo
              -->
         <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo</item>
-        <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_mic_holo</item>
         <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo</item>
         <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo</item>
-        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo</item>
         <item name="iconSpaceKey">@drawable/sym_keyboard_space_holo</item>
         <item name="iconReturnKey">@drawable/sym_keyboard_return_holo</item>
         <item name="iconSearchKey">@drawable/sym_keyboard_search</item>
         <item name="iconTabKey">@drawable/sym_keyboard_tab_holo</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo</item>
+        <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic_holo</item>
         <item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked_holo</item>
         <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
         <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_settings_holo</item>
diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml
index 3c28cb7..a1765a4 100644
--- a/java/res/values/keyboard-icons-white.xml
+++ b/java/res/values/keyboard-icons-white.xml
@@ -18,14 +18,14 @@
     <style name="KeyboardIcons">
         <!-- Keyboard icons -->
         <item name="iconShiftKey">@drawable/sym_keyboard_shift</item>
-        <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_mic</item>
         <item name="iconDeleteKey">@drawable/sym_keyboard_delete</item>
         <item name="iconSettingsKey">@drawable/sym_keyboard_settings</item>
-        <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item>
         <item name="iconSpaceKey">@drawable/sym_keyboard_space</item>
         <item name="iconReturnKey">@drawable/sym_keyboard_return</item>
         <item name="iconSearchKey">@drawable/sym_keyboard_search</item>
         <item name="iconTabKey">@drawable/sym_keyboard_tab</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item>
+        <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic</item>
         <item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked</item>
         <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
         <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_feedback_settings</item>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index aaea9ad..ed69fc9 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -121,6 +121,9 @@
     <string name="label_to_alpha_key">ABC</string>
     <!-- Label for "switch to symbols" key.  Must be short to fit on key! [CHAR LIMIT=4] -->
     <string name="label_to_symbol_key">\?123</string>
+    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
+         part because it'll be appended by the code. Must be short to fit on key! [CHAR LIMIT=3] -->
+    <string name="label_to_symbol_with_microphone_key">123</string>
     <!-- Label for Shift modifier key of symbol keyboard.  Must be short to fit on key! [CHAR LIMIT=5] -->
     <string name="label_more_key">More</string>
     <!-- Label for "Pause" key of phone number keyboard.  Must be short to fit on key! [CHAR LIMIT=5] -->
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index b679368..05b6837 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -38,7 +38,7 @@
             <key-style
                 latin:styleName="f2PopupStyle"
                 latin:keyLabelOption="hasPopupHint"
-                latin:popupCharacters="\@icon/5|\@integer/key_settings"
+                latin:popupCharacters="\@icon/3|\@integer/key_settings"
                 latin:parentStyle="functionalKeyStyle" />
         </default>
     </switch>
@@ -105,12 +105,17 @@
         latin:keyLabelOption="fontNormal"
         latin:parentStyle="functionalKeyStyle" />
     <key-style
-        latin:styleName="moreKeyStyle"
+        latin:styleName="toMoreSymbolKeyStyle"
         latin:code="@integer/key_shift"
-        latin:keyLabel="@string/label_more_key"
+        latin:keyLabel="@string/label_to_more_symbol_for_tablet_key"
         latin:keyLabelOption="fontNormal"
-        latin:parentStyle="functionalKeyStyle"
-        latin:isSticky="true" />
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="backFromMoreSymbolKeyStyle"
+        latin:code="@integer/key_shift"
+        latin:keyLabel="@string/label_to_symbol_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle" />
     <key-style
         latin:styleName="comKeyStyle"
         latin:keyLabel="@string/keylabel_for_popular_domain"
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index 7b584c1..0331389 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -76,7 +76,7 @@
     </Row>
     <Row>
         <Key
-            latin:keyStyle="moreKeyStyle"
+            latin:keyStyle="toMoreSymbolKeyStyle"
             latin:keyWidth="11.0%p" />
         <Key
             latin:keyLabel="("
diff --git a/java/res/xml-sw600dp/kbd_phone_shift.xml b/java/res/xml-sw600dp/kbd_phone_shift.xml
index 4839645..2b6936d 100644
--- a/java/res/xml-sw600dp/kbd_phone_shift.xml
+++ b/java/res/xml-sw600dp/kbd_phone_shift.xml
@@ -84,7 +84,7 @@
     </Row>
     <Row>
         <Key
-            latin:keyStyle="moreKeyStyle"
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
             latin:keyWidth="11.00%p" />
         <Key
             latin:keyLabel="("
diff --git a/java/res/xml-sw600dp/kbd_rows_symbols.xml b/java/res/xml-sw600dp/kbd_rows_symbols.xml
index 058c97e..4f6a9bc 100644
--- a/java/res/xml-sw600dp/kbd_rows_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_rows_symbols.xml
@@ -100,7 +100,7 @@
         latin:keyWidth="8.9%p"
     >
         <Key
-            latin:keyStyle="moreKeyStyle"
+            latin:keyStyle="toMoreSymbolKeyStyle"
             latin:keyWidth="10.0%p" />
         <Key
             latin:keyLabel="&lt;"
diff --git a/java/res/xml-sw600dp/kbd_rows_symbols_shift.xml b/java/res/xml-sw600dp/kbd_rows_symbols_shift.xml
index ac4b93f..1dca8c4 100644
--- a/java/res/xml-sw600dp/kbd_rows_symbols_shift.xml
+++ b/java/res/xml-sw600dp/kbd_rows_symbols_shift.xml
@@ -101,7 +101,7 @@
         latin:keyWidth="8.9%p"
     >
         <Key
-            latin:keyStyle="moreKeyStyle"
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
             latin:keyWidth="10.0%p" />
         <Key
             latin:keyLabel="\\" />
diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index 6e4818d..1711c42 100644
--- a/java/res/xml-sw768dp/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
@@ -87,12 +87,17 @@
         latin:keyLabelOption="fontNormal"
         latin:parentStyle="functionalKeyStyle" />
     <key-style
-        latin:styleName="moreKeyStyle"
+        latin:styleName="toMoreSymbolKeyStyle"
         latin:code="@integer/key_shift"
-        latin:keyLabel="@string/label_more_key"
+        latin:keyLabel="@string/label_to_more_symbol_for_tablet_key"
         latin:keyLabelOption="fontNormal"
-        latin:parentStyle="functionalKeyStyle"
-        latin:isSticky="true" />
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="backFromMoreSymbolKeyStyle"
+        latin:code="@integer/key_shift"
+        latin:keyLabel="@string/label_to_symbol_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle" />
     <key-style
         latin:styleName="comKeyStyle"
         latin:keyLabel="@string/keylabel_for_popular_domain"
diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index cf6790f..e55b184 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -54,7 +54,7 @@
     </Row>
     <Row>
         <Key
-            latin:keyStyle="moreKeyStyle"
+            latin:keyStyle="toMoreSymbolKeyStyle"
             latin:keyWidth="11.172%p" />
         <Key
             latin:keyLabel=","
diff --git a/java/res/xml-sw768dp/kbd_phone_shift.xml b/java/res/xml-sw768dp/kbd_phone_shift.xml
index 7f62716..646f0b8 100644
--- a/java/res/xml-sw768dp/kbd_phone_shift.xml
+++ b/java/res/xml-sw768dp/kbd_phone_shift.xml
@@ -58,7 +58,7 @@
     </Row>
     <Row>
         <Key
-            latin:keyStyle="moreKeyStyle"
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
             latin:keyWidth="11.172%p" />
         <Key
             latin:keyLabel=","
diff --git a/java/res/xml-sw768dp/kbd_rows_symbols.xml b/java/res/xml-sw768dp/kbd_rows_symbols.xml
index 2a01fe2..66b9789 100644
--- a/java/res/xml-sw768dp/kbd_rows_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_rows_symbols.xml
@@ -107,7 +107,7 @@
         latin:keyWidth="8.047%p"
     >
         <Key
-            latin:keyStyle="moreKeyStyle"
+            latin:keyStyle="toMoreSymbolKeyStyle"
             latin:keyWidth="13.829%p" />
         <Key
             latin:keyLabel="&lt;"
@@ -146,7 +146,7 @@
             latin:keyLabel="@string/keylabel_for_symbols_question"
             latin:popupCharacters="@string/alternates_for_symbols_question" />
         <Key
-            latin:keyStyle="moreKeyStyle"
+            latin:keyStyle="toMoreSymbolKeyStyle"
             latin:keyXPos="-13.750%p"
             latin:keyWidth="fillBoth" />
     </Row>
diff --git a/java/res/xml-sw768dp/kbd_rows_symbols_shift.xml b/java/res/xml-sw768dp/kbd_rows_symbols_shift.xml
index 5c12082..1f43a0f 100644
--- a/java/res/xml-sw768dp/kbd_rows_symbols_shift.xml
+++ b/java/res/xml-sw768dp/kbd_rows_symbols_shift.xml
@@ -108,7 +108,7 @@
         latin:keyWidth="8.047%p"
     >
         <Key
-            latin:keyStyle="moreKeyStyle"
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
             latin:keyWidth="13.829%p" />
         <Key
             latin:keyLabel="\\" />
@@ -135,7 +135,7 @@
             latin:keyStyle="nonPasswordSymbolKeyStyle"
             latin:keyLabel="¿" />
         <Key
-            latin:keyStyle="moreKeyStyle"
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
             latin:keyXPos="-13.750%p"
             latin:keyWidth="fillBoth" />
     </Row>
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index 5c4bf52..5612251 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -187,7 +187,9 @@
             <key-style
                 latin:styleName="toSymbolKeyStyle"
                 latin:code="@integer/key_switch_alpha_symbol"
-                latin:keyIcon="iconToSymbolKeyWithShortcut"
+                latin:keyIcon="iconShortcutForLabel"
+                latin:keyLabel="@string/label_to_symbol_with_microphone_key"
+                latin:keyLabelOption="withIconRight"
                 latin:parentStyle="functionalKeyStyle" />
         </case>
         <default>
@@ -204,11 +206,15 @@
         latin:keyLabel="@string/label_to_alpha_key"
         latin:parentStyle="functionalKeyStyle" />
     <key-style
-        latin:styleName="altKeyStyle"
+        latin:styleName="toMoreSymbolKeyStyle"
         latin:code="@integer/key_shift"
-        latin:keyLabel="@string/label_alt_key"
-        latin:parentStyle="functionalKeyStyle"
-        latin:isSticky="true" />
+        latin:keyLabel="@string/label_to_more_symbol_key"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="backFromMoreSymbolKeyStyle"
+        latin:code="@integer/key_shift"
+        latin:keyLabel="@string/label_to_symbol_key"
+        latin:parentStyle="functionalKeyStyle" />
     <switch>
         <case
             latin:passwordInput="true"
diff --git a/java/res/xml/kbd_rows_arabic.xml b/java/res/xml/kbd_rows_arabic.xml
index e9de4ad..daa2a65 100644
--- a/java/res/xml/kbd_rows_arabic.xml
+++ b/java/res/xml/kbd_rows_arabic.xml
@@ -42,7 +42,7 @@
         <Key
             latin:keyLabel="ف"
             latin:keyHintLabel="4"
-            latin:popupCharacters="\u06a4,4,٤" />
+            latin:popupCharacters="4,٤,\u06a4" />
         <Key
             latin:keyLabel="غ"
             latin:keyHintLabel="5"
diff --git a/java/res/xml/kbd_rows_symbols.xml b/java/res/xml/kbd_rows_symbols.xml
index a8eeb3b..75e21a0 100644
--- a/java/res/xml/kbd_rows_symbols.xml
+++ b/java/res/xml/kbd_rows_symbols.xml
@@ -95,7 +95,7 @@
         latin:keyWidth="10%p"
     >
         <Key
-            latin:keyStyle="altKeyStyle"
+            latin:keyStyle="toMoreSymbolKeyStyle"
             latin:keyWidth="15%p"
             latin:visualInsetsRight="1%p" />
         <Key
diff --git a/java/res/xml/kbd_rows_symbols_shift.xml b/java/res/xml/kbd_rows_symbols_shift.xml
index 0706cbc..d523415 100644
--- a/java/res/xml/kbd_rows_symbols_shift.xml
+++ b/java/res/xml/kbd_rows_symbols_shift.xml
@@ -91,7 +91,7 @@
         latin:keyWidth="10%p"
     >
         <Key
-            latin:keyStyle="altKeyStyle"
+            latin:keyStyle="backFromMoreSymbolKeyStyle"
             latin:keyWidth="15%p"
             latin:visualInsetsRight="1%p" />
         <Key
diff --git a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
index cf6cd0f..e75559e 100644
--- a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
+++ b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
@@ -16,7 +16,7 @@
 
 package com.android.inputmethod.deprecated.languageswitcher;
 
-import com.android.inputmethod.keyboard.internal.KeyboardParser;
+import com.android.inputmethod.keyboard.internal.KeyboardBuilder;
 import com.android.inputmethod.latin.DictionaryFactory;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.Settings;
@@ -162,7 +162,7 @@
 
         try {
             final String localeStr = locale.toString();
-            final String[] layoutCountryCodes = KeyboardParser.parseKeyboardLocale(
+            final String[] layoutCountryCodes = KeyboardBuilder.parseKeyboardLocale(
                     this, R.xml.kbd_qwerty).split(",", -1);
             if (!TextUtils.isEmpty(localeStr) && layoutCountryCodes.length > 0) {
                 for (String s : layoutCountryCodes) {
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 8bc7e43..4cc0bba 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -28,8 +28,8 @@
 import com.android.inputmethod.keyboard.internal.KeyStyles.KeyStyle;
 import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
 import com.android.inputmethod.keyboard.internal.KeyboardParams;
-import com.android.inputmethod.keyboard.internal.KeyboardParser;
-import com.android.inputmethod.keyboard.internal.KeyboardParser.ParseException;
+import com.android.inputmethod.keyboard.internal.KeyboardBuilder;
+import com.android.inputmethod.keyboard.internal.KeyboardBuilder.ParseException;
 import com.android.inputmethod.keyboard.internal.PopupCharactersParser;
 import com.android.inputmethod.keyboard.internal.Row;
 import com.android.inputmethod.latin.R;
@@ -51,10 +51,10 @@
     /** Hint label to display on the key in conjunction with the label */
     public final CharSequence mHintLabel;
     /** Option of the label */
-    public final int mLabelOption;
-    public static final int LABEL_OPTION_ALIGN_LEFT = 0x01;
-    public static final int LABEL_OPTION_ALIGN_RIGHT = 0x02;
-    public static final int LABEL_OPTION_ALIGN_LEFT_OF_CENTER = 0x08;
+    private final int mLabelOption;
+    private static final int LABEL_OPTION_ALIGN_LEFT = 0x01;
+    private static final int LABEL_OPTION_ALIGN_RIGHT = 0x02;
+    private static final int LABEL_OPTION_ALIGN_LEFT_OF_CENTER = 0x08;
     private static final int LABEL_OPTION_LARGE_LETTER = 0x10;
     private static final int LABEL_OPTION_FONT_NORMAL = 0x20;
     private static final int LABEL_OPTION_FONT_MONO_SPACE = 0x40;
@@ -63,6 +63,8 @@
     private static final int LABEL_OPTION_HAS_POPUP_HINT = 0x200;
     private static final int LABEL_OPTION_HAS_UPPERCASE_LETTER = 0x400;
     private static final int LABEL_OPTION_HAS_HINT_LABEL = 0x800;
+    private static final int LABEL_OPTION_WITH_ICON_LEFT = 0x1000;
+    private static final int LABEL_OPTION_WITH_ICON_RIGHT = 0x2000;
 
     /** Icon to display instead of a label. Icon takes precedence over a label */
     private Drawable mIcon;
@@ -235,14 +237,14 @@
                 R.styleable.Keyboard);
         int keyWidth;
         try {
-            mHeight = KeyboardParser.getDimensionOrFraction(keyboardAttr,
+            mHeight = KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
                     R.styleable.Keyboard_rowHeight,
                     params.mHeight, row.mRowHeight) - params.mVerticalGap;
-            mHorizontalGap = KeyboardParser.getDimensionOrFraction(keyboardAttr,
+            mHorizontalGap = KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
                     R.styleable.Keyboard_horizontalGap,
                     params.mWidth, params.mHorizontalGap);
             mVerticalGap = params.mVerticalGap;
-            keyWidth = KeyboardParser.getDimensionOrFraction(keyboardAttr,
+            keyWidth = KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
                     R.styleable.Keyboard_keyWidth,
                     params.mWidth, row.mDefaultKeyWidth);
         } finally {
@@ -263,7 +265,7 @@
             }
 
             final int keyboardWidth = params.mOccupiedWidth;
-            int keyXPos = KeyboardParser.getDimensionOrFraction(keyAttr,
+            int keyXPos = KeyboardBuilder.getDimensionOrFraction(keyAttr,
                     R.styleable.Keyboard_Key_keyXPos, keyboardWidth, x);
             if (keyXPos < 0) {
                 // If keyXPos is negative, the actual x-coordinate will be k + keyXPos.
@@ -317,9 +319,9 @@
             mEdgeFlags = 0;
 
             final KeyboardIconsSet iconsSet = params.mIconsSet;
-            mVisualInsetsLeft = KeyboardParser.getDimensionOrFraction(keyAttr,
+            mVisualInsetsLeft = KeyboardBuilder.getDimensionOrFraction(keyAttr,
                     R.styleable.Keyboard_Key_visualInsetsLeft, keyboardWidth, 0);
-            mVisualInsetsRight = KeyboardParser.getDimensionOrFraction(keyAttr,
+            mVisualInsetsRight = KeyboardBuilder.getDimensionOrFraction(keyAttr,
                     R.styleable.Keyboard_Key_visualInsetsRight, keyboardWidth, 0);
             mPreviewIcon = iconsSet.getIcon(style.getInt(
                     keyAttr, R.styleable.Keyboard_Key_keyIconPreview,
@@ -384,6 +386,18 @@
         }
     }
 
+    public boolean isAlignLeft() {
+        return (mLabelOption & LABEL_OPTION_ALIGN_LEFT) != 0;
+    }
+
+    public boolean isAlignRight() {
+        return (mLabelOption & LABEL_OPTION_ALIGN_RIGHT) != 0;
+    }
+
+    public boolean isAlignLeftOfCenter() {
+        return (mLabelOption & LABEL_OPTION_ALIGN_LEFT_OF_CENTER) != 0;
+    }
+
     public boolean hasPopupHint() {
         return (mLabelOption & LABEL_OPTION_HAS_POPUP_HINT) != 0;
     }
@@ -396,6 +410,14 @@
         return (mLabelOption & LABEL_OPTION_HAS_HINT_LABEL) != 0;
     }
 
+    public boolean hasLabelWithIconLeft() {
+        return (mLabelOption & LABEL_OPTION_WITH_ICON_LEFT) != 0;
+    }
+
+    public boolean hasLabelWithIconRight() {
+        return (mLabelOption & LABEL_OPTION_WITH_ICON_RIGHT) != 0;
+    }
+
     public Drawable getIcon() {
         return mIcon;
     }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyDetector.java b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
index 53d46a3..0a3acb4 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
@@ -153,7 +153,7 @@
     }
 
     private void getNearbyKeyCodes(final int[] allCodes) {
-        final List<Key> keys = getKeyboard().getKeys();
+        final List<Key> keys = getKeyboard().mKeys;
         final int[] indices = mIndices;
 
         // allCodes[0] should always have the key code even if it is a non-letter key.
@@ -187,7 +187,7 @@
      * @return The nearest key index
      */
     public int getKeyIndexAndNearbyCodes(int x, int y, final int[] allCodes) {
-        final List<Key> keys = getKeyboard().getKeys();
+        final List<Key> keys = getKeyboard().mKeys;
         final int touchX = getTouchX(x);
         final int touchY = getTouchY(y);
 
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 809c949..d5e75d0 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -153,11 +153,6 @@
         return mProximityInfo.getNativeProximityInfo();
     }
 
-    // TODO: Access mKeys directly
-    public List<Key> getKeys() {
-        return mKeys;
-    }
-
     public boolean hasShiftLockKey() {
         return !mShiftLockKeys.isEmpty();
     }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 0fb5109..aab58b5 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -448,7 +448,7 @@
             canvas.translate(-keyDrawX, -keyDrawY);
         } else {
             // Draw all keys.
-            for (final Key key : mKeyboard.getKeys()) {
+            for (final Key key : mKeyboard.mKeys) {
                 final int keyDrawX = key.mX + key.mVisualInsetsLeft + getPaddingLeft();
                 final int keyDrawY = key.mY + getPaddingTop();
                 canvas.translate(keyDrawX, keyDrawY);
@@ -505,6 +505,7 @@
         }
 
         // Draw key label.
+        final Drawable icon = key.getIcon();
         float positionX = centerX;
         if (key.mLabel != null) {
             // Switch the character to uppercase if shift is pressed
@@ -521,16 +522,25 @@
             final float baseline = centerY + labelCharHeight / 2;
 
             // Horizontal label text alignment
-            if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT) != 0) {
+            float labelWidth = 0;
+            if (key.isAlignLeft()) {
                 positionX = (int)params.mKeyLabelHorizontalPadding;
                 paint.setTextAlign(Align.LEFT);
-            } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_RIGHT) != 0) {
+            } else if (key.isAlignRight()) {
                 positionX = keyWidth - (int)params.mKeyLabelHorizontalPadding;
                 paint.setTextAlign(Align.RIGHT);
-            } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT_OF_CENTER) != 0) {
+            } else if (key.isAlignLeftOfCenter()) {
                 // TODO: Parameterise this?
                 positionX = centerX - labelCharWidth * 7 / 4;
                 paint.setTextAlign(Align.LEFT);
+            } else if (key.hasLabelWithIconLeft() && icon != null) {
+                labelWidth = getLabelWidth(label, paint) + icon.getIntrinsicWidth();
+                positionX = centerX + labelWidth / 2;
+                paint.setTextAlign(Align.RIGHT);
+            } else if (key.hasLabelWithIconRight() && icon != null) {
+                labelWidth = getLabelWidth(label, paint) + icon.getIntrinsicWidth();
+                positionX = centerX - labelWidth / 2;
+                paint.setTextAlign(Align.LEFT);
             } else {
                 positionX = centerX;
                 paint.setTextAlign(Align.CENTER);
@@ -552,6 +562,19 @@
             // Turn off drop shadow
             paint.setShadowLayer(0, 0, 0, 0);
 
+            if (icon != null) {
+                final int iconWidth = icon.getIntrinsicWidth();
+                final int iconHeight = icon.getIntrinsicHeight();
+                final int iconY = (keyHeight - iconHeight) / 2;
+                if (key.hasLabelWithIconLeft()) {
+                    final int iconX = (int)(centerX - labelWidth / 2);
+                    drawIcon(canvas, icon, iconX, iconY, iconWidth, iconHeight);
+                } else if (key.hasLabelWithIconRight()) {
+                    final int iconX = (int)(centerX + labelWidth / 2 - iconWidth);
+                    drawIcon(canvas, icon, iconX, iconY, iconWidth, iconHeight);
+                }
+            }
+
             if (debugShowAlign) {
                 final Paint line = new Paint();
                 drawHorizontalLine(canvas, baseline, keyWidth, 0xc0008000, line);
@@ -605,16 +628,15 @@
         }
 
         // Draw key icon.
-        final Drawable icon = key.getIcon();
         if (key.mLabel == null && icon != null) {
             final int iconWidth = icon.getIntrinsicWidth();
             final int iconHeight = icon.getIntrinsicHeight();
             final int iconX, alignX;
             final int iconY = (keyHeight - iconHeight) / 2;
-            if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT) != 0) {
+            if (key.isAlignLeft()) {
                 iconX = (int)params.mKeyLabelHorizontalPadding;
                 alignX = iconX;
-            } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_RIGHT) != 0) {
+            } else if (key.isAlignRight()) {
                 iconX = keyWidth - (int)params.mKeyLabelHorizontalPadding - iconWidth;
                 alignX = iconX + iconWidth;
             } else { // Align center
@@ -694,6 +716,11 @@
         return width;
     }
 
+    private static float getLabelWidth(CharSequence label, Paint paint) {
+        paint.getTextBounds(label.toString(), 0, label.length(), sTextBounds);
+        return sTextBounds.width();
+    }
+
     private static void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width,
             int height) {
         canvas.translate(x, y);
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index 9a13608..3cba529 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -31,8 +31,8 @@
 import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
 
+import com.android.inputmethod.keyboard.internal.KeyboardBuilder;
 import com.android.inputmethod.keyboard.internal.KeyboardParams;
-import com.android.inputmethod.keyboard.internal.KeyboardParser;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.SubtypeSwitcher;
 
@@ -118,7 +118,7 @@
         }
     }
 
-    public static class Builder extends KeyboardParser<LatinKeyboardParams> {
+    public static class Builder extends KeyboardBuilder<LatinKeyboardParams> {
         public Builder(Context context) {
             super(context, new LatinKeyboardParams());
         }
diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
index 7f5339d..08e7d7e 100644
--- a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
@@ -16,12 +16,12 @@
 
 package com.android.inputmethod.keyboard;
 
-import com.android.inputmethod.keyboard.internal.MiniKeyboardBuilder.MiniKeyboardLayoutParams;
+import com.android.inputmethod.keyboard.internal.MiniKeyboardBuilder.MiniKeyboardParams;
 
 public class MiniKeyboard extends Keyboard {
     private final int mDefaultKeyCoordX;
 
-    public MiniKeyboard(MiniKeyboardLayoutParams params) {
+    public MiniKeyboard(MiniKeyboardParams params) {
         super(params);
         mDefaultKeyCoordX = params.getDefaultKeyCoordX() + params.mDefaultKeyWidth / 2;
     }
diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java
index 1ec0dda..84bd44c 100644
--- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java
@@ -37,7 +37,7 @@
 
     @Override
     public int getKeyIndexAndNearbyCodes(int x, int y, final int[] allCodes) {
-        final List<Key> keys = getKeyboard().getKeys();
+        final List<Key> keys = getKeyboard().mKeys;
         final int touchX = getTouchX(x);
         final int touchY = getTouchY(y);
 
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 3d8a9cf..dc2d6e4 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -285,7 +285,7 @@
     public void setKeyDetectorInner(KeyDetector keyDetector) {
         mKeyDetector = keyDetector;
         mKeyboard = keyDetector.getKeyboard();
-        mKeys = mKeyboard.getKeys();
+        mKeys = mKeyboard.mKeys;
         final int keyQuarterWidth = mKeyboard.mMostCommonKeyWidth / 4;
         mKeyQuarterWidthSquared = keyQuarterWidth * keyQuarterWidth;
     }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
index 3f9f359..c0dba41 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
@@ -20,7 +20,7 @@
 import android.content.res.XmlResourceParser;
 import android.util.Log;
 
-import com.android.inputmethod.keyboard.internal.KeyboardParser.ParseException;
+import com.android.inputmethod.keyboard.internal.KeyboardBuilder.ParseException;
 import com.android.inputmethod.latin.R;
 
 import java.util.ArrayList;
@@ -214,7 +214,7 @@
             XmlResourceParser parser) {
         final String styleName = keyStyleAttr.getString(R.styleable.Keyboard_KeyStyle_styleName);
         if (DEBUG) Log.d(TAG, String.format("<%s styleName=%s />",
-                KeyboardParser.TAG_KEY_STYLE, styleName));
+                KeyboardBuilder.TAG_KEY_STYLE, styleName));
         if (mStyles.containsKey(styleName))
             throw new ParseException("duplicate key style declared: " + styleName, parser);
 
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
similarity index 97%
rename from java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
rename to java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
index 42e290f..de04ecd 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
@@ -37,12 +37,11 @@
 
 import java.io.IOException;
 import java.util.Arrays;
-import java.util.List;
 
 /**
- * Parser for BaseKeyboard.
+ * Keyboard Building helper.
  *
- * This class parses Keyboard XML file and fill out keys in Keyboard.
+ * This class parses Keyboard XML file and eventually build a Keyboard.
  * The Keyboard XML file looks like:
  * <pre>
  *   &gt;!-- xml/keyboard.xml --&lt;
@@ -108,8 +107,8 @@
  * </pre>
  */
 
-public class KeyboardParser<KP extends KeyboardParams> {
-    private static final String TAG = KeyboardParser.class.getSimpleName();
+public class KeyboardBuilder<KP extends KeyboardParams> {
+    private static final String TAG = KeyboardBuilder.class.getSimpleName();
     private static final boolean DEBUG = false;
 
     // Keyboard XML Tags
@@ -136,7 +135,7 @@
     private Key mRightEdgeKey = null;
     private final KeyStyles mKeyStyles = new KeyStyles();
 
-    public KeyboardParser(Context context, KP params) {
+    public KeyboardBuilder(Context context, KP params) {
         mContext = context;
         final Resources res = context.getResources();
         mResources = res;
@@ -150,7 +149,7 @@
         mParams.GRID_HEIGHT = res.getInteger(R.integer.config_keyboard_grid_height);
     }
 
-    public KeyboardParser<KP> load(KeyboardId id) {
+    public KeyboardBuilder<KP> load(KeyboardId id) {
         mParams.mId = id;
         try {
             parseKeyboard(id.getXmlId());
@@ -253,10 +252,12 @@
             mParams.mVerticalGap = getDimensionOrFraction(keyboardAttr,
                     R.styleable.Keyboard_verticalGap, height, 0);
 
-            mParams.mIsRtlKeyboard = keyboardAttr.getBoolean(R.styleable.Keyboard_isRtlKeyboard, false);
+            mParams.mIsRtlKeyboard = keyboardAttr.getBoolean(
+                    R.styleable.Keyboard_isRtlKeyboard, false);
             mParams.mPopupKeyboardResId = keyboardAttr.getResourceId(
                     R.styleable.Keyboard_popupKeyboardTemplate, 0);
-            mParams.mMaxPopupColumn = keyAttr.getInt(R.styleable.Keyboard_Key_maxPopupKeyboardColumn, 5);
+            mParams.mMaxPopupColumn = keyAttr.getInt(
+                    R.styleable.Keyboard_Key_maxPopupKeyboardColumn, 5);
 
             mParams.mIconsSet.loadIcons(keyboardAttr);
         } finally {
@@ -389,7 +390,7 @@
 
             final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
                     R.styleable.Keyboard_Key);
-            int keyXPos = KeyboardParser.getDimensionOrFraction(keyAttr,
+            int keyXPos = KeyboardBuilder.getDimensionOrFraction(keyAttr,
                     R.styleable.Keyboard_Key_keyXPos, keyboardWidth, mCurrentX);
             if (keyXPos < 0) {
                 // If keyXPos is negative, the actual x-coordinate will be display_width + keyXPos.
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
index ed4608b..2d8b7bf 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
@@ -30,23 +30,22 @@
 
     // This should be aligned with Keyboard.keyIcon enum.
     private static final int ICON_SHIFT_KEY = 1;
-    private static final int ICON_TO_SYMBOL_KEY = 2;
-    private static final int ICON_TO_SYMBOL_KEY_WITH_SHORTCUT = 3;
-    private static final int ICON_DELETE_KEY = 4;
-    private static final int ICON_SETTINGS_KEY = 5; // This is also represented as "@icon/5" in xml.
-    private static final int ICON_SHORTCUT_KEY = 6;
-    private static final int ICON_SPACE_KEY = 7;
-    private static final int ICON_RETURN_KEY = 8;
-    private static final int ICON_SEARCH_KEY = 9;
-    private static final int ICON_TAB_KEY = 10;
+    private static final int ICON_DELETE_KEY = 2;
+    private static final int ICON_SETTINGS_KEY = 3; // This is also represented as "@icon/3" in XML.
+    private static final int ICON_SPACE_KEY = 4;
+    private static final int ICON_RETURN_KEY = 5;
+    private static final int ICON_SEARCH_KEY = 6;
+    private static final int ICON_TAB_KEY = 7; // This is also represented as "@icon/7" in XML.
+    private static final int ICON_SHORTCUT_KEY = 8;
+    private static final int ICON_SHORTCUT_FOR_LABEL = 9;
     // This should be aligned with Keyboard.keyIconShifted enum.
-    private static final int ICON_SHIFTED_SHIFT_KEY = 11;
+    private static final int ICON_SHIFTED_SHIFT_KEY = 10;
     // This should be aligned with Keyboard.keyIconPreview enum.
-    private static final int ICON_PREVIEW_TAB_KEY = 12;
-    private static final int ICON_PREVIEW_SETTINGS_KEY = 13;
-    private static final int ICON_PREVIEW_SHORTCUT_KEY = 14;
+    private static final int ICON_PREVIEW_TAB_KEY = 11;
+    private static final int ICON_PREVIEW_SETTINGS_KEY = 12;
+    private static final int ICON_PREVIEW_SHORTCUT_KEY = 13;
 
-    private static final int ICON_LAST = 14;
+    private static final int ICON_LAST = 13;
 
     private final Drawable mIcons[] = new Drawable[ICON_LAST + 1];
 
@@ -54,16 +53,10 @@
         switch (attrIndex) {
         case R.styleable.Keyboard_iconShiftKey:
             return ICON_SHIFT_KEY;
-        case R.styleable.Keyboard_iconToSymbolKey:
-            return ICON_TO_SYMBOL_KEY;
-        case R.styleable.Keyboard_iconToSymbolKeyWithShortcut:
-            return ICON_TO_SYMBOL_KEY_WITH_SHORTCUT;
         case R.styleable.Keyboard_iconDeleteKey:
             return ICON_DELETE_KEY;
         case R.styleable.Keyboard_iconSettingsKey:
             return ICON_SETTINGS_KEY;
-        case R.styleable.Keyboard_iconShortcutKey:
-            return ICON_SHORTCUT_KEY;
         case R.styleable.Keyboard_iconSpaceKey:
             return ICON_SPACE_KEY;
         case R.styleable.Keyboard_iconReturnKey:
@@ -72,6 +65,10 @@
             return ICON_SEARCH_KEY;
         case R.styleable.Keyboard_iconTabKey:
             return ICON_TAB_KEY;
+        case R.styleable.Keyboard_iconShortcutKey:
+            return ICON_SHORTCUT_KEY;
+        case R.styleable.Keyboard_iconShortcutForLabel:
+            return ICON_SHORTCUT_FOR_LABEL;
         case R.styleable.Keyboard_iconShiftedShiftKey:
             return ICON_SHIFTED_SHIFT_KEY;
         case R.styleable.Keyboard_iconPreviewTabKey:
diff --git a/java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java
index bad7a17..31a291c 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java
@@ -26,21 +26,21 @@
 import com.android.inputmethod.latin.R;
 
 public class MiniKeyboardBuilder extends
-        KeyboardParser<MiniKeyboardBuilder.MiniKeyboardLayoutParams> {
+        KeyboardBuilder<MiniKeyboardBuilder.MiniKeyboardParams> {
     private final CharSequence[] mPopupCharacters;
 
-    public static class MiniKeyboardLayoutParams extends KeyboardParams {
+    public static class MiniKeyboardParams extends KeyboardParams {
         /* package */ int mTopRowAdjustment;
         public int mNumRows;
         public int mNumColumns;
         public int mLeftKeys;
         public int mRightKeys; // includes default key.
 
-        public MiniKeyboardLayoutParams() {
+        public MiniKeyboardParams() {
             super();
         }
 
-        /* package for test */ MiniKeyboardLayoutParams(int numKeys, int maxColumns, int keyWidth,
+        /* package for test */ MiniKeyboardParams(int numKeys, int maxColumns, int keyWidth,
                 int rowHeight, int coordXInParent, int parentKeyboardWidth) {
             super();
             setParameters(
@@ -194,7 +194,7 @@
 
     public MiniKeyboardBuilder(KeyboardView view, int xmlId, Key parentKey,
             Keyboard parentKeyboard) {
-        super(view.getContext(), new MiniKeyboardLayoutParams());
+        super(view.getContext(), new MiniKeyboardParams());
         load(parentKeyboard.mId.cloneWithNewXml(mResources.getResourceEntryName(xmlId), xmlId));
 
         // HACK: Current mini keyboard design totally relies on the 9-patch padding about horizontal
@@ -246,7 +246,7 @@
 
     @Override
     public MiniKeyboard build() {
-        final MiniKeyboardLayoutParams params = mParams;
+        final MiniKeyboardParams params = mParams;
         for (int n = 0; n < mPopupCharacters.length; n++) {
             final CharSequence label = mPopupCharacters[n];
             final int row = n / params.mNumColumns;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/Row.java b/java/src/com/android/inputmethod/keyboard/internal/Row.java
index 9299cc2..d53fe12 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/Row.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/Row.java
@@ -40,9 +40,9 @@
         final int keyboardHeight = params.mHeight;
         TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser),
                 R.styleable.Keyboard);
-        mDefaultKeyWidth = KeyboardParser.getDimensionOrFraction(a,
+        mDefaultKeyWidth = KeyboardBuilder.getDimensionOrFraction(a,
                 R.styleable.Keyboard_keyWidth, keyboardWidth, params.mDefaultKeyWidth);
-        mRowHeight = KeyboardParser.getDimensionOrFraction(a,
+        mRowHeight = KeyboardBuilder.getDimensionOrFraction(a,
                 R.styleable.Keyboard_rowHeight, keyboardHeight, params.mDefaultRowHeight);
         a.recycle();
     }
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index 41b577c..1c75994 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -20,8 +20,10 @@
 import android.content.Context;
 import android.content.res.AssetFileDescriptor;
 import android.content.res.Resources;
+import android.database.Cursor;
 import android.net.Uri;
 import android.text.TextUtils;
+import android.util.Log;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -29,7 +31,8 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 
@@ -43,6 +46,8 @@
      */
     static final int FILE_READ_BUFFER_SIZE = 1024;
 
+    private static final String DICTIONARY_PROJECTION[] = { "id" };
+
     // Prevents this class to be accidentally instantiated.
     private BinaryDictionaryFileDumper() {
     }
@@ -75,6 +80,7 @@
     /**
      * Return for a given locale the provider URI to query to get the dictionary.
      */
+    // TODO: remove this
     public static Uri getProviderUri(Locale locale) {
         return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
                 .authority(BinaryDictionary.DICTIONARY_PACK_AUTHORITY).appendPath(
@@ -82,6 +88,40 @@
     }
 
     /**
+     * Return for a given locale or dictionary id the provider URI to get the dictionary.
+     */
+    private static Uri getProviderUri(String path) {
+        return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
+                .authority(BinaryDictionary.DICTIONARY_PACK_AUTHORITY).appendPath(
+                        path).build();
+    }
+
+    /**
+     * Queries a content provider for the list of dictionaries for a specific locale
+     * available to copy into Latin IME.
+     */
+    private static List<String> getDictIdList(final Locale locale, final Context context) {
+        final ContentResolver resolver = context.getContentResolver();
+        final Uri dictionaryPackUri = getProviderUri(locale);
+
+        final Cursor c = resolver.query(dictionaryPackUri, DICTIONARY_PROJECTION, null, null, null);
+        if (null == c) return Collections.<String>emptyList();
+        if (c.getCount() <= 0 || !c.moveToFirst()) {
+            c.close();
+            return Collections.<String>emptyList();
+        }
+
+        final List<String> list = new ArrayList<String>();
+        do {
+            final String id = c.getString(0);
+            if (TextUtils.isEmpty(id)) continue;
+            list.add(id);
+        } while (c.moveToNext());
+        c.close();
+        return list;
+    }
+
+    /**
      * Queries a content provider for dictionary data for some locale and returns the file addresses
      *
      * This will query a content provider for dictionary data for a given locale, and return
@@ -95,20 +135,26 @@
      * @throw FileNotFoundException if the provider returns non-existent data.
      * @throw IOException if the provider-returned data could not be read.
      */
-    public static List<AssetFileAddress> getDictSetFromContentProvider(Locale locale,
-            Context context) throws FileNotFoundException, IOException {
+    public static List<AssetFileAddress> getDictSetFromContentProvider(final Locale locale,
+            final Context context) throws FileNotFoundException, IOException {
         // TODO: check whether the dictionary is the same or not and if it is, return the cached
         // file.
         // TODO: This should be able to read a number of files from the dictionary pack, copy
         // them all and return them.
         final ContentResolver resolver = context.getContentResolver();
-        final Uri dictionaryPackUri = getProviderUri(locale);
-        final AssetFileDescriptor afd = resolver.openAssetFileDescriptor(dictionaryPackUri, "r");
-        if (null == afd) return null;
-        final String fileName =
-                copyFileTo(afd.createInputStream(), getCacheFileNameForLocale(locale, context));
-        afd.close();
-        return Arrays.asList(AssetFileAddress.makeFromFileName(fileName));
+        final List<String> idList = getDictIdList(locale, context);
+        final List<AssetFileAddress> fileAddressList = new ArrayList<AssetFileAddress>();
+        for (String id : idList) {
+            final Uri dictionaryPackUri = getProviderUri(id);
+            final AssetFileDescriptor afd =
+                    resolver.openAssetFileDescriptor(dictionaryPackUri, "r");
+            if (null == afd) continue;
+            final String fileName =
+                    copyFileTo(afd.createInputStream(), getCacheFileNameForLocale(locale, context));
+            afd.close();
+            fileAddressList.add(AssetFileAddress.makeFromFileName(fileName));
+        }
+        return fileAddressList;
     }
 
     /**
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
index 989a0e9..4b1c05a 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
@@ -63,9 +63,6 @@
      * Returns a list of file addresses for a given locale, trying relevant methods in order.
      *
      * Tries to get binary dictionaries from various sources, in order:
-     * - Uses a private method of getting a private dictionaries, as implemented by the
-     *   PrivateBinaryDictionaryGetter class.
-     * If that fails:
      * - Uses a content provider to get a public dictionary set, as per the protocol described
      *   in BinaryDictionaryFileDumper.
      * If that fails:
@@ -76,31 +73,23 @@
      */
     public static List<AssetFileAddress> getDictionaryFiles(Locale locale, Context context,
             int fallbackResId) {
-        // Try first to query a private package signed the same way for private files.
-        final List<AssetFileAddress> privateFiles =
-                PrivateBinaryDictionaryGetter.getDictionaryFiles(locale, context);
-        if (null != privateFiles) {
-            return privateFiles;
-        } else {
-            try {
-                // If that was no-go, try to find a publicly exported dictionary.
-                List<AssetFileAddress> listFromContentProvider =
-                        BinaryDictionaryFileDumper.getDictSetFromContentProvider(locale, context);
-                if (null != listFromContentProvider) {
-                    return listFromContentProvider;
-                }
-                // If the list is null, fall through and return the fallback
-            } catch (FileNotFoundException e) {
-                Log.e(TAG, "Unable to create dictionary file from provider for locale "
-                        + locale.toString() + ": falling back to internal dictionary");
-            } catch (IOException e) {
-                Log.e(TAG, "Unable to read source data for locale "
-                        + locale.toString() + ": falling back to internal dictionary");
+        try {
+            List<AssetFileAddress> listFromContentProvider =
+                    BinaryDictionaryFileDumper.getDictSetFromContentProvider(locale, context);
+            if (null != listFromContentProvider) {
+                return listFromContentProvider;
             }
-            final AssetFileAddress fallbackAsset = loadFallbackResource(context, fallbackResId,
-                    locale);
-            if (null == fallbackAsset) return null;
-            return Arrays.asList(fallbackAsset);
+            // If the list is null, fall through and return the fallback
+        } catch (FileNotFoundException e) {
+            Log.e(TAG, "Unable to create dictionary file from provider for locale "
+                    + locale.toString() + ": falling back to internal dictionary");
+        } catch (IOException e) {
+            Log.e(TAG, "Unable to read source data for locale "
+                    + locale.toString() + ": falling back to internal dictionary");
         }
+        final AssetFileAddress fallbackAsset = loadFallbackResource(context, fallbackResId,
+                locale);
+        if (null == fallbackAsset) return null;
+        return Arrays.asList(fallbackAsset);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java
index 35af91b..8475126 100644
--- a/java/src/com/android/inputmethod/latin/Settings.java
+++ b/java/src/com/android/inputmethod/latin/Settings.java
@@ -176,7 +176,10 @@
                     && isBigramPredictionEnabled(prefs, res);
             mAutoCorrectionThreshold = getAutoCorrectionThreshold(prefs, res);
             mUseContactsDict = prefs.getBoolean(Settings.PREF_KEY_USE_CONTACTS_DICT, true);
-            mShowSettingsKey = prefs.getBoolean(Settings.PREF_SHOW_SETTINGS_KEY, false);
+            final boolean defaultShowSettingsKey = res.getBoolean(
+                    R.bool.config_default_show_settings_key);
+            mShowSettingsKey = prefs.getBoolean(Settings.PREF_SHOW_SETTINGS_KEY,
+                    defaultShowSettingsKey);
             final String voiceModeMain = res.getString(R.string.voice_mode_main);
             final String voiceModeOff = res.getString(R.string.voice_mode_off);
             final String voiceMode = prefs.getString(PREF_VOICE_SETTINGS_KEY, voiceModeMain);
@@ -301,7 +304,7 @@
     private ListPreference mVoicePreference;
     private CheckBoxPreference mShowSettingsKeyPreference;
     private ListPreference mShowCorrectionSuggestionsPreference;
-    private ListPreference mAutoCorrectionThreshold;
+    private ListPreference mAutoCorrectionThresholdPreference;
     private ListPreference mKeyPreviewPopupDismissDelay;
     // Suggestion: use bigrams to adjust scores of suggestions obtained from unigram dictionary
     private CheckBoxPreference mBigramSuggestion;
@@ -318,7 +321,7 @@
     private void ensureConsistencyOfAutoCorrectionSettings() {
         final String autoCorrectionOff = getResources().getString(
                 R.string.auto_correction_threshold_mode_index_off);
-        final String currentSetting = mAutoCorrectionThreshold.getValue();
+        final String currentSetting = mAutoCorrectionThresholdPreference.getValue();
         mBigramSuggestion.setEnabled(!currentSetting.equals(autoCorrectionOff));
         mBigramPrediction.setEnabled(!currentSetting.equals(autoCorrectionOff));
     }
@@ -356,7 +359,8 @@
         mVoiceOn = !(prefs.getString(PREF_VOICE_SETTINGS_KEY, mVoiceModeOff)
                 .equals(mVoiceModeOff));
 
-        mAutoCorrectionThreshold = (ListPreference) findPreference(PREF_AUTO_CORRECTION_THRESHOLD);
+        mAutoCorrectionThresholdPreference =
+                (ListPreference) findPreference(PREF_AUTO_CORRECTION_THRESHOLD);
         mBigramSuggestion = (CheckBoxPreference) findPreference(PREF_BIGRAM_SUGGESTIONS);
         mBigramPrediction = (CheckBoxPreference) findPreference(PREF_BIGRAM_PREDICTIONS);
         mDebugSettingsPreference = findPreference(PREF_DEBUG_SETTINGS);
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilderTests.java b/tests/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilderTests.java
index 0d2802d..1c5661b 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilderTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilderTests.java
@@ -16,7 +16,7 @@
 
 package com.android.inputmethod.keyboard.internal;
 
-import com.android.inputmethod.keyboard.internal.MiniKeyboardBuilder.MiniKeyboardLayoutParams;
+import com.android.inputmethod.keyboard.internal.MiniKeyboardBuilder.MiniKeyboardParams;
 
 import android.test.AndroidTestCase;
 
@@ -41,9 +41,9 @@
     }
 
     public void testLayoutError() {
-        MiniKeyboardLayoutParams params = null;
+        MiniKeyboardParams params = null;
         try {
-            params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS + 1, WIDTH, HEIGHT, WIDTH * 2,
+            params = new MiniKeyboardParams(10, MAX_COLUMNS + 1, WIDTH, HEIGHT, WIDTH * 2,
                     WIDTH * MAX_COLUMNS);
             fail("Should throw IllegalArgumentException");
         } catch (IllegalArgumentException e) {
@@ -58,7 +58,7 @@
 
     // [1]
     public void testLayout1KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("1 key M0 columns", 1, params.mNumColumns);
         assertEquals("1 key M0 rows", 1, params.mNumRows);
@@ -71,7 +71,7 @@
 
     // |[1]
     public void testLayout1KeyL0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
         assertEquals("1 key L0 columns", 1, params.mNumColumns);
         assertEquals("1 key L0 rows", 1, params.mNumRows);
@@ -84,7 +84,7 @@
 
     // |___ [1]
     public void testLayout1KeyL1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
         assertEquals("1 key L1 columns", 1, params.mNumColumns);
         assertEquals("1 key L1 rows", 1, params.mNumRows);
@@ -97,7 +97,7 @@
 
     // |___ ___ [1]
     public void testLayout1KeyL2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
         assertEquals("1 key L2 columns", 1, params.mNumColumns);
         assertEquals("1 key L2 rows", 1, params.mNumRows);
@@ -110,7 +110,7 @@
 
     // [1]|
     public void testLayout1KeyR0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
         assertEquals("1 key R0 columns", 1, params.mNumColumns);
         assertEquals("1 key R0 rows", 1, params.mNumRows);
@@ -123,7 +123,7 @@
 
     // [1] ___|
     public void testLayout1KeyR1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
         assertEquals("1 key R1 columns", 1, params.mNumColumns);
         assertEquals("1 key R1 rows", 1, params.mNumRows);
@@ -136,7 +136,7 @@
 
     // [1] ___ ___|
     public void testLayout1KeyR2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(1, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
         assertEquals("1 key R2 columns", 1, params.mNumColumns);
         assertEquals("1 key R2 rows", 1, params.mNumRows);
@@ -149,7 +149,7 @@
 
     // [1] [2]
     public void testLayout2KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("2 key M0 columns", 2, params.mNumColumns);
         assertEquals("2 key M0 rows", 1, params.mNumRows);
@@ -163,7 +163,7 @@
 
     // |[1] [2]
     public void testLayout2KeyL0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
         assertEquals("2 key L0 columns", 2, params.mNumColumns);
         assertEquals("2 key L0 rows", 1, params.mNumRows);
@@ -177,7 +177,7 @@
 
     // |___ [1] [2]
     public void testLayout2KeyL1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
         assertEquals("2 key L1 columns", 2, params.mNumColumns);
         assertEquals("2 key L1 rows", 1, params.mNumRows);
@@ -191,7 +191,7 @@
 
     // |___ ___ [1] [2]
     public void testLayout2KeyL2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
         assertEquals("2 key L2 columns", 2, params.mNumColumns);
         assertEquals("2 key L2 rows", 1, params.mNumRows);
@@ -205,7 +205,7 @@
 
     // [2] [1]|
     public void testLayout2KeyR0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
         assertEquals("2 key R0 columns", 2, params.mNumColumns);
         assertEquals("2 key R0 rows", 1, params.mNumRows);
@@ -219,7 +219,7 @@
 
     // [2] [1] ___|
     public void testLayout2KeyR1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
         assertEquals("2 key R1 columns", 2, params.mNumColumns);
         assertEquals("2 key R1 rows", 1, params.mNumRows);
@@ -233,7 +233,7 @@
 
     // [1] [2] ___ ___|
     public void testLayout2KeyR2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(2, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
         assertEquals("2 key R2 columns", 2, params.mNumColumns);
         assertEquals("2 key R2 rows", 1, params.mNumRows);
@@ -247,7 +247,7 @@
 
     // [3] [1] [2]
     public void testLayout3KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("3 key columns", 3, params.mNumColumns);
         assertEquals("3 key rows", 1, params.mNumRows);
@@ -262,7 +262,7 @@
 
     // |[1] [2] [3]
     public void testLayout3KeyL0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
         assertEquals("3 key L0 columns", 3, params.mNumColumns);
         assertEquals("3 key L0 rows", 1, params.mNumRows);
@@ -277,7 +277,7 @@
 
     // |___ [1] [2] [3]
     public void testLayout3KeyL1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
         assertEquals("3 key L1 columns", 3, params.mNumColumns);
         assertEquals("3 key L1 rows", 1, params.mNumRows);
@@ -292,7 +292,7 @@
 
     // |___ ___ [3] [1] [2]
     public void testLayout3KeyL2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
         assertEquals("3 key L2 columns", 3, params.mNumColumns);
         assertEquals("3 key L2 rows", 1, params.mNumRows);
@@ -307,7 +307,7 @@
 
     // [3] [2] [1]|
     public void testLayout3KeyR0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
         assertEquals("3 key R0 columns", 3, params.mNumColumns);
         assertEquals("3 key R0 rows", 1, params.mNumRows);
@@ -322,7 +322,7 @@
 
     // [3] [2] [1] ___|
     public void testLayout3KeyR1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
         assertEquals("3 key R1 columns", 3, params.mNumColumns);
         assertEquals("3 key R1 rows", 1, params.mNumRows);
@@ -337,7 +337,7 @@
 
     // [3] [1] [2] ___ ___|
     public void testLayout3KeyR2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(3, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
         assertEquals("3 key R2 columns", 3, params.mNumColumns);
         assertEquals("3 key R2 rows", 1, params.mNumRows);
@@ -352,7 +352,7 @@
 
     // [3] [1] [2] [4]
     public void testLayout4KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("4 key columns", 4, params.mNumColumns);
         assertEquals("4 key rows", 1, params.mNumRows);
@@ -368,7 +368,7 @@
 
     // |[1] [2] [3] [4]
     public void testLayout4KeyL0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
         assertEquals("4 key L0 columns", 4, params.mNumColumns);
         assertEquals("4 key L0 rows", 1, params.mNumRows);
@@ -384,7 +384,7 @@
 
     // |___ [1] [2] [3] [4]
     public void testLayout4KeyL1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
         assertEquals("4 key L1 columns", 4, params.mNumColumns);
         assertEquals("4 key L1 rows", 1, params.mNumRows);
@@ -400,7 +400,7 @@
 
     // |___ ___ [3] [1] [2] [4]
     public void testLayout4KeyL2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
         assertEquals("4 key L2 columns", 4, params.mNumColumns);
         assertEquals("4 key L2 rows", 1, params.mNumRows);
@@ -416,7 +416,7 @@
 
     // [4] [3] [2] [1]|
     public void testLayout4KeyR0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
         assertEquals("4 key R0 columns", 4, params.mNumColumns);
         assertEquals("4 key R0 rows", 1, params.mNumRows);
@@ -432,7 +432,7 @@
 
     // [4] [3] [2] [1] ___|
     public void testLayout4KeyR1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
         assertEquals("4 key R1 columns", 4, params.mNumColumns);
         assertEquals("4 key R1 rows", 1, params.mNumRows);
@@ -448,7 +448,7 @@
 
     // [4] [3] [1] [2] ___ ___|
     public void testLayout4KeyR2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(4, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
         assertEquals("4 key R2 columns", 4, params.mNumColumns);
         assertEquals("4 key R2 rows", 1, params.mNumRows);
@@ -464,7 +464,7 @@
 
     // [5] [3] [1] [2] [4]
     public void testLayout5KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("5 key columns", 5, params.mNumColumns);
         assertEquals("5 key rows", 1, params.mNumRows);
@@ -481,7 +481,7 @@
 
     // |[1] [2] [3] [4] [5]
     public void testLayout5KeyL0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
         assertEquals("5 key L0 columns", 5, params.mNumColumns);
         assertEquals("5 key L0 rows", 1, params.mNumRows);
@@ -498,7 +498,7 @@
 
     // |___ [1] [2] [3] [4] [5]
     public void testLayout5KeyL1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
         assertEquals("5 key L1 columns", 5, params.mNumColumns);
         assertEquals("5 key L1 rows", 1, params.mNumRows);
@@ -515,7 +515,7 @@
 
     // |___ ___ [3] [1] [2] [4] [5]
     public void testLayout5KeyL2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
         assertEquals("5 key L2 columns", 5, params.mNumColumns);
         assertEquals("5 key L2 rows", 1, params.mNumRows);
@@ -532,7 +532,7 @@
 
     // [5] [4] [3] [2] [1]|
     public void testLayout5KeyR0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
         assertEquals("5 key R0 columns", 5, params.mNumColumns);
         assertEquals("5 key R0 rows", 1, params.mNumRows);
@@ -549,7 +549,7 @@
 
     // [5] [4] [3] [2] [1] ___|
     public void testLayout5KeyR1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
         assertEquals("5 key R1 columns", 5, params.mNumColumns);
         assertEquals("5 key R1 rows", 1, params.mNumRows);
@@ -566,7 +566,7 @@
 
     // [5] [4] [3] [1] [2] ___ ___|
     public void testLayout5KeyR2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(5, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
         assertEquals("5 key R2 columns", 5, params.mNumColumns);
         assertEquals("5 key R2 rows", 1, params.mNumRows);
@@ -584,7 +584,7 @@
     // [6] [4] [5]
     // [3] [1] [2]
     public void testLayout6KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("6 key columns", 3, params.mNumColumns);
         assertEquals("6 key rows", 2, params.mNumRows);
@@ -603,7 +603,7 @@
     // |[4] [5] [6]
     // |[1] [2] [3]
     public void testLayout6KeyL0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
         assertEquals("6 key L0 columns", 3, params.mNumColumns);
         assertEquals("6 key L0 rows", 2, params.mNumRows);
@@ -622,7 +622,7 @@
     // |___ [4] [5] [6]
     // |___ [1] [2] [3]
     public void testLayout6KeyL1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
         assertEquals("6 key L1 columns", 3, params.mNumColumns);
         assertEquals("6 key L1 rows", 2, params.mNumRows);
@@ -641,7 +641,7 @@
     // |___ ___ [6] [4] [5]
     // |___ ___ [3] [1] [2]
     public void testLayout6KeyL2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
         assertEquals("6 key L2 columns", 3, params.mNumColumns);
         assertEquals("6 key L2 rows", 2, params.mNumRows);
@@ -660,7 +660,7 @@
     // [6] [5] [4]|
     // [3] [2] [1]|
     public void testLayout6KeyR0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
         assertEquals("6 key R0 columns", 3, params.mNumColumns);
         assertEquals("6 key R0 rows", 2, params.mNumRows);
@@ -679,7 +679,7 @@
     // [6] [5] [4] ___|
     // [3] [2] [1] ___|
     public void testLayout6KeyR1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
         assertEquals("6 key R1 columns", 3, params.mNumColumns);
         assertEquals("6 key R1 rows", 2, params.mNumRows);
@@ -698,7 +698,7 @@
     // [6] [4] [5] ___ ___|
     // [3] [1] [2] ___ ___|
     public void testLayout6KeyR2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(6, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
         assertEquals("6 key R2 columns", 3, params.mNumColumns);
         assertEquals("6 key R2 rows", 2, params.mNumRows);
@@ -717,7 +717,7 @@
     //   [7] [5] [6]
     // [3] [1] [2] [4]
     public void testLayout7KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("7 key columns", 4, params.mNumColumns);
         assertEquals("7 key rows", 2, params.mNumRows);
@@ -737,7 +737,7 @@
     // |[5] [6] [7]
     // |[1] [2] [3] [4]
     public void testLayout7KeyL0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
         assertEquals("7 key L0 columns", 4, params.mNumColumns);
         assertEquals("7 key L0 rows", 2, params.mNumRows);
@@ -757,7 +757,7 @@
     // |___ [5] [6] [7]
     // |___ [1] [2] [3] [4]
     public void testLayout7KeyL1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
         assertEquals("7 key L1 columns", 4, params.mNumColumns);
         assertEquals("7 key L1 rows", 2, params.mNumRows);
@@ -777,7 +777,7 @@
     // |___ ___   [7] [5] [6]
     // |___ ___ [3] [1] [2] [4]
     public void testLayout7KeyL2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
         assertEquals("7 key L2 columns", 4, params.mNumColumns);
         assertEquals("7 key L2 rows", 2, params.mNumRows);
@@ -797,7 +797,7 @@
     //     [7] [6] [5]|
     // [4] [3] [2] [1]|
     public void testLayout7KeyR0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
         assertEquals("7 key R0 columns", 4, params.mNumColumns);
         assertEquals("7 key R0 rows", 2, params.mNumRows);
@@ -817,7 +817,7 @@
     //     [7] [6] [5] ___|
     // [4] [3] [2] [1] ___|
     public void testLayout7KeyR1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
         assertEquals("7 key R1 columns", 4, params.mNumColumns);
         assertEquals("7 key R1 rows", 2, params.mNumRows);
@@ -837,7 +837,7 @@
     //   [7] [5] [6]   ___ ___|
     // [4] [3] [1] [2] ___ ___|
     public void testLayout7KeyR2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(7, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
         assertEquals("7 key R2 columns", 4, params.mNumColumns);
         assertEquals("7 key R2 rows", 2, params.mNumRows);
@@ -856,7 +856,7 @@
 
     // [7] [6] [5] [3] [1] [2] [4] ___|
     public void testLayout7KeyR3Max7() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, 7, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(7, 7, WIDTH,
                 HEIGHT, XPOS_R3, KEYBOARD_WIDTH);
         assertEquals("7 key R2 columns", 7, params.mNumColumns);
         assertEquals("7 key R2 rows", 1, params.mNumRows);
@@ -876,7 +876,7 @@
     // [7] [5] [6] [8]
     // [3] [1] [2] [4]
     public void testLayout8KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("8 key M0 columns", 4, params.mNumColumns);
         assertEquals("8 key M0 rows", 2, params.mNumRows);
@@ -897,7 +897,7 @@
     // |[5] [6] [7] [8]
     // |[1] [2] [3] [4]
     public void testLayout8KeyL0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
         assertEquals("8 key L0 columns", 4, params.mNumColumns);
         assertEquals("8 key L0 rows", 2, params.mNumRows);
@@ -918,7 +918,7 @@
     // |___ [5] [6] [7] [8]
     // |___ [1] [2] [3] [4]
     public void testLayout8KeyL1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
         assertEquals("8 key L1 columns", 4, params.mNumColumns);
         assertEquals("8 key L1 rows", 2, params.mNumRows);
@@ -939,7 +939,7 @@
     // |___ ___ [7] [5] [6] [8]
     // |___ ___ [3] [1] [2] [4]
     public void testLayout8KeyL2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
         assertEquals("8 key L2 columns", 4, params.mNumColumns);
         assertEquals("8 key L2 rows", 2, params.mNumRows);
@@ -960,7 +960,7 @@
     // [8] [7] [6] [5]|
     // [4] [3] [2] [1]|
     public void testLayout8KeyR0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
         assertEquals("8 key R0 columns", 4, params.mNumColumns);
         assertEquals("8 key R0 rows", 2, params.mNumRows);
@@ -981,7 +981,7 @@
     // [8] [7] [6] [5] ___|
     // [4] [3] [2] [1] ___|
     public void testLayout8KeyR1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
         assertEquals("8 key R1 columns", 4, params.mNumColumns);
         assertEquals("8 key R1 rows", 2, params.mNumRows);
@@ -1002,7 +1002,7 @@
     // [8] [7] [5] [6] ___ ___|
     // [4] [3] [1] [2] ___ ___|
     public void testLayout8KeyR2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(8, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
         assertEquals("8 key R2 columns", 4, params.mNumColumns);
         assertEquals("8 key R2 rows", 2, params.mNumRows);
@@ -1023,7 +1023,7 @@
     //   [8] [6] [7] [9]
     // [5] [3] [1] [2] [4]
     public void testLayout9KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("9 key M0 columns", 5, params.mNumColumns);
         assertEquals("9 key M0 rows", 2, params.mNumRows);
@@ -1045,7 +1045,7 @@
     // |[6] [7] [8] [9]
     // |[1] [2] [3] [4] [5]
     public void testLayout9KeyL0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
         assertEquals("9 key L0 columns", 5, params.mNumColumns);
         assertEquals("9 key L0 rows", 2, params.mNumRows);
@@ -1067,7 +1067,7 @@
     // |___ [6] [7] [8] [9]
     // |___ [1] [2] [3] [4] [5]
     public void testLayout9KeyL1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
         assertEquals("9 key L1 columns", 5, params.mNumColumns);
         assertEquals("9 key L1 rows", 2, params.mNumRows);
@@ -1089,7 +1089,7 @@
     // |___ ___   [8] [6] [7] [9]
     // |___ ___ [3] [1] [2] [4] [5]
     public void testLayout9KeyL2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
         assertEquals("9 key L2 columns", 5, params.mNumColumns);
         assertEquals("9 key L2 rows", 2, params.mNumRows);
@@ -1111,7 +1111,7 @@
     //     [9] [8] [7] [6]|
     // [5] [4] [3] [2] [1]|
     public void testLayout9KeyR0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
         assertEquals("9 key R0 columns", 5, params.mNumColumns);
         assertEquals("9 key R0 rows", 2, params.mNumRows);
@@ -1133,7 +1133,7 @@
     //     [9] [8] [7] [6] ___|
     // [5] [4] [3] [2] [1] ___|
     public void testLayout9KeyR1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
         assertEquals("9 key R1 columns", 5, params.mNumColumns);
         assertEquals("9 key R1 rows", 2, params.mNumRows);
@@ -1155,7 +1155,7 @@
     //   [9] [8] [6] [7]   ___ ___|
     // [5] [4] [3] [1] [2] ___ ___|
     public void testLayout9KeyR2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(9, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
         assertEquals("9 key R2 columns", 5, params.mNumColumns);
         assertEquals("9 key R2 rows", 2, params.mNumRows);
@@ -1177,7 +1177,7 @@
     // [A] [8] [6] [7] [9]
     // [5] [3] [1] [2] [4]
     public void testLayout10KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("10 key M0 columns", 5, params.mNumColumns);
         assertEquals("10 key M0 rows", 2, params.mNumRows);
@@ -1200,7 +1200,7 @@
     // |[6] [7] [8] [9] [A]
     // |[1] [2] [3] [4] [5]
     public void testLayout10KeyL0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L0, KEYBOARD_WIDTH);
         assertEquals("10 key L0 columns", 5, params.mNumColumns);
         assertEquals("10 key L0 rows", 2, params.mNumRows);
@@ -1223,7 +1223,7 @@
     // |___ [6] [7] [8] [9] [A]
     // |___ [1] [2] [3] [4] [5]
     public void testLayout10KeyL1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L1, KEYBOARD_WIDTH);
         assertEquals("10 key L1 columns", 5, params.mNumColumns);
         assertEquals("10 key L1 rows", 2, params.mNumRows);
@@ -1246,7 +1246,7 @@
     // |___ ___ [8] [6] [7] [9] [A]
     // |___ ___ [3] [1] [2] [4] [5]
     public void testLayout10KeyL2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_L2, KEYBOARD_WIDTH);
         assertEquals("10 key L2 columns", 5, params.mNumColumns);
         assertEquals("10 key L2 rows", 2, params.mNumRows);
@@ -1269,7 +1269,7 @@
     // [A] [9] [8] [7] [6]|
     // [5] [4] [3] [2] [1]|
     public void testLayout10KeyR0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R0, KEYBOARD_WIDTH);
         assertEquals("10 key R0 columns", 5, params.mNumColumns);
         assertEquals("10 key R0 rows", 2, params.mNumRows);
@@ -1292,7 +1292,7 @@
     // [A] [9] [8] [7] [6] ___|
     // [5] [4] [3] [2] [1] ___|
     public void testLayout10KeyR1() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R1, KEYBOARD_WIDTH);
         assertEquals("10 key R1 columns", 5, params.mNumColumns);
         assertEquals("10 key R1 rows", 2, params.mNumRows);
@@ -1315,7 +1315,7 @@
     // [A] [9] [8] [6] [7] ___ ___|
     // [5] [4] [3] [1] [2] ___ ___|
     public void testLayout10KeyR2() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(10, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_R2, KEYBOARD_WIDTH);
         assertEquals("10 key R2 columns", 5, params.mNumColumns);
         assertEquals("10 key R2 rows", 2, params.mNumRows);
@@ -1339,7 +1339,7 @@
     // [7] [5] [6] [8]
     // [3] [1] [2] [4]
     public void testLayout11KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(11, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(11, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("11 key M0 columns", 4, params.mNumColumns);
         assertEquals("11 key M0 rows", 3, params.mNumRows);
@@ -1364,7 +1364,7 @@
     // [7] [5] [6] [8]
     // [3] [1] [2] [4]
     public void testLayout12KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(12, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(12, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("12 key M0 columns", 4, params.mNumColumns);
         assertEquals("12 key M0 rows", 3, params.mNumRows);
@@ -1391,7 +1391,7 @@
     // [A] [8] [6] [7] [9]
     // [5] [3] [1] [2] [4]
     public void testLayout13KeyM0() {
-        MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(13, MAX_COLUMNS, WIDTH,
+        MiniKeyboardParams params = new MiniKeyboardParams(13, MAX_COLUMNS, WIDTH,
                 HEIGHT, XPOS_M0, KEYBOARD_WIDTH);
         assertEquals("13 key M0 columns", 5, params.mNumColumns);
         assertEquals("13 key M0 rows", 3, params.mNumRows);
diff --git a/tests/src/com/android/inputmethod/latin/SuggestHelper.java b/tests/src/com/android/inputmethod/latin/SuggestHelper.java
index f9ea180..7736743 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestHelper.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestHelper.java
@@ -16,16 +16,15 @@
 
 package com.android.inputmethod.latin;
 
+import android.content.Context;
+import android.text.TextUtils;
+
 import com.android.inputmethod.keyboard.Key;
 import com.android.inputmethod.keyboard.KeyDetector;
 import com.android.inputmethod.keyboard.KeyboardId;
 import com.android.inputmethod.keyboard.LatinKeyboard;
 
-import android.content.Context;
-import android.text.TextUtils;
-
 import java.io.File;
-import java.util.List;
 
 public class SuggestHelper {
     protected final Suggest mSuggest;
@@ -66,8 +65,7 @@
     }
 
     private void addKeyInfo(WordComposer word, char c) {
-        final List<Key> keys = mKeyboard.getKeys();
-        for (final Key key : keys) {
+        for (final Key key : mKeyboard.mKeys) {
             if (key.mCode == c) {
                 final int x = key.mX + key.mWidth / 2;
                 final int y = key.mY + key.mHeight / 2;