Support label with icon key

Bug: 5108339
Change-Id: I7cd4258a95a7e25b8b1114b43ffcca5b77c5c1e3
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/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/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] -->