Added support for speaking keys through accessibility service.

Issue: 3366636

Change-Id: I70a2ebb4420782ba4d7d874ffc2259bb1b80446f
diff --git a/java/res/values/keycodes.xml b/java/res/values/keycodes.xml
index 6c18cb4..d6f9bfc 100644
--- a/java/res/values/keycodes.xml
+++ b/java/res/values/keycodes.xml
@@ -28,4 +28,24 @@
     <integer name="key_delete">-5</integer>
     <integer name="key_settings">-100</integer>
     <integer name="key_voice">-102</integer>
+
+    <!-- Array used for mapping key codes to description strings. -->
+    <array name="key_descriptions">
+        <item>@integer/key_tab</item>
+        <item>@string/description_tab_key</item>
+        <item>@integer/key_return</item>
+        <item>@string/description_return_key</item>
+        <item>@integer/key_space</item>
+        <item>@string/description_space_key</item>
+        <item>@integer/key_shift</item>
+        <item>@string/description_shift_key</item>
+        <item>@integer/key_switch_alpha_symbol</item>
+        <item>@string/description_switch_alpha_symbol_key</item>
+        <item>@integer/key_delete</item>
+        <item>@string/description_delete_key</item>
+        <item>@integer/key_settings</item>
+        <item>@string/description_settings_key</item>
+        <item>@integer/key_voice</item>
+        <item>@string/description_voice_key</item>
+    </array>
 </resources>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index f63d681..3c0a9c1 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -102,6 +102,31 @@
     <!-- Label for "Wait" key of phone number keyboard.  Must be short to fit on key! [CHAR LIMIT=5]-->
     <string name="label_wait_key">Wait</string>
 
+    <!-- Spoken text description for delete key. -->
+    <string name="description_delete_key">Delete</string>
+    <!-- Spoken text description for return key. -->
+    <string name="description_return_key">Return</string>
+    <!-- Spoken text description for settings key. -->
+    <string name="description_settings_key">Settings</string>
+    <!-- Spoken text description for shift key. -->
+    <string name="description_shift_key">Shift</string>
+    <!-- Spoken text description for space key. -->
+    <string name="description_space_key">Space</string>
+    <!-- Spoken text description for symbols key. -->
+    <string name="description_switch_alpha_symbol_key">Symbols</string>
+    <!-- Spoken text description for tab key. -->
+    <string name="description_tab_key">Tab</string>
+    <!-- Spoken text description for voice input key. -->
+    <string name="description_voice_key">Voice Input</string>
+    <!-- Spoken text description for symbols mode on. -->
+    <string name="description_symbols_on">Symbols on</string>
+    <!-- Spoken text description for symbols mode off. -->
+    <string name="description_symbols_off">Symbols off</string>
+    <!-- Spoken text description for shift mode on. -->
+    <string name="description_shift_on">Shift on</string>
+    <!-- Spoken text description for shift mode off. -->
+    <string name="description_shift_off">Shift off</string>
+
     <!-- Voice related labels -->
 
     <!-- Title of the warning dialog that shows when a user initiates voice input for