Add a new preference item to show/hide the settings key.

bug: 2998722

Change-Id: Iac1641c338388fd8f85e0cf47e31afdaeb34c0c0
diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index 4456287..311d43a 100644
--- a/java/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -149,38 +149,30 @@
         <Key
             android:codes="@integer/key_symbol"
             android:keyLabel="@string/label_symbol_key"
-            android:keyWidth="15%p"
+            android:keyWidth="20%p"
             android:isModifier="true"
             android:keyEdgeFlags="left" />
         <Key
-            android:codes="@integer/key_settings"
-            android:keyIcon="@drawable/sym_keyboard_settings"
-            android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            android:keyWidth="10%p"
-            android:isModifier="true" />
-        <Key
             android:codes="@integer/key_f1"
             android:keyIcon="@drawable/sym_keyboard_mic"
             android:iconPreview="@drawable/sym_keyboard_feedback_mic"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:codes="@integer/key_space"
             android:keyIcon="@drawable/sym_keyboard_space"
             android:iconPreview="@drawable/sym_keyboard_feedback_space"
-            android:keyWidth="30%p"
+            android:keyWidth="40%p"
             android:isModifier="true"
             android:isRepeatable="true" />
         <Key
             android:keyLabel="."
             android:popupKeyboard="@xml/popup_punctuation"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:codes="@integer/key_return"
             android:keyIcon="@drawable/sym_keyboard_return"
             android:iconPreview="@drawable/sym_keyboard_feedback_return"
-            android:keyWidth="25%p"
+            android:keyWidth="20%p"
             android:isModifier="true"
             android:keyEdgeFlags="right" />
     </Row>
@@ -191,36 +183,28 @@
         <Key
             android:codes="@integer/key_symbol"
             android:keyLabel="@string/label_symbol_key"
-            android:keyWidth="15%p"
+            android:keyWidth="20%p"
             android:isModifier="true"
             android:keyEdgeFlags="left" />
         <Key
-            android:codes="@integer/key_settings"
-            android:keyIcon="@drawable/sym_keyboard_settings"
-            android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            android:keyWidth="10%p"
-            android:isModifier="true" />
-        <Key
             android:keyLabel="/"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:codes="@integer/key_space"
             android:keyIcon="@drawable/sym_keyboard_space"
             android:iconPreview="@drawable/sym_keyboard_feedback_space"
-            android:keyWidth="30%p"
+            android:keyWidth="40%p"
             android:isModifier="true"
             android:isRepeatable="true" />
         <Key
             android:keyLabel="."
             android:popupKeyboard="@xml/popup_punctuation"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:codes="@integer/key_return"
             android:keyIcon="@drawable/sym_keyboard_return"
             android:iconPreview="@drawable/sym_keyboard_feedback_return"
-            android:keyWidth="25%p"
+            android:keyWidth="20%p"
             android:isModifier="true"
             android:keyEdgeFlags="right" />
     </Row>
@@ -231,6 +215,112 @@
         <Key
             android:codes="@integer/key_symbol"
             android:keyLabel="@string/label_symbol_key"
+            android:keyWidth="20%p"
+            android:isModifier="true"
+            android:keyEdgeFlags="left" />
+        <Key
+            android:keyLabel="\@"
+            android:isModifier="true" />
+        <Key
+            android:codes="@integer/key_space"
+            android:keyIcon="@drawable/sym_keyboard_space"
+            android:iconPreview="@drawable/sym_keyboard_feedback_space"
+            android:keyWidth="40%p"
+            android:isModifier="true"
+            android:isRepeatable="true" />
+        <Key
+            android:keyLabel="."
+            android:popupKeyboard="@xml/popup_punctuation"
+            android:isModifier="true" />
+        <Key
+            android:codes="@integer/key_return"
+            android:keyIcon="@drawable/sym_keyboard_return"
+            android:iconPreview="@drawable/sym_keyboard_feedback_return"
+            android:keyWidth="20%p"
+            android:isModifier="true"
+            android:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        android:keyboardMode="@+id/mode_im"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key
+            android:codes="@integer/key_symbol"
+            android:keyLabel="@string/label_symbol_key"
+            android:keyWidth="20%p"
+            android:isModifier="true"
+            android:keyEdgeFlags="left" />
+        <Key
+            android:codes="@integer/key_f1"
+            android:keyIcon="@drawable/sym_keyboard_mic"
+            android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+            android:isModifier="true" />
+        <Key
+            android:codes="@integer/key_space"
+            android:keyIcon="@drawable/sym_keyboard_space"
+            android:iconPreview="@drawable/sym_keyboard_feedback_space"
+            android:keyWidth="40%p"
+            android:isModifier="true"
+            android:isRepeatable="true" />
+        <Key
+            android:keyLabel="."
+            android:popupKeyboard="@xml/popup_punctuation"
+            android:isModifier="true" />
+        <Key
+            android:keyLabel=":-)"
+            android:keyOutputText=":-) "
+            android:popupKeyboard="@xml/popup_smileys"
+            android:keyWidth="20%p"
+            android:isModifier="true"
+            android:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        android:keyboardMode="@+id/mode_webentry"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key
+            android:codes="@integer/key_symbol"
+            android:keyLabel="@string/label_symbol_key"
+            android:keyWidth="20%p"
+            android:isModifier="true"
+            android:keyEdgeFlags="left" />
+        <Key
+            android:codes="@integer/key_f1"
+            android:keyIcon="@drawable/sym_keyboard_mic"
+            android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+            android:isModifier="true" />
+        <Key
+            android:codes="@integer/key_space"
+            android:keyIcon="@drawable/sym_keyboard_space"
+            android:iconPreview="@drawable/sym_keyboard_feedback_space"
+            android:keyWidth="20%p"
+            android:isModifier="true"
+            android:isRepeatable="true" />
+        <Key
+            android:codes="@integer/key_tab"
+            android:keyIcon="@drawable/sym_keyboard_tab"
+            android:iconPreview="@drawable/sym_keyboard_feedback_tab"
+            android:keyWidth="20%p"
+            android:isModifier="true" />
+        <Key
+            android:keyLabel="."
+            android:popupKeyboard="@xml/popup_punctuation"
+            android:isModifier="true" />
+        <Key
+            android:codes="@integer/key_return"
+            android:keyIcon="@drawable/sym_keyboard_return"
+            android:iconPreview="@drawable/sym_keyboard_feedback_return"
+            android:keyWidth="20%p"
+            android:isModifier="true"
+            android:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        android:keyboardMode="@+id/mode_normal_with_settings_key"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key
+            android:codes="@integer/key_symbol"
+            android:keyLabel="@string/label_symbol_key"
             android:keyWidth="15%p"
             android:isModifier="true"
             android:keyEdgeFlags="left" />
@@ -238,7 +328,82 @@
             android:codes="@integer/key_settings"
             android:keyIcon="@drawable/sym_keyboard_settings"
             android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            android:keyWidth="10%p"
+            android:isModifier="true" />
+        <Key
+            android:codes="@integer/key_f1"
+            android:keyIcon="@drawable/sym_keyboard_mic"
+            android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+            android:isModifier="true" />
+        <Key
+            android:codes="@integer/key_space"
+            android:keyIcon="@drawable/sym_keyboard_space"
+            android:iconPreview="@drawable/sym_keyboard_feedback_space"
+            android:keyWidth="30%p"
+            android:isModifier="true"
+            android:isRepeatable="true" />
+        <Key
+            android:keyLabel="."
+            android:popupKeyboard="@xml/popup_punctuation"
+            android:isModifier="true" />
+        <Key
+            android:codes="@integer/key_return"
+            android:keyIcon="@drawable/sym_keyboard_return"
+            android:iconPreview="@drawable/sym_keyboard_feedback_return"
+            android:keyWidth="25%p"
+            android:isModifier="true"
+            android:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        android:keyboardMode="@+id/mode_url_with_settings_key"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key
+            android:codes="@integer/key_symbol"
+            android:keyLabel="@string/label_symbol_key"
+            android:keyWidth="15%p"
+            android:isModifier="true"
+            android:keyEdgeFlags="left" />
+        <Key
+            android:codes="@integer/key_settings"
+            android:keyIcon="@drawable/sym_keyboard_settings"
+            android:iconPreview="@drawable/sym_keyboard_feedback_settings"
+            android:isModifier="true" />
+        <Key
+            android:keyLabel="/"
+            android:isModifier="true" />
+        <Key
+            android:codes="@integer/key_space"
+            android:keyIcon="@drawable/sym_keyboard_space"
+            android:iconPreview="@drawable/sym_keyboard_feedback_space"
+            android:keyWidth="30%p"
+            android:isModifier="true"
+            android:isRepeatable="true" />
+        <Key
+            android:keyLabel="."
+            android:popupKeyboard="@xml/popup_punctuation"
+            android:isModifier="true" />
+        <Key
+            android:codes="@integer/key_return"
+            android:keyIcon="@drawable/sym_keyboard_return"
+            android:iconPreview="@drawable/sym_keyboard_feedback_return"
+            android:keyWidth="25%p"
+            android:isModifier="true"
+            android:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        android:keyboardMode="@+id/mode_email_with_settings_key"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key
+            android:codes="@integer/key_symbol"
+            android:keyLabel="@string/label_symbol_key"
+            android:keyWidth="15%p"
+            android:isModifier="true"
+            android:keyEdgeFlags="left" />
+        <Key
+            android:codes="@integer/key_settings"
+            android:keyIcon="@drawable/sym_keyboard_settings"
+            android:iconPreview="@drawable/sym_keyboard_feedback_settings"
             android:isModifier="true" />
         <Key
             android:keyLabel="\@"
@@ -263,7 +428,7 @@
             android:keyEdgeFlags="right" />
     </Row>
     <Row
-        android:keyboardMode="@+id/mode_im"
+        android:keyboardMode="@+id/mode_im_with_settings_key"
         android:rowEdgeFlags="bottom"
     >
         <Key
@@ -276,13 +441,11 @@
             android:codes="@integer/key_settings"
             android:keyIcon="@drawable/sym_keyboard_settings"
             android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:codes="@integer/key_f1"
             android:keyIcon="@drawable/sym_keyboard_mic"
             android:iconPreview="@drawable/sym_keyboard_feedback_mic"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:codes="@integer/key_space"
@@ -294,7 +457,6 @@
         <Key
             android:keyLabel="."
             android:popupKeyboard="@xml/popup_punctuation"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:keyLabel=":-)"
@@ -305,7 +467,7 @@
             android:keyEdgeFlags="right" />
     </Row>
     <Row
-        android:keyboardMode="@+id/mode_webentry"
+        android:keyboardMode="@+id/mode_webentry_with_settings_key"
         android:rowEdgeFlags="bottom"
     >
         <Key
@@ -318,13 +480,11 @@
             android:codes="@integer/key_settings"
             android:keyIcon="@drawable/sym_keyboard_settings"
             android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:codes="@integer/key_f1"
             android:keyIcon="@drawable/sym_keyboard_mic"
             android:iconPreview="@drawable/sym_keyboard_feedback_mic"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:codes="@integer/key_space"
@@ -337,12 +497,10 @@
             android:codes="@integer/key_tab"
             android:keyIcon="@drawable/sym_keyboard_tab"
             android:iconPreview="@drawable/sym_keyboard_feedback_tab"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:keyLabel="."
             android:popupKeyboard="@xml/popup_punctuation"
-            android:keyWidth="10%p"
             android:isModifier="true" />
         <Key
             android:codes="@integer/key_return"
diff --git a/java/res/xml/kbd_qwerty_black.xml b/java/res/xml/kbd_qwerty_black.xml
index d40203d..ea506b6 100644
--- a/java/res/xml/kbd_qwerty_black.xml
+++ b/java/res/xml/kbd_qwerty_black.xml
@@ -148,33 +148,26 @@
         <Key
             android:codes="@integer/key_symbol"
             android:keyLabel="@string/label_symbol_key"
-            android:keyWidth="15%p"
+            android:keyWidth="20%p"
             android:keyEdgeFlags="left" />
         <Key
-            android:codes="@integer/key_settings"
-            android:keyIcon="@drawable/sym_bkeyboard_settings"
-            android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            android:keyWidth="10%p" />
-        <Key
             android:codes="@integer/key_f1"
             android:keyIcon="@drawable/sym_bkeyboard_mic"
-            android:iconPreview="@drawable/sym_keyboard_feedback_mic"
-            android:keyWidth="10%p" />
+            android:iconPreview="@drawable/sym_keyboard_feedback_mic" />
         <Key
             android:codes="@integer/key_space"
             android:keyIcon="@drawable/sym_bkeyboard_space"
             android:iconPreview="@drawable/sym_keyboard_feedback_space"
-            android:keyWidth="30%p"
+            android:keyWidth="40%p"
             android:isRepeatable="true" />
         <Key
             android:keyLabel="."
-            android:popupKeyboard="@xml/popup_punctuation"
-            android:keyWidth="10%p" />
+            android:popupKeyboard="@xml/popup_punctuation" />
         <Key
             android:codes="@integer/key_return"
             android:keyIcon="@drawable/sym_bkeyboard_return"
             android:iconPreview="@drawable/sym_keyboard_feedback_return"
-            android:keyWidth="25%p"
+            android:keyWidth="20%p"
             android:keyEdgeFlags="right" />
     </Row>
     <Row
@@ -184,31 +177,24 @@
         <Key
             android:codes="@integer/key_symbol"
             android:keyLabel="@string/label_symbol_key"
-            android:keyWidth="15%p"
+            android:keyWidth="20%p"
             android:keyEdgeFlags="left" />
         <Key
-            android:codes="@integer/key_settings"
-            android:keyIcon="@drawable/sym_bkeyboard_settings"
-            android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            android:keyWidth="10%p" />
-        <Key
-            android:keyLabel="/"
-            android:keyWidth="10%p" />
+            android:keyLabel="/" />
         <Key
             android:codes="@integer/key_space"
             android:keyIcon="@drawable/sym_bkeyboard_space"
             android:iconPreview="@drawable/sym_keyboard_feedback_space"
-            android:keyWidth="30%p"
+            android:keyWidth="40%p"
             android:isRepeatable="true" />
         <Key
             android:keyLabel="."
-            android:popupKeyboard="@xml/popup_punctuation"
-            android:keyWidth="10%p" />
+            android:popupKeyboard="@xml/popup_punctuation" />
         <Key
             android:codes="@integer/key_return"
             android:keyIcon="@drawable/sym_bkeyboard_return"
             android:iconPreview="@drawable/sym_keyboard_feedback_return"
-            android:keyWidth="25%p"
+            android:keyWidth="20%p"
             android:keyEdgeFlags="right" />
     </Row>
     <Row
@@ -218,13 +204,166 @@
         <Key
             android:codes="@integer/key_symbol"
             android:keyLabel="@string/label_symbol_key"
+            android:keyWidth="20%p"
+            android:keyEdgeFlags="left" />
+        <Key
+            android:keyLabel="\@" />
+        <Key
+            android:codes="@integer/key_space"
+            android:keyIcon="@drawable/sym_bkeyboard_space"
+            android:iconPreview="@drawable/sym_keyboard_feedback_space"
+            android:keyWidth="40%p"
+            android:isRepeatable="true" />
+        <Key
+            android:keyLabel="."
+            android:popupKeyboard="@xml/popup_punctuation" />
+        <Key
+            android:codes="@integer/key_return"
+            android:keyIcon="@drawable/sym_bkeyboard_return"
+            android:iconPreview="@drawable/sym_keyboard_feedback_return"
+            android:keyWidth="20%p"
+            android:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        android:keyboardMode="@+id/mode_im"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key
+            android:codes="@integer/key_symbol"
+            android:keyLabel="@string/label_symbol_key"
+            android:keyWidth="20%p"
+            android:keyEdgeFlags="left" />
+        <Key
+            android:codes="@integer/key_f1"
+            android:keyIcon="@drawable/sym_bkeyboard_mic"
+            android:iconPreview="@drawable/sym_keyboard_feedback_mic" />
+        <Key
+            android:codes="@integer/key_space"
+            android:keyIcon="@drawable/sym_bkeyboard_space"
+            android:iconPreview="@drawable/sym_keyboard_feedback_space"
+            android:keyWidth="40%p"
+            android:isRepeatable="true" />
+        <Key
+            android:keyLabel="."
+            android:popupKeyboard="@xml/popup_punctuation" />
+        <Key
+            android:keyLabel=":-)"
+            android:keyOutputText=":-) "
+            android:popupKeyboard="@xml/popup_smileys"
+            android:keyWidth="20%p"
+            android:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        android:keyboardMode="@+id/mode_webentry"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key
+            android:codes="@integer/key_symbol"
+            android:keyLabel="@string/label_symbol_key"
+            android:keyWidth="20%p"
+            android:keyEdgeFlags="left" />
+        <Key
+            android:codes="@integer/key_f1"
+            android:keyIcon="@drawable/sym_bkeyboard_mic"
+            android:iconPreview="@drawable/sym_keyboard_feedback_mic" />
+        <Key
+            android:codes="@integer/key_space"
+            android:keyIcon="@drawable/sym_bkeyboard_space"
+            android:iconPreview="@drawable/sym_keyboard_feedback_space"
+            android:keyWidth="20%p"
+            android:isRepeatable="true" />
+        <Key
+            android:codes="@integer/key_tab"
+            android:keyIcon="@drawable/sym_bkeyboard_tab"
+            android:iconPreview="@drawable/sym_keyboard_feedback_tab"
+            android:keyWidth="20%p" />
+        <Key
+            android:keyLabel="."
+            android:popupKeyboard="@xml/popup_punctuation" />
+        <Key
+            android:codes="@integer/key_return"
+            android:keyIcon="@drawable/sym_bkeyboard_return"
+            android:iconPreview="@drawable/sym_keyboard_feedback_return"
+            android:keyWidth="20%p"
+            android:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        android:keyboardMode="@+id/mode_normal_with_settings_key"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key
+            android:codes="@integer/key_symbol"
+            android:keyLabel="@string/label_symbol_key"
             android:keyWidth="15%p"
             android:keyEdgeFlags="left" />
         <Key
             android:codes="@integer/key_settings"
             android:keyIcon="@drawable/sym_bkeyboard_settings"
-            android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            android:keyWidth="10%p" />
+            android:iconPreview="@drawable/sym_keyboard_feedback_settings" />
+        <Key
+            android:codes="@integer/key_f1"
+            android:keyIcon="@drawable/sym_bkeyboard_mic"
+            android:iconPreview="@drawable/sym_keyboard_feedback_mic" />
+        <Key
+            android:codes="@integer/key_space"
+            android:keyIcon="@drawable/sym_bkeyboard_space"
+            android:iconPreview="@drawable/sym_keyboard_feedback_space"
+            android:keyWidth="30%p"
+            android:isRepeatable="true" />
+        <Key
+            android:keyLabel="."
+            android:popupKeyboard="@xml/popup_punctuation" />
+        <Key
+            android:codes="@integer/key_return"
+            android:keyIcon="@drawable/sym_bkeyboard_return"
+            android:iconPreview="@drawable/sym_keyboard_feedback_return"
+            android:keyWidth="25%p"
+            android:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        android:keyboardMode="@+id/mode_url_with_settings_key"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key
+            android:codes="@integer/key_symbol"
+            android:keyLabel="@string/label_symbol_key"
+            android:keyWidth="15%p"
+            android:keyEdgeFlags="left" />
+        <Key
+            android:codes="@integer/key_settings"
+            android:keyIcon="@drawable/sym_bkeyboard_settings"
+            android:iconPreview="@drawable/sym_keyboard_feedback_settings" />
+        <Key
+            android:keyLabel="/" />
+        <Key
+            android:codes="@integer/key_space"
+            android:keyIcon="@drawable/sym_bkeyboard_space"
+            android:iconPreview="@drawable/sym_keyboard_feedback_space"
+            android:keyWidth="30%p"
+            android:isRepeatable="true" />
+        <Key
+            android:keyLabel="."
+            android:popupKeyboard="@xml/popup_punctuation" />
+        <Key
+            android:codes="@integer/key_return"
+            android:keyIcon="@drawable/sym_bkeyboard_return"
+            android:iconPreview="@drawable/sym_keyboard_feedback_return"
+            android:keyWidth="25%p"
+            android:keyEdgeFlags="right" />
+    </Row>
+    <Row
+        android:keyboardMode="@+id/mode_email_with_settings_key"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key
+            android:codes="@integer/key_symbol"
+            android:keyLabel="@string/label_symbol_key"
+            android:keyWidth="15%p"
+            android:keyEdgeFlags="left" />
+        <Key
+            android:codes="@integer/key_settings"
+            android:keyIcon="@drawable/sym_bkeyboard_settings"
+            android:iconPreview="@drawable/sym_keyboard_feedback_settings" />
         <Key
             android:keyLabel="\@" />
         <Key
@@ -244,7 +383,7 @@
             android:keyEdgeFlags="right" />
     </Row>
     <Row
-        android:keyboardMode="@+id/mode_im"
+        android:keyboardMode="@+id/mode_im_with_settings_key"
         android:rowEdgeFlags="bottom"
     >
         <Key
@@ -255,13 +394,11 @@
         <Key
             android:codes="@integer/key_settings"
             android:keyIcon="@drawable/sym_bkeyboard_settings"
-            android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            android:keyWidth="10%p" />
+            android:iconPreview="@drawable/sym_keyboard_feedback_settings" />
         <Key
             android:codes="@integer/key_f1"
             android:keyIcon="@drawable/sym_bkeyboard_mic"
-            android:iconPreview="@drawable/sym_keyboard_feedback_mic"
-            android:keyWidth="10%p" />
+            android:iconPreview="@drawable/sym_keyboard_feedback_mic" />
         <Key
             android:codes="@integer/key_space"
             android:keyIcon="@drawable/sym_bkeyboard_space"
@@ -270,8 +407,7 @@
             android:isRepeatable="true" />
         <Key
             android:keyLabel="."
-            android:popupKeyboard="@xml/popup_punctuation"
-            android:keyWidth="10%p" />
+            android:popupKeyboard="@xml/popup_punctuation" />
         <Key
             android:keyLabel=":-)"
             android:keyOutputText=":-) "
@@ -280,7 +416,7 @@
             android:keyEdgeFlags="right" />
     </Row>
     <Row
-        android:keyboardMode="@+id/mode_webentry"
+        android:keyboardMode="@+id/mode_webentry_with_settings_key"
         android:rowEdgeFlags="bottom"
     >
         <Key
@@ -291,13 +427,11 @@
         <Key
             android:codes="@integer/key_settings"
             android:keyIcon="@drawable/sym_bkeyboard_settings"
-            android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-            android:keyWidth="10%p" />
+            android:iconPreview="@drawable/sym_keyboard_feedback_settings" />
         <Key
             android:codes="@integer/key_f1"
             android:keyIcon="@drawable/sym_bkeyboard_mic"
-            android:iconPreview="@drawable/sym_keyboard_feedback_mic"
-            android:keyWidth="10%p" />
+            android:iconPreview="@drawable/sym_keyboard_feedback_mic" />
         <Key
             android:codes="@integer/key_space"
             android:keyIcon="@drawable/sym_bkeyboard_space"
@@ -307,12 +441,10 @@
         <Key
             android:codes="@integer/key_tab"
             android:keyIcon="@drawable/sym_bkeyboard_tab"
-            android:iconPreview="@drawable/sym_keyboard_feedback_tab"
-            android:keyWidth="10%p" />
+            android:iconPreview="@drawable/sym_keyboard_feedback_tab" />
         <Key
             android:keyLabel="."
-            android:popupKeyboard="@xml/popup_punctuation"
-            android:keyWidth="10%p" />
+            android:popupKeyboard="@xml/popup_punctuation" />
         <Key
             android:codes="@integer/key_return"
             android:keyIcon="@drawable/sym_bkeyboard_return"
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index fad3ebc..fbdead6 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -121,20 +121,40 @@
                 android:isRepeatable="true" android:isModifier="true"/>
     </Row>
 
-    <Row  android:rowEdgeFlags="bottom">
+    <Row
+        android:keyboardMode="@+id/mode_symbols"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key android:codes="-2" android:keyLabel="@string/label_alpha_key"
+                android:keyWidth="20%p" android:keyEdgeFlags="left" android:isModifier="true"/>
+        <Key android:codes="@integer/key_f1" android:isModifier="true"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:keyWidth="40%p"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:isRepeatable="true" android:isModifier="true"/>
+        <Key android:codes="46" android:keyLabel="."
+                android:popupKeyboard="@xml/popup_punctuation" android:isModifier="true"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:keyWidth="20%p" android:keyEdgeFlags="right"
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:isModifier="true"/>
+    </Row>
+
+    <Row
+        android:keyboardMode="@+id/mode_symbols_with_settings_key"
+        android:rowEdgeFlags="bottom"
+    >
         <Key android:codes="-2" android:keyLabel="@string/label_alpha_key"
                 android:keyWidth="15%p" android:keyEdgeFlags="left" android:isModifier="true"/>
         <Key android:codes="@integer/key_settings" android:keyIcon="@drawable/sym_keyboard_settings"
                 android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-                android:keyWidth="10%p" android:isModifier="true"/>
-        <Key android:codes="@integer/key_f1" android:keyWidth="10%p" android:isModifier="true"/>
+                android:isModifier="true"/>
+        <Key android:codes="@integer/key_f1" android:isModifier="true"/>
         <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
                 android:keyWidth="30%p"
                 android:iconPreview="@drawable/sym_keyboard_feedback_space"
                 android:isRepeatable="true" android:isModifier="true"/>
         <Key android:codes="46" android:keyLabel="."
-                android:popupKeyboard="@xml/popup_punctuation"
-                android:keyWidth="10%p" android:isModifier="true"/>
+                android:popupKeyboard="@xml/popup_punctuation" android:isModifier="true"/>
         <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:keyWidth="25%p" android:keyEdgeFlags="right"
                 android:iconPreview="@drawable/sym_keyboard_feedback_return"
                 android:isModifier="true"/>
diff --git a/java/res/xml/kbd_symbols_black.xml b/java/res/xml/kbd_symbols_black.xml
index 7eae554..3bf1397 100644
--- a/java/res/xml/kbd_symbols_black.xml
+++ b/java/res/xml/kbd_symbols_black.xml
@@ -121,22 +121,39 @@
                 android:isRepeatable="true"/>
     </Row>
 
-    <Row  android:rowEdgeFlags="bottom">
+    <Row
+        android:keyboardMode="@+id/mode_symbols"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key android:codes="-2" android:keyLabel="@string/label_alpha_key"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:codes="@integer/key_f1"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_bkeyboard_space"
+                android:keyWidth="40%p"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:isRepeatable="true"/>
+        <Key android:codes="46" android:keyLabel="."
+                android:popupKeyboard="@xml/popup_punctuation"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_bkeyboard_return" android:keyWidth="20%p" android:keyEdgeFlags="right"
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"/>
+    </Row>
+
+    <Row
+        android:keyboardMode="@+id/mode_symbols_with_settings_key"
+        android:rowEdgeFlags="bottom"
+    >
         <Key android:codes="-2" android:keyLabel="@string/label_alpha_key"
                 android:keyWidth="15%p" android:keyEdgeFlags="left"/>
         <Key android:codes="@integer/key_settings" android:keyIcon="@drawable/sym_bkeyboard_settings"
-                android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-                android:keyWidth="10%p"/>
-        <Key android:codes="@integer/key_f1" android:keyWidth="10%p"/>
+                android:iconPreview="@drawable/sym_keyboard_feedback_settings"/>
+        <Key android:codes="@integer/key_f1"/>
         <Key android:codes="32" android:keyIcon="@drawable/sym_bkeyboard_space"
                 android:keyWidth="30%p"
                 android:iconPreview="@drawable/sym_keyboard_feedback_space"
                 android:isRepeatable="true"/>
         <Key android:codes="46" android:keyLabel="."
-                android:popupKeyboard="@xml/popup_punctuation"
-                android:keyWidth="10%p"/>
+                android:popupKeyboard="@xml/popup_punctuation"/>
         <Key android:codes="10" android:keyIcon="@drawable/sym_bkeyboard_return" android:keyWidth="25%p" android:keyEdgeFlags="right"
-                android:iconPreview="@drawable/sym_keyboard_feedback_return"
-                />
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"/>
     </Row>
 </Keyboard>
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index b069391..b72ea50 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -88,18 +88,39 @@
                 android:isRepeatable="true" android:isModifier="true"/>
     </Row>
     
-    <Row android:rowEdgeFlags="bottom">
+    <Row
+        android:keyboardMode="@+id/mode_symbols"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key android:codes="-2" android:keyLabel="@string/label_alpha_key" android:keyWidth="20%p"
+                android:keyEdgeFlags="left" android:isModifier="true"/>
+        <Key android:keyLabel="„" android:isModifier="true"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:keyWidth="40%p"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:isRepeatable="true" android:isModifier="true"/>
+        <Key android:keyLabel="…" android:isModifier="true"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:isModifier="true"/>
+    </Row>
+
+    <Row
+        android:keyboardMode="@+id/mode_symbols_with_settings_key"
+        android:rowEdgeFlags="bottom"
+    >
         <Key android:codes="-2" android:keyLabel="@string/label_alpha_key" android:keyWidth="15%p"
                 android:keyEdgeFlags="left" android:isModifier="true"/>
         <Key android:codes="@integer/key_settings" android:keyIcon="@drawable/sym_keyboard_settings"
                 android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-                android:keyWidth="10%p" android:isModifier="true"/>
-        <Key android:keyLabel="„" android:keyWidth="10%p"  android:isModifier="true"/>
+                android:isModifier="true"/>
+        <Key android:keyLabel="„" android:isModifier="true"/>
         <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
                 android:keyWidth="30%p"
                 android:iconPreview="@drawable/sym_keyboard_feedback_space"
                 android:isRepeatable="true" android:isModifier="true"/>
-        <Key android:keyLabel="…" android:keyWidth="10%p"  android:isModifier="true"/>
+        <Key android:keyLabel="…" android:isModifier="true"/>
         <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
                 android:keyWidth="25%p" android:keyEdgeFlags="right"
                 android:iconPreview="@drawable/sym_keyboard_feedback_return"
diff --git a/java/res/xml/kbd_symbols_shift_black.xml b/java/res/xml/kbd_symbols_shift_black.xml
index 250e085..b52c9d1 100644
--- a/java/res/xml/kbd_symbols_shift_black.xml
+++ b/java/res/xml/kbd_symbols_shift_black.xml
@@ -88,21 +88,39 @@
                 android:isRepeatable="true"/>
     </Row>
 
-    <Row android:rowEdgeFlags="bottom">
+    <Row
+        android:keyboardMode="@+id/mode_symbols"
+        android:rowEdgeFlags="bottom"
+    >
+        <Key android:codes="-2" android:keyLabel="@string/label_alpha_key" android:keyWidth="20%p"
+                android:keyEdgeFlags="left"/>
+        <Key android:keyLabel="„" />
+        <Key android:codes="32" android:keyIcon="@drawable/sym_bkeyboard_space"
+                android:keyWidth="40%p"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:isRepeatable="true"/>
+        <Key android:keyLabel="…" />
+        <Key android:codes="10" android:keyIcon="@drawable/sym_bkeyboard_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"
+                android:iconPreview="@drawable/sym_keyboard_feedback_return" />
+    </Row>
+
+    <Row
+        android:keyboardMode="@+id/mode_symbols_with_settings_key"
+        android:rowEdgeFlags="bottom"
+    >
         <Key android:codes="-2" android:keyLabel="@string/label_alpha_key" android:keyWidth="15%p"
                 android:keyEdgeFlags="left"/>
         <Key android:codes="@integer/key_settings" android:keyIcon="@drawable/sym_bkeyboard_settings"
-                android:iconPreview="@drawable/sym_keyboard_feedback_settings"
-                android:keyWidth="10%p"/>
-        <Key android:keyLabel="„" android:keyWidth="10%p" />
+                android:iconPreview="@drawable/sym_keyboard_feedback_settings"/>
+        <Key android:keyLabel="„" />
         <Key android:codes="32" android:keyIcon="@drawable/sym_bkeyboard_space"
                 android:keyWidth="30%p"
                 android:iconPreview="@drawable/sym_keyboard_feedback_space"
                 android:isRepeatable="true"/>
-        <Key android:keyLabel="…" android:keyWidth="10%p" />
+        <Key android:keyLabel="…" />
         <Key android:codes="10" android:keyIcon="@drawable/sym_bkeyboard_return"
                 android:keyWidth="25%p" android:keyEdgeFlags="right"
-                android:iconPreview="@drawable/sym_keyboard_feedback_return"
-                />
+                android:iconPreview="@drawable/sym_keyboard_feedback_return" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index 762ada0..2e6dffa 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -60,6 +60,15 @@
             />
 
     <ListPreference
+            android:key="settings_key"
+            android:title="@string/prefs_settings_key"
+            android:persistent="true"
+            android:entryValues="@array/settings_key_modes_values"
+            android:entries="@array/settings_key_modes"
+            android:defaultValue="@string/settings_key_mode_auto"
+            />
+
+    <ListPreference
             android:key="voice_mode"
             android:title="@string/voice_input"
             android:persistent="true"