aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--java/res/drawable-hdpi/btn_center_default.9.pngbin182 -> 168 bytes
-rw-r--r--java/res/drawable-hdpi/btn_center_pressed.9.pngbin200 -> 194 bytes
-rw-r--r--java/res/drawable-hdpi/btn_center_selected.9.pngbin200 -> 194 bytes
-rw-r--r--java/res/drawable-hdpi/btn_close_candidates_pane.9.pngbin1110 -> 936 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.pngbin442 -> 564 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.pngbin817 -> 648 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.pngbin1027 -> 721 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.pngbin763 -> 684 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.pngbin1223 -> 721 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.pngbin1343 -> 838 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.pngbin1649 -> 1370 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.pngbin1696 -> 1315 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.pngbin515 -> 583 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.pngbin725 -> 652 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal.9.pngbin715 -> 904 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.pngbin1001 -> 1076 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.pngbin2389 -> 2059 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.pngbin1077 -> 1137 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.pngbin2408 -> 2029 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.pngbin2213 -> 1719 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.pngbin0 -> 894 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.pngbin242 -> 339 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed.9.pngbin745 -> 831 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.pngbin1042 -> 1041 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.pngbin1105 -> 1086 bytes
-rw-r--r--java/res/drawable-hdpi/candidate_feedback_background.9.pngbin833 -> 1607 bytes
-rw-r--r--java/res/drawable-hdpi/caution.pngbin1641 -> 2451 bytes
-rw-r--r--java/res/drawable-hdpi/hint_popup.9.pngbin226 -> 242 bytes
-rw-r--r--java/res/drawable-hdpi/hint_popup_holo.9.pngbin333 -> 324 bytes
-rw-r--r--java/res/drawable-hdpi/ic_dialog_keyboard.pngbin807 -> 1157 bytes
-rw-r--r--java/res/drawable-hdpi/ic_mic_dialog.pngbin3634 -> 4083 bytes
-rw-r--r--java/res/drawable-hdpi/ic_subtype_keyboard.pngbin1068 -> 812 bytes
-rw-r--r--java/res/drawable-hdpi/ic_subtype_mic.pngbin681 -> 892 bytes
-rw-r--r--java/res/drawable-hdpi/ic_suggest_strip_microphone.pngbin548 -> 970 bytes
-rw-r--r--java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.pngbin438 -> 795 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_background.9.pngbin200 -> 207 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_background_holo.9.pngbin296 -> 255 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_dark_background.9.pngbin1041 -> 210 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.pngbin136 -> 2150 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.pngbin0 -> 2066 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.pngbin0 -> 2223 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.pngbin4190 -> 2307 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.pngbin0 -> 2077 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.pngbin0 -> 2239 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_popup_panel_background.9.pngbin1494 -> 1204 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_suggest_strip.9.pngbin215 -> 248 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_suggest_strip_divider.pngbin1012 -> 2946 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.pngbin136 -> 168 bytes
-rw-r--r--java/res/drawable-hdpi/mic_base.pngbin2957 -> 4347 bytes
-rw-r--r--java/res/drawable-hdpi/mic_full.pngbin2935 -> 5013 bytes
-rw-r--r--java/res/drawable-hdpi/mic_slash.pngbin3766 -> 12569 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_123_mic.pngbin2576 -> 2583 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_delete.pngbin2314 -> 1856 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_mic.pngbin1410 -> 1453 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_num0.pngbin1903 -> 1928 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_num1.pngbin792 -> 899 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_num2.pngbin3241 -> 2805 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_num3.pngbin2829 -> 2578 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_num4.pngbin2638 -> 2489 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_num5.pngbin2532 -> 2287 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_num6.pngbin3568 -> 3017 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_num7.pngbin3687 -> 3108 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_num8.pngbin2952 -> 2719 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_num9.pngbin3887 -> 3330 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_numalt.pngbin2971 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_numpound.pngbin1577 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_numstar.pngbin1742 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_return.pngbin1111 -> 1426 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_search.pngbin1612 -> 2045 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_settings.pngbin729 -> 1710 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_shift.pngbin1474 -> 1820 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_shift_locked.pngbin1115 -> 1467 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_space.pngbin358 -> 790 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_tab.pngbin1008 -> 1123 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_123_mic.pngbin2575 -> 2510 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_delete.pngbin599 -> 4003 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_delete_holo.pngbin1311 -> 1123 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.pngbin3541 -> 6061 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_delete.pngbin681 -> 4019 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.pngbin1275 -> 3397 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.pngbin1329 -> 3388 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_mic.pngbin2494 -> 4637 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_numalt.pngbin3797 -> 5931 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_return.pngbin2018 -> 4346 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_search.pngbin2335 -> 4658 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_settings.pngbin1558 -> 4641 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_shift.pngbin677 -> 3865 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_space.pngbin1336 -> 3908 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_tab.pngbin1707 -> 4111 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_language_arrows_left.pngbin1253 -> 3220 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_language_arrows_right.pngbin1372 -> 3286 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_mic.pngbin886 -> 3893 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num0.pngbin1931 -> 1872 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num0_holo.pngbin2398 -> 963 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num1.pngbin809 -> 867 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num1_holo.pngbin1118 -> 582 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num2.pngbin3214 -> 2720 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num2_holo.pngbin4328 -> 1636 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num3.pngbin2805 -> 2523 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num3_holo.pngbin3749 -> 1283 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num4.pngbin2647 -> 2419 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num4_holo.pngbin3670 -> 1190 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num5.pngbin2536 -> 2230 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num5_holo.pngbin3395 -> 1255 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num6.pngbin3573 -> 2950 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num6_holo.pngbin4817 -> 1744 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num7.pngbin3684 -> 3035 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num7_holo.pngbin4963 -> 1837 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num8.pngbin2904 -> 2628 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num8_holo.pngbin4035 -> 1505 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num9.pngbin3860 -> 3255 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_num9_holo.pngbin5608 -> 2072 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_numalt.pngbin2919 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_numbpound_holo.pngbin2027 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_numbstar_holo.pngbin1397 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_numpound.pngbin1600 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_numstar.pngbin1749 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_return.pngbin1719 -> 4024 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_return_holo.pngbin1296 -> 1012 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_search.pngbin1260 -> 4248 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_settings.pngbin1094 -> 4015 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_settings_holo.pngbin2044 -> 1684 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_shift.pngbin640 -> 3740 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_shift_holo.pngbin1824 -> 1282 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_shift_locked.pngbin593 -> 3686 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.pngbin1405 -> 1025 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_space.pngbin326 -> 3331 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_space_holo.pngbin685 -> 470 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_space_led.9.pngbin3249 -> 557 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_tab_holo.pngbin0 -> 903 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_voice_holo.pngbin1559 -> 1258 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_voice_off_holo.pngbin900 -> 1180 bytes
-rw-r--r--java/res/drawable-hdpi/vs_dialog_blue.9.pngbin8275 -> 11064 bytes
-rw-r--r--java/res/drawable-hdpi/vs_dialog_red.9.pngbin8607 -> 10976 bytes
-rw-r--r--java/res/drawable-hdpi/vs_dialog_yellow.9.pngbin8151 -> 10518 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.pngbin1275 -> 402 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.pngbin1641 -> 446 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.pngbin1865 -> 498 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.pngbin1511 -> 460 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.pngbin1861 -> 496 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.pngbin1984 -> 571 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.pngbin1329 -> 394 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.pngbin1469 -> 436 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.pngbin0 -> 612 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.pngbin1101 -> 270 bytes
-rw-r--r--java/res/drawable-mdpi/hint_popup_holo.9.pngbin1168 -> 273 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_background_holo.9.pngbin1108 -> 211 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.pngbin83 -> 1371 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.pngbin0 -> 1349 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.pngbin0 -> 1446 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.pngbin3814 -> 1473 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.pngbin0 -> 1339 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.pngbin0 -> 1443 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.pngbin1003 -> 162 bytes
-rw-r--r--java/res/drawable-mdpi/sym_bkeyboard_numalt.pngbin1670 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_bkeyboard_numpound.pngbin910 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_bkeyboard_numstar.pngbin943 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_delete_holo.pngbin1419 -> 819 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num0_holo.pngbin1759 -> 753 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num1_holo.pngbin1324 -> 504 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num2_holo.pngbin2397 -> 1231 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num3_holo.pngbin2143 -> 1033 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num4_holo.pngbin2063 -> 975 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num5_holo.pngbin2021 -> 958 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num6_holo.pngbin2502 -> 1316 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num7_holo.pngbin2540 -> 1339 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num8_holo.pngbin2226 -> 1124 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num9_holo.pngbin2699 -> 1483 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_numalt.pngbin1673 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_numbpound_holo.pngbin1548 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_numbstar_holo.pngbin1414 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_numpound.pngbin963 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_numstar.pngbin954 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_return_holo.pngbin1391 -> 710 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_settings_holo.pngbin1865 -> 1061 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_shift_holo.pngbin1683 -> 867 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.pngbin1480 -> 738 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_space_holo.pngbin1195 -> 397 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_tab_holo.pngbin0 -> 679 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_voice_holo.pngbin1678 -> 841 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_voice_off_holo.pngbin1587 -> 801 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_candidate_pressed.9.pngbin0 -> 1266 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_center_default.9.pngbin0 -> 178 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_center_pressed.9.pngbin0 -> 196 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_center_selected.9.pngbin0 -> 196 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_close_candidates_pane.9.pngbin0 -> 1027 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_expand_candidates_pane.9.pngbin0 -> 1350 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.pngbin476 -> 759 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.pngbin867 -> 856 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_holo.9.pngbin1143 -> 987 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.pngbin821 -> 932 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.pngbin1323 -> 961 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.pngbin1486 -> 1177 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_normal.9.pngbin0 -> 1441 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.pngbin0 -> 1389 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.pngbin589 -> 795 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.pngbin794 -> 867 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal.9.pngbin0 -> 1004 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.pngbin0 -> 1176 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.pngbin0 -> 2117 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.pngbin0 -> 1271 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.pngbin0 -> 2131 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.pngbin0 -> 1787 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.pngbin0 -> 1287 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.pngbin243 -> 422 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.pngbin0 -> 921 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.pngbin0 -> 1131 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.pngbin0 -> 1197 bytes
-rw-r--r--java/res/drawable-xhdpi/candidate_feedback_background.9.pngbin0 -> 1676 bytes
-rw-r--r--java/res/drawable-xhdpi/caution.pngbin0 -> 3207 bytes
-rw-r--r--java/res/drawable-xhdpi/hint_popup.9.pngbin0 -> 292 bytes
-rw-r--r--java/res/drawable-xhdpi/hint_popup_holo.9.pngbin379 -> 410 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_dialog_keyboard.pngbin0 -> 1589 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_mic_dialog.pngbin0 -> 4755 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_subtype_keyboard.pngbin0 -> 1056 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_subtype_mic.pngbin0 -> 1099 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_suggest_strip_microphone.pngbin0 -> 1334 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_suggest_strip_microphone_swipe.pngbin0 -> 982 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_background.9.pngbin0 -> 222 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_background_holo.9.pngbin0 -> 297 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_dark_background.9.pngbin0 -> 241 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.pngbin136 -> 3062 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.pngbin0 -> 2907 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.pngbin0 -> 3122 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.pngbin4317 -> 3275 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.pngbin0 -> 2904 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.pngbin0 -> 3119 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_popup_panel_background.9.pngbin0 -> 1365 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_suggest_strip.9.pngbin0 -> 289 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_suggest_strip_divider.pngbin0 -> 2951 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.pngbin0 -> 181 bytes
-rw-r--r--java/res/drawable-xhdpi/mic_base.pngbin0 -> 6497 bytes
-rw-r--r--java/res/drawable-xhdpi/mic_full.pngbin0 -> 7100 bytes
-rw-r--r--java/res/drawable-xhdpi/mic_slash.pngbin0 -> 17757 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_123_mic.pngbin0 -> 3765 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_delete.pngbin0 -> 2413 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_mic.pngbin0 -> 2090 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_num0.pngbin0 -> 2769 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_num1.pngbin0 -> 1206 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_num2.pngbin0 -> 4122 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_num3.pngbin0 -> 3831 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_num4.pngbin0 -> 3727 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_num5.pngbin0 -> 3326 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_num6.pngbin0 -> 4572 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_num7.pngbin0 -> 4576 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_num8.pngbin0 -> 3946 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_num9.pngbin0 -> 5053 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_return.pngbin0 -> 2018 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_search.pngbin0 -> 2889 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_settings.pngbin0 -> 2539 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_shift.pngbin0 -> 2640 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_shift_locked.pngbin0 -> 2076 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_space.pngbin0 -> 1072 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_tab.pngbin0 -> 1544 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_bkeyboard_voice_off.pngbin0 -> 1137 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_123_mic.pngbin0 -> 3682 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_delete.pngbin0 -> 4589 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_delete_holo.pngbin0 -> 1608 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_123_mic.pngbin0 -> 7767 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_delete.pngbin0 -> 4645 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_left.pngbin0 -> 3624 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_right.pngbin0 -> 3602 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_mic.pngbin0 -> 5610 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_numalt.pngbin0 -> 7559 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_return.pngbin0 -> 5070 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_search.pngbin0 -> 5742 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_settings.pngbin0 -> 5616 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_shift.pngbin0 -> 4380 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_space.pngbin0 -> 4446 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_feedback_tab.pngbin0 -> 4732 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_language_arrows_left.pngbin0 -> 3356 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_language_arrows_right.pngbin0 -> 3461 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_mic.pngbin0 -> 4487 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num0.pngbin0 -> 2694 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num0_holo.pngbin0 -> 1216 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num1.pngbin0 -> 1157 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num1_holo.pngbin0 -> 703 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num2.pngbin0 -> 4032 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num2_holo.pngbin0 -> 2293 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num3.pngbin0 -> 3748 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num3_holo.pngbin0 -> 1714 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num4.pngbin0 -> 3636 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num4_holo.pngbin0 -> 1615 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num5.pngbin0 -> 3279 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num5_holo.pngbin0 -> 1728 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num6.pngbin0 -> 4495 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num6_holo.pngbin0 -> 2565 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num7.pngbin0 -> 4499 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num7_holo.pngbin0 -> 2597 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num8.pngbin0 -> 3849 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num8_holo.pngbin0 -> 2047 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num9.pngbin0 -> 4970 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_num9_holo.pngbin0 -> 2992 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_return.pngbin0 -> 4559 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_return_holo.pngbin0 -> 1346 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_search.pngbin0 -> 4990 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_settings.pngbin0 -> 4639 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_settings_holo.pngbin0 -> 2351 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_shift.pngbin0 -> 4186 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_shift_holo.pngbin0 -> 1814 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_shift_locked.pngbin0 -> 4119 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo.pngbin0 -> 1435 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_space.pngbin0 -> 3526 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_space_holo.pngbin0 -> 551 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_space_led.9.pngbin0 -> 617 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_tab.pngbin0 -> 4157 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_tab_holo.pngbin0 -> 1223 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_voice_holo.pngbin0 -> 1703 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_voice_off_holo.pngbin0 -> 1561 bytes
-rw-r--r--java/res/drawable-xhdpi/vs_dialog_blue.9.pngbin0 -> 11547 bytes
-rw-r--r--java/res/drawable-xhdpi/vs_dialog_red.9.pngbin0 -> 11400 bytes
-rw-r--r--java/res/drawable-xhdpi/vs_dialog_yellow.9.pngbin0 -> 10921 bytes
-rw-r--r--java/res/drawable-xhdpi/vs_popup_mic_edge.pngbin0 -> 4670 bytes
-rw-r--r--java/res/drawable/btn_candidate_ics.xml (renamed from java/res/drawable/btn_candidate_holo.xml)2
-rw-r--r--java/res/drawable/btn_keyboard_key_ics.xml (renamed from java/res/drawable/btn_keyboard_key_honeycomb.xml)3
-rw-r--r--java/res/drawable/btn_keyboard_key_popup_ics.xml (renamed from java/res/drawable/btn_keyboard_key_popup_honeycomb.xml)1
-rw-r--r--java/res/drawable/btn_keyboard_key_stone.xml7
-rw-r--r--java/res/drawable/keyboard_key_feedback_ics.xml (renamed from java/res/drawable/keyboard_key_feedback_honeycomb.xml)2
-rw-r--r--java/res/layout/key_preview.xml1
-rw-r--r--java/res/values-land/dimens.xml8
-rw-r--r--java/res/values-sw600dp-land/dimens.xml6
-rw-r--r--java/res/values-sw600dp/config.xml1
-rw-r--r--java/res/values-sw600dp/dimens.xml4
-rw-r--r--java/res/values-sw768dp-land/dimens.xml6
-rw-r--r--java/res/values-sw768dp/config.xml1
-rw-r--r--java/res/values-sw768dp/dimens.xml6
-rw-r--r--java/res/values/attrs.xml35
-rw-r--r--java/res/values/colors.xml27
-rw-r--r--java/res/values/config.xml3
-rw-r--r--java/res/values/dimens.xml11
-rw-r--r--java/res/values/donottranslate.xml10
-rw-r--r--java/res/values/keyboard-icons-black.xml11
-rw-r--r--java/res/values/keyboard-icons-holo.xml47
-rw-r--r--java/res/values/keyboard-icons-ics.xml78
-rw-r--r--java/res/values/keyboard-icons-white.xml11
-rw-r--r--java/res/values/strings.xml75
-rw-r--r--java/res/values/styles.xml74
-rw-r--r--java/res/values/themes-ics.xml (renamed from java/res/values/themes-honeycomb.xml)22
-rw-r--r--java/res/values/themes-stone-bold.xml2
-rw-r--r--java/res/values/themes-stone.xml2
-rw-r--r--java/res/xml-sw600dp/kbd_key_styles.xml18
-rw-r--r--java/res/xml-sw600dp/kbd_number.xml14
-rw-r--r--java/res/xml-sw600dp/kbd_phone.xml9
-rw-r--r--java/res/xml-sw600dp/kbd_phone_symbols.xml10
-rw-r--r--java/res/xml-sw768dp/kbd_key_styles.xml18
-rw-r--r--java/res/xml-sw768dp/kbd_number.xml13
-rw-r--r--java/res/xml-sw768dp/kbd_phone.xml9
-rw-r--r--java/res/xml-sw768dp/kbd_phone_symbols.xml10
-rw-r--r--java/res/xml/kbd_key_styles.xml19
-rw-r--r--java/res/xml/kbd_numkey_styles.xml24
-rw-r--r--java/res/xml/kbd_phone.xml6
-rw-r--r--java/res/xml/kbd_phone_symbols.xml24
-rw-r--r--java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java133
-rw-r--r--java/src/com/android/inputmethod/accessibility/AccessibleInputMethodServiceProxy.java129
-rw-r--r--java/src/com/android/inputmethod/accessibility/AccessibleKeyboardActionListener.java37
-rw-r--r--java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java201
-rw-r--r--java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java226
-rw-r--r--java/src/com/android/inputmethod/compat/AccessibilityEventCompatUtils.java39
-rw-r--r--java/src/com/android/inputmethod/compat/AccessibilityManagerCompatWrapper.java42
-rw-r--r--java/src/com/android/inputmethod/compat/MotionEventCompatUtils.java23
-rw-r--r--java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardId.java35
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java19
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java66
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboard.java13
-rw-r--r--java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java7
-rw-r--r--java/src/com/android/inputmethod/keyboard/PopupPanel.java1
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/Key.java6
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java35
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java33
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java2
-rw-r--r--tests/src/com/android/inputmethod/latin/SuggestTestsBase.java9
372 files changed, 1348 insertions, 342 deletions
diff --git a/java/res/drawable-hdpi/btn_center_default.9.png b/java/res/drawable-hdpi/btn_center_default.9.png
index d5ec36ba4..4f5f01cb8 100644
--- a/java/res/drawable-hdpi/btn_center_default.9.png
+++ b/java/res/drawable-hdpi/btn_center_default.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_center_pressed.9.png b/java/res/drawable-hdpi/btn_center_pressed.9.png
index 593a679d0..213b482d4 100644
--- a/java/res/drawable-hdpi/btn_center_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_center_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_center_selected.9.png b/java/res/drawable-hdpi/btn_center_selected.9.png
index f1914a886..213b482d4 100644
--- a/java/res/drawable-hdpi/btn_center_selected.9.png
+++ b/java/res/drawable-hdpi/btn_center_selected.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_close_candidates_pane.9.png b/java/res/drawable-hdpi/btn_close_candidates_pane.9.png
index 6df00f229..bdd949577 100644
--- a/java/res/drawable-hdpi/btn_close_candidates_pane.9.png
+++ b/java/res/drawable-hdpi/btn_close_candidates_pane.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png
index a8c1688f7..2dc1bed5d 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png
index 829647663..575781f07 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png
index 020a65d6e..6c5b42e5c 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png
index 88b27c07b..8c999f655 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
index 87497bc1f..8c7c2f3bc 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
index f0d76dfa2..02497b472 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png
index b6c234c04..a524168c9 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
index 73a8cd1c3..4395e978a 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png
index 3115fa436..a13b2003f 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png
index dc08102a7..0b76855e6 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png
index 42c7c146d..6ec7e6592 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
index 01e2506b0..995780cbf 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png
index fad0ec458..1388b6694 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
index 83c6eb3fc..7215782eb 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png
index 215f8157c..5a94cb6ac 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
index 88acdd748..c6373a8af 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png
new file mode 100644
index 000000000..0b2758925
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png
index 5ecdaf428..166de2a03 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
index e047eaff1..0bd49a0e7 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
index 218a2d29e..634419f1b 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
index afe49512e..8474f9f42 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/candidate_feedback_background.9.png b/java/res/drawable-hdpi/candidate_feedback_background.9.png
index 203c4e640..16499002e 100644
--- a/java/res/drawable-hdpi/candidate_feedback_background.9.png
+++ b/java/res/drawable-hdpi/candidate_feedback_background.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/caution.png b/java/res/drawable-hdpi/caution.png
index 5cb6c54b9..61eb4dd62 100644
--- a/java/res/drawable-hdpi/caution.png
+++ b/java/res/drawable-hdpi/caution.png
Binary files differ
diff --git a/java/res/drawable-hdpi/hint_popup.9.png b/java/res/drawable-hdpi/hint_popup.9.png
index b5ec003e6..5b2ad5388 100644
--- a/java/res/drawable-hdpi/hint_popup.9.png
+++ b/java/res/drawable-hdpi/hint_popup.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/hint_popup_holo.9.png b/java/res/drawable-hdpi/hint_popup_holo.9.png
index 2ffc6ea2b..c44af8883 100644
--- a/java/res/drawable-hdpi/hint_popup_holo.9.png
+++ b/java/res/drawable-hdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_dialog_keyboard.png b/java/res/drawable-hdpi/ic_dialog_keyboard.png
index c7729566c..305441633 100644
--- a/java/res/drawable-hdpi/ic_dialog_keyboard.png
+++ b/java/res/drawable-hdpi/ic_dialog_keyboard.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_mic_dialog.png b/java/res/drawable-hdpi/ic_mic_dialog.png
index 349dc4b37..6107f876e 100644
--- a/java/res/drawable-hdpi/ic_mic_dialog.png
+++ b/java/res/drawable-hdpi/ic_mic_dialog.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_subtype_keyboard.png b/java/res/drawable-hdpi/ic_subtype_keyboard.png
index 7015e266a..484305655 100644
--- a/java/res/drawable-hdpi/ic_subtype_keyboard.png
+++ b/java/res/drawable-hdpi/ic_subtype_keyboard.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_subtype_mic.png b/java/res/drawable-hdpi/ic_subtype_mic.png
index cb86a5598..25c9ee2ab 100644
--- a/java/res/drawable-hdpi/ic_subtype_mic.png
+++ b/java/res/drawable-hdpi/ic_subtype_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_suggest_strip_microphone.png b/java/res/drawable-hdpi/ic_suggest_strip_microphone.png
index c00b4aaa6..189a861fb 100644
--- a/java/res/drawable-hdpi/ic_suggest_strip_microphone.png
+++ b/java/res/drawable-hdpi/ic_suggest_strip_microphone.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png
index 256dc3d61..b4a6e373b 100644
--- a/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png
+++ b/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_background.9.png b/java/res/drawable-hdpi/keyboard_background.9.png
index edffac5b8..d57463fb6 100644
--- a/java/res/drawable-hdpi/keyboard_background.9.png
+++ b/java/res/drawable-hdpi/keyboard_background.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_background_holo.9.png b/java/res/drawable-hdpi/keyboard_background_holo.9.png
index 76fe2c8b8..39746ffd2 100644
--- a/java/res/drawable-hdpi/keyboard_background_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_dark_background.9.png b/java/res/drawable-hdpi/keyboard_dark_background.9.png
index f315cbdd4..fa3d449f7 100644
--- a/java/res/drawable-hdpi/keyboard_dark_background.9.png
+++ b/java/res/drawable-hdpi/keyboard_dark_background.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png
index 943f9e4bc..fd7a56e17 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.png
new file mode 100644
index 000000000..60d920315
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png
new file mode 100644
index 000000000..f694b796c
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png
index c21240f17..3165d08aa 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png
new file mode 100644
index 000000000..3136073a2
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png
new file mode 100644
index 000000000..13d5af9cb
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background.9.png
index d6b2c7936..baff80950 100644
--- a/java/res/drawable-hdpi/keyboard_popup_panel_background.9.png
+++ b/java/res/drawable-hdpi/keyboard_popup_panel_background.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip.9.png
index 0ccdb6ab2..7cab5a899 100644
--- a/java/res/drawable-hdpi/keyboard_suggest_strip.9.png
+++ b/java/res/drawable-hdpi/keyboard_suggest_strip.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png
index 7ca3e6131..a62daf90c 100644
--- a/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png
+++ b/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png
index f55bcc933..f25003405 100644
--- a/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/mic_base.png b/java/res/drawable-hdpi/mic_base.png
index 53e29ff4b..504a1aa2a 100644
--- a/java/res/drawable-hdpi/mic_base.png
+++ b/java/res/drawable-hdpi/mic_base.png
Binary files differ
diff --git a/java/res/drawable-hdpi/mic_full.png b/java/res/drawable-hdpi/mic_full.png
index e3e3dfac3..3f4a67657 100644
--- a/java/res/drawable-hdpi/mic_full.png
+++ b/java/res/drawable-hdpi/mic_full.png
Binary files differ
diff --git a/java/res/drawable-hdpi/mic_slash.png b/java/res/drawable-hdpi/mic_slash.png
index 1dd05c5b4..c3b10929b 100644
--- a/java/res/drawable-hdpi/mic_slash.png
+++ b/java/res/drawable-hdpi/mic_slash.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png
index 3e4eff698..af6082d04 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_delete.png b/java/res/drawable-hdpi/sym_bkeyboard_delete.png
index 1d24cc85c..999a182f4 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_delete.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_delete.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_mic.png
index 512f46080..5c73600d9 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_mic.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num0.png b/java/res/drawable-hdpi/sym_bkeyboard_num0.png
index 678a790de..02f281166 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_num0.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_num0.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num1.png b/java/res/drawable-hdpi/sym_bkeyboard_num1.png
index 4e68e35b3..304acfd31 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_num1.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_num1.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num2.png b/java/res/drawable-hdpi/sym_bkeyboard_num2.png
index 546663fda..295eba1e4 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_num2.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_num2.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num3.png b/java/res/drawable-hdpi/sym_bkeyboard_num3.png
index 57f9a8d8e..9ee6e4437 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_num3.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_num3.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num4.png b/java/res/drawable-hdpi/sym_bkeyboard_num4.png
index de504388f..ab4392dcb 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_num4.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_num4.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num5.png b/java/res/drawable-hdpi/sym_bkeyboard_num5.png
index 1d2e1ef89..004ecd72e 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_num5.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_num5.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num6.png b/java/res/drawable-hdpi/sym_bkeyboard_num6.png
index 39788b727..2aa317d77 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_num6.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_num6.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num7.png b/java/res/drawable-hdpi/sym_bkeyboard_num7.png
index fff6f27bf..721361c29 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_num7.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_num7.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num8.png b/java/res/drawable-hdpi/sym_bkeyboard_num8.png
index 8cc1a955e..941359f6b 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_num8.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_num8.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num9.png b/java/res/drawable-hdpi/sym_bkeyboard_num9.png
index 021742509..74e08a087 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_num9.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_num9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_numalt.png b/java/res/drawable-hdpi/sym_bkeyboard_numalt.png
deleted file mode 100644
index 200714f66..000000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_numalt.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_numpound.png b/java/res/drawable-hdpi/sym_bkeyboard_numpound.png
deleted file mode 100644
index 0a46122b2..000000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_numpound.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_numstar.png b/java/res/drawable-hdpi/sym_bkeyboard_numstar.png
deleted file mode 100644
index ca22bd535..000000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_numstar.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_return.png b/java/res/drawable-hdpi/sym_bkeyboard_return.png
index 426e1599e..91bb397ff 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_return.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_return.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_search.png b/java/res/drawable-hdpi/sym_bkeyboard_search.png
index 1b6f884fa..0ac08145b 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_search.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_search.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_settings.png b/java/res/drawable-hdpi/sym_bkeyboard_settings.png
index 08ba18f28..5b6217aa0 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_settings.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_settings.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_shift.png b/java/res/drawable-hdpi/sym_bkeyboard_shift.png
index 5a22dd309..5ef01b8bd 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_shift.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_shift.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png b/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png
index 566449126..7d36dcb34 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_space.png b/java/res/drawable-hdpi/sym_bkeyboard_space.png
index cd0ebe2f4..77518cc93 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_space.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_space.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_tab.png b/java/res/drawable-hdpi/sym_bkeyboard_tab.png
index 3466e1271..5db4cef2b 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_tab.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_tab.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
index 62669803d..6f0aec24c 100644
--- a/java/res/drawable-hdpi/sym_keyboard_123_mic.png
+++ b/java/res/drawable-hdpi/sym_keyboard_123_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_delete.png b/java/res/drawable-hdpi/sym_keyboard_delete.png
index 459ebcff8..0591b82cd 100644
--- a/java/res/drawable-hdpi/sym_keyboard_delete.png
+++ b/java/res/drawable-hdpi/sym_keyboard_delete.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_delete_holo.png b/java/res/drawable-hdpi/sym_keyboard_delete_holo.png
index ff2a4acbb..9d87ba619 100644
--- a/java/res/drawable-hdpi/sym_keyboard_delete_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_delete_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png b/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png
index eef789680..e56799cdb 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png
index 8322e8e1d..960bb4e8e 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png
index 889477cfb..5d1cb7833 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png
index b0f6d7feb..3a56d4745 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png b/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png
index f82c33ae3..a88a19d0d 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png b/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png
index 819236c8e..7d418d91d 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_return.png b/java/res/drawable-hdpi/sym_keyboard_feedback_return.png
index f038d3abe..f73ff3cd9 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_return.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_return.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_search.png b/java/res/drawable-hdpi/sym_keyboard_feedback_search.png
index 337f9e4fe..0e69157d6 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_search.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_search.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_settings.png b/java/res/drawable-hdpi/sym_keyboard_feedback_settings.png
index 8a02be07e..6304b00ed 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_settings.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_settings.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png b/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png
index abf15f8f9..fc858f220 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_space.png b/java/res/drawable-hdpi/sym_keyboard_feedback_space.png
index 70debca9b..67311fc8f 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_space.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_space.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png
index d2efb1619..d75fcacd5 100644
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png
+++ b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png
index dcc4bd59b..79f235f25 100644
--- a/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png
+++ b/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png
index ecf61a98e..e1444e85b 100644
--- a/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png
+++ b/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_mic.png b/java/res/drawable-hdpi/sym_keyboard_mic.png
index c8dca62a0..520a40f09 100644
--- a/java/res/drawable-hdpi/sym_keyboard_mic.png
+++ b/java/res/drawable-hdpi/sym_keyboard_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num0.png b/java/res/drawable-hdpi/sym_keyboard_num0.png
index 10ac70b9d..2024f416b 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num0.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num0.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num0_holo.png b/java/res/drawable-hdpi/sym_keyboard_num0_holo.png
index ec8b5a8d2..fbd55d68d 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num0_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num0_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num1.png b/java/res/drawable-hdpi/sym_keyboard_num1.png
index 0fc03efa5..5e66b9a31 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num1.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num1.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num1_holo.png b/java/res/drawable-hdpi/sym_keyboard_num1_holo.png
index 60c8ab8a8..e651c3e85 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num1_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num1_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num2.png b/java/res/drawable-hdpi/sym_keyboard_num2.png
index 283560b35..3933270dc 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num2.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num2.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num2_holo.png b/java/res/drawable-hdpi/sym_keyboard_num2_holo.png
index 578e37d6e..8458f5313 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num2_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num2_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num3.png b/java/res/drawable-hdpi/sym_keyboard_num3.png
index 9a3b3294b..c69548345 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num3.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num3.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num3_holo.png b/java/res/drawable-hdpi/sym_keyboard_num3_holo.png
index fb6250699..81025c635 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num3_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num3_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num4.png b/java/res/drawable-hdpi/sym_keyboard_num4.png
index f13ff1ae9..ef20add54 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num4.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num4.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num4_holo.png b/java/res/drawable-hdpi/sym_keyboard_num4_holo.png
index c0e54a523..30a0c77c7 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num4_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num4_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num5.png b/java/res/drawable-hdpi/sym_keyboard_num5.png
index c251329fa..9a2f51f8d 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num5.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num5.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num5_holo.png b/java/res/drawable-hdpi/sym_keyboard_num5_holo.png
index b581a4657..147f056fc 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num5_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num5_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num6.png b/java/res/drawable-hdpi/sym_keyboard_num6.png
index 4acba4c91..6829f81d1 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num6.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num6.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num6_holo.png b/java/res/drawable-hdpi/sym_keyboard_num6_holo.png
index 0791802ba..b96830844 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num6_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num6_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num7.png b/java/res/drawable-hdpi/sym_keyboard_num7.png
index 14931c18c..dc608d4e1 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num7.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num7.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num7_holo.png b/java/res/drawable-hdpi/sym_keyboard_num7_holo.png
index 7b3d3a825..7d44bfb45 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num7_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num7_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num8.png b/java/res/drawable-hdpi/sym_keyboard_num8.png
index d4973fdc9..f0978c611 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num8.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num8.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num8_holo.png b/java/res/drawable-hdpi/sym_keyboard_num8_holo.png
index e076aedbe..093cd743a 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num8_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num8_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num9.png b/java/res/drawable-hdpi/sym_keyboard_num9.png
index 49cec66f4..4b8328d1f 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num9.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_num9_holo.png b/java/res/drawable-hdpi/sym_keyboard_num9_holo.png
index 4189cda79..f35e80dab 100644
--- a/java/res/drawable-hdpi/sym_keyboard_num9_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_num9_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_numalt.png b/java/res/drawable-hdpi/sym_keyboard_numalt.png
deleted file mode 100644
index 3cc5311cd..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_numalt.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_numbpound_holo.png b/java/res/drawable-hdpi/sym_keyboard_numbpound_holo.png
deleted file mode 100644
index 73f8be054..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_numbpound_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_numbstar_holo.png b/java/res/drawable-hdpi/sym_keyboard_numbstar_holo.png
deleted file mode 100644
index fcb891b93..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_numbstar_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_numpound.png b/java/res/drawable-hdpi/sym_keyboard_numpound.png
deleted file mode 100644
index d09133929..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_numpound.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_numstar.png b/java/res/drawable-hdpi/sym_keyboard_numstar.png
deleted file mode 100644
index e838e169f..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_numstar.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_return.png b/java/res/drawable-hdpi/sym_keyboard_return.png
index 9d97e1efd..9743c7f2f 100644
--- a/java/res/drawable-hdpi/sym_keyboard_return.png
+++ b/java/res/drawable-hdpi/sym_keyboard_return.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_return_holo.png b/java/res/drawable-hdpi/sym_keyboard_return_holo.png
index ca3c02dbe..ef04d6767 100644
--- a/java/res/drawable-hdpi/sym_keyboard_return_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_return_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_search.png b/java/res/drawable-hdpi/sym_keyboard_search.png
index 1aa22d7e2..8cd28c64a 100644
--- a/java/res/drawable-hdpi/sym_keyboard_search.png
+++ b/java/res/drawable-hdpi/sym_keyboard_search.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_settings.png b/java/res/drawable-hdpi/sym_keyboard_settings.png
index 35d1ed6e6..1e5bf939e 100644
--- a/java/res/drawable-hdpi/sym_keyboard_settings.png
+++ b/java/res/drawable-hdpi/sym_keyboard_settings.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_settings_holo.png b/java/res/drawable-hdpi/sym_keyboard_settings_holo.png
index 471bd0b86..29085e5ea 100644
--- a/java/res/drawable-hdpi/sym_keyboard_settings_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_settings_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift.png b/java/res/drawable-hdpi/sym_keyboard_shift.png
index bf217d147..8e3d0320c 100644
--- a/java/res/drawable-hdpi/sym_keyboard_shift.png
+++ b/java/res/drawable-hdpi/sym_keyboard_shift.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_holo.png b/java/res/drawable-hdpi/sym_keyboard_shift_holo.png
index 375c1b4ca..1e074a716 100644
--- a/java/res/drawable-hdpi/sym_keyboard_shift_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_shift_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked.png
index d11b39712..d345634a6 100644
--- a/java/res/drawable-hdpi/sym_keyboard_shift_locked.png
+++ b/java/res/drawable-hdpi/sym_keyboard_shift_locked.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png
index 57362eaf4..ab77b9542 100644
--- a/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_space.png b/java/res/drawable-hdpi/sym_keyboard_space.png
index fcd20de7d..780733ec5 100644
--- a/java/res/drawable-hdpi/sym_keyboard_space.png
+++ b/java/res/drawable-hdpi/sym_keyboard_space.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_space_holo.png b/java/res/drawable-hdpi/sym_keyboard_space_holo.png
index a8e5f7d5e..143a89964 100644
--- a/java/res/drawable-hdpi/sym_keyboard_space_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_space_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_space_led.9.png b/java/res/drawable-hdpi/sym_keyboard_space_led.9.png
index 2c6f4a925..c76f64b94 100644
--- a/java/res/drawable-hdpi/sym_keyboard_space_led.9.png
+++ b/java/res/drawable-hdpi/sym_keyboard_space_led.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_tab_holo.png b/java/res/drawable-hdpi/sym_keyboard_tab_holo.png
new file mode 100644
index 000000000..321c541cc
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_tab_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_holo.png b/java/res/drawable-hdpi/sym_keyboard_voice_holo.png
index 5ea2edc53..d3cb46e0d 100644
--- a/java/res/drawable-hdpi/sym_keyboard_voice_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_voice_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_off_holo.png b/java/res/drawable-hdpi/sym_keyboard_voice_off_holo.png
index 6e6279a8a..45e3e79c5 100644
--- a/java/res/drawable-hdpi/sym_keyboard_voice_off_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_voice_off_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/vs_dialog_blue.9.png b/java/res/drawable-hdpi/vs_dialog_blue.9.png
index cf27e8f43..4f813ead3 100644
--- a/java/res/drawable-hdpi/vs_dialog_blue.9.png
+++ b/java/res/drawable-hdpi/vs_dialog_blue.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/vs_dialog_red.9.png b/java/res/drawable-hdpi/vs_dialog_red.9.png
index 6c08d5a30..a2055600e 100644
--- a/java/res/drawable-hdpi/vs_dialog_red.9.png
+++ b/java/res/drawable-hdpi/vs_dialog_red.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/vs_dialog_yellow.9.png b/java/res/drawable-hdpi/vs_dialog_yellow.9.png
index 2fb06c263..ce664b676 100644
--- a/java/res/drawable-hdpi/vs_dialog_yellow.9.png
+++ b/java/res/drawable-hdpi/vs_dialog_yellow.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
index 1534d99d1..034d63870 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
index 936513a31..0cb53d506 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
index b071251a7..0050a0110 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
index 9fed21edf..27f8fdac6 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
index 3fce55938..b8ce95235 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
index 3f82b67dd..4d4d1a748 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
index eded1736b..90f471f48 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
index e6a1dcecc..c850768cd 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.png
new file mode 100644
index 000000000..e9186b7bb
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png
index d2f5f3bf2..e96c8c5db 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/hint_popup_holo.9.png b/java/res/drawable-mdpi/hint_popup_holo.9.png
index 01d1139d8..e9e131c54 100644
--- a/java/res/drawable-mdpi/hint_popup_holo.9.png
+++ b/java/res/drawable-mdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_background_holo.9.png b/java/res/drawable-mdpi/keyboard_background_holo.9.png
index a93966c92..f1d55c6dd 100644
--- a/java/res/drawable-mdpi/keyboard_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png
index 3d6a76f66..9a1b7aadd 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png
new file mode 100644
index 000000000..cb222b0f9
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.png
new file mode 100644
index 000000000..07d980083
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png
index e3f5be86d..05a332b8e 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png
new file mode 100644
index 000000000..fd1675512
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png
new file mode 100644
index 000000000..1acbd8268
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png
index 1f87a68e9..17faf86d0 100644
--- a/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_numalt.png b/java/res/drawable-mdpi/sym_bkeyboard_numalt.png
deleted file mode 100644
index 4fa410b62..000000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_numalt.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_numpound.png b/java/res/drawable-mdpi/sym_bkeyboard_numpound.png
deleted file mode 100644
index 9126eed0d..000000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_numpound.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_numstar.png b/java/res/drawable-mdpi/sym_bkeyboard_numstar.png
deleted file mode 100644
index 9b9f1b986..000000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_numstar.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_holo.png b/java/res/drawable-mdpi/sym_keyboard_delete_holo.png
index 155579169..f8f6e6a80 100644
--- a/java/res/drawable-mdpi/sym_keyboard_delete_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_delete_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num0_holo.png b/java/res/drawable-mdpi/sym_keyboard_num0_holo.png
index e1d395b45..2c57adf8b 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num0_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num0_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num1_holo.png b/java/res/drawable-mdpi/sym_keyboard_num1_holo.png
index 225436ac2..509e28f9b 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num1_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num1_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num2_holo.png b/java/res/drawable-mdpi/sym_keyboard_num2_holo.png
index e513fa4a0..0da18e772 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num2_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num2_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num3_holo.png b/java/res/drawable-mdpi/sym_keyboard_num3_holo.png
index b91e005fc..e8470586f 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num3_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num3_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num4_holo.png b/java/res/drawable-mdpi/sym_keyboard_num4_holo.png
index 65f88245b..13c216d3a 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num4_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num4_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num5_holo.png b/java/res/drawable-mdpi/sym_keyboard_num5_holo.png
index b89ef07eb..0065153fc 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num5_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num5_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num6_holo.png b/java/res/drawable-mdpi/sym_keyboard_num6_holo.png
index 931275a9e..09fab76a1 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num6_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num6_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num7_holo.png b/java/res/drawable-mdpi/sym_keyboard_num7_holo.png
index 9396c4c8f..d350fddc8 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num7_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num7_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num8_holo.png b/java/res/drawable-mdpi/sym_keyboard_num8_holo.png
index 12e3eef45..c40cb89a5 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num8_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num8_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num9_holo.png b/java/res/drawable-mdpi/sym_keyboard_num9_holo.png
index 6911c2b4f..73526939d 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num9_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num9_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_numalt.png b/java/res/drawable-mdpi/sym_keyboard_numalt.png
deleted file mode 100644
index 32a2cf3ca..000000000
--- a/java/res/drawable-mdpi/sym_keyboard_numalt.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png b/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png
deleted file mode 100644
index e3a8b4900..000000000
--- a/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png b/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png
deleted file mode 100644
index e80e9345f..000000000
--- a/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_numpound.png b/java/res/drawable-mdpi/sym_keyboard_numpound.png
deleted file mode 100644
index b2419d9ab..000000000
--- a/java/res/drawable-mdpi/sym_keyboard_numpound.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_numstar.png b/java/res/drawable-mdpi/sym_keyboard_numstar.png
deleted file mode 100644
index cb66f968f..000000000
--- a/java/res/drawable-mdpi/sym_keyboard_numstar.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_return_holo.png b/java/res/drawable-mdpi/sym_keyboard_return_holo.png
index d519ccecf..abbce5234 100644
--- a/java/res/drawable-mdpi/sym_keyboard_return_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_return_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_settings_holo.png b/java/res/drawable-mdpi/sym_keyboard_settings_holo.png
index 784a45054..82df90376 100644
--- a/java/res/drawable-mdpi/sym_keyboard_settings_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_settings_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_holo.png
index 91d6e32f9..49b9fc088 100644
--- a/java/res/drawable-mdpi/sym_keyboard_shift_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png
index 2bd053656..5375beb4e 100644
--- a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_space_holo.png b/java/res/drawable-mdpi/sym_keyboard_space_holo.png
index 25e655d96..e413ddf2e 100644
--- a/java/res/drawable-mdpi/sym_keyboard_space_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_space_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_tab_holo.png b/java/res/drawable-mdpi/sym_keyboard_tab_holo.png
new file mode 100644
index 000000000..c41af7b89
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_tab_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_holo.png b/java/res/drawable-mdpi/sym_keyboard_voice_holo.png
index c1116dc17..158439a9f 100644
--- a/java/res/drawable-mdpi/sym_keyboard_voice_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_voice_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_off_holo.png b/java/res/drawable-mdpi/sym_keyboard_voice_off_holo.png
index 081a13096..79026f1ab 100644
--- a/java/res/drawable-mdpi/sym_keyboard_voice_off_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_voice_off_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_candidate_pressed.9.png b/java/res/drawable-xhdpi/btn_candidate_pressed.9.png
new file mode 100644
index 000000000..41e126a73
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_candidate_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_center_default.9.png b/java/res/drawable-xhdpi/btn_center_default.9.png
new file mode 100644
index 000000000..e847425f8
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_center_default.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_center_pressed.9.png b/java/res/drawable-xhdpi/btn_center_pressed.9.png
new file mode 100644
index 000000000..facfd4323
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_center_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_center_selected.9.png b/java/res/drawable-xhdpi/btn_center_selected.9.png
new file mode 100644
index 000000000..facfd4323
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_center_selected.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_close_candidates_pane.9.png b/java/res/drawable-xhdpi/btn_close_candidates_pane.9.png
new file mode 100644
index 000000000..9d797ed0d
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_close_candidates_pane.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_expand_candidates_pane.9.png b/java/res/drawable-xhdpi/btn_expand_candidates_pane.9.png
new file mode 100644
index 000000000..88d01c9c8
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_expand_candidates_pane.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png
index 3e4a81247..b9667be13 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png
index d61dd2b88..1719992e1 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_holo.9.png
index c127e2ad0..0eb9c9f93 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png
index ac3f3581b..5114bf5f1 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
index e5de3b0a2..992395039 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
index c63b69a6c..474951c1d 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_normal.9.png
new file mode 100644
index 000000000..f7e32f764
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_normal.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png
new file mode 100644
index 000000000..00c447604
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png
index e1361edf2..4a255f7fb 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png
index 6efd3a759..5bcd1c9c2 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png
new file mode 100644
index 000000000..f53b40419
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png
new file mode 100644
index 000000000..3c6ae6be8
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png
new file mode 100644
index 000000000..eebe7d391
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png
new file mode 100644
index 000000000..655bfb2c6
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png
new file mode 100644
index 000000000..336248aae
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png
new file mode 100644
index 000000000..bb1c72bb3
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.png
new file mode 100644
index 000000000..10d788dfb
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
index 3ed9b1e7c..0a9a9e44d 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png
new file mode 100644
index 000000000..f73911674
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png
new file mode 100644
index 000000000..34a948f4e
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png
new file mode 100644
index 000000000..520f12d3f
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/candidate_feedback_background.9.png b/java/res/drawable-xhdpi/candidate_feedback_background.9.png
new file mode 100644
index 000000000..0ec90e5ea
--- /dev/null
+++ b/java/res/drawable-xhdpi/candidate_feedback_background.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/caution.png b/java/res/drawable-xhdpi/caution.png
new file mode 100644
index 000000000..cfc3f7547
--- /dev/null
+++ b/java/res/drawable-xhdpi/caution.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/hint_popup.9.png b/java/res/drawable-xhdpi/hint_popup.9.png
new file mode 100644
index 000000000..add474337
--- /dev/null
+++ b/java/res/drawable-xhdpi/hint_popup.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/hint_popup_holo.9.png b/java/res/drawable-xhdpi/hint_popup_holo.9.png
index bc37fa844..a2b114e14 100644
--- a/java/res/drawable-xhdpi/hint_popup_holo.9.png
+++ b/java/res/drawable-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_dialog_keyboard.png b/java/res/drawable-xhdpi/ic_dialog_keyboard.png
new file mode 100644
index 000000000..f114c93b6
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_dialog_keyboard.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_mic_dialog.png b/java/res/drawable-xhdpi/ic_mic_dialog.png
new file mode 100644
index 000000000..5d6399c0a
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_mic_dialog.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_subtype_keyboard.png b/java/res/drawable-xhdpi/ic_subtype_keyboard.png
new file mode 100644
index 000000000..a79bb3458
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_subtype_keyboard.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_subtype_mic.png b/java/res/drawable-xhdpi/ic_subtype_mic.png
new file mode 100644
index 000000000..fc8d18cc2
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_subtype_mic.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_suggest_strip_microphone.png b/java/res/drawable-xhdpi/ic_suggest_strip_microphone.png
new file mode 100644
index 000000000..d65d28708
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_suggest_strip_microphone.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-xhdpi/ic_suggest_strip_microphone_swipe.png
new file mode 100644
index 000000000..889378a6a
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_suggest_strip_microphone_swipe.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_background.9.png b/java/res/drawable-xhdpi/keyboard_background.9.png
new file mode 100644
index 000000000..263996322
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_background.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_background_holo.9.png
new file mode 100644
index 000000000..58d15142b
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_dark_background.9.png b/java/res/drawable-xhdpi/keyboard_dark_background.9.png
new file mode 100644
index 000000000..27b7a108c
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_dark_background.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png
index 943f9e4bc..44675ba00 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png
new file mode 100644
index 000000000..cfd1f5242
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.png
new file mode 100644
index 000000000..a01c1733d
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png
index f66e54538..1d2abc26b 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png
new file mode 100644
index 000000000..5616d1988
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png
new file mode 100644
index 000000000..ecf9c2cbc
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background.9.png
new file mode 100644
index 000000000..79f7ab00a
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_popup_panel_background.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip.9.png b/java/res/drawable-xhdpi/keyboard_suggest_strip.9.png
new file mode 100644
index 000000000..1b568df03
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_suggest_strip.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-xhdpi/keyboard_suggest_strip_divider.png
new file mode 100644
index 000000000..cd7c2c7a2
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_suggest_strip_divider.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png
new file mode 100644
index 000000000..f4ff7dc1c
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/mic_base.png b/java/res/drawable-xhdpi/mic_base.png
new file mode 100644
index 000000000..5c060bec9
--- /dev/null
+++ b/java/res/drawable-xhdpi/mic_base.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/mic_full.png b/java/res/drawable-xhdpi/mic_full.png
new file mode 100644
index 000000000..32ffe124e
--- /dev/null
+++ b/java/res/drawable-xhdpi/mic_full.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/mic_slash.png b/java/res/drawable-xhdpi/mic_slash.png
new file mode 100644
index 000000000..18b22542b
--- /dev/null
+++ b/java/res/drawable-xhdpi/mic_slash.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
new file mode 100644
index 000000000..0aefaa1c3
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_123_mic.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_delete.png b/java/res/drawable-xhdpi/sym_bkeyboard_delete.png
new file mode 100644
index 000000000..b84ee76dc
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_delete.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_mic.png b/java/res/drawable-xhdpi/sym_bkeyboard_mic.png
new file mode 100644
index 000000000..8c3f11dd4
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_mic.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num0.png b/java/res/drawable-xhdpi/sym_bkeyboard_num0.png
new file mode 100644
index 000000000..da8d50a8c
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_num0.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num1.png b/java/res/drawable-xhdpi/sym_bkeyboard_num1.png
new file mode 100644
index 000000000..62443eb1c
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_num1.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num2.png b/java/res/drawable-xhdpi/sym_bkeyboard_num2.png
new file mode 100644
index 000000000..4b3ef7ecc
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_num2.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num3.png b/java/res/drawable-xhdpi/sym_bkeyboard_num3.png
new file mode 100644
index 000000000..48315e499
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_num3.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num4.png b/java/res/drawable-xhdpi/sym_bkeyboard_num4.png
new file mode 100644
index 000000000..17958d7cc
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_num4.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num5.png b/java/res/drawable-xhdpi/sym_bkeyboard_num5.png
new file mode 100644
index 000000000..43716c424
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_num5.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num6.png b/java/res/drawable-xhdpi/sym_bkeyboard_num6.png
new file mode 100644
index 000000000..09f2b428d
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_num6.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num7.png b/java/res/drawable-xhdpi/sym_bkeyboard_num7.png
new file mode 100644
index 000000000..72438ec0f
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_num7.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num8.png b/java/res/drawable-xhdpi/sym_bkeyboard_num8.png
new file mode 100644
index 000000000..403b53f71
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_num8.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num9.png b/java/res/drawable-xhdpi/sym_bkeyboard_num9.png
new file mode 100644
index 000000000..644c2a4df
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_num9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_return.png b/java/res/drawable-xhdpi/sym_bkeyboard_return.png
new file mode 100644
index 000000000..1632ecd8e
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_return.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_search.png b/java/res/drawable-xhdpi/sym_bkeyboard_search.png
new file mode 100644
index 000000000..69d8b22d1
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_search.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_settings.png b/java/res/drawable-xhdpi/sym_bkeyboard_settings.png
new file mode 100644
index 000000000..050154a3a
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_settings.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_shift.png b/java/res/drawable-xhdpi/sym_bkeyboard_shift.png
new file mode 100644
index 000000000..d15d11a50
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_shift.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_shift_locked.png b/java/res/drawable-xhdpi/sym_bkeyboard_shift_locked.png
new file mode 100644
index 000000000..83b287fea
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_shift_locked.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_space.png b/java/res/drawable-xhdpi/sym_bkeyboard_space.png
new file mode 100644
index 000000000..5ca62c7b7
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_space.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_tab.png b/java/res/drawable-xhdpi/sym_bkeyboard_tab.png
new file mode 100644
index 000000000..6ca199755
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_tab.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_voice_off.png b/java/res/drawable-xhdpi/sym_bkeyboard_voice_off.png
new file mode 100644
index 000000000..fc6a4eb59
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_bkeyboard_voice_off.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
new file mode 100644
index 000000000..bcb097967
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_123_mic.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete.png b/java/res/drawable-xhdpi/sym_keyboard_delete.png
new file mode 100644
index 000000000..3c0b8b186
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_delete.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete_holo.png b/java/res/drawable-xhdpi/sym_keyboard_delete_holo.png
new file mode 100644
index 000000000..5150073b8
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_delete_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_123_mic.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_123_mic.png
new file mode 100644
index 000000000..5238c16d2
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_123_mic.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_delete.png
new file mode 100644
index 000000000..f0c29e7c8
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_delete.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_left.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_left.png
new file mode 100644
index 000000000..a90b8dacf
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_left.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_right.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_right.png
new file mode 100644
index 000000000..1123bf36e
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_right.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_mic.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_mic.png
new file mode 100644
index 000000000..5ac27ebad
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_mic.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_numalt.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_numalt.png
new file mode 100644
index 000000000..b68e6066a
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_numalt.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_return.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_return.png
new file mode 100644
index 000000000..c777d00d6
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_return.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_search.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_search.png
new file mode 100644
index 000000000..32e0789dd
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_search.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_settings.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_settings.png
new file mode 100644
index 000000000..021cafacb
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_settings.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_shift.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_shift.png
new file mode 100644
index 000000000..d8c0325c4
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_shift.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_space.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_space.png
new file mode 100644
index 000000000..cee10568d
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_space.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png
new file mode 100644
index 000000000..0650e01cb
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-xhdpi/sym_keyboard_language_arrows_left.png
new file mode 100644
index 000000000..226f2e617
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_language_arrows_left.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-xhdpi/sym_keyboard_language_arrows_right.png
new file mode 100644
index 000000000..1e02e7e46
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_language_arrows_right.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_mic.png b/java/res/drawable-xhdpi/sym_keyboard_mic.png
new file mode 100644
index 000000000..1323b6d1e
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_mic.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num0.png b/java/res/drawable-xhdpi/sym_keyboard_num0.png
new file mode 100644
index 000000000..06bd3bfc7
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num0.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num0_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num0_holo.png
new file mode 100644
index 000000000..33e80bdc3
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num0_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num1.png b/java/res/drawable-xhdpi/sym_keyboard_num1.png
new file mode 100644
index 000000000..dfa0cfe78
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num1.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num1_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num1_holo.png
new file mode 100644
index 000000000..dce3ee801
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num1_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num2.png b/java/res/drawable-xhdpi/sym_keyboard_num2.png
new file mode 100644
index 000000000..4bd2ead08
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num2.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num2_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num2_holo.png
new file mode 100644
index 000000000..e776efb33
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num2_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num3.png b/java/res/drawable-xhdpi/sym_keyboard_num3.png
new file mode 100644
index 000000000..39db11228
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num3.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num3_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num3_holo.png
new file mode 100644
index 000000000..66e7b3735
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num3_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num4.png b/java/res/drawable-xhdpi/sym_keyboard_num4.png
new file mode 100644
index 000000000..60356947e
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num4.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num4_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num4_holo.png
new file mode 100644
index 000000000..bf70e2890
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num4_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num5.png b/java/res/drawable-xhdpi/sym_keyboard_num5.png
new file mode 100644
index 000000000..3238b3f40
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num5.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num5_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num5_holo.png
new file mode 100644
index 000000000..98d0b5cc9
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num5_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num6.png b/java/res/drawable-xhdpi/sym_keyboard_num6.png
new file mode 100644
index 000000000..c8da5a9d0
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num6.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num6_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num6_holo.png
new file mode 100644
index 000000000..67340ef6a
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num6_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num7.png b/java/res/drawable-xhdpi/sym_keyboard_num7.png
new file mode 100644
index 000000000..553cf5f0d
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num7.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num7_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num7_holo.png
new file mode 100644
index 000000000..843224954
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num7_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num8.png b/java/res/drawable-xhdpi/sym_keyboard_num8.png
new file mode 100644
index 000000000..eaaf53390
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num8.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num8_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num8_holo.png
new file mode 100644
index 000000000..6d520bca9
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num8_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num9.png b/java/res/drawable-xhdpi/sym_keyboard_num9.png
new file mode 100644
index 000000000..b510d3774
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_num9_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num9_holo.png
new file mode 100644
index 000000000..158c87957
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_num9_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_return.png b/java/res/drawable-xhdpi/sym_keyboard_return.png
new file mode 100644
index 000000000..ad061227e
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_return.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_return_holo.png b/java/res/drawable-xhdpi/sym_keyboard_return_holo.png
new file mode 100644
index 000000000..6e2e1c0b9
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_return_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_search.png b/java/res/drawable-xhdpi/sym_keyboard_search.png
new file mode 100644
index 000000000..aa785a221
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_search.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings.png b/java/res/drawable-xhdpi/sym_keyboard_settings.png
new file mode 100644
index 000000000..50704255d
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_settings.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings_holo.png b/java/res/drawable-xhdpi/sym_keyboard_settings_holo.png
new file mode 100644
index 000000000..018e45d9e
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_settings_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift.png b/java/res/drawable-xhdpi/sym_keyboard_shift.png
new file mode 100644
index 000000000..290170619
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_shift.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_holo.png b/java/res/drawable-xhdpi/sym_keyboard_shift_holo.png
new file mode 100644
index 000000000..41d4ca176
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_shift_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked.png
new file mode 100644
index 000000000..a5deb60e9
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_shift_locked.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo.png
new file mode 100644
index 000000000..b811b7464
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_space.png b/java/res/drawable-xhdpi/sym_keyboard_space.png
new file mode 100644
index 000000000..66fc3e9d3
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_space.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_space_holo.png b/java/res/drawable-xhdpi/sym_keyboard_space_holo.png
new file mode 100644
index 000000000..da8926496
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_space_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_space_led.9.png b/java/res/drawable-xhdpi/sym_keyboard_space_led.9.png
new file mode 100644
index 000000000..6525fefab
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_space_led.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_tab.png b/java/res/drawable-xhdpi/sym_keyboard_tab.png
new file mode 100644
index 000000000..0ef2ab5b9
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_tab.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_tab_holo.png b/java/res/drawable-xhdpi/sym_keyboard_tab_holo.png
new file mode 100644
index 000000000..dd207ca3f
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_tab_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_holo.png b/java/res/drawable-xhdpi/sym_keyboard_voice_holo.png
new file mode 100644
index 000000000..d73e49910
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_voice_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo.png b/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo.png
new file mode 100644
index 000000000..8d34a5ada
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/vs_dialog_blue.9.png b/java/res/drawable-xhdpi/vs_dialog_blue.9.png
new file mode 100644
index 000000000..3284d78ef
--- /dev/null
+++ b/java/res/drawable-xhdpi/vs_dialog_blue.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/vs_dialog_red.9.png b/java/res/drawable-xhdpi/vs_dialog_red.9.png
new file mode 100644
index 000000000..5af2465b5
--- /dev/null
+++ b/java/res/drawable-xhdpi/vs_dialog_red.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/vs_dialog_yellow.9.png b/java/res/drawable-xhdpi/vs_dialog_yellow.9.png
new file mode 100644
index 000000000..4f50439de
--- /dev/null
+++ b/java/res/drawable-xhdpi/vs_dialog_yellow.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/vs_popup_mic_edge.png b/java/res/drawable-xhdpi/vs_popup_mic_edge.png
new file mode 100644
index 000000000..1063cb464
--- /dev/null
+++ b/java/res/drawable-xhdpi/vs_popup_mic_edge.png
Binary files differ
diff --git a/java/res/drawable/btn_candidate_holo.xml b/java/res/drawable/btn_candidate_ics.xml
index 66cd2460b..e4257e327 100644
--- a/java/res/drawable/btn_candidate_holo.xml
+++ b/java/res/drawable/btn_candidate_ics.xml
@@ -2,7 +2,7 @@
<!--
/*
**
-** Copyright 2010, The Android Open Source Project
+** Copyright 2011, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
diff --git a/java/res/drawable/btn_keyboard_key_honeycomb.xml b/java/res/drawable/btn_keyboard_key_ics.xml
index 3dab8430f..7335cc299 100644
--- a/java/res/drawable/btn_keyboard_key_honeycomb.xml
+++ b/java/res/drawable/btn_keyboard_key_ics.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
+<!-- Copyright (C) 2011 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,7 +14,6 @@
limitations under the License.
-->
-<!-- TODO: Remove "gingerbread" from file name and rename this to "btn_keyboard_key.xml". -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Functional keys. -->
diff --git a/java/res/drawable/btn_keyboard_key_popup_honeycomb.xml b/java/res/drawable/btn_keyboard_key_popup_ics.xml
index f5a191fc0..8f797ac3c 100644
--- a/java/res/drawable/btn_keyboard_key_popup_honeycomb.xml
+++ b/java/res/drawable/btn_keyboard_key_popup_ics.xml
@@ -17,4 +17,5 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/btn_keyboard_key_popup_selected_holo" />
+ <item android:drawable="@drawable/btn_keyboard_key_popup_background_holo" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_stone.xml b/java/res/drawable/btn_keyboard_key_stone.xml
index a6040a04e..27932e8da 100644
--- a/java/res/drawable/btn_keyboard_key_stone.xml
+++ b/java/res/drawable/btn_keyboard_key_stone.xml
@@ -16,6 +16,13 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Functional keys. -->
+
+ <item android:state_single="true" android:state_pressed="true"
+ android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" />
+ <item android:state_single="true"
+ android:drawable="@drawable/btn_keyboard_key_normal_stone" />
+
<!-- Toggle keys. Use checkable/checked state. -->
<item android:state_checkable="true" android:state_checked="true"
diff --git a/java/res/drawable/keyboard_key_feedback_honeycomb.xml b/java/res/drawable/keyboard_key_feedback_ics.xml
index a3ea140cd..04c86794f 100644
--- a/java/res/drawable/keyboard_key_feedback_honeycomb.xml
+++ b/java/res/drawable/keyboard_key_feedback_ics.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
+<!-- Copyright (C) 2011 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/java/res/layout/key_preview.xml b/java/res/layout/key_preview.xml
index 5032dd556..5332d15c6 100644
--- a/java/res/layout/key_preview.xml
+++ b/java/res/layout/key_preview.xml
@@ -22,7 +22,6 @@
android:layout_width="wrap_content"
android:layout_height="80sp"
android:textSize="40sp"
- android:textColor="@color/latinkeyboard_key_color_white"
android:minWidth="32dip"
android:gravity="center"
style="?attr/keyPreviewStyle"
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index 7fc1571b2..b374227af 100644
--- a/java/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
@@ -26,8 +26,12 @@
<!-- <dimen name="key_height">0.260in</dimen>-->
<dimen name="key_bottom_gap">0.020in</dimen>
<dimen name="popup_key_height">0.280in</dimen>
- <dimen name="keyboard_top_padding">0.0in</dimen>
- <dimen name="keyboard_bottom_padding">0.0in</dimen>
+ <dimen name="keyboard_top_padding">0.00in</dimen>
+ <dimen name="keyboard_bottom_padding">0.00in</dimen>
+ <dimen name="key_bottom_gap_ics">0.04in</dimen>
+ <dimen name="key_horizontal_gap_ics">0.01in</dimen>
+ <dimen name="keyboard_top_padding_ics">0.03in</dimen>
+ <dimen name="keyboard_bottom_padding_ics">0.00in</dimen>
<dimen name="keyboard_horizontal_edges_padding">0.0in</dimen>
<fraction name="key_letter_ratio">55%</fraction>
<fraction name="key_label_ratio">35%</fraction>
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index a7167af76..9da8f897b 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -26,9 +26,13 @@
<!-- <dimen name="key_height">14.5mm</dimen> -->
<dimen name="key_bottom_gap">1.3mm</dimen>
<dimen name="key_horizontal_gap">1.3mm</dimen>
- <dimen name="popup_key_height">13.0mm</dimen>
<dimen name="keyboard_top_padding">1.1mm</dimen>
<dimen name="keyboard_bottom_padding">0.0mm</dimen>
+ <dimen name="key_bottom_gap_ics">1.3mm</dimen>
+ <dimen name="key_horizontal_gap_ics">1.3mm</dimen>
+ <dimen name="keyboard_top_padding_ics">1.1mm</dimen>
+ <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen>
+ <dimen name="popup_key_height">13.0mm</dimen>
<!-- key_height x 1.0 -->
<dimen name="key_preview_height">13.0mm</dimen>
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml
index 6125270a3..c2c0c2588 100644
--- a/java/res/values-sw600dp/config.xml
+++ b/java/res/values-sw600dp/config.xml
@@ -32,6 +32,7 @@
<!-- Whether or not Popup on key press is enabled by default -->
<bool name="config_default_popup_preview">false</bool>
<bool name="config_default_sound_enabled">true</bool>
+ <bool name="config_auto_correction_spacebar_led_enabled">false</bool>
<bool name="config_use_spacebar_language_switcher">false</bool>
<!-- Showing mini keyboard, just above the touched point if true, aligned to the key if false -->
<bool name="config_show_mini_keyboard_at_touched_point">true</bool>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 8ecf542eb..6c67746eb 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -30,6 +30,10 @@
<dimen name="popup_key_height">10.0mm</dimen>
<dimen name="keyboard_top_padding">1.1mm</dimen>
<dimen name="keyboard_bottom_padding">0.0mm</dimen>
+ <dimen name="key_bottom_gap_ics">1.0mm</dimen>
+ <dimen name="key_horizontal_gap_ics">1.0mm</dimen>
+ <dimen name="keyboard_top_padding_ics">1.1mm</dimen>
+ <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen>
<!-- key_height x 1.0 -->
<dimen name="key_preview_height">13.0mm</dimen>
<dimen name="mini_keyboard_key_horizontal_padding">12dip</dimen>
diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index 73885c2af..a6cd85b6e 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -26,9 +26,13 @@
<!-- <dimen name="key_height">14.5mm</dimen> -->
<dimen name="key_bottom_gap">1.6mm</dimen>
<dimen name="key_horizontal_gap">1.6mm</dimen>
- <dimen name="popup_key_height">13.0mm</dimen>
<dimen name="keyboard_top_padding">1.1mm</dimen>
<dimen name="keyboard_bottom_padding">0.0mm</dimen>
+ <dimen name="key_bottom_gap_ics">1.6mm</dimen>
+ <dimen name="key_horizontal_gap_ics">1.6mm</dimen>
+ <dimen name="keyboard_top_padding_ics">1.1mm</dimen>
+ <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen>
+ <dimen name="popup_key_height">13.0mm</dimen>
<dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
<fraction name="key_letter_ratio">38%</fraction>
diff --git a/java/res/values-sw768dp/config.xml b/java/res/values-sw768dp/config.xml
index 95d5e7e63..dc4c28774 100644
--- a/java/res/values-sw768dp/config.xml
+++ b/java/res/values-sw768dp/config.xml
@@ -32,6 +32,7 @@
<!-- Whether or not Popup on key press is enabled by default -->
<bool name="config_default_popup_preview">false</bool>
<bool name="config_default_sound_enabled">true</bool>
+ <bool name="config_auto_correction_spacebar_led_enabled">true</bool>
<bool name="config_use_spacebar_language_switcher">false</bool>
<!-- Showing mini keyboard, just above the touched point if true, aligned to the key if false -->
<bool name="config_show_mini_keyboard_at_touched_point">true</bool>
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index d8d133264..815267306 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -27,9 +27,13 @@
<!-- <dimen name="key_height">14.5mm</dimen> -->
<dimen name="key_bottom_gap">1.1mm</dimen>
<dimen name="key_horizontal_gap">1.1mm</dimen>
- <dimen name="popup_key_height">10.0mm</dimen>
<dimen name="keyboard_top_padding">1.1mm</dimen>
<dimen name="keyboard_bottom_padding">0.0mm</dimen>
+ <dimen name="key_bottom_gap_ics">1.1mm</dimen>
+ <dimen name="key_horizontal_gap_ics">1.1mm</dimen>
+ <dimen name="keyboard_top_padding_ics">1.1mm</dimen>
+ <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen>
+ <dimen name="popup_key_height">10.0mm</dimen>
<dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
<dimen name="mini_keyboard_horizontal_padding_holo">40dip</dimen>
<dimen name="mini_keyboard_key_horizontal_padding">12dip</dimen>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index c88049e14..5c00510af 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -63,10 +63,8 @@
<!-- Layout resource for key press feedback.-->
<attr name="keyPreviewLayout" format="reference" />
-
<!-- Vertical offset of the key press feedback from the key. -->
<attr name="keyPreviewOffset" format="dimension" />
-
<!-- Height of the key press feedback popup. -->
<attr name="keyPreviewHeight" format="dimension" />
@@ -90,13 +88,6 @@
<enum name="italic" value="2" />
<enum name="boldItalic" value="3" />
</attr>
-
- <attr name="colorScheme" format="enum">
- <!-- This should be aligned with KeyboardView.COLOR_SCHEME_* -->
- <enum name="white" value="0" />
- <enum name="black" value="1" />
- </attr>
-
</declare-styleable>
<declare-styleable name="CandidateView">
@@ -120,6 +111,9 @@
<!-- Minimum keyboard height represented in pixels, percentage of display height if fraction
is positive, or percentage of display width if fraction is negative. -->
<attr name="minKeyboardHeight" format="dimension|fraction" />
+ <!-- Keyboard top and bottom paddings. -->
+ <attr name="keyboardTopPadding" format="dimension" />
+ <attr name="keyboardBottomPadding" format="dimension" />
<!-- Default width of a key, in pixels or percentage of display width.
If the value is zero, the actual key width will be determined to fill out the area up
to the right edge of the keyboard.
@@ -162,9 +156,6 @@
<attr name="iconNum8Key" format="reference" />
<attr name="iconNum9Key" format="reference" />
<attr name="iconNum0Key" format="reference" />
- <attr name="iconNumStarKey" format="reference" />
- <attr name="iconNumPoundKey" format="reference" />
- <attr name="iconNumAltKey" format="reference" />
<attr name="iconShiftedShiftKey" format="reference" />
<attr name="iconPreviewSpaceKey" format="reference" />
<attr name="iconPreviewTabKey" format="reference" />
@@ -205,8 +196,10 @@
<flag name="alignRight" value="0x02" />
<flag name="alignBottom" value="0x08" />
<flag name="fontNormal" value="0x10" />
- <flag name="popupHint" value="0x20" />
- <flag name="hasUppercaseLetter" value="0x40" />
+ <flag name="fontFixedWidth" value="0x20" />
+ <flag name="followKeyLetterRatio" value="0x40" />
+ <flag name="popupHint" value="0x80" />
+ <flag name="hasUppercaseLetter" value="0x100" />
</attr>
<!-- The icon to display on the key instead of the label. -->
<attr name="keyIcon" format="enum">
@@ -231,22 +224,19 @@
<enum name="iconNum8Key" value="18" />
<enum name="iconNum9Key" value="19" />
<enum name="iconNum0Key" value="20" />
- <enum name="iconNumStarKey" value="21" />
- <enum name="iconNumPoundKey" value="22" />
- <enum name="iconNumAltKey" value="23" />
</attr>
<!-- Shift key icon for shifted state -->
<attr name="keyIconShifted" format="enum">
<!-- This should be aligned with KeyboardIcons.ICON_SHIFTED_* -->
- <enum name="iconShiftedShiftKey" value="24" />
+ <enum name="iconShiftedShiftKey" value="21" />
</attr>
<!-- The icon to show in the popup preview. -->
<attr name="keyIconPreview" format="enum">
<!-- This should be aligned with KeyboardIcons.ICON_PREVIEW_* -->
- <enum name="iconPreviewSpaceKey" value="25" />
- <enum name="iconPreviewTabKey" value="26" />
- <enum name="iconPreviewSettingsKey" value="27" />
- <enum name="iconPreviewShortcutKey" value="28" />
+ <enum name="iconPreviewSpaceKey" value="22" />
+ <enum name="iconPreviewTabKey" value="23" />
+ <enum name="iconPreviewSettingsKey" value="24" />
+ <enum name="iconPreviewShortcutKey" value="25" />
</attr>
<!-- The key style to specify a set of key attributes defined by <key_style/> -->
<attr name="keyStyle" format="string" />
@@ -311,6 +301,7 @@
</declare-styleable>
<declare-styleable name="LatinKeyboard">
+ <attr name="autoCorrectionSpacebarLedEnabled" format="boolean" />
<attr name="autoCorrectionSpacebarLedIcon" format="reference" />
<attr name="disabledShortcutIcon" format="reference" />
<attr name="spacebarTextColor" format="color" />
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
deleted file mode 100644
index d78691864..000000000
--- a/java/res/values/colors.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2008, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources>
- <color name="latinkeyboard_bar_language_shadow_white">#80000000</color>
- <color name="latinkeyboard_bar_language_shadow_black">#80FFFFFF</color>
- <color name="latinkeyboard_bar_language_text">#FFC0C0C0</color>
- <color name="latinkeyboard_feedback_language_text">#FFFFFFFF</color>
- <color name="latinkeyboard_key_color_white">#FFFFFFFF</color>
- <color name="latinkeyboard_key_color_black">#FF000000</color>
-</resources>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index a08e2ae33..ad580cc69 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -42,6 +42,7 @@
<bool name="config_default_bigram_prediction">false</bool>
<bool name="config_default_recorrection_enabled">true</bool>
<bool name="config_default_sound_enabled">false</bool>
+ <bool name="config_auto_correction_spacebar_led_enabled">true</bool>
<bool name="config_use_spacebar_language_switcher">true</bool>
<!-- Showing mini keyboard, just above the touched point if true, aligned to the key if false -->
<bool name="config_show_mini_keyboard_at_touched_point">false</bool>
@@ -66,7 +67,7 @@
<integer name="config_double_spaces_turn_into_period_timeout">1100</integer>
<dimen name="config_touch_noise_threshold_distance">2.0mm</dimen>
<!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. -->
- <string name="config_default_keyboard_theme_id" translatable="false">4</string>
+ <string name="config_default_keyboard_theme_id" translatable="false">5</string>
<string name="config_text_size_of_language_on_spacebar" translatable="false">small</string>
<integer name="config_max_popup_keyboard_column">5</integer>
<string-array name="auto_correction_threshold_values" translatable="false">
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index a76c78a4c..665245c23 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -30,9 +30,15 @@
<dimen name="popup_key_height">0.330in</dimen>
<dimen name="keyboard_top_padding">0.00in</dimen>
<dimen name="keyboard_bottom_padding">0.06in</dimen>
+ <dimen name="key_bottom_gap_stone">0.00in</dimen>
+ <dimen name="key_horizontal_gap_stone">0.00in</dimen>
+ <dimen name="key_bottom_gap_ics">0.06in</dimen>
+ <dimen name="key_horizontal_gap_ics">0.01in</dimen>
+ <dimen name="keyboard_top_padding_ics">0.03in</dimen>
+ <dimen name="keyboard_bottom_padding_ics">0.06in</dimen>
<dimen name="keyboard_horizontal_edges_padding">0.0in</dimen>
<dimen name="mini_keyboard_horizontal_padding">16dip</dimen>
- <dimen name="mini_keyboard_horizontal_padding_holo">32dip</dimen>
+ <dimen name="mini_keyboard_horizontal_padding_holo">38dip</dimen>
<dimen name="mini_keyboard_key_horizontal_padding">8dip</dimen>
<!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
<!-- popup_key_height x 1.2 -->
@@ -52,8 +58,7 @@
<dimen name="key_preview_height">80sp</dimen>
<dimen name="key_preview_offset">0.1in</dimen>
<fraction name="key_preview_text_ratio">82%</fraction>
- <dimen name="key_preview_height_holo">130sp</dimen>
- <dimen name="key_preview_offset_holo">0.193in</dimen>
+ <dimen name="key_preview_offset_ics">0.05in</dimen>
<dimen name="candidate_strip_height">42dip</dimen>
<!-- candidate_strip_minimum_height =
diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index 2dbfe925f..1c198d9cb 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -38,8 +38,10 @@
<string name="label_tab_key">Tab</string>
<!-- Label for "switch to symbols" key. Must be short to fit on key! -->
<string name="label_to_symbol_key">\?123</string>
- <!-- Label for "switch to numeric" key. Must be short to fit on key! -->
- <string name="label_to_numeric_key">123</string>
+ <!-- Label for "switch to phone numeric" key. Must be short to fit on key! -->
+ <string name="label_to_phone_numeric_key">123</string>
+ <!-- Label for "switch to phone symbols" key. Must be short to fit on key! -->
+ <string name="label_to_phone_symbols_key">\uff0a\uff03\uff08</string>
<!-- Option values to show/hide the settings key in onscreen keyboard -->
<!-- Automatically decide to show or hide the settings key -->
@@ -126,7 +128,7 @@
<string name="layout_stone_bold">Stone (bold)</string>
<string name="layout_stone_normal">Stone (normal)</string>
<string name="layout_gingerbread">Gingerbread</string>
- <string name="layout_honeycomb">Honeycomb</string>
+ <string name="layout_ics">IceCreamSandwich</string>
<!-- For keyboard theme switcher dialog -->
<string-array name="keyboard_layout_modes">
@@ -135,7 +137,7 @@
<item>@string/layout_stone_normal</item>
<item>@string/layout_stone_bold</item>
<item>@string/layout_gingerbread</item>
- <item>@string/layout_honeycomb</item>
+ <item>@string/layout_ics</item>
</string-array>
<string-array name="keyboard_layout_modes_values">
<item>0</item>
diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml
index f11a9c4d6..3ba345580 100644
--- a/java/res/values/keyboard-icons-black.xml
+++ b/java/res/values/keyboard-icons-black.xml
@@ -16,6 +16,7 @@
<resources>
<style name="KeyboardIcons.Black" parent="android:Theme.Light">
+ <!-- Keyboard icons -->
<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>
@@ -35,13 +36,17 @@
<item name="iconNum8Key">@drawable/sym_bkeyboard_num8</item>
<item name="iconNum9Key">@drawable/sym_bkeyboard_num9</item>
<item name="iconNum0Key">@drawable/sym_bkeyboard_num0</item>
- <item name="iconNumStarKey">@drawable/sym_bkeyboard_numstar</item>
- <item name="iconNumPoundKey">@drawable/sym_bkeyboard_numpound</item>
- <item name="iconNumAltKey">@drawable/sym_bkeyboard_numalt</item>
<item name="iconShiftedShiftKey">@drawable/sym_bkeyboard_shift_locked</item>
<item name="iconPreviewSpaceKey">@drawable/sym_keyboard_feedback_space</item>
<item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
<item name="iconPreviewSettingsKey">@drawable/sym_keyboard_feedback_settings</item>
<item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_mic</item>
+ <!-- LatinKeyboard icons -->
+ <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
+ <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
+ <item name="spacebarArrowLeftIcon">@drawable/sym_keyboard_language_arrows_left</item>
+ <item name="spacebarArrowRightIcon">@drawable/sym_keyboard_language_arrows_right</item>
+ <item name="spacebarArrowPreviewLeftIcon">@drawable/sym_keyboard_feedback_language_arrows_left</item>
+ <item name="spacebarArrowPreviewRightIcon">@drawable/sym_keyboard_feedback_language_arrows_right</item>
</style>
</resources>
diff --git a/java/res/values/keyboard-icons-holo.xml b/java/res/values/keyboard-icons-holo.xml
deleted file mode 100644
index 5f396ca71..000000000
--- a/java/res/values/keyboard-icons-holo.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<resources>
- <style name="KeyboardIcons.Holo" parent="android:Theme.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_holo</item> -->
- <item name="iconTabKey">@drawable/sym_keyboard_tab_holo</item>
- <item name="iconNum1Key">@drawable/sym_keyboard_num1_holo</item>
- <item name="iconNum2Key">@drawable/sym_keyboard_num2_holo</item>
- <item name="iconNum3Key">@drawable/sym_keyboard_num3_holo</item>
- <item name="iconNum4Key">@drawable/sym_keyboard_num4_holo</item>
- <item name="iconNum5Key">@drawable/sym_keyboard_num5_holo</item>
- <item name="iconNum6Key">@drawable/sym_keyboard_num6_holo</item>
- <item name="iconNum7Key">@drawable/sym_keyboard_num7_holo</item>
- <item name="iconNum8Key">@drawable/sym_keyboard_num8_holo</item>
- <item name="iconNum9Key">@drawable/sym_keyboard_num9_holo</item>
- <item name="iconNum0Key">@drawable/sym_keyboard_num0_holo</item>
- <item name="iconNumStarKey">@drawable/sym_keyboard_numbstar_holo</item>
- <item name="iconNumPoundKey">@drawable/sym_keyboard_numbpound_holo</item>
-<!-- <item name="iconNumAltKey">@drawable/sym_keyboard_numalt_holo</item> -->
- <item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked_holo</item>
- <item name="iconPreviewSpaceKey">@drawable/sym_keyboard_space_holo</item>
- <item name="iconPreviewTabKey">@drawable/sym_keyboard_tab_holo</item>
- <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_settings_holo</item>
-<!-- <item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_voice_holo</item> -->
- </style>
-</resources>
diff --git a/java/res/values/keyboard-icons-ics.xml b/java/res/values/keyboard-icons-ics.xml
new file mode 100644
index 000000000..3029695e6
--- /dev/null
+++ b/java/res/values/keyboard-icons-ics.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <style name="KeyboardIcons.IceCreamSandwich" parent="android:Theme.Holo">
+ <!-- Keyboard icons -->
+<!-- <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo</item> -->
+ <item name="iconShiftKey">@drawable/sym_keyboard_shift</item>
+<!-- <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_voice_holo</item> -->
+ <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_mic</item>
+<!-- <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo</item> -->
+ <item name="iconDeleteKey">@drawable/sym_keyboard_delete</item>
+<!-- <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo</item> -->
+ <item name="iconSettingsKey">@drawable/sym_keyboard_settings</item>
+<!-- <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo</item> -->
+ <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item>
+<!-- <item name="iconSpaceKey">@drawable/sym_keyboard_space_holo</item> -->
+ <item name="iconSpaceKey">@drawable/sym_keyboard_space</item>
+<!-- <item name="iconReturnKey">@drawable/sym_keyboard_return_holo</item> -->
+ <item name="iconReturnKey">@drawable/sym_keyboard_return</item>
+<!-- <item name="iconSearchKey">@drawable/sym_keyboard_search_holo</item> -->
+ <item name="iconSearchKey">@drawable/sym_keyboard_search</item>
+<!-- <item name="iconTabKey">@drawable/sym_keyboard_tab_holo</item> -->
+ <item name="iconTabKey">@drawable/sym_keyboard_tab</item>
+<!-- <item name="iconNum1Key">@drawable/sym_keyboard_num1_holo</item> -->
+<!-- <item name="iconNum2Key">@drawable/sym_keyboard_num2_holo</item> -->
+<!-- <item name="iconNum3Key">@drawable/sym_keyboard_num3_holo</item> -->
+<!-- <item name="iconNum4Key">@drawable/sym_keyboard_num4_holo</item> -->
+<!-- <item name="iconNum5Key">@drawable/sym_keyboard_num5_holo</item> -->
+<!-- <item name="iconNum6Key">@drawable/sym_keyboard_num6_holo</item> -->
+<!-- <item name="iconNum7Key">@drawable/sym_keyboard_num7_holo</item> -->
+<!-- <item name="iconNum8Key">@drawable/sym_keyboard_num8_holo</item> -->
+<!-- <item name="iconNum9Key">@drawable/sym_keyboard_num9_holo</item> -->
+<!-- <item name="iconNum0Key">@drawable/sym_keyboard_num0_holo</item> -->
+<!-- <item name="iconNumStarKey">@drawable/sym_keyboard_numbstar_holo</item> -->
+<!-- <item name="iconNumPoundKey">@drawable/sym_keyboard_numbpound_holo</item> -->
+<!-- <item name="iconNumAltKey">@drawable/sym_keyboard_numalt_holo</item> -->
+ <item name="iconNum1Key">@drawable/sym_keyboard_num1</item>
+ <item name="iconNum2Key">@drawable/sym_keyboard_num2</item>
+ <item name="iconNum3Key">@drawable/sym_keyboard_num3</item>
+ <item name="iconNum4Key">@drawable/sym_keyboard_num4</item>
+ <item name="iconNum5Key">@drawable/sym_keyboard_num5</item>
+ <item name="iconNum6Key">@drawable/sym_keyboard_num6</item>
+ <item name="iconNum7Key">@drawable/sym_keyboard_num7</item>
+ <item name="iconNum8Key">@drawable/sym_keyboard_num8</item>
+ <item name="iconNum9Key">@drawable/sym_keyboard_num9</item>
+ <item name="iconNum0Key">@drawable/sym_keyboard_num0</item>
+<!-- <item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked_holo</item> -->
+ <item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked</item>
+ <item name="iconPreviewSpaceKey">@drawable/sym_keyboard_space_holo</item>
+<!-- <item name="iconPreviewTabKey">@drawable/sym_keyboard_tab_holo</item> -->
+ <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
+<!-- <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_settings_holo</item> -->
+ <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_settings</item>
+<!-- <item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_voice_holo</item> -->
+ <item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_mic</item>
+ <!-- LatinKeyboard icons -->
+ <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
+ <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
+ <item name="spacebarArrowLeftIcon">@drawable/sym_keyboard_language_arrows_left</item>
+ <item name="spacebarArrowRightIcon">@drawable/sym_keyboard_language_arrows_right</item>
+ <item name="spacebarArrowPreviewLeftIcon">@drawable/sym_keyboard_feedback_language_arrows_left</item>
+ <item name="spacebarArrowPreviewRightIcon">@drawable/sym_keyboard_feedback_language_arrows_right</item>
+ </style>
+</resources>
diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml
index f25f7d44a..9f5fb5a5b 100644
--- a/java/res/values/keyboard-icons-white.xml
+++ b/java/res/values/keyboard-icons-white.xml
@@ -16,6 +16,7 @@
<resources>
<style name="KeyboardIcons" parent="android:Theme">
+ <!-- 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>
@@ -35,13 +36,17 @@
<item name="iconNum8Key">@drawable/sym_keyboard_num8</item>
<item name="iconNum9Key">@drawable/sym_keyboard_num9</item>
<item name="iconNum0Key">@drawable/sym_keyboard_num0</item>
- <item name="iconNumStarKey">@drawable/sym_keyboard_numstar</item>
- <item name="iconNumPoundKey">@drawable/sym_keyboard_numpound</item>
- <item name="iconNumAltKey">@drawable/sym_keyboard_numalt</item>
<item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked</item>
<item name="iconPreviewSpaceKey">@drawable/sym_keyboard_feedback_space</item>
<item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item>
<item name="iconPreviewSettingsKey">@drawable/sym_keyboard_feedback_settings</item>
<item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_mic</item>
+ <!-- LatinKeyboard icons -->
+ <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
+ <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
+ <item name="spacebarArrowLeftIcon">@drawable/sym_keyboard_language_arrows_left</item>
+ <item name="spacebarArrowRightIcon">@drawable/sym_keyboard_language_arrows_right</item>
+ <item name="spacebarArrowPreviewLeftIcon">@drawable/sym_keyboard_feedback_language_arrows_left</item>
+ <item name="spacebarArrowPreviewRightIcon">@drawable/sym_keyboard_feedback_language_arrows_right</item>
</style>
</resources>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index d3f19230e..5d7a1f9c7 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -131,6 +131,81 @@
<!-- 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 description for the currently entered text -->
+ <string name="spoken_current_text_is">Current text is "%s"</string>
+ <!-- Spoken description when there is no text entered -->
+ <string name="spoken_no_text_entered">No text entered</string>
+
+ <!-- Spoken description for unknown keyboard keys. -->
+ <string name="spoken_description_unknown">Key code %d</string>
+ <!-- Spoken description for the "Shift" keyboard key. -->
+ <string name="spoken_description_shift">Shift</string>
+ <!-- Spoken description for the "Shift" keyboard key's pressed state. -->
+ <string name="spoken_description_shift_shifted">Shift enabled</string>
+ <!-- Spoken description for the "Shift" keyboard key's pressed state. -->
+ <string name="spoken_description_caps_lock">Caps lock enabled</string>
+ <!-- Spoken description for the "Delete" keyboard key. -->
+ <string name="spoken_description_delete">Delete</string>
+ <!-- Spoken description for the "To Symbol" keyboard key. -->
+ <string name="spoken_description_to_symbol">Symbols</string>
+ <!-- Spoken description for the "To Alpha" keyboard key. -->
+ <string name="spoken_description_to_alpha">Letters</string>
+ <!-- Spoken description for the "To Numbers" keyboard key. -->
+ <string name="spoken_description_to_numeric">Numbers</string>
+ <!-- Spoken description for the "Settings" keyboard key. -->
+ <string name="spoken_description_settings">Settings</string>
+ <!-- Spoken description for the "Tab" keyboard key. -->
+ <string name="spoken_description_tab">Tab</string>
+ <!-- Spoken description for the "Space" keyboard key. -->
+ <string name="spoken_description_space">Space</string>
+ <!-- Spoken description for the "Mic" keyboard key. -->
+ <string name="spoken_description_mic">Voice input</string>
+ <!-- Spoken description for the "Smiley" keyboard key. -->
+ <string name="spoken_description_smiley">Smiley face</string>
+ <!-- Spoken description for the "Return" keyboard key. -->
+ <string name="spoken_description_return">Return</string>
+
+ <!-- Spoken description for the "," keyboard key. -->
+ <string name="spoken_description_comma">Comma</string>
+ <!-- Spoken description for the "." keyboard key. -->
+ <string name="spoken_description_period">Period</string>
+ <!-- Spoken description for the "(" keyboard key. -->
+ <string name="spoken_description_left_parenthesis">Left parenthesis</string>
+ <!-- Spoken description for the ")" keyboard key. -->
+ <string name="spoken_description_right_parenthesis">Right parenthesis</string>
+ <!-- Spoken description for the ":" keyboard key. -->
+ <string name="spoken_description_colon">Colon</string>
+ <!-- Spoken description for the ";" keyboard key. -->
+ <string name="spoken_description_semicolon">Semicolon</string>
+ <!-- Spoken description for the "!" keyboard key. -->
+ <string name="spoken_description_exclamation_mark">Exclamation mark</string>
+ <!-- Spoken description for the "?" keyboard key. -->
+ <string name="spoken_description_question_mark">Question mark</string>
+ <!-- Spoken description for the """ keyboard key. -->
+ <string name="spoken_description_double_quote">Double quote</string>
+ <!-- Spoken description for the "'" keyboard key. -->
+ <string name="spoken_description_single_quote">Single quote</string>
+ <!-- Spoken description for the "•" keyboard key. -->
+ <string name="spoken_description_dot">Dot</string>
+ <!-- Spoken description for the "√" keyboard key. -->
+ <string name="spoken_description_square_root">Square root</string>
+ <!-- Spoken description for the "Ï€" keyboard key. -->
+ <string name="spoken_description_pi">Pi</string>
+ <!-- Spoken description for the "Δ" keyboard key. -->
+ <string name="spoken_description_delta">Delta</string>
+ <!-- Spoken description for the "â„¢" keyboard key. -->
+ <string name="spoken_description_trademark">Trademark</string>
+ <!-- Spoken description for the "â„…" keyboard key. -->
+ <string name="spoken_description_care_of">Care of</string>
+ <!-- Spoken description for the "*" keyboard key. -->
+ <string name="spoken_description_star">Star</string>
+ <!-- Spoken description for the "#" keyboard key. -->
+ <string name="spoken_description_pound">Pound</string>
+ <!-- Spoken description for the "…" keyboard key. -->
+ <string name="spoken_description_ellipsis">Ellipsis</string>
+ <!-- Spoken description for the "„" keyboard key. -->
+ <string name="spoken_description_low_double_quote">Low double quote</string>
+
<!-- Voice related labels -->
<!-- Title of the warning dialog that shows when a user initiates voice input for
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 3780fe3d2..05defcb52 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -22,19 +22,16 @@
<item name="maxKeyboardHeight">@fraction/maxKeyboardHeight</item>
<item name="minKeyboardHeight">@fraction/minKeyboardHeight</item>
<item name="popupKeyboardTemplate">@xml/kbd_popup_template</item>
+ <item name="keyboardTopPadding">@dimen/keyboard_top_padding</item>
+ <item name="keyboardBottomPadding">@dimen/keyboard_bottom_padding</item>
<item name="horizontalGap">@dimen/key_horizontal_gap</item>
<item name="verticalGap">@dimen/key_bottom_gap</item>
<item name="maxPopupKeyboardColumn">@integer/config_max_popup_keyboard_column</item>
</style>
<style name="LatinKeyboard">
- <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
- <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
- <item name="spacebarTextColor">@color/latinkeyboard_bar_language_text</item>
- <item name="spacebarTextShadowColor">@color/latinkeyboard_bar_language_shadow_white</item>
- <item name="spacebarArrowLeftIcon">@drawable/sym_keyboard_language_arrows_left</item>
- <item name="spacebarArrowRightIcon">@drawable/sym_keyboard_language_arrows_right</item>
- <item name="spacebarArrowPreviewLeftIcon">@drawable/sym_keyboard_feedback_language_arrows_left</item>
- <item name="spacebarArrowPreviewRightIcon">@drawable/sym_keyboard_feedback_language_arrows_right</item>
+ <item name="autoCorrectionSpacebarLedEnabled">@bool/config_auto_correction_spacebar_led_enabled</item>
+ <item name="spacebarTextColor">#FFC0C0C0</item>
+ <item name="spacebarTextShadowColor">#80000000</item>
</style>
<style name="KeyboardView">
<item name="android:background">@drawable/keyboard_background</item>
@@ -59,10 +56,10 @@
<item name="shadowColor">#BB000000</item>
<item name="shadowRadius">2.75</item>
<item name="backgroundDimAmount">0.5</item>
- <item name="colorScheme">white</item>
</style>
<style name="KeyPreviewStyle">
<item name="android:background">@drawable/keyboard_key_feedback</item>
+ <item name="android:textColor">#FFFFFFFF</item>
</style>
<style name="PopupMiniKeyboardView" parent="KeyboardView">
<item name="keyBackground">@drawable/btn_keyboard_key_popup</item>
@@ -97,22 +94,24 @@
<item name="keyBackground">@drawable/btn_keyboard_key3</item>
</style>
<!-- Theme "Stone" -->
- <style name="LatinKeyboard.Stone" patent="LatinKeyboard">
+ <style name="Keyboard.Stone" parent="Keyboard">
+ <item name="horizontalGap">@dimen/key_horizontal_gap_stone</item>
+ <item name="verticalGap">@dimen/key_bottom_gap_stone</item>
+ </style>
+ <style name="LatinKeyboard.Stone" parent="LatinKeyboard">
<item name="spacebarTextColor">#FF444444</item>
- <item name="spacebarTextShadowColor">@color/latinkeyboard_bar_language_shadow_black</item>
- <item name="disabledShortcutIcon">@drawable/sym_bkeyboard_voice_off</item>
+ <item name="spacebarTextShadowColor">#80FFFFFF</item>
</style>
<style name="KeyboardView.Stone" parent="KeyboardView">
<item name="keyBackground">@drawable/btn_keyboard_key_stone</item>
- <item name="keyTextColor">@color/latinkeyboard_key_color_black</item>
+ <item name="keyTextColor">#FF000000</item>
<item name="keyTextInactivatedColor">#FF808080</item>
- <item name="shadowColor">@color/latinkeyboard_key_color_white</item>
- <item name="colorScheme">black</item>
+ <item name="shadowColor">#FFFFFFFF</item>
</style>
<style name="PopupMiniKeyboardView.Stone" parent="PopupMiniKeyboardView">
<item name="keyBackground">@drawable/btn_keyboard_key_stone</item>
- <item name="keyTextColor">@color/latinkeyboard_key_color_black</item>
- <item name="shadowColor">@color/latinkeyboard_key_color_white</item>
+ <item name="keyTextColor">#FF000000</item>
+ <item name="shadowColor">#FFFFFFFF</item>
</style>
<!-- Theme "Stone bold" -->
<style name="KeyboardView.Stone.Bold" parent="KeyboardView.Stone">
@@ -127,49 +126,52 @@
<style name="PopupMiniKeyboardView.Gingerbread" parent="PopupMiniKeyboardView">
<item name="android:background">@null</item>
</style>
- <!-- Theme "Honeycomb" -->
- <style name="Keyboard.Honeycomb" parent="Keyboard" >
+ <!-- Theme "IceCreamSandwich" -->
+ <style name="Keyboard.IceCreamSandwich" parent="Keyboard" >
+ <item name="keyboardTopPadding">@dimen/keyboard_top_padding_ics</item>
+ <item name="keyboardBottomPadding">@dimen/keyboard_bottom_padding_ics</item>
+ <item name="horizontalGap">@dimen/key_horizontal_gap_ics</item>
+ <item name="verticalGap">@dimen/key_bottom_gap_ics</item>
</style>
- <style name="LatinKeyboard.Honeycomb" parent="LatinKeyboard">
- <item name="autoCorrectionSpacebarLedIcon">@null</item>
+ <style name="LatinKeyboard.IceCreamSandwich" parent="LatinKeyboard">
<item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
</style>
- <style name="KeyboardView.Honeycomb" parent="KeyboardView">
+ <style name="KeyboardView.IceCreamSandwich" parent="KeyboardView">
<item name="android:background">@drawable/keyboard_background_holo</item>
- <item name="keyBackground">@drawable/btn_keyboard_key_honeycomb</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_ics</item>
<item name="keyTextStyle">bold</item>
<item name="keyTextInactivatedColor">#66E0E4E5</item>
<item name="keyHintLetterColor">#80000000</item>
<item name="keyUppercaseLetterInactivatedColor">#66E0E4E5</item>
<item name="keyUppercaseLetterActivatedColor">#FFFFFFFF</item>
- <item name="keyPopupHintIcon">@drawable/hint_popup_holo</item>
- <item name="keyPreviewHeight">@dimen/key_preview_height_holo</item>
- <item name="keyPreviewOffset">@dimen/key_preview_offset_holo</item>
+ <item name="keyPopupHintIcon">@drawable/hint_popup</item>
+ <item name="keyPreviewHeight">@dimen/key_preview_height</item>
+ <item name="keyPreviewOffset">@dimen/key_preview_offset_ics</item>
<item name="shadowColor">#00000000</item>
<item name="shadowRadius">0.0</item>
</style>
- <style name="KeyPreviewStyle.Honeycomb">
- <item name="android:background">@drawable/keyboard_key_feedback_honeycomb</item>
+ <style name="KeyPreviewStyle.IceCreamSandwich">
+ <item name="android:background">@drawable/keyboard_key_feedback_ics</item>
</style>
- <style name="PopupMiniKeyboardView.Honeycomb" parent="PopupMiniKeyboardView">
+ <style name="PopupMiniKeyboardView.IceCreamSandwich" parent="PopupMiniKeyboardView">
<item name="android:background">@null</item>
- <item name="keyBackground">@drawable/btn_keyboard_key_popup_honeycomb</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_popup_ics</item>
</style>
- <style name="PopupMiniKeyboardPanelStyle.Honeycomb">
+ <style name="PopupMiniKeyboardPanelStyle.IceCreamSandwich">
<item name="android:background">@drawable/keyboard_popup_panel_background_holo</item>
<item name="android:paddingLeft">@dimen/mini_keyboard_horizontal_padding_holo</item>
<item name="android:paddingRight">@dimen/mini_keyboard_horizontal_padding_holo</item>
</style>
- <style name="SuggestionsStripBackgroundStyle.Honeycomb">
+ <style name="SuggestionsStripBackgroundStyle.IceCreamSandwich">
<item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
</style>
- <style name="SuggestionBackgroundStyle.Honeycomb">
- <item name="android:background">@drawable/btn_candidate_holo</item>
+ <style name="SuggestionBackgroundStyle.IceCreamSandwich">
+ <item name="android:background">@drawable/btn_candidate_ics</item>
</style>
- <style name="SuggestionPreviewBackgroundStyle.Honeycomb">
+ <style name="SuggestionPreviewBackgroundStyle.IceCreamSandwich">
<item name="android:background">@drawable/keyboard_popup_panel_background_holo</item>
</style>
- <style name="CandidateViewStyle.Honeycomb" parent="SuggestionsStripBackgroundStyle.Honeycomb">
+ <style name="CandidateViewStyle.IceCreamSandwich" parent="SuggestionsStripBackgroundStyle.IceCreamSandwich">
<item name="autoCorrectHighlight">autoCorrectUnderline|autoCorrectInvert</item>
<item name="colorTypedWord">#FFFFFFFF</item>
<item name="colorAutoCorrect">#FFFFFFFF</item>
diff --git a/java/res/values/themes-honeycomb.xml b/java/res/values/themes-ics.xml
index 07f5b83c0..33c40816b 100644
--- a/java/res/values/themes-honeycomb.xml
+++ b/java/res/values/themes-ics.xml
@@ -15,16 +15,16 @@
-->
<resources>
- <style name="KeyboardTheme.Honeycomb" parent="KeyboardIcons.Holo">
- <item name="keyboardStyle">@style/Keyboard.Honeycomb</item>
- <item name="latinKeyboardStyle">@style/LatinKeyboard.Honeycomb</item>
- <item name="keyboardViewStyle">@style/KeyboardView.Honeycomb</item>
- <item name="keyPreviewStyle">@style/KeyPreviewStyle.Honeycomb</item>
- <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Honeycomb</item>
- <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle.Honeycomb</item>
- <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.Honeycomb</item>
- <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.Honeycomb</item>
- <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle.Honeycomb</item>
- <item name="candidateViewStyle">@style/CandidateViewStyle.Honeycomb</item>
+ <style name="KeyboardTheme.IceCreamSandwich" parent="KeyboardIcons.IceCreamSandwich">
+ <item name="keyboardStyle">@style/Keyboard.IceCreamSandwich</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard.IceCreamSandwich</item>
+ <item name="keyboardViewStyle">@style/KeyboardView.IceCreamSandwich</item>
+ <item name="keyPreviewStyle">@style/KeyPreviewStyle.IceCreamSandwich</item>
+ <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.IceCreamSandwich</item>
+ <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle.IceCreamSandwich</item>
+ <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.IceCreamSandwich</item>
+ <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.IceCreamSandwich</item>
+ <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle.IceCreamSandwich</item>
+ <item name="candidateViewStyle">@style/CandidateViewStyle.IceCreamSandwich</item>
</style>
</resources>
diff --git a/java/res/values/themes-stone-bold.xml b/java/res/values/themes-stone-bold.xml
index 4955f2286..6589807ec 100644
--- a/java/res/values/themes-stone-bold.xml
+++ b/java/res/values/themes-stone-bold.xml
@@ -16,7 +16,7 @@
<resources>
<style name="KeyboardTheme.Stone.Bold" parent="KeyboardIcons.Black">
- <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="keyboardStyle">@style/Keyboard.Stone</item>
<item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
<item name="keyboardViewStyle">@style/KeyboardView.Stone.Bold</item>
<item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
diff --git a/java/res/values/themes-stone.xml b/java/res/values/themes-stone.xml
index 39a011bd9..a8608f6b3 100644
--- a/java/res/values/themes-stone.xml
+++ b/java/res/values/themes-stone.xml
@@ -16,7 +16,7 @@
<resources>
<style name="KeyboardTheme.Stone" parent="KeyboardIcons.Black">
- <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="keyboardStyle">@style/Keyboard.Stone</item>
<item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
<item name="keyboardViewStyle">@style/KeyboardView.Stone</item>
<item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index 988f5c490..dbff293ba 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -22,21 +22,9 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<!-- Base key style for the functional key -->
- <switch>
- <case
- latin:colorScheme="white"
- >
- <key-style
- latin:styleName="functionalKeyStyle"
- latin:isFunctional="true" />
- </case>
- <case
- latin:colorScheme="black"
- >
- <key-style
- latin:styleName="functionalKeyStyle" />
- </case>
- </switch>
+ <key-style
+ latin:styleName="functionalKeyStyle"
+ latin:isFunctional="true" />
<!-- Functional key styles -->
<key-style
latin:styleName="shiftKeyStyle"
diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml
index 3a370c816..42d7d0777 100644
--- a/java/res/xml-sw600dp/kbd_number.xml
+++ b/java/res/xml-sw600dp/kbd_number.xml
@@ -92,13 +92,16 @@
<Row>
<Key
latin:keyLabel="-"
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="11.00%p"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="+"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="."
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="1"
@@ -116,13 +119,16 @@
<Row>
<Key
latin:keyLabel="*"
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="11.00%p"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="/"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel=","
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="4"
@@ -143,13 +149,16 @@
edge key. -->
<Key
latin:keyLabel="("
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="11.00%p"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel=")"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="="
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="7"
@@ -169,12 +178,13 @@
latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
latin:keyWidth="27.75%p" />
<Key
- latin:keyLabel="*"
+ latin:keyStyle="numStarKeyStyle"
latin:keyXPos="38.75%p" />
<Key
latin:keyLabel="0" />
<Key
- latin:keyLabel="#" />
+ latin:keyLabel="#"
+ latin:keyStyle="numLabelStyle" />
<Key
latin:keyStyle="shortcutOrSettingsKeyStyle"
latin:keyXPos="-11.00%p"
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index 133983d2a..017d00352 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -30,10 +30,12 @@
<Row>
<Key
latin:keyLabel="-"
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="15.625%p"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="+"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyStyle="num1KeyStyle"
@@ -51,10 +53,12 @@
<Row>
<Key
latin:keyLabel=","
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="15.625%p"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="."
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyStyle="num4KeyStyle"
@@ -78,10 +82,12 @@
the touch event on the area, "(" is intentionally not marked as a left edge key. -->
<Key
latin:keyLabel="("
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="15.625%p"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel=")"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyStyle="num7KeyStyle"
@@ -107,7 +113,8 @@
<Key
latin:keyStyle="num0KeyStyle" />
<Key
- latin:keyStyle="numPoundKeyStyle" />
+ latin:keyLabel="#"
+ latin:keyStyle="numLabelStyle" />
<Key
latin:keyStyle="shortcutOrSettingsKeyStyle"
latin:keyXPos="-11.00%p"
diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml
index 73b7e4da6..168e6b114 100644
--- a/java/res/xml-sw600dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -30,10 +30,12 @@
<Row>
<Key
latin:keyLabel="-"
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="11.00%p"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="+"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:code="44"
@@ -55,10 +57,12 @@
<Row>
<Key
latin:keyLabel=","
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="11.00%p"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="."
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:code="59"
@@ -86,12 +90,15 @@
the touch event on the area, "(" is intentionally not marked as a left edge key. -->
<Key
latin:keyLabel="("
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel=")"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyLabel="N"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="9.25%p" />
<Key
latin:keyStyle="num7KeyStyle"
@@ -116,7 +123,8 @@
<Key
latin:keyStyle="num0KeyStyle" />
<Key
- latin:keyStyle="numPoundKeyStyle" />
+ latin:keyLabel="#"
+ latin:keyStyle="numLabelStyle" />
<Key
latin:keyStyle="shortcutOrSettingsKeyStyle"
latin:keyXPos="-11.00%p"
diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index ecfacc25b..5d8c081a6 100644
--- a/java/res/xml-sw768dp/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
@@ -22,21 +22,9 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<!-- Functional key styles -->
- <switch>
- <case
- latin:colorScheme="white"
- >
- <key-style
- latin:styleName="functionalKeyStyle"
- latin:isFunctional="true" />
- </case>
- <case
- latin:colorScheme="black"
- >
- <key-style
- latin:styleName="functionalKeyStyle" />
- </case>
- </switch>
+ <key-style
+ latin:styleName="functionalKeyStyle"
+ latin:isFunctional="true" />
<key-style
latin:styleName="shiftKeyStyle"
latin:code="@integer/key_shift"
diff --git a/java/res/xml-sw768dp/kbd_number.xml b/java/res/xml-sw768dp/kbd_number.xml
index 1e478fd8d..1ae6984a5 100644
--- a/java/res/xml-sw768dp/kbd_number.xml
+++ b/java/res/xml-sw768dp/kbd_number.xml
@@ -98,13 +98,16 @@
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="-"
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="13.829%p"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="+"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="."
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="1"
@@ -122,13 +125,16 @@
<Row>
<Key
latin:keyLabel="*"
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="13.829%p"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="/"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel=","
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="4"
@@ -149,13 +155,16 @@
edge key. -->
<Key
latin:keyLabel="("
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="13.829%p"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel=")"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="="
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="7"
@@ -183,11 +192,13 @@
latin:keyWidth="24.140%p" />
<Key
latin:keyLabel="*"
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="43.125%p" />
<Key
latin:keyLabel="0" />
<Key
- latin:keyLabel="#" />
+ latin:keyLabel="#"
+ latin:keyStyle="numLabelStyle" />
<switch>
<case
latin:voiceKeyEnabled="true"
diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index b0d9337de..6801ac5cc 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -35,10 +35,12 @@
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="-"
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="20.400%p"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="+"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyStyle="num1KeyStyle"
@@ -60,10 +62,12 @@
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel=","
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="20.400%p"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="."
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyStyle="num4KeyStyle"
@@ -83,10 +87,12 @@
the touch event on the area, "(" is intentionally not marked as a left edge key. -->
<Key
latin:keyLabel="("
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="20.400%p"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel=")"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyStyle="num7KeyStyle"
@@ -117,7 +123,8 @@
<Key
latin:keyStyle="num0KeyStyle" />
<Key
- latin:keyStyle="numPoundKeyStyle" />
+ latin:keyLabel="#"
+ latin:keyStyle="numLabelStyle" />
<switch>
<case
latin:voiceKeyEnabled="true"
diff --git a/java/res/xml-sw768dp/kbd_phone_symbols.xml b/java/res/xml-sw768dp/kbd_phone_symbols.xml
index 120a149d4..22f78b6d3 100644
--- a/java/res/xml-sw768dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -35,10 +35,12 @@
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="-"
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="13.829%p"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="+"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:code="44"
@@ -64,10 +66,12 @@
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel=","
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="13.829%p"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="."
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:code="59"
@@ -91,13 +95,16 @@
the touch event on the area, "(" is intentionally not marked as a left edge key. -->
<Key
latin:keyLabel="("
+ latin:keyStyle="numLabelStyle"
latin:keyXPos="13.829%p"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel=")"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="N"
+ latin:keyStyle="numLabelStyle"
latin:keyWidth="8.047%p" />
<Key
latin:keyStyle="num7KeyStyle"
@@ -128,7 +135,8 @@
<Key
latin:keyStyle="num0KeyStyle" />
<Key
- latin:keyStyle="numPoundKeyStyle" />
+ latin:keyLabel="#"
+ latin:keyStyle="numLabelStyle" />
<switch>
<case
latin:voiceKeyEnabled="true"
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index fbc4c920f..e7d8d31b6 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -22,21 +22,9 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<!-- Base key style for the functional key -->
- <switch>
- <case
- latin:colorScheme="white"
- >
- <key-style
- latin:styleName="functionalKeyStyle"
- latin:isFunctional="true" />
- </case>
- <case
- latin:colorScheme="black"
- >
- <key-style
- latin:styleName="functionalKeyStyle" />
- </case>
- </switch>
+ <key-style
+ latin:styleName="functionalKeyStyle"
+ latin:isFunctional="true" />
<!-- Base key style for the key which may have settings key as popup key -->
<switch>
<case
@@ -99,7 +87,6 @@
<key-style
latin:styleName="spaceKeyStyle"
latin:code="@integer/key_space"
- latin:keyIcon="iconSpaceKey"
latin:keyIconPreview="iconPreviewSpaceKey"
latin:parentStyle="functionalKeyStyle" />
<key-style
diff --git a/java/res/xml/kbd_numkey_styles.xml b/java/res/xml/kbd_numkey_styles.xml
index f53046aa2..3a26a022b 100644
--- a/java/res/xml/kbd_numkey_styles.xml
+++ b/java/res/xml/kbd_numkey_styles.xml
@@ -62,17 +62,31 @@
latin:code="57"
latin:keyIcon="iconNum9Key" />
<key-style
+ latin:styleName="numLabelStyle"
+ latin:keyLabelOption="fontFixedWidth|followKeyLetterRatio" />
+ <key-style
+ latin:styleName="numLabelFunctionalStyle"
+ latin:keyLabelOption="fontFixedWidth|followKeyLetterRatio"
+ latin:parentStyle="functionalKeyStyle" />
+ <key-style
latin:styleName="numStarKeyStyle"
latin:code="42"
- latin:keyIcon="iconNumStarKey" />
+ latin:keyLabel="\uff0a"
+ latin:parentStyle="numLabelStyle" />
<key-style
latin:styleName="numPoundKeyStyle"
- latin:code="35"
- latin:keyIcon="iconNumPoundKey" />
+ latin:keyLabel="#"
+ latin:parentStyle="numLabelStyle" />
+ <key-style
+ latin:styleName="numSwitchToAltKeyStyle"
+ latin:code="@integer/key_switch_alpha_symbol"
+ latin:keyLabel="@string/label_to_phone_symbols_key"
+ latin:parentStyle="numLabelStyle" />
<key-style
- latin:styleName="numAltKeyStyle"
+ latin:styleName="numSwitchToNumericKeyStyle"
latin:code="@integer/key_switch_alpha_symbol"
- latin:keyIcon="iconNumAltKey" />
+ latin:keyLabel="@string/label_to_phone_numeric_key"
+ latin:parentStyle="numLabelStyle" />
<key-style
latin:styleName="numSpaceKeyStyle"
latin:code="@integer/key_space"
diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml
index 211f7b7f7..794528c2b 100644
--- a/java/res/xml/kbd_phone.xml
+++ b/java/res/xml/kbd_phone.xml
@@ -38,7 +38,7 @@
latin:keyStyle="num3KeyStyle" />
<Key
latin:keyLabel="-"
- latin:keyStyle="functionalKeyStyle"
+ latin:keyStyle="numLabelFunctionalStyle"
latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
@@ -52,7 +52,7 @@
latin:keyStyle="num6KeyStyle" />
<Key
latin:keyLabel="."
- latin:keyStyle="functionalKeyStyle"
+ latin:keyStyle="numLabelFunctionalStyle"
latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
@@ -73,7 +73,7 @@
latin:rowEdgeFlags="bottom"
>
<Key
- latin:keyStyle="numAltKeyStyle"
+ latin:keyStyle="numSwitchToAltKeyStyle"
latin:keyEdgeFlags="left" />
<Key
latin:keyStyle="num0KeyStyle" />
diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index c6513632c..1405c3c21 100644
--- a/java/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
@@ -31,20 +31,24 @@
>
<Key
latin:keyLabel="("
+ latin:keyStyle="numLabelStyle"
latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="/" />
+ latin:keyLabel="/"
+ latin:keyStyle="numLabelStyle" />
<Key
- latin:keyLabel=")" />
+ latin:keyLabel=")"
+ latin:keyStyle="numLabelStyle" />
<Key
latin:keyLabel="-"
- latin:keyStyle="functionalKeyStyle"
+ latin:keyStyle="numLabelFunctionalStyle"
latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
<Key
latin:keyLabel="N"
+ latin:keyStyle="numLabelStyle"
latin:keyEdgeFlags="left" />
<!-- Pause is a comma. Check PhoneNumberUtils.java to see if this
has changed. -->
@@ -52,10 +56,11 @@
latin:code="44"
latin:keyLabel="Pause" />
<Key
- latin:keyLabel="," />
+ latin:keyLabel=","
+ latin:keyStyle="numLabelStyle" />
<Key
latin:keyLabel="."
- latin:keyStyle="functionalKeyStyle"
+ latin:keyStyle="numLabelFunctionalStyle"
latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
@@ -68,7 +73,8 @@
latin:code="59"
latin:keyLabel="Wait" />
<Key
- latin:keyStyle="numPoundKeyStyle" />
+ latin:keyLabel="#"
+ latin:keyStyle="numLabelStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight"
@@ -78,11 +84,11 @@
latin:rowEdgeFlags="bottom"
>
<Key
- latin:code="@integer/key_switch_alpha_symbol"
- latin:keyLabel="@string/label_to_numeric_key"
+ latin:keyStyle="numSwitchToNumericKeyStyle"
latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="+" />
+ latin:keyLabel="+"
+ latin:keyStyle="numLabelStyle" />
<Key
latin:keyStyle="numSpaceKeyStyle" />
<Key
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java
new file mode 100644
index 000000000..ae614b7e0
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.accessibility;
+
+import android.accessibilityservice.AccessibilityServiceInfo;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.inputmethodservice.InputMethodService;
+import android.os.SystemClock;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
+
+import com.android.inputmethod.compat.AccessibilityEventCompatUtils;
+import com.android.inputmethod.compat.AccessibilityManagerCompatWrapper;
+import com.android.inputmethod.compat.MotionEventCompatUtils;
+
+public class AccessibilityUtils {
+ private static final String TAG = AccessibilityUtils.class.getSimpleName();
+ private static final String CLASS = AccessibilityUtils.class.getClass().getName();
+ private static final String PACKAGE = AccessibilityUtils.class.getClass().getPackage()
+ .getName();
+
+ private static final AccessibilityUtils sInstance = new AccessibilityUtils();
+
+ private AccessibilityManager mAccessibilityManager;
+ private AccessibilityManagerCompatWrapper mCompatManager;
+
+ /*
+ * Setting this constant to {@code false} will disable all keyboard
+ * accessibility code, regardless of whether Accessibility is turned on in
+ * the system settings. It should ONLY be used in the event of an emergency.
+ */
+ private static final boolean ENABLE_ACCESSIBILITY = true;
+
+ public static void init(InputMethodService inputMethod, SharedPreferences prefs) {
+ if (!ENABLE_ACCESSIBILITY)
+ return;
+
+ // These only need to be initialized if the kill switch is off.
+ sInstance.initInternal(inputMethod, prefs);
+ KeyCodeDescriptionMapper.init(inputMethod, prefs);
+ AccessibleInputMethodServiceProxy.init(inputMethod, prefs);
+ AccessibleKeyboardViewProxy.init(inputMethod, prefs);
+ }
+
+ public static AccessibilityUtils getInstance() {
+ return sInstance;
+ }
+
+ private AccessibilityUtils() {
+ // This class is not publicly instantiable.
+ }
+
+ private void initInternal(Context context, SharedPreferences prefs) {
+ mAccessibilityManager = (AccessibilityManager) context
+ .getSystemService(Context.ACCESSIBILITY_SERVICE);
+ mCompatManager = new AccessibilityManagerCompatWrapper(mAccessibilityManager);
+ }
+
+ /**
+ * Returns {@code true} if touch exploration is enabled. Currently, this
+ * means that the kill switch is off, the device supports touch exploration,
+ * and a spoken feedback service is turned on.
+ *
+ * @return {@code true} if touch exploration is enabled.
+ */
+ public boolean isTouchExplorationEnabled() {
+ return ENABLE_ACCESSIBILITY
+ && AccessibilityEventCompatUtils.supportsTouchExploration()
+ && mAccessibilityManager.isEnabled()
+ && !mCompatManager.getEnabledAccessibilityServiceList(
+ AccessibilityServiceInfo.FEEDBACK_SPOKEN).isEmpty();
+ }
+
+ /**
+ * Returns {@true} if the provided event is a touch exploration (e.g. hover)
+ * event. This is used to determine whether the event should be processed by
+ * the touch exploration code within the keyboard.
+ *
+ * @param event The event to check.
+ * @return {@true} is the event is a touch exploration event
+ */
+ public boolean isTouchExplorationEvent(MotionEvent event) {
+ final int action = event.getAction();
+
+ return action == MotionEventCompatUtils.ACTION_HOVER_ENTER
+ || action == MotionEventCompatUtils.ACTION_HOVER_EXIT
+ || action == MotionEventCompatUtils.ACTION_HOVER_MOVE;
+ }
+
+ /**
+ * Sends the specified text to the {@link AccessibilityManager} to be
+ * spoken.
+ *
+ * @param text the text to speak
+ */
+ public void speak(CharSequence text) {
+ if (!mAccessibilityManager.isEnabled()) {
+ Log.e(TAG, "Attempted to speak when accessibility was disabled!");
+ return;
+ }
+
+ // The following is a hack to avoid using the heavy-weight TextToSpeech
+ // class. Instead, we're just forcing a fake AccessibilityEvent into
+ // the screen reader to make it speak.
+ final AccessibilityEvent event = AccessibilityEvent
+ .obtain(AccessibilityEventCompatUtils.TYPE_VIEW_HOVER_ENTER);
+
+ event.setPackageName(PACKAGE);
+ event.setClassName(CLASS);
+ event.setEventTime(SystemClock.uptimeMillis());
+ event.setEnabled(true);
+ event.getText().add(text);
+
+ mAccessibilityManager.sendAccessibilityEvent(event);
+ }
+}
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleInputMethodServiceProxy.java b/java/src/com/android/inputmethod/accessibility/AccessibleInputMethodServiceProxy.java
new file mode 100644
index 000000000..043266c70
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/AccessibleInputMethodServiceProxy.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.accessibility;
+
+import android.content.SharedPreferences;
+import android.inputmethodservice.InputMethodService;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.text.TextUtils;
+import android.view.inputmethod.ExtractedText;
+import android.view.inputmethod.ExtractedTextRequest;
+
+import com.android.inputmethod.latin.R;
+
+public class AccessibleInputMethodServiceProxy implements AccessibleKeyboardActionListener {
+ private static final AccessibleInputMethodServiceProxy sInstance =
+ new AccessibleInputMethodServiceProxy();
+
+ /*
+ * Delay for the handler event that's fired when Accessibility is on and the
+ * user hovers outside of any valid keys. This is used to let the user know
+ * that if they lift their finger, nothing will be typed.
+ */
+ private static final long DELAY_NO_HOVER_SELECTION = 250;
+
+ private InputMethodService mInputMethod;
+
+ private AccessibilityHandler mAccessibilityHandler;
+
+ private class AccessibilityHandler extends Handler {
+ private static final int MSG_NO_HOVER_SELECTION = 0;
+
+ public AccessibilityHandler(Looper looper) {
+ super(looper);
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_NO_HOVER_SELECTION:
+ notifyNoHoverSelection();
+ break;
+ }
+ }
+
+ public void postNoHoverSelection() {
+ removeMessages(MSG_NO_HOVER_SELECTION);
+ sendEmptyMessageDelayed(MSG_NO_HOVER_SELECTION, DELAY_NO_HOVER_SELECTION);
+ }
+
+ public void cancelNoHoverSelection() {
+ removeMessages(MSG_NO_HOVER_SELECTION);
+ }
+ }
+
+ public static void init(InputMethodService inputMethod, SharedPreferences prefs) {
+ sInstance.initInternal(inputMethod, prefs);
+ }
+
+ public static AccessibleInputMethodServiceProxy getInstance() {
+ return sInstance;
+ }
+
+ private AccessibleInputMethodServiceProxy() {
+ // Not publicly instantiable.
+ }
+
+ private void initInternal(InputMethodService inputMethod, SharedPreferences prefs) {
+ mInputMethod = inputMethod;
+ mAccessibilityHandler = new AccessibilityHandler(inputMethod.getMainLooper());
+ }
+
+ /**
+ * If touch exploration is enabled, cancels the event sent by
+ * {@link AccessibleInputMethodServiceProxy#onHoverExit(int)} because the
+ * user is currently hovering above a key.
+ */
+ @Override
+ public void onHoverEnter(int primaryCode) {
+ mAccessibilityHandler.cancelNoHoverSelection();
+ }
+
+ /**
+ * If touch exploration is enabled, sends a delayed event to notify the user
+ * that they are not currently hovering above a key.
+ */
+ @Override
+ public void onHoverExit(int primaryCode) {
+ mAccessibilityHandler.postNoHoverSelection();
+ }
+
+ /**
+ * When Accessibility is turned on, notifies the user that they are not
+ * currently hovering above a key. By default this will speak the currently
+ * entered text.
+ */
+ private void notifyNoHoverSelection() {
+ final ExtractedText extracted = mInputMethod.getCurrentInputConnection().getExtractedText(
+ new ExtractedTextRequest(), 0);
+
+ if (extracted == null)
+ return;
+
+ final CharSequence text;
+
+ if (TextUtils.isEmpty(extracted.text)) {
+ text = mInputMethod.getString(R.string.spoken_no_text_entered);
+ } else {
+ text = mInputMethod.getString(R.string.spoken_current_text_is, extracted.text);
+ }
+
+ AccessibilityUtils.getInstance().speak(text);
+ }
+}
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardActionListener.java b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardActionListener.java
new file mode 100644
index 000000000..12c59d0fc
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardActionListener.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.accessibility;
+
+public interface AccessibleKeyboardActionListener {
+ /**
+ * Called when the user hovers inside a key. This is sent only when
+ * Accessibility is turned on. For keys that repeat, this is only called
+ * once.
+ *
+ * @param primaryCode the code of the key that was hovered over
+ */
+ public void onHoverEnter(int primaryCode);
+
+ /**
+ * Called when the user hovers outside a key. This is sent only when
+ * Accessibility is turned on. For keys that repeat, this is only called
+ * once.
+ *
+ * @param primaryCode the code of the key that was hovered over
+ */
+ public void onHoverExit(int primaryCode);
+}
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
new file mode 100644
index 000000000..1adef9057
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.accessibility;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.ViewConfiguration;
+import android.view.accessibility.AccessibilityEvent;
+
+import com.android.inputmethod.compat.AccessibilityEventCompatUtils;
+import com.android.inputmethod.compat.MotionEventCompatUtils;
+import com.android.inputmethod.keyboard.KeyDetector;
+import com.android.inputmethod.keyboard.KeyboardView;
+import com.android.inputmethod.keyboard.PointerTracker;
+import com.android.inputmethod.keyboard.internal.Key;
+
+public class AccessibleKeyboardViewProxy {
+ private static final String TAG = AccessibleKeyboardViewProxy.class.getSimpleName();
+ private static final AccessibleKeyboardViewProxy sInstance = new AccessibleKeyboardViewProxy();
+
+ // Delay in milliseconds between key press DOWN and UP events
+ private static final long DELAY_KEY_PRESS = 10;
+
+ private int mScaledEdgeSlop;
+ private KeyboardView mView;
+ private AccessibleKeyboardActionListener mListener;
+
+ private int mLastHoverKeyIndex = KeyDetector.NOT_A_KEY;
+ private int mLastX = -1;
+ private int mLastY = -1;
+
+ public static void init(Context context, SharedPreferences prefs) {
+ sInstance.initInternal(context, prefs);
+ sInstance.mListener = AccessibleInputMethodServiceProxy.getInstance();
+ }
+
+ public static AccessibleKeyboardViewProxy getInstance() {
+ return sInstance;
+ }
+
+ public static void setView(KeyboardView view) {
+ sInstance.mView = view;
+ }
+
+ private AccessibleKeyboardViewProxy() {
+ // Not publicly instantiable.
+ }
+
+ private void initInternal(Context context, SharedPreferences prefs) {
+ final Paint paint = new Paint();
+ paint.setTextAlign(Paint.Align.LEFT);
+ paint.setTextSize(14.0f);
+ paint.setAntiAlias(true);
+ paint.setColor(Color.YELLOW);
+
+ mScaledEdgeSlop = ViewConfiguration.get(context).getScaledEdgeSlop();
+ }
+
+ public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event,
+ PointerTracker tracker) {
+ if (mView == null) {
+ Log.e(TAG, "No keyboard view set!");
+ return false;
+ }
+
+ switch (event.getEventType()) {
+ case AccessibilityEventCompatUtils.TYPE_VIEW_HOVER_ENTER:
+ final Key key = tracker.getKey(mLastHoverKeyIndex);
+
+ if (key == null)
+ break;
+
+ final CharSequence description = KeyCodeDescriptionMapper.getInstance()
+ .getDescriptionForKey(mView.getContext(), mView.getKeyboard(), key);
+
+ if (description == null)
+ return false;
+
+ event.getText().add(description);
+
+ break;
+ }
+
+ return true;
+ }
+
+ /**
+ * Receives hover events when accessibility is turned on in API > 11. In
+ * earlier API levels, events are manually routed from onTouchEvent.
+ *
+ * @param event The hover event.
+ * @return {@code true} if the event is handled
+ */
+ public boolean onHoverEvent(MotionEvent event, PointerTracker tracker) {
+ return onTouchExplorationEvent(event, tracker);
+ }
+
+ public boolean dispatchTouchEvent(MotionEvent event) {
+ // Since touch exploration translates hover double-tap to a regular
+ // single-tap, we're going to drop non-touch exploration events.
+ if (!AccessibilityUtils.getInstance().isTouchExplorationEvent(event))
+ return true;
+
+ return false;
+ }
+
+ /**
+ * Handles touch exploration events when Accessibility is turned on.
+ *
+ * @param event The touch exploration hover event.
+ * @return {@code true} if the event was handled
+ */
+ private boolean onTouchExplorationEvent(MotionEvent event, PointerTracker tracker) {
+ final int x = (int) event.getX();
+ final int y = (int) event.getY();
+
+ switch (event.getAction()) {
+ case MotionEventCompatUtils.ACTION_HOVER_ENTER:
+ case MotionEventCompatUtils.ACTION_HOVER_MOVE:
+ final int keyIndex = tracker.getKeyIndexOn(x, y);
+
+ if (keyIndex != mLastHoverKeyIndex) {
+ fireKeyHoverEvent(tracker, mLastHoverKeyIndex, false);
+ mLastHoverKeyIndex = keyIndex;
+ mLastX = x;
+ mLastY = y;
+ fireKeyHoverEvent(tracker, mLastHoverKeyIndex, true);
+ }
+
+ return true;
+ case MotionEventCompatUtils.ACTION_HOVER_EXIT:
+ final int width = mView.getWidth();
+ final int height = mView.getHeight();
+
+ if (x < mScaledEdgeSlop || y < mScaledEdgeSlop || x >= (width - mScaledEdgeSlop)
+ || y >= (height - mScaledEdgeSlop)) {
+ fireKeyHoverEvent(tracker, mLastHoverKeyIndex, false);
+ mLastHoverKeyIndex = KeyDetector.NOT_A_KEY;
+ mLastX = -1;
+ mLastY = -1;
+ } else if (mLastHoverKeyIndex != KeyDetector.NOT_A_KEY) {
+ fireKeyPressEvent(tracker, mLastX, mLastY, event.getEventTime());
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ private void fireKeyHoverEvent(PointerTracker tracker, int keyIndex, boolean entering) {
+ if (mListener == null) {
+ Log.e(TAG, "No accessible keyboard action listener set!");
+ return;
+ }
+
+ if (mView == null) {
+ Log.e(TAG, "No keyboard view set!");
+ return;
+ }
+
+ if (keyIndex == KeyDetector.NOT_A_KEY)
+ return;
+
+ final Key key = tracker.getKey(keyIndex);
+
+ if (key == null)
+ return;
+
+ if (entering) {
+ mListener.onHoverEnter(key.mCode);
+ mView.sendAccessibilityEvent(AccessibilityEventCompatUtils.TYPE_VIEW_HOVER_ENTER);
+ } else {
+ mListener.onHoverExit(key.mCode);
+ mView.sendAccessibilityEvent(AccessibilityEventCompatUtils.TYPE_VIEW_HOVER_EXIT);
+ }
+ }
+
+ private void fireKeyPressEvent(PointerTracker tracker, int x, int y, long eventTime) {
+ tracker.onDownEvent(x, y, eventTime, null);
+ tracker.onUpEvent(x, y, eventTime + DELAY_KEY_PRESS, null);
+ }
+}
diff --git a/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java b/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java
new file mode 100644
index 000000000..5e6f10b04
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java
@@ -0,0 +1,226 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.accessibility;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.text.TextUtils;
+
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.internal.Key;
+import com.android.inputmethod.latin.R;
+
+import java.util.HashMap;
+
+public class KeyCodeDescriptionMapper {
+ private static KeyCodeDescriptionMapper sInstance = new KeyCodeDescriptionMapper();
+
+ // Map of key labels to spoken description resource IDs
+ private final HashMap<CharSequence, Integer> mKeyLabelMap;
+
+ // Map of key codes to spoken description resource IDs
+ private final HashMap<Integer, Integer> mKeyCodeMap;
+
+ // Map of shifted key codes to spoken description resource IDs
+ private final HashMap<Integer, Integer> mShiftedKeyCodeMap;
+
+ // Map of shift-locked key codes to spoken description resource IDs
+ private final HashMap<Integer, Integer> mShiftLockedKeyCodeMap;
+
+ public static void init(Context context, SharedPreferences prefs) {
+ sInstance.initInternal(context, prefs);
+ }
+
+ public static KeyCodeDescriptionMapper getInstance() {
+ return sInstance;
+ }
+
+ private KeyCodeDescriptionMapper() {
+ mKeyLabelMap = new HashMap<CharSequence, Integer>();
+ mKeyCodeMap = new HashMap<Integer, Integer>();
+ mShiftedKeyCodeMap = new HashMap<Integer, Integer>();
+ mShiftLockedKeyCodeMap = new HashMap<Integer, Integer>();
+ }
+
+ private void initInternal(Context context, SharedPreferences prefs) {
+ // Manual label substitutions for key labels with no string resource
+ mKeyLabelMap.put(":-)", R.string.spoken_description_smiley);
+
+ // Symbols that most TTS engines can't speak
+ mKeyCodeMap.put((int) '.', R.string.spoken_description_period);
+ mKeyCodeMap.put((int) ',', R.string.spoken_description_comma);
+ mKeyCodeMap.put((int) '(', R.string.spoken_description_left_parenthesis);
+ mKeyCodeMap.put((int) ')', R.string.spoken_description_right_parenthesis);
+ mKeyCodeMap.put((int) ':', R.string.spoken_description_colon);
+ mKeyCodeMap.put((int) ';', R.string.spoken_description_semicolon);
+ mKeyCodeMap.put((int) '!', R.string.spoken_description_exclamation_mark);
+ mKeyCodeMap.put((int) '?', R.string.spoken_description_question_mark);
+ mKeyCodeMap.put((int) '\"', R.string.spoken_description_double_quote);
+ mKeyCodeMap.put((int) '\'', R.string.spoken_description_single_quote);
+ mKeyCodeMap.put((int) '*', R.string.spoken_description_star);
+ mKeyCodeMap.put((int) '#', R.string.spoken_description_pound);
+ mKeyCodeMap.put((int) ' ', R.string.spoken_description_space);
+
+ // Non-ASCII symbols (must use escape codes!)
+ mKeyCodeMap.put((int) '\u2022', R.string.spoken_description_dot);
+ mKeyCodeMap.put((int) '\u221A', R.string.spoken_description_square_root);
+ mKeyCodeMap.put((int) '\u03C0', R.string.spoken_description_pi);
+ mKeyCodeMap.put((int) '\u0394', R.string.spoken_description_delta);
+ mKeyCodeMap.put((int) '\u2122', R.string.spoken_description_trademark);
+ mKeyCodeMap.put((int) '\u2105', R.string.spoken_description_care_of);
+ mKeyCodeMap.put((int) '\u2026', R.string.spoken_description_ellipsis);
+ mKeyCodeMap.put((int) '\u201E', R.string.spoken_description_low_double_quote);
+
+ // Special non-character codes defined in Keyboard
+ mKeyCodeMap.put(Keyboard.CODE_DELETE, R.string.spoken_description_delete);
+ mKeyCodeMap.put(Keyboard.CODE_ENTER, R.string.spoken_description_return);
+ mKeyCodeMap.put(Keyboard.CODE_SETTINGS, R.string.spoken_description_settings);
+ mKeyCodeMap.put(Keyboard.CODE_SHIFT, R.string.spoken_description_shift);
+ mKeyCodeMap.put(Keyboard.CODE_SHORTCUT, R.string.spoken_description_mic);
+ mKeyCodeMap.put(Keyboard.CODE_SWITCH_ALPHA_SYMBOL, R.string.spoken_description_to_symbol);
+ mKeyCodeMap.put(Keyboard.CODE_TAB, R.string.spoken_description_tab);
+
+ // Shifted versions of non-character codes defined in Keyboard
+ mShiftedKeyCodeMap.put(Keyboard.CODE_SHIFT, R.string.spoken_description_shift_shifted);
+
+ // Shift-locked versions of non-character codes defined in Keyboard
+ mShiftLockedKeyCodeMap.put(Keyboard.CODE_SHIFT, R.string.spoken_description_caps_lock);
+ }
+
+ /**
+ * Returns the localized description of the action performed by a specified
+ * key based on the current keyboard state.
+ * <p>
+ * The order of precedence for key descriptions is:
+ * <ol>
+ * <li>Manually-defined based on the key label</li>
+ * <li>Automatic or manually-defined based on the key code</li>
+ * <li>Automatically based on the key label</li>
+ * <li>{code null} for keys with no label or key code defined</li>
+ * </p>
+ *
+ * @param context The package's context.
+ * @param keyboard The keyboard on which the key resides.
+ * @param key The key from which to obtain a description.
+ * @return a character sequence describing the action performed by pressing
+ * the key
+ */
+ public CharSequence getDescriptionForKey(Context context, Keyboard keyboard, Key key) {
+ if (key.mCode == Keyboard.CODE_SWITCH_ALPHA_SYMBOL) {
+ final CharSequence description = getDescriptionForSwitchAlphaSymbol(context, keyboard);
+ if (description != null)
+ return description;
+ }
+
+ if (!TextUtils.isEmpty(key.mLabel)) {
+ final String label = key.mLabel.toString().trim();
+
+ if (mKeyLabelMap.containsKey(label)) {
+ return context.getString(mKeyLabelMap.get(label));
+ } else if (label.length() == 1
+ || (keyboard.isManualTemporaryUpperCase() && !TextUtils
+ .isEmpty(key.mHintLetter))) {
+ return getDescriptionForKeyCode(context, keyboard, key);
+ } else {
+ return label;
+ }
+ } else if (key.mCode != Keyboard.CODE_DUMMY) {
+ return getDescriptionForKeyCode(context, keyboard, key);
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns a context-specific description for the CODE_SWITCH_ALPHA_SYMBOL
+ * key or {@code null} if there is not a description provided for the
+ * current keyboard context.
+ *
+ * @param context The package's context.
+ * @param keyboard The keyboard on which the key resides.
+ * @return a character sequence describing the action performed by pressing
+ * the key
+ */
+ private CharSequence getDescriptionForSwitchAlphaSymbol(Context context, Keyboard keyboard) {
+ final KeyboardId id = keyboard.mId;
+
+ if (id.isAlphabetKeyboard()) {
+ return context.getString(R.string.spoken_description_to_symbol);
+ } else if (id.isSymbolsKeyboard()) {
+ return context.getString(R.string.spoken_description_to_alpha);
+ } else if (id.isPhoneSymbolsKeyboard()) {
+ return context.getString(R.string.spoken_description_to_numeric);
+ } else if (id.isPhoneKeyboard()) {
+ return context.getString(R.string.spoken_description_to_symbol);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Returns the keycode for the specified key given the current keyboard
+ * state.
+ *
+ * @param keyboard The keyboard on which the key resides.
+ * @param key The key from which to obtain a key code.
+ * @return the key code for the specified key
+ */
+ private int getCorrectKeyCode(Keyboard keyboard, Key key) {
+ if (keyboard.isManualTemporaryUpperCase() && !TextUtils.isEmpty(key.mHintLetter)) {
+ return key.mHintLetter.charAt(0);
+ } else {
+ return key.mCode;
+ }
+ }
+
+ /**
+ * Returns a localized character sequence describing what will happen when
+ * the specified key is pressed based on its key code.
+ * <p>
+ * The order of precedence for key code descriptions is:
+ * <ol>
+ * <li>Manually-defined shift-locked description</li>
+ * <li>Manually-defined shifted description</li>
+ * <li>Manually-defined normal description</li>
+ * <li>Automatic based on the character represented by the key code</li>
+ * <li>Fall-back for undefined or control characters</li>
+ * </ol>
+ * </p>
+ *
+ * @param context The package's context.
+ * @param keyboard The keyboard on which the key resides.
+ * @param key The key from which to obtain a description.
+ * @return a character sequence describing the action performed by pressing
+ * the key
+ */
+ private CharSequence getDescriptionForKeyCode(Context context, Keyboard keyboard, Key key) {
+ final int code = getCorrectKeyCode(keyboard, key);
+
+ if (keyboard.isShiftLocked() && mShiftLockedKeyCodeMap.containsKey(code)) {
+ return context.getString(mShiftLockedKeyCodeMap.get(code));
+ } else if (keyboard.isShiftedOrShiftLocked() && mShiftedKeyCodeMap.containsKey(code)) {
+ return context.getString(mShiftedKeyCodeMap.get(code));
+ } else if (mKeyCodeMap.containsKey(code)) {
+ return context.getString(mKeyCodeMap.get(code));
+ } else if (Character.isDefined(code) && !Character.isISOControl(code)) {
+ return Character.toString((char) code);
+ } else {
+ return context.getString(R.string.spoken_description_unknown, code);
+ }
+ }
+}
diff --git a/java/src/com/android/inputmethod/compat/AccessibilityEventCompatUtils.java b/java/src/com/android/inputmethod/compat/AccessibilityEventCompatUtils.java
new file mode 100644
index 000000000..50057727a
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/AccessibilityEventCompatUtils.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import android.view.accessibility.AccessibilityEvent;
+
+import java.lang.reflect.Field;
+
+public class AccessibilityEventCompatUtils {
+ public static final int TYPE_VIEW_HOVER_ENTER = 0x80;
+ public static final int TYPE_VIEW_HOVER_EXIT = 0x100;
+
+ private static final Field FIELD_TYPE_VIEW_HOVER_ENTER = CompatUtils.getField(
+ AccessibilityEvent.class, "TYPE_VIEW_HOVER_ENTER");
+ private static final Field FIELD_TYPE_VIEW_HOVER_EXIT = CompatUtils.getField(
+ AccessibilityEvent.class, "TYPE_VIEW_HOVER_EXIT");
+ private static final Integer OBJ_TYPE_VIEW_HOVER_ENTER = (Integer) CompatUtils
+ .getFieldValue(null, null, FIELD_TYPE_VIEW_HOVER_ENTER);
+ private static final Integer OBJ_TYPE_VIEW_HOVER_EXIT = (Integer) CompatUtils
+ .getFieldValue(null, null, FIELD_TYPE_VIEW_HOVER_EXIT);
+
+ public static boolean supportsTouchExploration() {
+ return OBJ_TYPE_VIEW_HOVER_ENTER != null && OBJ_TYPE_VIEW_HOVER_EXIT != null;
+ }
+}
diff --git a/java/src/com/android/inputmethod/compat/AccessibilityManagerCompatWrapper.java b/java/src/com/android/inputmethod/compat/AccessibilityManagerCompatWrapper.java
new file mode 100644
index 000000000..4db1c7a24
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/AccessibilityManagerCompatWrapper.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import android.accessibilityservice.AccessibilityServiceInfo;
+import android.view.accessibility.AccessibilityManager;
+
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.List;
+
+public class AccessibilityManagerCompatWrapper {
+ private static final Method METHOD_getEnabledAccessibilityServiceList = CompatUtils.getMethod(
+ AccessibilityManager.class, "getEnabledAccessibilityServiceList", int.class);
+
+ private final AccessibilityManager mManager;
+
+ public AccessibilityManagerCompatWrapper(AccessibilityManager manager) {
+ mManager = manager;
+ }
+
+ @SuppressWarnings("unchecked")
+ public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int feedbackType) {
+ return (List<AccessibilityServiceInfo>) CompatUtils.invoke(mManager,
+ Collections.<AccessibilityServiceInfo>emptyList(),
+ METHOD_getEnabledAccessibilityServiceList, feedbackType);
+ }
+}
diff --git a/java/src/com/android/inputmethod/compat/MotionEventCompatUtils.java b/java/src/com/android/inputmethod/compat/MotionEventCompatUtils.java
new file mode 100644
index 000000000..8518a4a78
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/MotionEventCompatUtils.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+public class MotionEventCompatUtils {
+ public static final int ACTION_HOVER_MOVE = 0x7;
+ public static final int ACTION_HOVER_ENTER = 0x9;
+ public static final int ACTION_HOVER_EXIT = 0xA;
+}
diff --git a/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java b/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java
index 2dba01432..b718ebbb7 100644
--- a/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java
+++ b/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java
@@ -129,7 +129,7 @@ public class VoiceInput implements OnClickListener {
private int mAfterVoiceInputSelectionSpan = 0;
private int mState = DEFAULT;
-
+
private final static int MSG_RESET = 1;
private final Handler mHandler = new Handler() {
@@ -192,7 +192,7 @@ public class VoiceInput implements OnClickListener {
}
mBlacklist = new Whitelist();
- mBlacklist.addApp("com.android.setupwizard");
+ mBlacklist.addApp("com.google.android.setupwizard");
}
public void setCursorPos(int pos) {
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index d97bb6730..b91134dd6 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -42,7 +42,6 @@ public class KeyboardId {
public final int mWidth;
public final int mMode;
public final int mXmlId;
- public final int mColorScheme;
public final boolean mNavigateAction;
public final boolean mPasswordInput;
public final boolean mHasSettingsKey;
@@ -56,9 +55,9 @@ public class KeyboardId {
private final int mHashCode;
- public KeyboardId(String xmlName, int xmlId, int colorScheme, Locale locale, int orientation,
- int width, int mode, EditorInfo attribute, boolean hasSettingsKey,
- boolean voiceKeyEnabled, boolean hasVoiceKey, boolean enableShiftLock) {
+ public KeyboardId(String xmlName, int xmlId, Locale locale, int orientation, int width,
+ int mode, EditorInfo attribute, boolean hasSettingsKey, boolean voiceKeyEnabled,
+ boolean hasVoiceKey, boolean enableShiftLock) {
final int inputType = (attribute != null) ? attribute.inputType : 0;
final int imeOptions = (attribute != null) ? attribute.imeOptions : 0;
this.mLocale = locale;
@@ -66,7 +65,6 @@ public class KeyboardId {
this.mWidth = width;
this.mMode = mode;
this.mXmlId = xmlId;
- this.mColorScheme = colorScheme;
// Note: Turn off checking navigation flag to show TAB key for now.
this.mNavigateAction = InputTypeCompatUtils.isWebInputType(inputType);
// || EditorInfoCompatUtils.hasFlagNavigateNext(imeOptions)
@@ -91,7 +89,6 @@ public class KeyboardId {
width,
mode,
xmlId,
- colorScheme,
mNavigateAction,
mPasswordInput,
hasSettingsKey,
@@ -103,15 +100,15 @@ public class KeyboardId {
}
public KeyboardId cloneWithNewLayout(String xmlName, int xmlId) {
- return new KeyboardId(xmlName, xmlId, mColorScheme, mLocale, mOrientation, mWidth, mMode,
- mAttribute, mHasSettingsKey, mVoiceKeyEnabled, mHasVoiceKey, mEnableShiftLock);
+ return new KeyboardId(xmlName, xmlId, mLocale, mOrientation, mWidth, mMode, mAttribute,
+ mHasSettingsKey, mVoiceKeyEnabled, mHasVoiceKey, mEnableShiftLock);
}
public KeyboardId cloneWithNewGeometry(int width) {
if (mWidth == width)
return this;
- return new KeyboardId(mXmlName, mXmlId, mColorScheme, mLocale, mOrientation, width, mMode,
- mAttribute, mHasSettingsKey, mVoiceKeyEnabled, mHasVoiceKey, mEnableShiftLock);
+ return new KeyboardId(mXmlName, mXmlId, mLocale, mOrientation, width, mMode, mAttribute,
+ mHasSettingsKey, mVoiceKeyEnabled, mHasVoiceKey, mEnableShiftLock);
}
public int getXmlId() {
@@ -123,13 +120,17 @@ public class KeyboardId {
}
public boolean isSymbolsKeyboard() {
- return mXmlId == R.xml.kbd_symbols;
+ return mXmlId == R.xml.kbd_symbols || mXmlId == R.xml.kbd_symbols_shift;
}
public boolean isPhoneKeyboard() {
return mMode == MODE_PHONE;
}
+ public boolean isPhoneSymbolsKeyboard() {
+ return mXmlId == R.xml.kbd_phone_symbols;
+ }
+
public boolean isNumberKeyboard() {
return mMode == MODE_NUMBER;
}
@@ -145,7 +146,6 @@ public class KeyboardId {
&& other.mWidth == this.mWidth
&& other.mMode == this.mMode
&& other.mXmlId == this.mXmlId
- && other.mColorScheme == this.mColorScheme
&& other.mNavigateAction == this.mNavigateAction
&& other.mPasswordInput == this.mPasswordInput
&& other.mHasSettingsKey == this.mHasSettingsKey
@@ -162,13 +162,12 @@ public class KeyboardId {
@Override
public String toString() {
- return String.format("[%s.xml %s %s%d %s %s %s%s%s%s%s%s%s]",
+ return String.format("[%s.xml %s %s%d %s %s %s%s%s%s%s%s]",
mXmlName,
mLocale,
(mOrientation == 1 ? "port" : "land"), mWidth,
modeName(mMode),
EditorInfoCompatUtils.imeOptionsName(mImeAction),
- colorSchemeName(mColorScheme),
(mNavigateAction ? " navigateAction" : ""),
(mPasswordInput ? " passwordInput" : ""),
(mHasSettingsKey ? " hasSettingsKey" : ""),
@@ -189,12 +188,4 @@ public class KeyboardId {
}
return null;
}
-
- public static String colorSchemeName(int colorScheme) {
- switch (colorScheme) {
- case KeyboardView.COLOR_SCHEME_WHITE: return "white";
- case KeyboardView.COLOR_SCHEME_BLACK: return "black";
- }
- return null;
- }
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 157337cca..1ad5b08eb 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -26,6 +26,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.EditorInfo;
+import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
import com.android.inputmethod.keyboard.internal.Key;
import com.android.inputmethod.keyboard.internal.ModifierKeyState;
@@ -53,7 +54,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
R.style.KeyboardTheme_Stone,
R.style.KeyboardTheme_Stone_Bold,
R.style.KeyboardTheme_Gingerbread,
- R.style.KeyboardTheme_Honeycomb,
+ R.style.KeyboardTheme_IceCreamSandwich,
};
private SubtypeSwitcher mSubtypeSwitcher;
@@ -258,7 +259,6 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
private KeyboardId getKeyboardId(EditorInfo attribute, boolean isSymbols) {
final int mode = Utils.getKeyboardMode(attribute);
final boolean hasVoiceKey = hasVoiceKey(isSymbols);
- final int charColorId = getColorScheme();
final int xmlId;
final boolean enableShiftLock;
@@ -291,9 +291,8 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
mKeyboardWidth = res.getDisplayMetrics().widthPixels;
final Locale locale = mSubtypeSwitcher.getInputLocale();
return new KeyboardId(
- res.getResourceEntryName(xmlId), xmlId, charColorId, locale, orientation,
- mKeyboardWidth, mode, attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey,
- enableShiftLock);
+ res.getResourceEntryName(xmlId), xmlId, locale, orientation, mKeyboardWidth,
+ mode, attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, enableShiftLock);
}
private KeyboardId makeSiblingKeyboardId(KeyboardId base, int alphabet, int phone) {
@@ -761,6 +760,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
mKeyboardView = (LatinKeyboardView) mCurrentInputView.findViewById(R.id.keyboard_view);
mKeyboardView.setOnKeyboardActionListener(mInputMethodService);
+
+ // This always needs to be set since the accessibility state can
+ // potentially change without the input view being re-created.
+ AccessibleKeyboardViewProxy.setView(mKeyboardView);
+
return mCurrentInputView;
}
@@ -788,11 +792,6 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
}
}
- private int getColorScheme() {
- return (mKeyboardView != null)
- ? mKeyboardView.getColorScheme() : KeyboardView.COLOR_SCHEME_WHITE;
- }
-
public void onAutoCorrectionStateChanged(boolean isAutoCorrection) {
if (mIsAutoCorrectionActive != isAutoCorrection) {
mIsAutoCorrectionActive = isAutoCorrection;
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index c372281c2..a6aef27e0 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -42,9 +42,12 @@ import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewGroup.MarginLayoutParams;
+import android.view.accessibility.AccessibilityEvent;
import android.widget.PopupWindow;
import android.widget.TextView;
+import com.android.inputmethod.accessibility.AccessibilityUtils;
+import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
import com.android.inputmethod.compat.FrameLayoutCompatUtils;
import com.android.inputmethod.keyboard.internal.Key;
import com.android.inputmethod.keyboard.internal.MiniKeyboardBuilder;
@@ -62,7 +65,6 @@ import java.util.WeakHashMap;
* presses and touch movements.
*
* @attr ref R.styleable#KeyboardView_backgroundDimAmount
- * @attr ref R.styleable#KeyboardView_colorScheme
* @attr ref R.styleable#KeyboardView_keyBackground
* @attr ref R.styleable#KeyboardView_keyHysteresisDistance
* @attr ref R.styleable#KeyboardView_keyLetterRatio
@@ -91,9 +93,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
private static final boolean ENABLE_CAPSLOCK_BY_LONGPRESS = true;
private static final boolean ENABLE_CAPSLOCK_BY_DOUBLETAP = true;
- public static final int COLOR_SCHEME_WHITE = 0;
- public static final int COLOR_SCHEME_BLACK = 1;
-
// Timing constants
private final int mKeyRepeatInterval;
@@ -109,7 +108,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
private final float mKeyLabelRatio;
private final float mKeyHintLetterRatio;
private final float mKeyUppercaseLetterRatio;
- private final int mColorScheme;
private final int mShadowColor;
private final float mShadowRadius;
private final Drawable mKeyBackground;
@@ -356,7 +354,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
mShadowRadius = a.getFloat(R.styleable.KeyboardView_shadowRadius, 0f);
// TODO: Use Theme (android.R.styleable.Theme_backgroundDimAmount)
mBackgroundDimAmount = a.getFloat(R.styleable.KeyboardView_backgroundDimAmount, 0.5f);
- mColorScheme = a.getInt(R.styleable.KeyboardView_colorScheme, COLOR_SCHEME_WHITE);
a.recycle();
final Resources res = getResources();
@@ -565,10 +562,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
return mShowKeyPreviewPopup;
}
- public int getColorScheme() {
- return mColorScheme;
- }
-
/**
* When enabled, calls to {@link KeyboardActionListener#onCodeInput} will include key
* codes for adjacent keys. When disabled, only the primary key code will be
@@ -835,16 +828,18 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
// For characters, use large font. For labels like "Done", use small font.
final int labelSize;
final Typeface labelStyle;
+ if ((keyLabelOption & Key.LABEL_OPTION_FONT_NORMAL) != 0) {
+ labelStyle = Typeface.DEFAULT;
+ } else if ((keyLabelOption & Key.LABEL_OPTION_FONT_FIXED_WIDTH) != 0) {
+ labelStyle = Typeface.MONOSPACE;
+ } else {
+ labelStyle = mKeyTextStyle;
+ }
if (label.length() > 1) {
- labelSize = mKeyLabelSize;
- if ((keyLabelOption & Key.LABEL_OPTION_FONT_NORMAL) != 0) {
- labelStyle = Typeface.DEFAULT;
- } else {
- labelStyle = Typeface.DEFAULT_BOLD;
- }
+ labelSize = (keyLabelOption & Key.LABEL_OPTION_FOLLOW_KEY_LETTER_RATIO) != 0
+ ? mKeyLetterSize : mKeyLabelSize;
} else {
labelSize = mKeyLetterSize;
- labelStyle = mKeyTextStyle;
}
paint.setTextSize(labelSize);
paint.setTypeface(labelStyle);
@@ -978,7 +973,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
if (key.mLabel != null) {
// TODO Should take care of temporaryShiftLabel here.
previewText.setCompoundDrawables(null, null, null, null);
- previewText.setText(adjustCase(tracker.getPreviewText(key)));
if (key.mLabel.length() > 1) {
previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mKeyLetterSize);
previewText.setTypeface(Typeface.DEFAULT_BOLD);
@@ -986,6 +980,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSize);
previewText.setTypeface(mKeyTextStyle);
}
+ previewText.setText(adjustCase(tracker.getPreviewText(key)));
} else {
final Drawable previewIcon = key.getPreviewIcon();
previewText.setCompoundDrawables(null, null, null,
@@ -1127,7 +1122,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
miniKeyboardView.setKeyboard(keyboard);
container.measure(MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST),
- MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.AT_MOST));
+ MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
return miniKeyboardView;
}
@@ -1335,4 +1330,37 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
public boolean handleBack() {
return dismissMiniKeyboard();
}
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent event) {
+ if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
+ return AccessibleKeyboardViewProxy.getInstance().dispatchTouchEvent(event)
+ || super.dispatchTouchEvent(event);
+ }
+
+ return super.dispatchTouchEvent(event);
+ }
+
+ @Override
+ public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
+ if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
+ final PointerTracker tracker = getPointerTracker(0);
+ return AccessibleKeyboardViewProxy.getInstance().dispatchPopulateAccessibilityEvent(
+ event, tracker) || super.dispatchPopulateAccessibilityEvent(event);
+ }
+
+ return super.dispatchPopulateAccessibilityEvent(event);
+ }
+
+ public boolean onHoverEvent(MotionEvent event) {
+ // Since reflection doesn't support calling superclass methods, this
+ // method checks for the existence of onHoverEvent() in the View class
+ // before returning a value.
+ if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
+ final PointerTracker tracker = getPointerTracker(0);
+ return AccessibleKeyboardViewProxy.getInstance().onHoverEvent(event, tracker);
+ }
+
+ return false;
+ }
}
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index e741625ca..0329ee2b3 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -60,6 +60,7 @@ public class LatinKeyboard extends Keyboard {
private final Drawable mSpaceIcon;
private final Drawable mSpacePreviewIcon;
private final int mSpaceKeyIndex;
+ private final boolean mAutoCorrectionSpacebarLedEnabled;
private final Drawable mAutoCorrectionSpacebarLedIcon;
private final Drawable mSpacebarArrowLeftIcon;
private final Drawable mSpacebarArrowRightIcon;
@@ -123,6 +124,8 @@ public class LatinKeyboard extends Keyboard {
final TypedArray a = context.obtainStyledAttributes(
null, R.styleable.LatinKeyboard, R.attr.latinKeyboardStyle, R.style.LatinKeyboard);
+ mAutoCorrectionSpacebarLedEnabled = a.getBoolean(
+ R.styleable.LatinKeyboard_autoCorrectionSpacebarLedEnabled, false);
mAutoCorrectionSpacebarLedIcon = a.getDrawable(
R.styleable.LatinKeyboard_autoCorrectionSpacebarLedIcon);
mDisabledShortcutIcon = a.getDrawable(R.styleable.LatinKeyboard_disabledShortcutIcon);
@@ -179,7 +182,7 @@ public class LatinKeyboard extends Keyboard {
}
public boolean needsAutoCorrectionSpacebarLed() {
- return mAutoCorrectionSpacebarLedIcon != null;
+ return mAutoCorrectionSpacebarLedEnabled;
}
/**
@@ -212,7 +215,7 @@ public class LatinKeyboard extends Keyboard {
}
// Layout local language name and left and right arrow on spacebar.
- private static String layoutSpacebar(Paint paint, Locale locale, Drawable lArrow,
+ private static String layoutSpacebar(Paint paint, Locale locale, Drawable icon, Drawable lArrow,
Drawable rArrow, int width, int height, float origTextSize) {
final float arrowWidth = lArrow.getIntrinsicWidth();
final float arrowHeight = lArrow.getIntrinsicHeight();
@@ -249,7 +252,9 @@ public class LatinKeyboard extends Keyboard {
paint.setTextSize(textSize);
// Place left and right arrow just before and after language text.
- final float baseline = height * SPACEBAR_LANGUAGE_BASELINE;
+ final float textHeight = -paint.ascent() + paint.descent();
+ final float baseline = (icon != null) ? height * SPACEBAR_LANGUAGE_BASELINE
+ : height / 2 + textHeight / 2;
final int top = (int)(baseline - arrowHeight);
final float remains = (width - textWidth) / 2;
lArrow.setBounds((int)(remains - arrowWidth), top, (int)remains, (int)baseline);
@@ -300,7 +305,7 @@ public class LatinKeyboard extends Keyboard {
defaultTextSize = 14;
}
- final String language = layoutSpacebar(paint, inputLocale,
+ final String language = layoutSpacebar(paint, inputLocale, mSpaceIcon,
mSpacebarArrowLeftIcon, mSpacebarArrowRightIcon, width, height,
getTextSizeFromTheme(mTheme, textStyle, defaultTextSize));
diff --git a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
index 2085404dc..6180f09c1 100644
--- a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
@@ -78,15 +78,12 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel {
final int pointY = parentKey.mY;
final int miniKeyboardLeft = pointX - miniKeyboard.getDefaultCoordX()
+ parentKeyboardView.getPaddingLeft();
- final int miniKeyboardX = Math.max(0, Math.min(miniKeyboardLeft,
+ final int x = Math.max(0, Math.min(miniKeyboardLeft,
parentKeyboardView.getWidth() - miniKeyboard.getMinWidth()))
- container.getPaddingLeft() + mCoordinates[0];
- final int miniKeyboardY = pointY - parentKeyboard.getVerticalGap()
+ final int y = pointY - parentKeyboard.getVerticalGap()
- (container.getMeasuredHeight() - container.getPaddingBottom())
+ parentKeyboardView.getPaddingTop() + mCoordinates[1];
- final int x = miniKeyboardX;
- final int y = parentKeyboardView.isKeyPreviewPopupEnabled() &&
- miniKeyboard.isOneRowKeyboard() && keyPreviewY >= 0 ? keyPreviewY : miniKeyboardY;
if (miniKeyboard.setShifted(parentKeyboard.isShiftedOrShiftLocked())) {
invalidateAllKeys();
diff --git a/java/src/com/android/inputmethod/keyboard/PopupPanel.java b/java/src/com/android/inputmethod/keyboard/PopupPanel.java
index 72fa7406a..48454679e 100644
--- a/java/src/com/android/inputmethod/keyboard/PopupPanel.java
+++ b/java/src/com/android/inputmethod/keyboard/PopupPanel.java
@@ -30,6 +30,7 @@ public interface PopupPanel {
* @param keyPreviewY the Y-coordinate of key preview
* @param window PopupWindow to be used to show this popup panel
*/
+ // TODO: Remove keyPreviewY from argument.
public void showPanel(KeyboardView parentKeyboardView, Key parentKey,
PointerTracker tracker, int keyPreviewY, PopupWindow window);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/Key.java b/java/src/com/android/inputmethod/keyboard/internal/Key.java
index 5470067dc..ebd80be5e 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/Key.java
@@ -49,8 +49,10 @@ public class Key {
public static final int LABEL_OPTION_ALIGN_RIGHT = 0x02;
public static final int LABEL_OPTION_ALIGN_BOTTOM = 0x08;
public static final int LABEL_OPTION_FONT_NORMAL = 0x10;
- private static final int LABEL_OPTION_POPUP_HINT = 0x20;
- private static final int LABEL_OPTION_HAS_UPPERCASE_LETTER = 0x40;
+ public static final int LABEL_OPTION_FONT_FIXED_WIDTH = 0x20;
+ public static final int LABEL_OPTION_FOLLOW_KEY_LETTER_RATIO = 0x40;
+ private static final int LABEL_OPTION_POPUP_HINT = 0x80;
+ private static final int LABEL_OPTION_HAS_UPPERCASE_LETTER = 0x100;
/** Icon to display instead of a label. Icon takes precedence over a label */
private Drawable mIcon;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
index 7be738ceb..37b36825a 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
@@ -16,13 +16,17 @@
package com.android.inputmethod.keyboard.internal;
+import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
+import android.util.Log;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.R;
public class KeyboardIconsSet {
+ private static final String TAG = KeyboardIconsSet.class.getSimpleName();
+
public static final int ICON_UNDEFINED = 0;
// This should be aligned with Keyboard.keyIcon enum.
@@ -46,18 +50,15 @@ public class KeyboardIconsSet {
private static final int ICON_NUM8_KEY = 18;
private static final int ICON_NUM9_KEY = 19;
private static final int ICON_NUM0_KEY = 20;
- private static final int ICON_NUM_STAR_KEY = 21;
- private static final int ICON_NUM_POUND_KEY = 22;
- private static final int ICON_NUM_ALT_KEY = 23;
// This should be aligned with Keyboard.keyIconShifted enum.
- private static final int ICON_SHIFTED_SHIFT_KEY = 24;
+ private static final int ICON_SHIFTED_SHIFT_KEY = 21;
// This should be aligned with Keyboard.keyIconPreview enum.
- private static final int ICON_PREVIEW_SPACE_KEY = 25;
- private static final int ICON_PREVIEW_TAB_KEY = 26;
- private static final int ICON_PREVIEW_SETTINGS_KEY = 27;
- private static final int ICON_PREVIEW_SHORTCUT_KEY = 28;
+ private static final int ICON_PREVIEW_SPACE_KEY = 22;
+ private static final int ICON_PREVIEW_TAB_KEY = 23;
+ private static final int ICON_PREVIEW_SETTINGS_KEY = 24;
+ private static final int ICON_PREVIEW_SHORTCUT_KEY = 25;
- private static final int ICON_LAST = 28;
+ private static final int ICON_LAST = 25;
private final Drawable mIcons[] = new Drawable[ICON_LAST + 1];
@@ -103,12 +104,6 @@ public class KeyboardIconsSet {
return ICON_NUM9_KEY;
case R.styleable.Keyboard_iconNum0Key:
return ICON_NUM0_KEY;
- case R.styleable.Keyboard_iconNumStarKey:
- return ICON_NUM_STAR_KEY;
- case R.styleable.Keyboard_iconNumPoundKey:
- return ICON_NUM_POUND_KEY;
- case R.styleable.Keyboard_iconNumAltKey:
- return ICON_NUM_ALT_KEY;
case R.styleable.Keyboard_iconShiftedShiftKey:
return ICON_SHIFTED_SHIFT_KEY;
case R.styleable.Keyboard_iconPreviewSpaceKey:
@@ -130,9 +125,13 @@ public class KeyboardIconsSet {
final int attrIndex = keyboardAttrs.getIndex(i);
final int iconId = getIconId(attrIndex);
if (iconId != ICON_UNDEFINED) {
- final Drawable icon = keyboardAttrs.getDrawable(attrIndex);
- Keyboard.setDefaultBounds(icon);
- mIcons[iconId] = icon;
+ try {
+ final Drawable icon = keyboardAttrs.getDrawable(attrIndex);
+ Keyboard.setDefaultBounds(icon);
+ mIcons[iconId] = icon;
+ } catch (Resources.NotFoundException e) {
+ Log.w(TAG, "Drawable resource for icon #" + iconId + " not found");
+ }
}
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
index 9525b0e00..d5b364818 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
@@ -90,14 +90,14 @@ import java.util.List;
* You can declare Key style and specify styles within Key tags.
* <pre>
* &gt;switch&lt;
- * &gt;case colorScheme="white"&lt;
- * &gt;key-style styleName="shift-key" parentStyle="modifier-key"
- * keyIcon="@drawable/sym_keyboard_shift"
+ * &gt;case mode="email"&lt;
+ * &gt;key-style styleName="f1-key" parentStyle="modifier-key"
+ * keyLabel=".com"
* /&lt;
* &gt;/case&lt;
- * &gt;case colorScheme="black"&lt;
- * &gt;key-style styleName="shift-key" parentStyle="modifier-key"
- * keyIcon="@drawable/sym_bkeyboard_shift"
+ * &gt;case mode="url"&lt;
+ * &gt;key-style styleName="f1-key" parentStyle="modifier-key"
+ * keyLabel="http://"
* /&lt;
* &gt;/case&lt;
* &gt;/switch&lt;
@@ -126,6 +126,8 @@ public class KeyboardParser {
private final Context mContext;
private final Resources mResources;
+ private int mKeyboardTopPadding;
+ private int mKeyboardBottomPadding;
private int mHorizontalEdgesPadding;
private int mCurrentX = 0;
private int mCurrentY = 0;
@@ -234,6 +236,10 @@ public class KeyboardParser {
R.styleable.Keyboard_Key_maxPopupKeyboardColumn, 5));
mKeyboard.mIconsSet.loadIcons(keyboardAttr);
+ mKeyboardTopPadding = keyboardAttr.getDimensionPixelSize(
+ R.styleable.Keyboard_keyboardTopPadding, 0);
+ mKeyboardBottomPadding = keyboardAttr.getDimensionPixelSize(
+ R.styleable.Keyboard_keyboardBottomPadding, 0);
} finally {
keyAttr.recycle();
keyboardAttr.recycle();
@@ -487,8 +493,6 @@ public class KeyboardParser {
R.styleable.Keyboard_Case_voiceKeyEnabled, id.mVoiceKeyEnabled);
final boolean voiceKeyMatched = matchBoolean(a,
R.styleable.Keyboard_Case_hasVoiceKey, id.mHasVoiceKey);
- final boolean colorSchemeMatched = matchInteger(viewAttr,
- R.styleable.KeyboardView_colorScheme, id.mColorScheme);
// As noted at {@link KeyboardId} class, we are interested only in enum value masked by
// {@link android.view.inputmethod.EditorInfo#IME_MASK_ACTION} and
// {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}. So matching
@@ -503,14 +507,11 @@ public class KeyboardParser {
R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry());
final boolean selected = modeMatched && navigateActionMatched && passwordInputMatched
&& settingsKeyMatched && voiceEnabledMatched && voiceKeyMatched
- && colorSchemeMatched && imeActionMatched && localeCodeMatched
- && languageCodeMatched && countryCodeMatched;
+ && imeActionMatched && localeCodeMatched && languageCodeMatched
+ && countryCodeMatched;
- if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s%s%s%s%s%s> %s", TAG_CASE,
+ if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s%s%s%s%s> %s", TAG_CASE,
textAttr(a.getString(R.styleable.Keyboard_Case_mode), "mode"),
- textAttr(KeyboardId.colorSchemeName(
- viewAttr.getInt(
- R.styleable.KeyboardView_colorScheme, -1)), "colorScheme"),
booleanAttr(a, R.styleable.Keyboard_Case_navigateAction, "navigateAction"),
booleanAttr(a, R.styleable.Keyboard_Case_passwordInput, "passwordInput"),
booleanAttr(a, R.styleable.Keyboard_Case_hasSettingsKey, "hasSettingsKey"),
@@ -607,7 +608,7 @@ public class KeyboardParser {
}
private void startKeyboard() {
- mCurrentY += (int)mResources.getDimension(R.dimen.keyboard_top_padding);
+ mCurrentY += mKeyboardTopPadding;
}
private void startRow(Row row) {
@@ -631,7 +632,7 @@ public class KeyboardParser {
}
private void endKeyboard(int defaultVerticalGap) {
- mCurrentY += (int)mResources.getDimension(R.dimen.keyboard_bottom_padding);
+ mCurrentY += mKeyboardBottomPadding;
mTotalHeight = mCurrentY - defaultVerticalGap;
}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 1645b1678..9c6465dd2 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -53,6 +53,7 @@ import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.InputConnection;
+import com.android.inputmethod.accessibility.AccessibilityUtils;
import com.android.inputmethod.compat.CompatUtils;
import com.android.inputmethod.compat.EditorInfoCompatUtils;
import com.android.inputmethod.compat.InputConnectionCompatUtils;
@@ -353,6 +354,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
SubtypeSwitcher.init(this, prefs);
KeyboardSwitcher.init(this, prefs);
Recorrection.init(this, prefs);
+ AccessibilityUtils.init(this, prefs);
super.onCreate();
diff --git a/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java b/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
index 28766c21f..bb2a6fe40 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
@@ -16,15 +16,14 @@
package com.android.inputmethod.latin;
-import com.android.inputmethod.keyboard.KeyboardId;
-import com.android.inputmethod.keyboard.KeyboardView;
-
import android.content.res.AssetFileDescriptor;
import android.content.res.Configuration;
import android.test.AndroidTestCase;
import android.text.TextUtils;
import android.view.inputmethod.EditorInfo;
+import com.android.inputmethod.keyboard.KeyboardId;
+
import java.io.File;
import java.io.InputStream;
import java.util.Locale;
@@ -41,8 +40,8 @@ public class SuggestTestsBase extends AndroidTestCase {
protected KeyboardId createKeyboardId(Locale locale) {
final int displayWidth = getContext().getResources().getDisplayMetrics().widthPixels;
return new KeyboardId(locale.toString() + " keyboard",
- com.android.inputmethod.latin.R.xml.kbd_qwerty, KeyboardView.COLOR_SCHEME_WHITE,
- locale, Configuration.ORIENTATION_LANDSCAPE, displayWidth, KeyboardId.MODE_TEXT,
+ com.android.inputmethod.latin.R.xml.kbd_qwerty, locale,
+ Configuration.ORIENTATION_LANDSCAPE, displayWidth, KeyboardId.MODE_TEXT,
new EditorInfo(), false, false, false, false);
}