aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/AndroidManifest.xml6
-rw-r--r--java/proguard.flags4
-rw-r--r--[-rwxr-xr-x]java/res/drawable-hdpi/btn_center_default.9.png (renamed from java/res/drawable-xlarge/btn_center_default.9.png)bin182 -> 182 bytes
-rw-r--r--[-rwxr-xr-x]java/res/drawable-hdpi/btn_center_pressed.9.png (renamed from java/res/drawable-xlarge/btn_center_pressed.9.png)bin200 -> 200 bytes
-rw-r--r--java/res/drawable-hdpi/btn_center_selected.9.png (renamed from java/res/drawable-xlarge/btn_center_selected.9.png)bin200 -> 200 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.pngbin511 -> 472 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.pngbin760 -> 649 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.pngbin1088 -> 944 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.pngbin730 -> 663 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.pngbin940 -> 869 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.pngbin1260 -> 1119 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.pngbin461 -> 448 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.pngbin332 -> 126 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.pngbin498 -> 453 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.pngbin811 -> 649 bytes
-rw-r--r--java/res/drawable-hdpi/cancel.pngbin3992 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/cancel_holo.9.pngbin2110 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/dialog_bubble_step02.9.pngbin1475 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/dialog_bubble_step07.9.pngbin6012 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_at_holo.9.pngbin960 -> 973 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_at_large_holo.9.pngbin1013 -> 1013 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_colon_holo.9.pngbin511 -> 515 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_colon_large_holo.9.pngbin498 -> 503 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_comma_holo.9.pngbin382 -> 371 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_comma_large_holo.9.pngbin392 -> 394 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_dash_holo.9.pngbin315 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_doublecross_holo.9.pngbin634 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_equal_holo.9.pngbin428 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_exclamation_holo.9.pngbin516 -> 518 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.pngbin539 -> 540 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_larger_holo.9.pngbin468 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_minus_holo.9.pngbin360 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_minus_large_holo.9.pngbin376 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num0.9.png (renamed from java/res/drawable-hdpi/keyboard_hint_0.9.png)bin379 -> 379 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num1.9.png (renamed from java/res/drawable-hdpi/keyboard_hint_1.9.png)bin301 -> 301 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num2.9.png (renamed from java/res/drawable-hdpi/keyboard_hint_2.9.png)bin404 -> 404 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num3.9.png (renamed from java/res/drawable-hdpi/keyboard_hint_3.9.png)bin413 -> 413 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num4.9.png (renamed from java/res/drawable-hdpi/keyboard_hint_4.9.png)bin341 -> 341 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num5.9.png (renamed from java/res/drawable-hdpi/keyboard_hint_5.9.png)bin388 -> 388 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num6.9.png (renamed from java/res/drawable-hdpi/keyboard_hint_6.9.png)bin413 -> 413 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num7.9.png (renamed from java/res/drawable-hdpi/keyboard_hint_7.9.png)bin367 -> 367 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num8.9.png (renamed from java/res/drawable-hdpi/keyboard_hint_8.9.png)bin417 -> 417 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num9.9.png (renamed from java/res/drawable-hdpi/keyboard_hint_9.9.png)bin417 -> 417 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_parenclose_holo.9.pngbin469 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_parenopen_holo.9.pngbin526 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_period_holo.9.pngbin283 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_plus_holo.9.pngbin521 -> 501 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_plus_large_holo.9.pngbin544 -> 540 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_question_holo.9.pngbin686 -> 679 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_question_large_holo.9.pngbin718 -> 712 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_quote_holo.9.pngbin417 -> 404 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_quote_large_holo.9.pngbin434 -> 423 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_semicolon_holo.9.pngbin397 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_simplequote_holo.9.pngbin339 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_slash_holo.9.pngbin477 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_slash_large_holo.9.pngbin930 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_smaller_holo.9.pngbin464 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_star_holo.9.pngbin519 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_underline_holo.9.pngbin335 -> 337 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_underline_large_holo.9.pngbin354 -> 350 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_underscore_holo.9.pngbin335 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_underscore_large_holo.9.pngbin354 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_hint_at.9.pngbin409 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_hint_colon.9.pngbin238 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_hint_doublecross.9.pngbin359 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_hint_exclamation.9.pngbin277 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_hint_greater.9.pngbin311 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_hint_plus.9.pngbin283 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_hint_question.9.pngbin323 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_hint_quote.9.pngbin267 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_hint_smaller.9.pngbin302 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_hint_star.9.pngbin321 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_background.9.pngbin1099 -> 937 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.pngbin4040 -> 136 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.pngbin1310 -> 1099 bytes
-rw-r--r--java/res/drawable-hdpi/mic_base.png (renamed from java/res/drawable-xlarge/mic_base.png)bin2957 -> 2957 bytes
-rw-r--r--java/res/drawable-hdpi/mic_full.png (renamed from java/res/drawable-xlarge/mic_full.png)bin2935 -> 2935 bytes
-rw-r--r--java/res/drawable-hdpi/mic_slash.pngbin6995 -> 3766 bytes
-rw-r--r--java/res/drawable-hdpi/mic_slash_holo.pngbin8254 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/ok_cancel.pngbin774 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/ok_cancel_holo.9.pngbin755 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level0.pngbin6017 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level0_holo.pngbin3969 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level1.pngbin6267 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level1_holo.pngbin6342 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level2.pngbin6359 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level2_holo.pngbin6545 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level3.pngbin6506 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level3_holo.pngbin6901 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level4.pngbin6542 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level4_holo.pngbin6944 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level5.pngbin6463 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level5_holo.pngbin6895 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level6.pngbin6782 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/speak_now_level6_holo.pngbin7047 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_done.pngbin1588 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_bkeyboard_voice_off.pngbin0 -> 1587 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_done.pngbin1593 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_done.pngbin1068 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.pngbin652 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_mic_disabled.pngbin886 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_smiley_holo.pngbin893 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_tab.pngbin1434 -> 3792 bytes
-rw-r--r--java/res/drawable-hdpi/top_suggest_line_holo.9.pngbin138 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/voice_ime_background.9.pngbin1271 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/voice_swipe_hint.pngbin5965 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/vs_dialog_blue.9.png (renamed from java/res/drawable-xlarge/vs_dialog_blue.9.png)bin8275 -> 8275 bytes
-rw-r--r--java/res/drawable-hdpi/vs_dialog_red.9.png (renamed from java/res/drawable-xlarge/vs_dialog_red.9.png)bin8607 -> 8607 bytes
-rw-r--r--java/res/drawable-hdpi/vs_dialog_yellow.9.png (renamed from java/res/drawable-xlarge/vs_dialog_yellow.9.png)bin8151 -> 8151 bytes
-rw-r--r--java/res/drawable-hdpi/vs_popup_mic_edge.png (renamed from java/res/drawable-xlarge/vs_popup_mic_edge.png)bin3685 -> 3685 bytes
-rwxr-xr-xjava/res/drawable-hdpi/working.pngbin1180 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.pngbin737 -> 737 bytes
-rw-r--r--[-rwxr-xr-x]java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.pngbin941 -> 941 bytes
-rw-r--r--[-rwxr-xr-x]java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.pngbin1076 -> 1076 bytes
-rw-r--r--[-rwxr-xr-x]java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.pngbin733 -> 733 bytes
-rw-r--r--[-rwxr-xr-x]java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.pngbin964 -> 964 bytes
-rw-r--r--[-rwxr-xr-x]java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.pngbin1055 -> 1055 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_at_holo.9.pngbin936 -> 973 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_at_large_holo.9.pngbin1013 -> 1013 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_colon_holo.9.pngbin511 -> 515 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.pngbin498 -> 503 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_comma_holo.9.pngbin382 -> 371 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.pngbin392 -> 394 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_dash_holo.9.pngbin305 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_doublecross_holo.9.pngbin833 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_equal_holo.9.pngbin424 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.pngbin493 -> 518 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.pngbin539 -> 540 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_larger_holo.9.pngbin595 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_minus_holo.9.pngbin360 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_minus_large_holo.9.pngbin376 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_parenclose_holo.9.pngbin651 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_parenopen_holo.9.pngbin655 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_period_holo.9.pngbin345 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_plus_holo.9.pngbin521 -> 501 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.pngbin544 -> 540 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_question_holo.9.pngbin658 -> 679 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_question_large_holo.9.pngbin718 -> 712 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_quote_holo.9.pngbin406 -> 404 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.pngbin434 -> 423 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_semicolon_holo.9.pngbin476 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_simplequote_holo.9.pngbin378 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_slash_holo.9.pngbin592 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_slash_large_holo.9.pngbin1025 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_smaller_holo.9.pngbin551 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_star_holo.9.pngbin666 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_underline_holo.9.pngbin328 -> 337 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.pngbin354 -> 350 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_underscore_holo.9.pngbin335 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_underscore_large_holo.9.pngbin354 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_at_holo.9.pngbin1621 -> 481 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_at_large_holo.9.pngbin1651 -> 497 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_colon_holo.9.pngbin1279 -> 266 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.pngbin1318 -> 285 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_comma_holo.9.pngbin1216 -> 246 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.pngbin1226 -> 248 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_dash_holo.9.pngbin1196 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_doublecross_holo.9.pngbin1621 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_equal_holo.9.pngbin1295 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.pngbin1317 -> 305 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.pngbin1338 -> 312 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_larger_holo.9.pngbin1453 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_parenclose_holo.9.pngbin1427 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_parenopen_holo.9.pngbin1461 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_period_holo.9.pngbin1214 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_plus_holo.9.pngbin1275 -> 277 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.pngbin1328 -> 303 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_question_holo.9.pngbin1433 -> 368 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_question_large_holo.9.pngbin1473 -> 383 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_quote_holo.9.pngbin1238 -> 264 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.pngbin1249 -> 268 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_semicolon_holo.9.pngbin1327 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_simplequote_holo.9.pngbin1242 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_slash_holo.9.pngbin1429 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_slash_large_holo.9.pngbin770 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_smaller_holo.9.pngbin1408 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_star_holo.9.pngbin1480 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_underline_holo.9.pngbin1140 -> 196 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.pngbin1154 -> 199 bytes
-rw-r--r--java/res/drawable-land-xhdpi/hint_popup_holo.9.pngbin0 -> 373 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_at_holo.9.pngbin0 -> 1048 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_at_large_holo.9.pngbin0 -> 1101 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_colon_holo.9.pngbin0 -> 586 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_colon_large_holo.9.pngbin0 -> 573 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_comma_holo.9.pngbin0 -> 411 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_comma_large_holo.9.pngbin0 -> 430 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_exclamation_holo.9.pngbin0 -> 559 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_exclamation_large_holo.9.pngbin0 -> 588 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_plus_holo.9.pngbin0 -> 595 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_plus_large_holo.9.pngbin0 -> 630 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_question_holo.9.pngbin0 -> 739 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_question_large_holo.9.pngbin0 -> 776 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_quote_holo.9.pngbin0 -> 438 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_quote_large_holo.9.pngbin0 -> 459 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_underline_holo.9.pngbin0 -> 368 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_underline_large_holo.9.pngbin0 -> 389 bytes
-rw-r--r--[-rwxr-xr-x]java/res/drawable-mdpi/btn_center_default.9.png (renamed from java/res/drawable/btn_center_default.9.png)bin182 -> 182 bytes
-rw-r--r--[-rwxr-xr-x]java/res/drawable-mdpi/btn_center_pressed.9.png (renamed from java/res/drawable/btn_center_pressed.9.png)bin200 -> 200 bytes
-rw-r--r--java/res/drawable-mdpi/btn_center_selected.9.png (renamed from java/res/drawable/btn_center_selected.9.png)bin200 -> 200 bytes
-rw-r--r--java/res/drawable-mdpi/cancel.pngbin5792 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/cancel_holo.9.pngbin2419 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/dialog_bubble_step02.9.pngbin1036 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/dialog_bubble_step07.9.pngbin4646 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_at_holo.9.pngbin1621 -> 481 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_at_large_holo.9.pngbin1651 -> 497 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_colon_holo.9.pngbin1279 -> 266 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_colon_large_holo.9.pngbin1318 -> 285 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_comma_holo.9.pngbin1216 -> 246 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_comma_large_holo.9.pngbin1226 -> 248 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_dash_holo.9.pngbin1185 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_doublecross_holo.9.pngbin1449 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_equal_holo.9.pngbin1292 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_exclamation_holo.9.pngbin1317 -> 305 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.pngbin1338 -> 312 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_larger_holo.9.pngbin1315 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_minus_large_holo.9.pngbin1167 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num0.9.png (renamed from java/res/drawable-mdpi/keyboard_hint_0.9.png)bin307 -> 307 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num1.9.png (renamed from java/res/drawable-mdpi/keyboard_hint_1.9.png)bin302 -> 302 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num2.9.png (renamed from java/res/drawable-mdpi/keyboard_hint_2.9.png)bin334 -> 334 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num3.9.png (renamed from java/res/drawable-mdpi/keyboard_hint_3.9.png)bin327 -> 327 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num4.9.png (renamed from java/res/drawable-mdpi/keyboard_hint_4.9.png)bin329 -> 329 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num5.9.png (renamed from java/res/drawable-mdpi/keyboard_hint_5.9.png)bin334 -> 334 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num6.9.png (renamed from java/res/drawable-mdpi/keyboard_hint_6.9.png)bin329 -> 329 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num7.9.png (renamed from java/res/drawable-mdpi/keyboard_hint_7.9.png)bin334 -> 334 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num8.9.png (renamed from java/res/drawable-mdpi/keyboard_hint_8.9.png)bin332 -> 332 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num9.9.png (renamed from java/res/drawable-mdpi/keyboard_hint_9.9.png)bin339 -> 339 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_parenclose_holo.9.pngbin1316 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_parenopen_holo.9.pngbin1333 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_period_holo.9.pngbin1164 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_plus_holo.9.pngbin1275 -> 277 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_plus_large_holo.9.pngbin1328 -> 303 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_question_holo.9.pngbin1433 -> 368 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_question_large_holo.9.pngbin1473 -> 383 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_quote_holo.9.pngbin1238 -> 264 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_quote_large_holo.9.pngbin1249 -> 268 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_semicolon_holo.9.pngbin1248 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_simplequote_holo.9.pngbin1205 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_slash_holo.9.pngbin1317 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_slash_large_holo.9.pngbin1933 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_smaller_holo.9.pngbin1326 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_star_holo.9.pngbin1344 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_underline_holo.9.pngbin1144 -> 196 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_underline_large_holo.9.pngbin1154 -> 199 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_at.9.pngbin1180 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_colon.9.pngbin1082 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_doublecross.9.pngbin1157 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_exclamation.9.pngbin1095 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_greater.9.pngbin1133 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_plus.9.pngbin1116 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_question.9.pngbin1140 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_quote.9.pngbin1077 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_smaller.9.pngbin1130 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_star.9.pngbin1136 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.pngbin3804 -> 83 bytes
-rw-r--r--java/res/drawable-mdpi/mic_base.png (renamed from java/res/drawable/mic_base.png)bin2957 -> 2957 bytes
-rw-r--r--java/res/drawable-mdpi/mic_full.png (renamed from java/res/drawable/mic_full.png)bin2935 -> 2935 bytes
-rw-r--r--java/res/drawable-mdpi/mic_slash_holo.pngbin4317 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/ok_cancel.pngbin3330 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/ok_cancel_holo.9.pngbin1458 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level0.pngbin6738 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level0_holo.pngbin3434 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level1.pngbin6804 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level1_holo.pngbin3678 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level2.pngbin6897 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level2_holo.pngbin3659 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level3.pngbin7077 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level3_holo.pngbin4029 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level4.pngbin7109 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level4_holo.pngbin4127 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level5.pngbin6933 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level5_holo.pngbin4139 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level6.pngbin7050 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level6_holo.pngbin3896 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_bkeyboard_done.pngbin775 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_done.pngbin771 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_done.pngbin498 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.pngbin3268 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_mic_disabled.pngbin3439 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/voice_ime_background.9.pngbin828 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/voice_swipe_hint.pngbin3111 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/vs_dialog_blue.9.png (renamed from java/res/drawable/vs_dialog_blue.9.png)bin8275 -> 8275 bytes
-rw-r--r--java/res/drawable-mdpi/vs_dialog_red.9.png (renamed from java/res/drawable/vs_dialog_red.9.png)bin8607 -> 8607 bytes
-rw-r--r--java/res/drawable-mdpi/vs_dialog_yellow.9.png (renamed from java/res/drawable/vs_dialog_yellow.9.png)bin8151 -> 8151 bytes
-rw-r--r--java/res/drawable-mdpi/vs_popup_mic_edge.png (renamed from java/res/drawable/vs_popup_mic_edge.png)bin3685 -> 3685 bytes
-rw-r--r--java/res/drawable-mdpi/working.pngbin3367 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-hdpi/btn_keyboard_key_popup_selected_holo.9.pngbin0 -> 250 bytes
-rw-r--r--java/res/drawable-sw600dp-hdpi/hint_popup_holo.9.pngbin0 -> 333 bytes
-rw-r--r--java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_background_holo.9.pngbin0 -> 3573 bytes
-rw-r--r--java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_more_background_holo.9.pngbin0 -> 3691 bytes
-rw-r--r--java/res/drawable-sw600dp-hdpi/sym_keyboard_numsymbol_holo.pngbin0 -> 4137 bytes
-rw-r--r--java/res/drawable-sw600dp-hdpi/sym_keyboard_tab_holo.pngbin0 -> 1361 bytes
-rw-r--r--java/res/drawable-sw600dp-land-hdpi/hint_popup_holo.9.pngbin0 -> 333 bytes
-rw-r--r--java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.pngbin0 -> 206 bytes
-rw-r--r--java/res/drawable-sw600dp-land-xhdpi/hint_popup_holo.9.pngbin0 -> 379 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_holo.9.pngbin0 -> 268 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.pngbin0 -> 597 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.pngbin0 -> 751 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.pngbin0 -> 295 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.pngbin0 -> 626 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.pngbin0 -> 739 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_normal_holo.9.pngbin0 -> 268 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_pressed_holo.9.pngbin0 -> 233 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.pngbin0 -> 151 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.pngbin0 -> 206 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_at_holo.9.pngbin0 -> 481 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_at_large_holo.9.pngbin0 -> 497 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_colon_holo.9.pngbin0 -> 266 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_colon_large_holo.9.pngbin0 -> 285 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_comma_holo.9.pngbin0 -> 246 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_comma_large_holo.9.pngbin0 -> 248 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_exclamation_holo.9.pngbin0 -> 305 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_exclamation_large_holo.9.pngbin0 -> 312 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_plus_holo.9.pngbin0 -> 277 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_plus_large_holo.9.pngbin0 -> 303 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_question_holo.9.pngbin0 -> 368 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_question_large_holo.9.pngbin0 -> 383 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_quote_holo.9.pngbin0 -> 264 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_quote_large_holo.9.pngbin0 -> 268 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_underline_holo.9.pngbin0 -> 196 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_underline_large_holo.9.pngbin0 -> 199 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/keyboard_background_holo.9.png (renamed from java/res/drawable-mdpi/key_hint_underscore_large_holo.9.png)bin1154 -> 1108 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_background_holo.9.pngbin0 -> 2014 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_more_background_holo.9.pngbin0 -> 2100 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/keyboard_popup_panel_background_holo.9.pngbin0 -> 3730 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/keyboard_suggest_strip_holo.9.pngbin0 -> 1003 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_delete_holo.pngbin0 -> 1419 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_num0_holo.pngbin0 -> 1759 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_num1_holo.pngbin0 -> 1324 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_num2_holo.pngbin0 -> 2397 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_num3_holo.pngbin0 -> 2143 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_num4_holo.pngbin0 -> 2063 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_num5_holo.pngbin0 -> 2021 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_num6_holo.pngbin0 -> 2502 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_num7_holo.pngbin0 -> 2540 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_num8_holo.pngbin0 -> 2226 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_num9_holo.pngbin0 -> 2699 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_numbpound_holo.pngbin0 -> 1548 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_numbstar_holo.pngbin0 -> 1414 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_numsymbol_holo.pngbin0 -> 830 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_return_holo.pngbin0 -> 1391 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_settings_holo.pngbin0 -> 1865 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_holo.pngbin0 -> 1683 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_locked_holo.pngbin0 -> 1480 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_space_holo.png (renamed from java/res/drawable-mdpi/sym_keyboard_smiley_holo.png)bin1258 -> 1195 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_tab_holo.pngbin0 -> 387 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_holo.pngbin0 -> 1678 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_off_holo.pngbin0 -> 386 bytes
-rw-r--r--java/res/drawable-sw600dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.pngbin0 -> 248 bytes
-rw-r--r--java/res/drawable-sw600dp-xhdpi/hint_popup_holo.9.pngbin0 -> 379 bytes
-rw-r--r--java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_background_holo.9.pngbin0 -> 3659 bytes
-rw-r--r--java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_more_background_holo.9.pngbin0 -> 3774 bytes
-rw-r--r--java/res/drawable-sw600dp-xhdpi/sym_keyboard_numsymbol_holo.pngbin0 -> 6242 bytes
-rw-r--r--java/res/drawable-sw600dp-xhdpi/sym_keyboard_tab_holo.pngbin0 -> 1803 bytes
-rw-r--r--java/res/drawable-sw768dp-hdpi/btn_keyboard_key_popup_selected_holo.9.pngbin0 -> 250 bytes
-rw-r--r--java/res/drawable-sw768dp-hdpi/hint_popup_holo.9.pngbin0 -> 333 bytes
-rw-r--r--java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_background_holo.9.pngbin0 -> 4105 bytes
-rw-r--r--java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_more_background_holo.9.pngbin0 -> 4190 bytes
-rw-r--r--java/res/drawable-sw768dp-land-hdpi/hint_popup_holo.9.pngbin0 -> 321 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/hint_popup_holo.9.png (renamed from java/res/drawable-mdpi/key_hint_minus_holo.9.png)bin1167 -> 1180 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_at_holo.9.pngbin0 -> 1621 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_at_large_holo.9.pngbin0 -> 1651 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_colon_holo.9.pngbin0 -> 1279 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_colon_large_holo.9.pngbin0 -> 1318 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_comma_holo.9.png (renamed from java/res/drawable-land-mdpi/key_hint_underscore_holo.9.png)bin1144 -> 1216 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_comma_large_holo.9.png (renamed from java/res/drawable-land-mdpi/key_hint_minus_holo.9.png)bin1167 -> 1226 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_holo.9.pngbin0 -> 1317 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_large_holo.9.pngbin0 -> 1338 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_plus_holo.9.pngbin0 -> 1275 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_plus_large_holo.9.pngbin0 -> 1328 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_question_holo.9.pngbin0 -> 1433 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_question_large_holo.9.pngbin0 -> 1473 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_quote_holo.9.png (renamed from java/res/drawable-land-mdpi/key_hint_minus_large_holo.9.png)bin1167 -> 1238 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_quote_large_holo.9.pngbin0 -> 1249 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_underline_holo.9.png (renamed from java/res/drawable-mdpi/key_hint_underscore_holo.9.png)bin1144 -> 1140 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_underline_large_holo.9.png (renamed from java/res/drawable-land-mdpi/key_hint_underscore_large_holo.9.png)bin1154 -> 1154 bytes
-rw-r--r--java/res/drawable-sw768dp-land-xhdpi/hint_popup_holo.9.pngbin0 -> 373 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_holo.9.pngbin0 -> 268 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.pngbin0 -> 597 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.pngbin0 -> 751 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.pngbin0 -> 295 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.pngbin0 -> 626 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.pngbin0 -> 739 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_normal_holo.9.pngbin0 -> 268 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_pressed_holo.9.pngbin0 -> 233 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.pngbin0 -> 151 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/hint_popup_holo.9.pngbin0 -> 1168 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_at_holo.9.pngbin0 -> 481 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_at_large_holo.9.pngbin0 -> 497 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_colon_holo.9.pngbin0 -> 266 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_colon_large_holo.9.pngbin0 -> 285 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_comma_holo.9.pngbin0 -> 246 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_comma_large_holo.9.pngbin0 -> 248 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_exclamation_holo.9.pngbin0 -> 305 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_exclamation_large_holo.9.pngbin0 -> 312 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_plus_holo.9.pngbin0 -> 277 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_plus_large_holo.9.pngbin0 -> 303 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_question_holo.9.pngbin0 -> 368 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_question_large_holo.9.pngbin0 -> 383 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_quote_holo.9.pngbin0 -> 264 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_quote_large_holo.9.pngbin0 -> 268 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_underline_holo.9.pngbin0 -> 196 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_underline_large_holo.9.pngbin0 -> 199 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/keyboard_background_holo.9.pngbin0 -> 1108 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/keyboard_key_feedback_background_holo.9.pngbin0 -> 3804 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/keyboard_key_feedback_more_background_holo.9.pngbin0 -> 3814 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/keyboard_popup_panel_background_holo.9.pngbin0 -> 3730 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/keyboard_suggest_strip_holo.9.pngbin0 -> 1003 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_delete_holo.pngbin0 -> 1419 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_num0_holo.pngbin0 -> 1759 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_num1_holo.pngbin0 -> 1324 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_num2_holo.pngbin0 -> 2397 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_num3_holo.pngbin0 -> 2143 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_num4_holo.pngbin0 -> 2063 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_num5_holo.pngbin0 -> 2021 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_num6_holo.pngbin0 -> 2502 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_num7_holo.pngbin0 -> 2540 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_num8_holo.pngbin0 -> 2226 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_num9_holo.pngbin0 -> 2699 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_numbpound_holo.pngbin0 -> 1548 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_numbstar_holo.pngbin0 -> 1414 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_return_holo.pngbin0 -> 1391 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_settings_holo.pngbin0 -> 1865 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_holo.pngbin0 -> 1683 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_locked_holo.pngbin0 -> 1480 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_space_holo.pngbin0 -> 1195 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_holo.pngbin0 -> 1678 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_off_holo.pngbin0 -> 386 bytes
-rw-r--r--java/res/drawable-sw768dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.pngbin0 -> 248 bytes
-rw-r--r--java/res/drawable-sw768dp-xhdpi/hint_popup_holo.9.pngbin0 -> 379 bytes
-rw-r--r--java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_background_holo.9.pngbin0 -> 4228 bytes
-rw-r--r--java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_more_background_holo.9.pngbin0 -> 4317 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.pngbin0 -> 546 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.pngbin0 -> 476 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.pngbin0 -> 735 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.pngbin0 -> 867 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.pngbin0 -> 1069 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_holo.9.pngbin0 -> 1143 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.pngbin0 -> 709 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.pngbin0 -> 821 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.pngbin0 -> 924 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.pngbin0 -> 1323 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.pngbin0 -> 1244 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.pngbin0 -> 1486 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.pngbin0 -> 529 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.pngbin0 -> 589 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_light_popup_normal.9.pngbin0 -> 126 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.pngbin0 -> 535 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.pngbin0 -> 722 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.pngbin0 -> 794 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.pngbin0 -> 243 bytes
-rw-r--r--java/res/drawable-xhdpi/hint_popup_holo.9.pngbin0 -> 379 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_at_holo.9.pngbin0 -> 1048 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_at_large_holo.9.pngbin0 -> 1101 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_colon_holo.9.pngbin0 -> 586 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_colon_large_holo.9.pngbin0 -> 573 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_comma_holo.9.pngbin0 -> 411 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_comma_large_holo.9.pngbin0 -> 430 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_exclamation_holo.9.pngbin0 -> 559 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_exclamation_large_holo.9.pngbin0 -> 588 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_plus_holo.9.pngbin0 -> 595 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_plus_large_holo.9.pngbin0 -> 630 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_question_holo.9.pngbin0 -> 739 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_question_large_holo.9.pngbin0 -> 776 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_quote_holo.9.pngbin0 -> 438 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_quote_large_holo.9.pngbin0 -> 459 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_underline_holo.9.pngbin0 -> 368 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_underline_large_holo.9.pngbin0 -> 389 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_background.9.pngbin0 -> 1028 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.pngbin0 -> 136 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_more_background.9.pngbin0 -> 1161 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.pngbin0 -> 4317 bytes
-rwxr-xr-xjava/res/drawable-xlarge/caution.pngbin1100 -> 0 bytes
-rw-r--r--java/res/drawable-xlarge/mic_slash.pngbin3766 -> 0 bytes
-rw-r--r--java/res/drawable/btn_keyboard_key2.xml36
-rw-r--r--java/res/drawable/btn_keyboard_key_popup.xml (renamed from java/res/drawable/btn_keyboard_key_gingerbread_popup.xml)2
-rw-r--r--java/res/drawable/btn_keyboard_key_popup_honeycomb.xml (renamed from java/res/drawable/btn_keyboard_key_honeycomb_popup.xml)2
-rwxr-xr-xjava/res/drawable/caution.pngbin1100 -> 0 bytes
-rw-r--r--java/res/drawable/mic_slash.pngbin3766 -> 0 bytes
-rw-r--r--java/res/layout-sw768dp/candidates.xml (renamed from java/res/layout-xlarge/candidates.xml)3
-rw-r--r--java/res/layout-sw768dp/recognition_status.xml (renamed from java/res/layout-xlarge/recognition_status.xml)0
-rw-r--r--java/res/layout-xlarge/candidate.xml59
-rw-r--r--java/res/layout/bubble_text.xml30
-rw-r--r--java/res/layout/candidate.xml15
-rw-r--r--java/res/layout/candidate_divider.xml (renamed from java/res/layout-xlarge/candidate_preview.xml)16
-rw-r--r--java/res/layout/candidate_preview.xml5
-rw-r--r--java/res/layout/candidates.xml3
-rw-r--r--java/res/layout/input_basic.xml32
-rw-r--r--java/res/layout/input_honeycomb.xml40
-rw-r--r--java/res/layout/input_stone_bold.xml38
-rw-r--r--java/res/layout/input_stone_normal.xml37
-rw-r--r--java/res/layout/input_view.xml (renamed from java/res/layout/input_gingerbread.xml)23
-rw-r--r--java/res/layout/key_preview.xml2
-rw-r--r--java/res/layout/keyboard_popup.xml8
-rw-r--r--java/res/layout/keyboard_popup_honeycomb.xml40
-rw-r--r--java/res/layout/keyboard_popup_stone.xml40
-rw-r--r--java/res/raw/type3.oggbin4126 -> 0 bytes
-rw-r--r--java/res/values-af/strings.xml245
-rw-r--r--java/res/values-am/strings.xml209
-rw-r--r--java/res/values-ar/strings.xml8
-rw-r--r--java/res/values-bg/strings.xml12
-rw-r--r--java/res/values-ca/strings.xml14
-rw-r--r--java/res/values-cs/strings.xml8
-rw-r--r--java/res/values-da/strings.xml8
-rw-r--r--java/res/values-de/strings.xml8
-rw-r--r--java/res/values-el/strings.xml8
-rw-r--r--java/res/values-en-rGB/strings.xml8
-rw-r--r--java/res/values-en/whitelist.xml (renamed from java/res/layout/input_basic_highcontrast.xml)30
-rw-r--r--java/res/values-es-rUS/strings.xml8
-rw-r--r--java/res/values-es/strings.xml28
-rw-r--r--java/res/values-fa/strings.xml8
-rw-r--r--java/res/values-fi/strings.xml8
-rw-r--r--java/res/values-fr/strings.xml10
-rw-r--r--java/res/values-hr/strings.xml12
-rw-r--r--java/res/values-hu/strings.xml8
-rw-r--r--java/res/values-in/strings.xml8
-rw-r--r--java/res/values-it/strings.xml8
-rw-r--r--java/res/values-iw/strings.xml8
-rw-r--r--java/res/values-ja/strings.xml8
-rw-r--r--java/res/values-ko/strings.xml8
-rw-r--r--java/res/values-land/dimens.xml6
-rw-r--r--java/res/values-lt/strings.xml8
-rw-r--r--java/res/values-lv/strings.xml12
-rw-r--r--java/res/values-ms/strings.xml248
-rw-r--r--java/res/values-nb/strings.xml8
-rw-r--r--java/res/values-nl/strings.xml8
-rw-r--r--java/res/values-pl/strings.xml8
-rw-r--r--java/res/values-pt-rPT/strings.xml8
-rw-r--r--java/res/values-pt/strings.xml8
-rw-r--r--java/res/values-rm/strings.xml16
-rw-r--r--java/res/values-ro/strings.xml16
-rw-r--r--java/res/values-ru/strings.xml8
-rw-r--r--java/res/values-sk/strings.xml8
-rw-r--r--java/res/values-sl/strings.xml8
-rw-r--r--java/res/values-sr/strings.xml10
-rw-r--r--java/res/values-sv/strings.xml8
-rw-r--r--java/res/values-sw/strings.xml209
-rw-r--r--java/res/values-sw600dp-land/dimens.xml39
-rw-r--r--java/res/values-sw600dp/config.xml45
-rw-r--r--java/res/values-sw600dp/dimens.xml53
-rw-r--r--java/res/values-sw600dp/donottranslate.xml (renamed from java/res/values/durations.xml)28
-rw-r--r--java/res/values-sw768dp-land/dimens.xml (renamed from java/res/values-xlarge-land/dimens.xml)9
-rw-r--r--java/res/values-sw768dp/config.xml (renamed from java/res/values-xlarge/config.xml)1
-rw-r--r--java/res/values-sw768dp/dimens.xml (renamed from java/res/values-xlarge/dimens.xml)11
-rw-r--r--java/res/values-sw768dp/donottranslate.xml (renamed from java/res/values-xlarge/donottranslate.xml)0
-rw-r--r--java/res/values-th/strings.xml8
-rw-r--r--java/res/values-tl/strings.xml8
-rw-r--r--java/res/values-tr/strings.xml10
-rw-r--r--java/res/values-uk/strings.xml8
-rw-r--r--java/res/values-vi/strings.xml8
-rw-r--r--java/res/values-zh-rCN/strings.xml8
-rw-r--r--java/res/values-zh-rTW/strings.xml8
-rw-r--r--java/res/values-zu/strings.xml209
-rw-r--r--java/res/values/attrs.xml79
-rw-r--r--java/res/values/bools.xml2
-rw-r--r--java/res/values/config.xml4
-rw-r--r--java/res/values/dimens.xml14
-rw-r--r--java/res/values/keycodes.xml3
-rw-r--r--java/res/values/strings.xml16
-rw-r--r--java/res/values/styles.xml91
-rw-r--r--java/res/values/themes.xml67
-rw-r--r--java/res/values/whitelist.xml9
-rw-r--r--java/res/xml-ar/kbd_qwerty.xml4
-rw-r--r--java/res/xml-cs/kbd_qwerty.xml4
-rw-r--r--java/res/xml-da/kbd_qwerty.xml3
-rw-r--r--java/res/xml-de/kbd_qwerty.xml6
-rw-r--r--java/res/xml-en/kbd_qwerty.xml37
-rw-r--r--java/res/xml-es/kbd_qwerty.xml35
-rw-r--r--java/res/xml-fi/kbd_qwerty.xml3
-rw-r--r--java/res/xml-fr-rCA/kbd_qwerty.xml4
-rw-r--r--java/res/xml-fr-rCH/kbd_qwerty.xml4
-rw-r--r--java/res/xml-fr/kbd_qwerty.xml6
-rw-r--r--java/res/xml-hu/kbd_qwerty.xml4
-rw-r--r--java/res/xml-iw/kbd_qwerty.xml4
-rw-r--r--java/res/xml-nb/kbd_qwerty.xml3
-rw-r--r--java/res/xml-pl/kbd_qwerty.xml6
-rw-r--r--java/res/xml-pt/kbd_qwerty.xml35
-rw-r--r--java/res/xml-ru/kbd_qwerty.xml5
-rw-r--r--java/res/xml-sr/kbd_qwerty.xml3
-rw-r--r--java/res/xml-sv/kbd_qwerty.xml3
-rw-r--r--java/res/xml-sw600dp-land/kbd_popup_template.xml (renamed from java/res/layout/key_preview_honeycomb.xml)18
-rw-r--r--java/res/xml-sw600dp/kbd_azerty_rows.xml157
-rw-r--r--java/res/xml-sw600dp/kbd_key_styles.xml214
-rw-r--r--java/res/xml-sw600dp/kbd_number.xml193
-rw-r--r--java/res/xml-sw600dp/kbd_numkey_styles.xml150
-rw-r--r--java/res/xml-sw600dp/kbd_phone.xml130
-rw-r--r--java/res/xml-sw600dp/kbd_phone_symbols.xml140
-rw-r--r--java/res/xml-sw600dp/kbd_popup_template.xml27
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty.xml34
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty_row1.xml65
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty_row2.xml59
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty_row3.xml (renamed from java/res/xml-xlarge/kbd_qwerty_row3.xml)12
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty_row4.xml170
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty_rows.xml34
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.xml (renamed from java/res/xml-xlarge/kbd_qwerty_rows_scandinavia.xml)30
-rw-r--r--java/res/xml-sw600dp/kbd_qwertz_rows.xml123
-rw-r--r--java/res/xml-sw600dp/kbd_row3_right.xml68
-rw-r--r--java/res/xml-sw600dp/kbd_ru_rows.xml (renamed from java/res/xml-xlarge/kbd_ru_rows.xml)60
-rw-r--r--java/res/xml-sw600dp/kbd_sr_rows.xml146
-rw-r--r--java/res/xml-sw600dp/kbd_symbols.xml (renamed from java/res/xml-xlarge/kbd_symbols.xml)98
-rw-r--r--java/res/xml-sw600dp/kbd_symbols_shift.xml163
-rw-r--r--java/res/xml-sw768dp-land/kbd_popup_template.xml (renamed from java/res/xml-xlarge-land/kbd_popup_template.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_ar_rows.xml (renamed from java/res/xml-xlarge/kbd_ar_rows.xml)25
-rw-r--r--java/res/xml-sw768dp/kbd_azerty_rows.xml (renamed from java/res/xml-xlarge/kbd_azerty_rows.xml)19
-rw-r--r--java/res/xml-sw768dp/kbd_iw_rows.xml (renamed from java/res/xml-xlarge/kbd_iw_rows.xml)21
-rw-r--r--java/res/xml-sw768dp/kbd_key_styles.xml (renamed from java/res/xml-xlarge/kbd_key_styles.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_number.xml (renamed from java/res/xml-xlarge/kbd_number.xml)115
-rw-r--r--java/res/xml-sw768dp/kbd_numkey_styles.xml (renamed from java/res/xml-xlarge/kbd_numkey_styles.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_phone.xml (renamed from java/res/xml-xlarge/kbd_phone.xml)78
-rw-r--r--java/res/xml-sw768dp/kbd_phone_symbols.xml (renamed from java/res/xml-xlarge/kbd_phone_symbols.xml)86
-rw-r--r--java/res/xml-sw768dp/kbd_popup_template.xml (renamed from java/res/xml-xlarge/kbd_popup_template.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_qwerty_row1.xml (renamed from java/res/xml-xlarge/kbd_qwerty_row1.xml)7
-rw-r--r--java/res/xml-sw768dp/kbd_qwerty_row2.xml (renamed from java/res/xml-xlarge/kbd_qwerty_row2.xml)7
-rw-r--r--java/res/xml-sw768dp/kbd_qwerty_row3.xml57
-rw-r--r--java/res/xml-sw768dp/kbd_qwerty_row4.xml146
-rw-r--r--java/res/xml-sw768dp/kbd_qwerty_rows.xml (renamed from java/res/xml-xlarge/kbd_qwerty_rows.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml151
-rw-r--r--java/res/xml-sw768dp/kbd_qwertz_rows.xml (renamed from java/res/xml-xlarge/kbd_qwertz_rows.xml)14
-rw-r--r--java/res/xml-sw768dp/kbd_row3_right2.xml48
-rw-r--r--java/res/xml-sw768dp/kbd_ru_rows.xml (renamed from java/res/xml-xlarge/kbd_sr_rows.xml)107
-rw-r--r--java/res/xml-sw768dp/kbd_sr_rows.xml130
-rw-r--r--java/res/xml-sw768dp/kbd_symbols.xml203
-rw-r--r--java/res/xml-sw768dp/kbd_symbols_shift.xml (renamed from java/res/xml-xlarge/kbd_symbols_shift.xml)42
-rw-r--r--java/res/xml-xlarge/kbd_qwerty_row4.xml258
-rw-r--r--java/res/xml/kbd_ar_rows.xml5
-rw-r--r--java/res/xml/kbd_azerty_rows.xml27
-rw-r--r--java/res/xml/kbd_currency_key_styles.xml232
-rw-r--r--java/res/xml/kbd_iw_rows.xml19
-rw-r--r--java/res/xml/kbd_key_styles.xml14
-rw-r--r--java/res/xml/kbd_number.xml186
-rw-r--r--java/res/xml/kbd_phone.xml11
-rw-r--r--java/res/xml/kbd_phone_symbols.xml11
-rw-r--r--java/res/xml/kbd_qwerty.xml4
-rw-r--r--java/res/xml/kbd_qwerty_f1.xml2
-rw-r--r--java/res/xml/kbd_qwerty_row1.xml21
-rw-r--r--java/res/xml/kbd_qwerty_row2.xml4
-rw-r--r--java/res/xml/kbd_qwerty_row3.xml2
-rw-r--r--java/res/xml/kbd_qwerty_row4.xml124
-rw-r--r--java/res/xml/kbd_qwerty_rows_scandinavia.xml24
-rw-r--r--java/res/xml/kbd_qwertz_rows.xml23
-rw-r--r--java/res/xml/kbd_ru_rows.xml26
-rw-r--r--java/res/xml/kbd_sr_rows.xml24
-rw-r--r--java/res/xml/kbd_symbols.xml12
-rw-r--r--java/res/xml/kbd_symbols_row4.xml86
-rw-r--r--java/res/xml/kbd_symbols_shift.xml7
-rw-r--r--java/res/xml/kbd_symbols_shift_row4.xml75
-rw-r--r--java/res/xml/method.xml5
-rw-r--r--java/res/xml/prefs.xml9
-rw-r--r--java/src/com/android/inputmethod/compat/CompatUtils.java54
-rw-r--r--java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java3
-rw-r--r--java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java15
-rw-r--r--java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java6
-rw-r--r--java/src/com/android/inputmethod/compat/InputTypeCompatUtils.java29
-rw-r--r--java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java78
-rw-r--r--java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java2
-rw-r--r--java/src/com/android/inputmethod/deprecated/VoiceProxy.java14
-rw-r--r--java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java104
-rw-r--r--java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java6
-rw-r--r--java/src/com/android/inputmethod/deprecated/recorrection/Recorrection.java (renamed from java/src/com/android/inputmethod/latin/Recorrection.java)140
-rw-r--r--java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java (renamed from java/src/com/android/inputmethod/latin/WordAlternatives.java)13
-rw-r--r--java/src/com/android/inputmethod/deprecated/voice/FieldContext.java2
-rw-r--r--java/src/com/android/inputmethod/deprecated/voice/Hints.java2
-rw-r--r--java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java2
-rw-r--r--java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java2
-rw-r--r--java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java2
-rw-r--r--java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java2
-rw-r--r--java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java2
-rw-r--r--java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java2
-rw-r--r--java/src/com/android/inputmethod/deprecated/voice/Whitelist.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java53
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyDetector.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyStyles.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java16
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardId.java45
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardParser.java137
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java233
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java186
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboard.java6
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java19
-rw-r--r--java/src/com/android/inputmethod/keyboard/MiniKeyboard.java6
-rw-r--r--java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java15
-rw-r--r--java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/ModifierKeyState.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java27
-rw-r--r--java/src/com/android/inputmethod/keyboard/ProximityInfo.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/Row.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/ShiftKeyState.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java6
-rw-r--r--java/src/com/android/inputmethod/keyboard/SwipeTracker.java2
-rw-r--r--java/src/com/android/inputmethod/latin/AutoDictionary.java12
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java3
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java10
-rw-r--r--java/src/com/android/inputmethod/latin/CandidateView.java19
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFactory.java19
-rw-r--r--java/src/com/android/inputmethod/latin/EditingUtils.java2
-rw-r--r--java/src/com/android/inputmethod/latin/ExpandableDictionary.java33
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java219
-rw-r--r--java/src/com/android/inputmethod/latin/Settings.java93
-rw-r--r--java/src/com/android/inputmethod/latin/SubtypeSwitcher.java30
-rw-r--r--java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java43
-rw-r--r--java/src/com/android/inputmethod/latin/UserBigramDictionary.java4
-rw-r--r--java/src/com/android/inputmethod/latin/Utils.java59
-rw-r--r--java/src/com/android/inputmethod/latin/WhitelistDictionary.java1
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java2
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/SpellChecker.java114
-rw-r--r--native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp1
-rw-r--r--native/src/defines.h2
-rw-r--r--native/src/dictionary.cpp2
-rw-r--r--native/src/unigram_dictionary.cpp25
-rw-r--r--native/src/unigram_dictionary.h2
-rw-r--r--tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java4
-rw-r--r--tests/src/com/android/inputmethod/latin/SuggestHelper.java4
-rw-r--r--tests/src/com/android/inputmethod/latin/SuggestTestsBase.java5
718 files changed, 6646 insertions, 2506 deletions
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 2fbf4c2be..cb0a9a2e1 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -41,5 +41,11 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
+
+ <receiver android:name="SuggestionSpanPickedNotificationReceiver" android:enabled="true">
+ <intent-filter>
+ <action android:name="android.text.style.SUGGESTION_PICKED" />
+ </intent-filter>
+ </receiver>
</application>
</manifest>
diff --git a/java/proguard.flags b/java/proguard.flags
index 914bd7595..9094be401 100644
--- a/java/proguard.flags
+++ b/java/proguard.flags
@@ -22,3 +22,7 @@
-keep class com.android.inputmethod.latin.Utils {
boolean equalsIgnoreCase(...);
}
+
+-keep class com.android.inputmethod.latin.spellcheck.SpellChecker {
+ *;
+}
diff --git a/java/res/drawable-xlarge/btn_center_default.9.png b/java/res/drawable-hdpi/btn_center_default.9.png
index d5ec36ba4..d5ec36ba4 100755..100644
--- a/java/res/drawable-xlarge/btn_center_default.9.png
+++ b/java/res/drawable-hdpi/btn_center_default.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/btn_center_pressed.9.png b/java/res/drawable-hdpi/btn_center_pressed.9.png
index 593a679d0..593a679d0 100755..100644
--- a/java/res/drawable-xlarge/btn_center_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_center_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/btn_center_selected.9.png b/java/res/drawable-hdpi/btn_center_selected.9.png
index f1914a886..f1914a886 100644
--- a/java/res/drawable-xlarge/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_keyboard_key_dark_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
index 01fc8ca78..50cc49fdb 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
index af4017e2c..dabf77ec6 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
index 4c35aca95..6e7d74c88 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
index 174f3452c..ddb77c224 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
index 1fcbd9a88..1e9227e1c 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
index 072753f37..7207b2ece 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
index 1ad746053..9d85c7b74 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png
index e3a77d61b..2ed1b3447 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png
index 431c44967..77e17dbae 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
index ccd59d5fa..a409639e7 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/cancel.png b/java/res/drawable-hdpi/cancel.png
deleted file mode 100644
index 506cf99d0..000000000
--- a/java/res/drawable-hdpi/cancel.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/cancel_holo.9.png b/java/res/drawable-hdpi/cancel_holo.9.png
deleted file mode 100644
index 33548d606..000000000
--- a/java/res/drawable-hdpi/cancel_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/dialog_bubble_step02.9.png b/java/res/drawable-hdpi/dialog_bubble_step02.9.png
deleted file mode 100644
index b338364c5..000000000
--- a/java/res/drawable-hdpi/dialog_bubble_step02.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/dialog_bubble_step07.9.png b/java/res/drawable-hdpi/dialog_bubble_step07.9.png
deleted file mode 100644
index 94b915432..000000000
--- a/java/res/drawable-hdpi/dialog_bubble_step07.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_at_holo.9.png b/java/res/drawable-hdpi/key_hint_at_holo.9.png
index 129e19853..b93c2d3cf 100644
--- a/java/res/drawable-hdpi/key_hint_at_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_at_large_holo.9.png b/java/res/drawable-hdpi/key_hint_at_large_holo.9.png
index d90bc31ab..2b9295158 100644
--- a/java/res/drawable-hdpi/key_hint_at_large_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_colon_holo.9.png b/java/res/drawable-hdpi/key_hint_colon_holo.9.png
index e82e41c94..8fa17e583 100644
--- a/java/res/drawable-hdpi/key_hint_colon_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_colon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png
index e46845dbd..1271341e6 100644
--- a/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_comma_holo.9.png b/java/res/drawable-hdpi/key_hint_comma_holo.9.png
index da0d6fdd6..44220ec96 100644
--- a/java/res/drawable-hdpi/key_hint_comma_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_comma_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-hdpi/key_hint_comma_large_holo.9.png
index 1f2f70762..444b4d029 100644
--- a/java/res/drawable-hdpi/key_hint_comma_large_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_comma_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_dash_holo.9.png b/java/res/drawable-hdpi/key_hint_dash_holo.9.png
deleted file mode 100644
index a2b2fceeb..000000000
--- a/java/res/drawable-hdpi/key_hint_dash_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_doublecross_holo.9.png b/java/res/drawable-hdpi/key_hint_doublecross_holo.9.png
deleted file mode 100644
index d5af9f8c7..000000000
--- a/java/res/drawable-hdpi/key_hint_doublecross_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_equal_holo.9.png b/java/res/drawable-hdpi/key_hint_equal_holo.9.png
deleted file mode 100644
index 4acc3c3be..000000000
--- a/java/res/drawable-hdpi/key_hint_equal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png
index 8d99a27d2..d5e688400 100644
--- a/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png
index e93e49187..5dab2f646 100644
--- a/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_larger_holo.9.png b/java/res/drawable-hdpi/key_hint_larger_holo.9.png
deleted file mode 100644
index 10614d9fe..000000000
--- a/java/res/drawable-hdpi/key_hint_larger_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_minus_holo.9.png b/java/res/drawable-hdpi/key_hint_minus_holo.9.png
deleted file mode 100644
index 2c34ef90b..000000000
--- a/java/res/drawable-hdpi/key_hint_minus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_minus_large_holo.9.png b/java/res/drawable-hdpi/key_hint_minus_large_holo.9.png
deleted file mode 100644
index 0df056ee1..000000000
--- a/java/res/drawable-hdpi/key_hint_minus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_0.9.png b/java/res/drawable-hdpi/key_hint_num0.9.png
index 271264e92..271264e92 100644
--- a/java/res/drawable-hdpi/keyboard_hint_0.9.png
+++ b/java/res/drawable-hdpi/key_hint_num0.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_1.9.png b/java/res/drawable-hdpi/key_hint_num1.9.png
index eaf374262..eaf374262 100644
--- a/java/res/drawable-hdpi/keyboard_hint_1.9.png
+++ b/java/res/drawable-hdpi/key_hint_num1.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_2.9.png b/java/res/drawable-hdpi/key_hint_num2.9.png
index 8a1657117..8a1657117 100644
--- a/java/res/drawable-hdpi/keyboard_hint_2.9.png
+++ b/java/res/drawable-hdpi/key_hint_num2.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_3.9.png b/java/res/drawable-hdpi/key_hint_num3.9.png
index 34b501109..34b501109 100644
--- a/java/res/drawable-hdpi/keyboard_hint_3.9.png
+++ b/java/res/drawable-hdpi/key_hint_num3.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_4.9.png b/java/res/drawable-hdpi/key_hint_num4.9.png
index d4cc250dd..d4cc250dd 100644
--- a/java/res/drawable-hdpi/keyboard_hint_4.9.png
+++ b/java/res/drawable-hdpi/key_hint_num4.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_5.9.png b/java/res/drawable-hdpi/key_hint_num5.9.png
index 6a054b42f..6a054b42f 100644
--- a/java/res/drawable-hdpi/keyboard_hint_5.9.png
+++ b/java/res/drawable-hdpi/key_hint_num5.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_6.9.png b/java/res/drawable-hdpi/key_hint_num6.9.png
index 66e91400a..66e91400a 100644
--- a/java/res/drawable-hdpi/keyboard_hint_6.9.png
+++ b/java/res/drawable-hdpi/key_hint_num6.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_7.9.png b/java/res/drawable-hdpi/key_hint_num7.9.png
index 5eae24f4f..5eae24f4f 100644
--- a/java/res/drawable-hdpi/keyboard_hint_7.9.png
+++ b/java/res/drawable-hdpi/key_hint_num7.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_8.9.png b/java/res/drawable-hdpi/key_hint_num8.9.png
index ea7f512fd..ea7f512fd 100644
--- a/java/res/drawable-hdpi/keyboard_hint_8.9.png
+++ b/java/res/drawable-hdpi/key_hint_num8.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_9.9.png b/java/res/drawable-hdpi/key_hint_num9.9.png
index 0bf85de93..0bf85de93 100644
--- a/java/res/drawable-hdpi/keyboard_hint_9.9.png
+++ b/java/res/drawable-hdpi/key_hint_num9.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_parenclose_holo.9.png b/java/res/drawable-hdpi/key_hint_parenclose_holo.9.png
deleted file mode 100644
index 9096362e0..000000000
--- a/java/res/drawable-hdpi/key_hint_parenclose_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_parenopen_holo.9.png b/java/res/drawable-hdpi/key_hint_parenopen_holo.9.png
deleted file mode 100644
index bb4cbd40d..000000000
--- a/java/res/drawable-hdpi/key_hint_parenopen_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_period_holo.9.png b/java/res/drawable-hdpi/key_hint_period_holo.9.png
deleted file mode 100644
index 68f789b95..000000000
--- a/java/res/drawable-hdpi/key_hint_period_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_plus_holo.9.png b/java/res/drawable-hdpi/key_hint_plus_holo.9.png
index 3dd85065a..a11b4ac07 100644
--- a/java/res/drawable-hdpi/key_hint_plus_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_plus_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png
index b0d75f433..3c87c1f7e 100644
--- a/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_question_holo.9.png b/java/res/drawable-hdpi/key_hint_question_holo.9.png
index 4fe6a5b80..670b4b902 100644
--- a/java/res/drawable-hdpi/key_hint_question_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_question_large_holo.9.png b/java/res/drawable-hdpi/key_hint_question_large_holo.9.png
index 44dfdc4ea..692f4a68b 100644
--- a/java/res/drawable-hdpi/key_hint_question_large_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_quote_holo.9.png b/java/res/drawable-hdpi/key_hint_quote_holo.9.png
index 8308aa647..9cc86156e 100644
--- a/java/res/drawable-hdpi/key_hint_quote_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png
index e73b9e0c6..664467b3e 100644
--- a/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_semicolon_holo.9.png b/java/res/drawable-hdpi/key_hint_semicolon_holo.9.png
deleted file mode 100644
index ac3de374c..000000000
--- a/java/res/drawable-hdpi/key_hint_semicolon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_simplequote_holo.9.png b/java/res/drawable-hdpi/key_hint_simplequote_holo.9.png
deleted file mode 100644
index 20d56c549..000000000
--- a/java/res/drawable-hdpi/key_hint_simplequote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_slash_holo.9.png b/java/res/drawable-hdpi/key_hint_slash_holo.9.png
deleted file mode 100644
index 3fe2c4271..000000000
--- a/java/res/drawable-hdpi/key_hint_slash_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_slash_large_holo.9.png b/java/res/drawable-hdpi/key_hint_slash_large_holo.9.png
deleted file mode 100644
index 47e767557..000000000
--- a/java/res/drawable-hdpi/key_hint_slash_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_smaller_holo.9.png b/java/res/drawable-hdpi/key_hint_smaller_holo.9.png
deleted file mode 100644
index 19a7d937e..000000000
--- a/java/res/drawable-hdpi/key_hint_smaller_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_star_holo.9.png b/java/res/drawable-hdpi/key_hint_star_holo.9.png
deleted file mode 100644
index 4e4340d63..000000000
--- a/java/res/drawable-hdpi/key_hint_star_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_underline_holo.9.png b/java/res/drawable-hdpi/key_hint_underline_holo.9.png
index e4f271918..2cb4077a7 100644
--- a/java/res/drawable-hdpi/key_hint_underline_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png
index dad34fc72..6b9a49170 100644
--- a/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png
+++ b/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_underscore_holo.9.png b/java/res/drawable-hdpi/key_hint_underscore_holo.9.png
deleted file mode 100644
index e4f271918..000000000
--- a/java/res/drawable-hdpi/key_hint_underscore_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_underscore_large_holo.9.png b/java/res/drawable-hdpi/key_hint_underscore_large_holo.9.png
deleted file mode 100644
index dad34fc72..000000000
--- a/java/res/drawable-hdpi/key_hint_underscore_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_at.9.png b/java/res/drawable-hdpi/keyboard_hint_at.9.png
deleted file mode 100644
index 4b49c0dd9..000000000
--- a/java/res/drawable-hdpi/keyboard_hint_at.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_colon.9.png b/java/res/drawable-hdpi/keyboard_hint_colon.9.png
deleted file mode 100644
index a91dc47f1..000000000
--- a/java/res/drawable-hdpi/keyboard_hint_colon.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_doublecross.9.png b/java/res/drawable-hdpi/keyboard_hint_doublecross.9.png
deleted file mode 100644
index c0917c200..000000000
--- a/java/res/drawable-hdpi/keyboard_hint_doublecross.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_exclamation.9.png b/java/res/drawable-hdpi/keyboard_hint_exclamation.9.png
deleted file mode 100644
index 98c07d94a..000000000
--- a/java/res/drawable-hdpi/keyboard_hint_exclamation.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_greater.9.png b/java/res/drawable-hdpi/keyboard_hint_greater.9.png
deleted file mode 100644
index f2bf37dc2..000000000
--- a/java/res/drawable-hdpi/keyboard_hint_greater.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_plus.9.png b/java/res/drawable-hdpi/keyboard_hint_plus.9.png
deleted file mode 100644
index 586e9c158..000000000
--- a/java/res/drawable-hdpi/keyboard_hint_plus.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_question.9.png b/java/res/drawable-hdpi/keyboard_hint_question.9.png
deleted file mode 100644
index 6c7d4310a..000000000
--- a/java/res/drawable-hdpi/keyboard_hint_question.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_quote.9.png b/java/res/drawable-hdpi/keyboard_hint_quote.9.png
deleted file mode 100644
index 57f44e4a2..000000000
--- a/java/res/drawable-hdpi/keyboard_hint_quote.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_smaller.9.png b/java/res/drawable-hdpi/keyboard_hint_smaller.9.png
deleted file mode 100644
index 438b95ea8..000000000
--- a/java/res/drawable-hdpi/keyboard_hint_smaller.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_hint_star.9.png b/java/res/drawable-hdpi/keyboard_hint_star.9.png
deleted file mode 100644
index 33f8281b2..000000000
--- a/java/res/drawable-hdpi/keyboard_hint_star.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png
index 762a25704..27d992375 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_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 8d6acacfb..943f9e4bc 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_more_background.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
index 141d2d6be..33263b9d7 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/mic_base.png b/java/res/drawable-hdpi/mic_base.png
index 53e29ff4b..53e29ff4b 100644
--- a/java/res/drawable-xlarge/mic_base.png
+++ b/java/res/drawable-hdpi/mic_base.png
Binary files differ
diff --git a/java/res/drawable-xlarge/mic_full.png b/java/res/drawable-hdpi/mic_full.png
index e3e3dfac3..e3e3dfac3 100644
--- a/java/res/drawable-xlarge/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 dc8da6252..1dd05c5b4 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/mic_slash_holo.png b/java/res/drawable-hdpi/mic_slash_holo.png
deleted file mode 100644
index 27a05dec3..000000000
--- a/java/res/drawable-hdpi/mic_slash_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ok_cancel.png b/java/res/drawable-hdpi/ok_cancel.png
deleted file mode 100644
index f11e57a38..000000000
--- a/java/res/drawable-hdpi/ok_cancel.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ok_cancel_holo.9.png b/java/res/drawable-hdpi/ok_cancel_holo.9.png
deleted file mode 100644
index 5be81c35a..000000000
--- a/java/res/drawable-hdpi/ok_cancel_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level0.png b/java/res/drawable-hdpi/speak_now_level0.png
deleted file mode 100644
index 342849cfe..000000000
--- a/java/res/drawable-hdpi/speak_now_level0.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level0_holo.png b/java/res/drawable-hdpi/speak_now_level0_holo.png
deleted file mode 100644
index 29eef926b..000000000
--- a/java/res/drawable-hdpi/speak_now_level0_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level1.png b/java/res/drawable-hdpi/speak_now_level1.png
deleted file mode 100644
index 8947a4306..000000000
--- a/java/res/drawable-hdpi/speak_now_level1.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level1_holo.png b/java/res/drawable-hdpi/speak_now_level1_holo.png
deleted file mode 100644
index a76e990b7..000000000
--- a/java/res/drawable-hdpi/speak_now_level1_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level2.png b/java/res/drawable-hdpi/speak_now_level2.png
deleted file mode 100644
index 44fc58c4e..000000000
--- a/java/res/drawable-hdpi/speak_now_level2.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level2_holo.png b/java/res/drawable-hdpi/speak_now_level2_holo.png
deleted file mode 100644
index 8cd462d20..000000000
--- a/java/res/drawable-hdpi/speak_now_level2_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level3.png b/java/res/drawable-hdpi/speak_now_level3.png
deleted file mode 100644
index cfa5c1b87..000000000
--- a/java/res/drawable-hdpi/speak_now_level3.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level3_holo.png b/java/res/drawable-hdpi/speak_now_level3_holo.png
deleted file mode 100644
index b7371dc88..000000000
--- a/java/res/drawable-hdpi/speak_now_level3_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level4.png b/java/res/drawable-hdpi/speak_now_level4.png
deleted file mode 100644
index a050d8836..000000000
--- a/java/res/drawable-hdpi/speak_now_level4.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level4_holo.png b/java/res/drawable-hdpi/speak_now_level4_holo.png
deleted file mode 100644
index 74befc8c3..000000000
--- a/java/res/drawable-hdpi/speak_now_level4_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level5.png b/java/res/drawable-hdpi/speak_now_level5.png
deleted file mode 100644
index 8cd5ae7ad..000000000
--- a/java/res/drawable-hdpi/speak_now_level5.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level5_holo.png b/java/res/drawable-hdpi/speak_now_level5_holo.png
deleted file mode 100644
index b027e8343..000000000
--- a/java/res/drawable-hdpi/speak_now_level5_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level6.png b/java/res/drawable-hdpi/speak_now_level6.png
deleted file mode 100644
index 9f4481eb4..000000000
--- a/java/res/drawable-hdpi/speak_now_level6.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/speak_now_level6_holo.png b/java/res/drawable-hdpi/speak_now_level6_holo.png
deleted file mode 100644
index 17bb03452..000000000
--- a/java/res/drawable-hdpi/speak_now_level6_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_done.png b/java/res/drawable-hdpi/sym_bkeyboard_done.png
deleted file mode 100644
index b77803d21..000000000
--- a/java/res/drawable-hdpi/sym_bkeyboard_done.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_voice_off.png b/java/res/drawable-hdpi/sym_bkeyboard_voice_off.png
new file mode 100644
index 000000000..081a13096
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_bkeyboard_voice_off.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_done.png b/java/res/drawable-hdpi/sym_keyboard_done.png
deleted file mode 100644
index 471c5021b..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_done.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_done.png b/java/res/drawable-hdpi/sym_keyboard_feedback_done.png
deleted file mode 100644
index 7015e266a..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_done.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png b/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png
deleted file mode 100644
index 1fd822ea6..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_mic_disabled.png b/java/res/drawable-hdpi/sym_keyboard_mic_disabled.png
deleted file mode 100644
index c8dca62a0..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_mic_disabled.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_smiley_holo.png b/java/res/drawable-hdpi/sym_keyboard_smiley_holo.png
deleted file mode 100644
index a3f5e840d..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_smiley_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_tab.png b/java/res/drawable-hdpi/sym_keyboard_tab.png
index 51d17d989..3d1c5c0ea 100644
--- a/java/res/drawable-hdpi/sym_keyboard_tab.png
+++ b/java/res/drawable-hdpi/sym_keyboard_tab.png
Binary files differ
diff --git a/java/res/drawable-hdpi/top_suggest_line_holo.9.png b/java/res/drawable-hdpi/top_suggest_line_holo.9.png
deleted file mode 100644
index dcce3015f..000000000
--- a/java/res/drawable-hdpi/top_suggest_line_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/voice_ime_background.9.png b/java/res/drawable-hdpi/voice_ime_background.9.png
deleted file mode 100644
index 42868522f..000000000
--- a/java/res/drawable-hdpi/voice_ime_background.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/voice_swipe_hint.png b/java/res/drawable-hdpi/voice_swipe_hint.png
deleted file mode 100644
index 130f83a9c..000000000
--- a/java/res/drawable-hdpi/voice_swipe_hint.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xlarge/vs_dialog_blue.9.png b/java/res/drawable-hdpi/vs_dialog_blue.9.png
index cf27e8f43..cf27e8f43 100644
--- a/java/res/drawable-xlarge/vs_dialog_blue.9.png
+++ b/java/res/drawable-hdpi/vs_dialog_blue.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/vs_dialog_red.9.png b/java/res/drawable-hdpi/vs_dialog_red.9.png
index 6c08d5a30..6c08d5a30 100644
--- a/java/res/drawable-xlarge/vs_dialog_red.9.png
+++ b/java/res/drawable-hdpi/vs_dialog_red.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/vs_dialog_yellow.9.png b/java/res/drawable-hdpi/vs_dialog_yellow.9.png
index 2fb06c263..2fb06c263 100644
--- a/java/res/drawable-xlarge/vs_dialog_yellow.9.png
+++ b/java/res/drawable-hdpi/vs_dialog_yellow.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/vs_popup_mic_edge.png b/java/res/drawable-hdpi/vs_popup_mic_edge.png
index 4ff6337a2..4ff6337a2 100644
--- a/java/res/drawable-xlarge/vs_popup_mic_edge.png
+++ b/java/res/drawable-hdpi/vs_popup_mic_edge.png
Binary files differ
diff --git a/java/res/drawable-hdpi/working.png b/java/res/drawable-hdpi/working.png
deleted file mode 100755
index 5ea702307..000000000
--- a/java/res/drawable-hdpi/working.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png
index 603bf0e15..603bf0e15 100755..100644
--- a/java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png
index 6ddd516e7..6ddd516e7 100755..100644
--- a/java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png
index 65fdeb353..65fdeb353 100755..100644
--- a/java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png
index 7ec915fe8..7ec915fe8 100755..100644
--- a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png
index 439271723..439271723 100755..100644
--- a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png
index c2cc32044..c2cc32044 100755..100644
--- a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png
+++ b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_at_holo.9.png b/java/res/drawable-land-hdpi/key_hint_at_holo.9.png
index 874802fcb..b93c2d3cf 100644
--- a/java/res/drawable-land-hdpi/key_hint_at_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png
index d90bc31ab..2b9295158 100644
--- a/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png b/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png
index e82e41c94..8fa17e583 100644
--- a/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png
index e46845dbd..1271341e6 100644
--- a/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png b/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png
index da0d6fdd6..44220ec96 100644
--- a/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.png
index 1f2f70762..444b4d029 100644
--- a/java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_dash_holo.9.png b/java/res/drawable-land-hdpi/key_hint_dash_holo.9.png
deleted file mode 100644
index c045b8c54..000000000
--- a/java/res/drawable-land-hdpi/key_hint_dash_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_doublecross_holo.9.png b/java/res/drawable-land-hdpi/key_hint_doublecross_holo.9.png
deleted file mode 100644
index 6975ab71f..000000000
--- a/java/res/drawable-land-hdpi/key_hint_doublecross_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_equal_holo.9.png b/java/res/drawable-land-hdpi/key_hint_equal_holo.9.png
deleted file mode 100644
index a619fb29f..000000000
--- a/java/res/drawable-land-hdpi/key_hint_equal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png
index 570a1b87d..d5e688400 100644
--- a/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.png
index e93e49187..5dab2f646 100644
--- a/java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_larger_holo.9.png b/java/res/drawable-land-hdpi/key_hint_larger_holo.9.png
deleted file mode 100644
index f8d960f17..000000000
--- a/java/res/drawable-land-hdpi/key_hint_larger_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_minus_holo.9.png b/java/res/drawable-land-hdpi/key_hint_minus_holo.9.png
deleted file mode 100644
index 2c34ef90b..000000000
--- a/java/res/drawable-land-hdpi/key_hint_minus_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_minus_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_minus_large_holo.9.png
deleted file mode 100644
index 0df056ee1..000000000
--- a/java/res/drawable-land-hdpi/key_hint_minus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_parenclose_holo.9.png b/java/res/drawable-land-hdpi/key_hint_parenclose_holo.9.png
deleted file mode 100644
index 9d8b05761..000000000
--- a/java/res/drawable-land-hdpi/key_hint_parenclose_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_parenopen_holo.9.png b/java/res/drawable-land-hdpi/key_hint_parenopen_holo.9.png
deleted file mode 100644
index 8e2d8f2ad..000000000
--- a/java/res/drawable-land-hdpi/key_hint_parenopen_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_period_holo.9.png b/java/res/drawable-land-hdpi/key_hint_period_holo.9.png
deleted file mode 100644
index bf8c6d722..000000000
--- a/java/res/drawable-land-hdpi/key_hint_period_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png b/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png
index 3dd85065a..a11b4ac07 100644
--- a/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png
index b0d75f433..3c87c1f7e 100644
--- a/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_question_holo.9.png b/java/res/drawable-land-hdpi/key_hint_question_holo.9.png
index 1a0db31ec..670b4b902 100644
--- a/java/res/drawable-land-hdpi/key_hint_question_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png
index 44dfdc4ea..692f4a68b 100644
--- a/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png b/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png
index bfb612f59..9cc86156e 100644
--- a/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.png
index e73b9e0c6..664467b3e 100644
--- a/java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_semicolon_holo.9.png b/java/res/drawable-land-hdpi/key_hint_semicolon_holo.9.png
deleted file mode 100644
index f35275857..000000000
--- a/java/res/drawable-land-hdpi/key_hint_semicolon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_simplequote_holo.9.png b/java/res/drawable-land-hdpi/key_hint_simplequote_holo.9.png
deleted file mode 100644
index e69a9696e..000000000
--- a/java/res/drawable-land-hdpi/key_hint_simplequote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_slash_holo.9.png b/java/res/drawable-land-hdpi/key_hint_slash_holo.9.png
deleted file mode 100644
index 592ea4434..000000000
--- a/java/res/drawable-land-hdpi/key_hint_slash_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_slash_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_slash_large_holo.9.png
deleted file mode 100644
index b18be7bb5..000000000
--- a/java/res/drawable-land-hdpi/key_hint_slash_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_smaller_holo.9.png b/java/res/drawable-land-hdpi/key_hint_smaller_holo.9.png
deleted file mode 100644
index 145320dab..000000000
--- a/java/res/drawable-land-hdpi/key_hint_smaller_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_star_holo.9.png b/java/res/drawable-land-hdpi/key_hint_star_holo.9.png
deleted file mode 100644
index 9bde78a21..000000000
--- a/java/res/drawable-land-hdpi/key_hint_star_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png b/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png
index b2ab17d41..2cb4077a7 100644
--- a/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.png
index dad34fc72..6b9a49170 100644
--- a/java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.png
+++ b/java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_underscore_holo.9.png b/java/res/drawable-land-hdpi/key_hint_underscore_holo.9.png
deleted file mode 100644
index e4f271918..000000000
--- a/java/res/drawable-land-hdpi/key_hint_underscore_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-hdpi/key_hint_underscore_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_underscore_large_holo.9.png
deleted file mode 100644
index dad34fc72..000000000
--- a/java/res/drawable-land-hdpi/key_hint_underscore_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_at_holo.9.png b/java/res/drawable-land-mdpi/key_hint_at_holo.9.png
index 5b946ff9b..8c84654c9 100644
--- a/java/res/drawable-land-mdpi/key_hint_at_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png
index 852f899ed..b9e095b99 100644
--- a/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png
index 1d9346e6f..3cd0e3c4b 100644
--- a/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png
index 17e9091b4..01b47b25f 100644
--- a/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png
index c2a913c04..b70f71b55 100644
--- a/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.png
index 846f213f1..1ae82d404 100644
--- a/java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_dash_holo.9.png b/java/res/drawable-land-mdpi/key_hint_dash_holo.9.png
deleted file mode 100644
index 1cb0bdfaa..000000000
--- a/java/res/drawable-land-mdpi/key_hint_dash_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_doublecross_holo.9.png b/java/res/drawable-land-mdpi/key_hint_doublecross_holo.9.png
deleted file mode 100644
index 7e7ceb3fc..000000000
--- a/java/res/drawable-land-mdpi/key_hint_doublecross_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_equal_holo.9.png b/java/res/drawable-land-mdpi/key_hint_equal_holo.9.png
deleted file mode 100644
index 8e570595c..000000000
--- a/java/res/drawable-land-mdpi/key_hint_equal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png
index ce8e8de43..3409535fb 100644
--- a/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png
index 035dcf85d..8dd2f27c4 100644
--- a/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_larger_holo.9.png b/java/res/drawable-land-mdpi/key_hint_larger_holo.9.png
deleted file mode 100644
index 37c05275e..000000000
--- a/java/res/drawable-land-mdpi/key_hint_larger_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_parenclose_holo.9.png b/java/res/drawable-land-mdpi/key_hint_parenclose_holo.9.png
deleted file mode 100644
index 97e1f1449..000000000
--- a/java/res/drawable-land-mdpi/key_hint_parenclose_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_parenopen_holo.9.png b/java/res/drawable-land-mdpi/key_hint_parenopen_holo.9.png
deleted file mode 100644
index 36add5d51..000000000
--- a/java/res/drawable-land-mdpi/key_hint_parenopen_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_period_holo.9.png b/java/res/drawable-land-mdpi/key_hint_period_holo.9.png
deleted file mode 100644
index 4a70f07dc..000000000
--- a/java/res/drawable-land-mdpi/key_hint_period_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png
index 931390b45..51e86ba11 100644
--- a/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png
index e6f9f8a9c..bf30f92d8 100644
--- a/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_question_holo.9.png b/java/res/drawable-land-mdpi/key_hint_question_holo.9.png
index 6cbeb5993..38b5d6102 100644
--- a/java/res/drawable-land-mdpi/key_hint_question_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png
index bfd58de09..448a02700 100644
--- a/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png
index 3b361b71c..92fe8eaf8 100644
--- a/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png
index 2a08aa12e..a777d0187 100644
--- a/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_semicolon_holo.9.png b/java/res/drawable-land-mdpi/key_hint_semicolon_holo.9.png
deleted file mode 100644
index 63a3875b5..000000000
--- a/java/res/drawable-land-mdpi/key_hint_semicolon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_simplequote_holo.9.png b/java/res/drawable-land-mdpi/key_hint_simplequote_holo.9.png
deleted file mode 100644
index 3c217b058..000000000
--- a/java/res/drawable-land-mdpi/key_hint_simplequote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_slash_holo.9.png b/java/res/drawable-land-mdpi/key_hint_slash_holo.9.png
deleted file mode 100644
index 98545f0ac..000000000
--- a/java/res/drawable-land-mdpi/key_hint_slash_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_slash_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_slash_large_holo.9.png
deleted file mode 100644
index a3a02973c..000000000
--- a/java/res/drawable-land-mdpi/key_hint_slash_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_smaller_holo.9.png b/java/res/drawable-land-mdpi/key_hint_smaller_holo.9.png
deleted file mode 100644
index 5af183644..000000000
--- a/java/res/drawable-land-mdpi/key_hint_smaller_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_star_holo.9.png b/java/res/drawable-land-mdpi/key_hint_star_holo.9.png
deleted file mode 100644
index 18304d738..000000000
--- a/java/res/drawable-land-mdpi/key_hint_star_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png
index 06f3efb7e..7a452c5e2 100644
--- a/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png
index 50f99a191..f738b0202 100644
--- a/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/hint_popup_holo.9.png b/java/res/drawable-land-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..3cd20d34f
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_at_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_at_holo.9.png
new file mode 100644
index 000000000..1d257cba2
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_at_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_at_large_holo.9.png
new file mode 100644
index 000000000..53de283da
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_colon_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_colon_holo.9.png
new file mode 100644
index 000000000..73394b57b
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_colon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_colon_large_holo.9.png
new file mode 100644
index 000000000..a4a6acbe1
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_comma_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_comma_holo.9.png
new file mode 100644
index 000000000..d4dbdf4bf
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_comma_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_comma_large_holo.9.png
new file mode 100644
index 000000000..aea5c8ed5
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_comma_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_exclamation_holo.9.png
new file mode 100644
index 000000000..078d1d8f7
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_exclamation_large_holo.9.png
new file mode 100644
index 000000000..ddd6b13cb
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_plus_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_plus_holo.9.png
new file mode 100644
index 000000000..d0ce9c948
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_plus_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_plus_large_holo.9.png
new file mode 100644
index 000000000..9cf20e8b1
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_question_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_question_holo.9.png
new file mode 100644
index 000000000..1e886d897
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_question_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_question_large_holo.9.png
new file mode 100644
index 000000000..826228796
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_quote_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_quote_holo.9.png
new file mode 100644
index 000000000..fd8bbad83
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_quote_large_holo.9.png
new file mode 100644
index 000000000..51d5b498c
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_underline_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_underline_holo.9.png
new file mode 100644
index 000000000..37d2fa58e
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-xhdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-land-xhdpi/key_hint_underline_large_holo.9.png
new file mode 100644
index 000000000..4249a8edf
--- /dev/null
+++ b/java/res/drawable-land-xhdpi/key_hint_underline_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable/btn_center_default.9.png b/java/res/drawable-mdpi/btn_center_default.9.png
index d5ec36ba4..d5ec36ba4 100755..100644
--- a/java/res/drawable/btn_center_default.9.png
+++ b/java/res/drawable-mdpi/btn_center_default.9.png
Binary files differ
diff --git a/java/res/drawable/btn_center_pressed.9.png b/java/res/drawable-mdpi/btn_center_pressed.9.png
index 593a679d0..593a679d0 100755..100644
--- a/java/res/drawable/btn_center_pressed.9.png
+++ b/java/res/drawable-mdpi/btn_center_pressed.9.png
Binary files differ
diff --git a/java/res/drawable/btn_center_selected.9.png b/java/res/drawable-mdpi/btn_center_selected.9.png
index f1914a886..f1914a886 100644
--- a/java/res/drawable/btn_center_selected.9.png
+++ b/java/res/drawable-mdpi/btn_center_selected.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/cancel.png b/java/res/drawable-mdpi/cancel.png
deleted file mode 100644
index 713a37875..000000000
--- a/java/res/drawable-mdpi/cancel.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/cancel_holo.9.png b/java/res/drawable-mdpi/cancel_holo.9.png
deleted file mode 100644
index 74f967eb9..000000000
--- a/java/res/drawable-mdpi/cancel_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/dialog_bubble_step02.9.png b/java/res/drawable-mdpi/dialog_bubble_step02.9.png
deleted file mode 100644
index d77f85fe2..000000000
--- a/java/res/drawable-mdpi/dialog_bubble_step02.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/dialog_bubble_step07.9.png b/java/res/drawable-mdpi/dialog_bubble_step07.9.png
deleted file mode 100644
index 80f4a0eaa..000000000
--- a/java/res/drawable-mdpi/dialog_bubble_step07.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_at_holo.9.png b/java/res/drawable-mdpi/key_hint_at_holo.9.png
index 5b946ff9b..8c84654c9 100644
--- a/java/res/drawable-mdpi/key_hint_at_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-mdpi/key_hint_at_large_holo.9.png
index 852f899ed..b9e095b99 100644
--- a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-mdpi/key_hint_colon_holo.9.png
index 1d9346e6f..3cd0e3c4b 100644
--- a/java/res/drawable-mdpi/key_hint_colon_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_colon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png
index 17e9091b4..01b47b25f 100644
--- a/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-mdpi/key_hint_comma_holo.9.png
index c2a913c04..b70f71b55 100644
--- a/java/res/drawable-mdpi/key_hint_comma_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_comma_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-mdpi/key_hint_comma_large_holo.9.png
index 846f213f1..1ae82d404 100644
--- a/java/res/drawable-mdpi/key_hint_comma_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_comma_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_dash_holo.9.png b/java/res/drawable-mdpi/key_hint_dash_holo.9.png
deleted file mode 100644
index 2ee22ba79..000000000
--- a/java/res/drawable-mdpi/key_hint_dash_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_doublecross_holo.9.png b/java/res/drawable-mdpi/key_hint_doublecross_holo.9.png
deleted file mode 100644
index 0da933239..000000000
--- a/java/res/drawable-mdpi/key_hint_doublecross_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_equal_holo.9.png b/java/res/drawable-mdpi/key_hint_equal_holo.9.png
deleted file mode 100644
index f5a9ba2f4..000000000
--- a/java/res/drawable-mdpi/key_hint_equal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png
index ce8e8de43..3409535fb 100644
--- a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png
index 035dcf85d..8dd2f27c4 100644
--- a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_larger_holo.9.png b/java/res/drawable-mdpi/key_hint_larger_holo.9.png
deleted file mode 100644
index 50652bb13..000000000
--- a/java/res/drawable-mdpi/key_hint_larger_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_minus_large_holo.9.png b/java/res/drawable-mdpi/key_hint_minus_large_holo.9.png
deleted file mode 100644
index 52c28dd87..000000000
--- a/java/res/drawable-mdpi/key_hint_minus_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_0.9.png b/java/res/drawable-mdpi/key_hint_num0.9.png
index 61ad1b50a..61ad1b50a 100644
--- a/java/res/drawable-mdpi/keyboard_hint_0.9.png
+++ b/java/res/drawable-mdpi/key_hint_num0.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_1.9.png b/java/res/drawable-mdpi/key_hint_num1.9.png
index cd7772e71..cd7772e71 100644
--- a/java/res/drawable-mdpi/keyboard_hint_1.9.png
+++ b/java/res/drawable-mdpi/key_hint_num1.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_2.9.png b/java/res/drawable-mdpi/key_hint_num2.9.png
index fa5f8b79c..fa5f8b79c 100644
--- a/java/res/drawable-mdpi/keyboard_hint_2.9.png
+++ b/java/res/drawable-mdpi/key_hint_num2.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_3.9.png b/java/res/drawable-mdpi/key_hint_num3.9.png
index 0c7336cb7..0c7336cb7 100644
--- a/java/res/drawable-mdpi/keyboard_hint_3.9.png
+++ b/java/res/drawable-mdpi/key_hint_num3.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_4.9.png b/java/res/drawable-mdpi/key_hint_num4.9.png
index 73ef06c0e..73ef06c0e 100644
--- a/java/res/drawable-mdpi/keyboard_hint_4.9.png
+++ b/java/res/drawable-mdpi/key_hint_num4.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_5.9.png b/java/res/drawable-mdpi/key_hint_num5.9.png
index aea460e1c..aea460e1c 100644
--- a/java/res/drawable-mdpi/keyboard_hint_5.9.png
+++ b/java/res/drawable-mdpi/key_hint_num5.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_6.9.png b/java/res/drawable-mdpi/key_hint_num6.9.png
index 16a9237e3..16a9237e3 100644
--- a/java/res/drawable-mdpi/keyboard_hint_6.9.png
+++ b/java/res/drawable-mdpi/key_hint_num6.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_7.9.png b/java/res/drawable-mdpi/key_hint_num7.9.png
index 6747a19c0..6747a19c0 100644
--- a/java/res/drawable-mdpi/keyboard_hint_7.9.png
+++ b/java/res/drawable-mdpi/key_hint_num7.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_8.9.png b/java/res/drawable-mdpi/key_hint_num8.9.png
index 28be2fb86..28be2fb86 100644
--- a/java/res/drawable-mdpi/keyboard_hint_8.9.png
+++ b/java/res/drawable-mdpi/key_hint_num8.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_9.9.png b/java/res/drawable-mdpi/key_hint_num9.9.png
index 731d63b1b..731d63b1b 100644
--- a/java/res/drawable-mdpi/keyboard_hint_9.9.png
+++ b/java/res/drawable-mdpi/key_hint_num9.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_parenclose_holo.9.png b/java/res/drawable-mdpi/key_hint_parenclose_holo.9.png
deleted file mode 100644
index 52ee86a0f..000000000
--- a/java/res/drawable-mdpi/key_hint_parenclose_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_parenopen_holo.9.png b/java/res/drawable-mdpi/key_hint_parenopen_holo.9.png
deleted file mode 100644
index b0ed388ad..000000000
--- a/java/res/drawable-mdpi/key_hint_parenopen_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_period_holo.9.png b/java/res/drawable-mdpi/key_hint_period_holo.9.png
deleted file mode 100644
index 8d798a57f..000000000
--- a/java/res/drawable-mdpi/key_hint_period_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-mdpi/key_hint_plus_holo.9.png
index 931390b45..51e86ba11 100644
--- a/java/res/drawable-mdpi/key_hint_plus_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_plus_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png
index e6f9f8a9c..bf30f92d8 100644
--- a/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_question_holo.9.png b/java/res/drawable-mdpi/key_hint_question_holo.9.png
index 6cbeb5993..38b5d6102 100644
--- a/java/res/drawable-mdpi/key_hint_question_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-mdpi/key_hint_question_large_holo.9.png
index bfd58de09..448a02700 100644
--- a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_holo.9.png
index 3b361b71c..92fe8eaf8 100644
--- a/java/res/drawable-mdpi/key_hint_quote_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png
index 2a08aa12e..a777d0187 100644
--- a/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_semicolon_holo.9.png b/java/res/drawable-mdpi/key_hint_semicolon_holo.9.png
deleted file mode 100644
index 7f9e8c90e..000000000
--- a/java/res/drawable-mdpi/key_hint_semicolon_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_simplequote_holo.9.png b/java/res/drawable-mdpi/key_hint_simplequote_holo.9.png
deleted file mode 100644
index 5e1a45c0e..000000000
--- a/java/res/drawable-mdpi/key_hint_simplequote_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_slash_holo.9.png b/java/res/drawable-mdpi/key_hint_slash_holo.9.png
deleted file mode 100644
index 645586a30..000000000
--- a/java/res/drawable-mdpi/key_hint_slash_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_slash_large_holo.9.png b/java/res/drawable-mdpi/key_hint_slash_large_holo.9.png
deleted file mode 100644
index 75c3bb1a6..000000000
--- a/java/res/drawable-mdpi/key_hint_slash_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_smaller_holo.9.png b/java/res/drawable-mdpi/key_hint_smaller_holo.9.png
deleted file mode 100644
index 2a0587cbd..000000000
--- a/java/res/drawable-mdpi/key_hint_smaller_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_star_holo.9.png b/java/res/drawable-mdpi/key_hint_star_holo.9.png
deleted file mode 100644
index 9f33b9830..000000000
--- a/java/res/drawable-mdpi/key_hint_star_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-mdpi/key_hint_underline_holo.9.png
index b137b0021..7a452c5e2 100644
--- a/java/res/drawable-mdpi/key_hint_underline_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png
index 9845e3bd6..f738b0202 100644
--- a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_at.9.png b/java/res/drawable-mdpi/keyboard_hint_at.9.png
deleted file mode 100644
index 69baedef4..000000000
--- a/java/res/drawable-mdpi/keyboard_hint_at.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_colon.9.png b/java/res/drawable-mdpi/keyboard_hint_colon.9.png
deleted file mode 100644
index 9d0d7cbab..000000000
--- a/java/res/drawable-mdpi/keyboard_hint_colon.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png b/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png
deleted file mode 100644
index d24aa0f07..000000000
--- a/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png b/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png
deleted file mode 100644
index f6cc7fe84..000000000
--- a/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_greater.9.png b/java/res/drawable-mdpi/keyboard_hint_greater.9.png
deleted file mode 100644
index 5210392bf..000000000
--- a/java/res/drawable-mdpi/keyboard_hint_greater.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_plus.9.png b/java/res/drawable-mdpi/keyboard_hint_plus.9.png
deleted file mode 100644
index d1d85ac87..000000000
--- a/java/res/drawable-mdpi/keyboard_hint_plus.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_question.9.png b/java/res/drawable-mdpi/keyboard_hint_question.9.png
deleted file mode 100644
index 37f6e5f36..000000000
--- a/java/res/drawable-mdpi/keyboard_hint_question.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_quote.9.png b/java/res/drawable-mdpi/keyboard_hint_quote.9.png
deleted file mode 100644
index e7d2cb5e3..000000000
--- a/java/res/drawable-mdpi/keyboard_hint_quote.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_smaller.9.png b/java/res/drawable-mdpi/keyboard_hint_smaller.9.png
deleted file mode 100644
index 76553cf96..000000000
--- a/java/res/drawable-mdpi/keyboard_hint_smaller.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_star.9.png b/java/res/drawable-mdpi/keyboard_hint_star.9.png
deleted file mode 100644
index 47978c46c..000000000
--- a/java/res/drawable-mdpi/keyboard_hint_star.9.png
+++ /dev/null
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 286cf84fc..3d6a76f66 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/mic_base.png b/java/res/drawable-mdpi/mic_base.png
index 53e29ff4b..53e29ff4b 100644
--- a/java/res/drawable/mic_base.png
+++ b/java/res/drawable-mdpi/mic_base.png
Binary files differ
diff --git a/java/res/drawable/mic_full.png b/java/res/drawable-mdpi/mic_full.png
index e3e3dfac3..e3e3dfac3 100644
--- a/java/res/drawable/mic_full.png
+++ b/java/res/drawable-mdpi/mic_full.png
Binary files differ
diff --git a/java/res/drawable-mdpi/mic_slash_holo.png b/java/res/drawable-mdpi/mic_slash_holo.png
deleted file mode 100644
index 07181e6fa..000000000
--- a/java/res/drawable-mdpi/mic_slash_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ok_cancel.png b/java/res/drawable-mdpi/ok_cancel.png
deleted file mode 100644
index 20d10f986..000000000
--- a/java/res/drawable-mdpi/ok_cancel.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ok_cancel_holo.9.png b/java/res/drawable-mdpi/ok_cancel_holo.9.png
deleted file mode 100644
index 035a4f6f0..000000000
--- a/java/res/drawable-mdpi/ok_cancel_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level0.png b/java/res/drawable-mdpi/speak_now_level0.png
deleted file mode 100644
index 5bd13603e..000000000
--- a/java/res/drawable-mdpi/speak_now_level0.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level0_holo.png b/java/res/drawable-mdpi/speak_now_level0_holo.png
deleted file mode 100644
index 2090b95a5..000000000
--- a/java/res/drawable-mdpi/speak_now_level0_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level1.png b/java/res/drawable-mdpi/speak_now_level1.png
deleted file mode 100644
index ccb76b879..000000000
--- a/java/res/drawable-mdpi/speak_now_level1.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level1_holo.png b/java/res/drawable-mdpi/speak_now_level1_holo.png
deleted file mode 100644
index 8acf482aa..000000000
--- a/java/res/drawable-mdpi/speak_now_level1_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level2.png b/java/res/drawable-mdpi/speak_now_level2.png
deleted file mode 100644
index 715f90081..000000000
--- a/java/res/drawable-mdpi/speak_now_level2.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level2_holo.png b/java/res/drawable-mdpi/speak_now_level2_holo.png
deleted file mode 100644
index 4b307d542..000000000
--- a/java/res/drawable-mdpi/speak_now_level2_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level3.png b/java/res/drawable-mdpi/speak_now_level3.png
deleted file mode 100644
index 725248a25..000000000
--- a/java/res/drawable-mdpi/speak_now_level3.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level3_holo.png b/java/res/drawable-mdpi/speak_now_level3_holo.png
deleted file mode 100644
index 7c7cd666f..000000000
--- a/java/res/drawable-mdpi/speak_now_level3_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level4.png b/java/res/drawable-mdpi/speak_now_level4.png
deleted file mode 100644
index ff6c50b40..000000000
--- a/java/res/drawable-mdpi/speak_now_level4.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level4_holo.png b/java/res/drawable-mdpi/speak_now_level4_holo.png
deleted file mode 100644
index 362c45337..000000000
--- a/java/res/drawable-mdpi/speak_now_level4_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level5.png b/java/res/drawable-mdpi/speak_now_level5.png
deleted file mode 100644
index a5d6b89d6..000000000
--- a/java/res/drawable-mdpi/speak_now_level5.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level5_holo.png b/java/res/drawable-mdpi/speak_now_level5_holo.png
deleted file mode 100644
index 1886befff..000000000
--- a/java/res/drawable-mdpi/speak_now_level5_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level6.png b/java/res/drawable-mdpi/speak_now_level6.png
deleted file mode 100644
index dcdb48d08..000000000
--- a/java/res/drawable-mdpi/speak_now_level6.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level6_holo.png b/java/res/drawable-mdpi/speak_now_level6_holo.png
deleted file mode 100644
index 88e4131c8..000000000
--- a/java/res/drawable-mdpi/speak_now_level6_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_bkeyboard_done.png b/java/res/drawable-mdpi/sym_bkeyboard_done.png
deleted file mode 100644
index 05ce7c643..000000000
--- a/java/res/drawable-mdpi/sym_bkeyboard_done.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_done.png b/java/res/drawable-mdpi/sym_keyboard_done.png
deleted file mode 100644
index c0d6d1394..000000000
--- a/java/res/drawable-mdpi/sym_keyboard_done.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_feedback_done.png b/java/res/drawable-mdpi/sym_keyboard_feedback_done.png
deleted file mode 100644
index 0d7ebd4e5..000000000
--- a/java/res/drawable-mdpi/sym_keyboard_feedback_done.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png b/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png
deleted file mode 100644
index 494524a66..000000000
--- a/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_mic_disabled.png b/java/res/drawable-mdpi/sym_keyboard_mic_disabled.png
deleted file mode 100644
index e926b3fa6..000000000
--- a/java/res/drawable-mdpi/sym_keyboard_mic_disabled.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/voice_ime_background.9.png b/java/res/drawable-mdpi/voice_ime_background.9.png
deleted file mode 100644
index 9b15bc25f..000000000
--- a/java/res/drawable-mdpi/voice_ime_background.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/voice_swipe_hint.png b/java/res/drawable-mdpi/voice_swipe_hint.png
deleted file mode 100644
index bb8873251..000000000
--- a/java/res/drawable-mdpi/voice_swipe_hint.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable/vs_dialog_blue.9.png b/java/res/drawable-mdpi/vs_dialog_blue.9.png
index cf27e8f43..cf27e8f43 100644
--- a/java/res/drawable/vs_dialog_blue.9.png
+++ b/java/res/drawable-mdpi/vs_dialog_blue.9.png
Binary files differ
diff --git a/java/res/drawable/vs_dialog_red.9.png b/java/res/drawable-mdpi/vs_dialog_red.9.png
index 6c08d5a30..6c08d5a30 100644
--- a/java/res/drawable/vs_dialog_red.9.png
+++ b/java/res/drawable-mdpi/vs_dialog_red.9.png
Binary files differ
diff --git a/java/res/drawable/vs_dialog_yellow.9.png b/java/res/drawable-mdpi/vs_dialog_yellow.9.png
index 2fb06c263..2fb06c263 100644
--- a/java/res/drawable/vs_dialog_yellow.9.png
+++ b/java/res/drawable-mdpi/vs_dialog_yellow.9.png
Binary files differ
diff --git a/java/res/drawable/vs_popup_mic_edge.png b/java/res/drawable-mdpi/vs_popup_mic_edge.png
index 4ff6337a2..4ff6337a2 100644
--- a/java/res/drawable/vs_popup_mic_edge.png
+++ b/java/res/drawable-mdpi/vs_popup_mic_edge.png
Binary files differ
diff --git a/java/res/drawable-mdpi/working.png b/java/res/drawable-mdpi/working.png
deleted file mode 100644
index 4a930c52d..000000000
--- a/java/res/drawable-mdpi/working.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw600dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 000000000..544ed7f78
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-hdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..2ffc6ea2b
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 000000000..39219a583
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 000000000..e5cc5b7e2
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/sym_keyboard_numsymbol_holo.png b/java/res/drawable-sw600dp-hdpi/sym_keyboard_numsymbol_holo.png
new file mode 100644
index 000000000..398eaea12
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/sym_keyboard_numsymbol_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-hdpi/sym_keyboard_tab_holo.png b/java/res/drawable-sw600dp-hdpi/sym_keyboard_tab_holo.png
new file mode 100644
index 000000000..1780f682b
--- /dev/null
+++ b/java/res/drawable-sw600dp-hdpi/sym_keyboard_tab_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-land-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-land-hdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..2ffc6ea2b
--- /dev/null
+++ b/java/res/drawable-sw600dp-land-hdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..f5d15b728
--- /dev/null
+++ b/java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-land-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-land-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..bc37fa844
--- /dev/null
+++ b/java/res/drawable-sw600dp-land-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png
new file mode 100644
index 000000000..2ad73041e
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
new file mode 100644
index 000000000..fc21e79c4
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
new file mode 100644
index 000000000..76cfbb221
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
new file mode 100644
index 000000000..73748c2fb
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
new file mode 100644
index 000000000..059d4ac2e
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
new file mode 100644
index 000000000..e5cfdec88
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_normal_holo.9.png
new file mode 100644
index 000000000..060524a53
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png
new file mode 100644
index 000000000..f4b061e07
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 000000000..ffa7386df
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..f5d15b728
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_at_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_at_holo.9.png
new file mode 100644
index 000000000..8c84654c9
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_at_large_holo.9.png
new file mode 100644
index 000000000..b9e095b99
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_colon_holo.9.png
new file mode 100644
index 000000000..3cd0e3c4b
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_colon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_colon_large_holo.9.png
new file mode 100644
index 000000000..01b47b25f
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_comma_holo.9.png
new file mode 100644
index 000000000..b70f71b55
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_comma_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_comma_large_holo.9.png
new file mode 100644
index 000000000..1ae82d404
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_comma_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_holo.9.png
new file mode 100644
index 000000000..3409535fb
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_large_holo.9.png
new file mode 100644
index 000000000..8dd2f27c4
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_plus_holo.9.png
new file mode 100644
index 000000000..51e86ba11
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_plus_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_plus_large_holo.9.png
new file mode 100644
index 000000000..bf30f92d8
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_question_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_question_holo.9.png
new file mode 100644
index 000000000..38b5d6102
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_question_large_holo.9.png
new file mode 100644
index 000000000..448a02700
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_quote_holo.9.png
new file mode 100644
index 000000000..92fe8eaf8
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_quote_large_holo.9.png
new file mode 100644
index 000000000..a777d0187
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_underline_holo.9.png
new file mode 100644
index 000000000..7a452c5e2
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/key_hint_underline_large_holo.9.png
new file mode 100644
index 000000000..f738b0202
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/key_hint_underline_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_underscore_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/keyboard_background_holo.9.png
index ee0e83578..a93966c92 100644
--- a/java/res/drawable-mdpi/key_hint_underscore_large_holo.9.png
+++ b/java/res/drawable-sw600dp-mdpi/keyboard_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 000000000..5f152175d
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 000000000..77a806c1e
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/keyboard_popup_panel_background_holo.9.png b/java/res/drawable-sw600dp-mdpi/keyboard_popup_panel_background_holo.9.png
new file mode 100644
index 000000000..7be7ab7e2
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/keyboard_popup_panel_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-sw600dp-mdpi/keyboard_suggest_strip_holo.9.png
new file mode 100644
index 000000000..1f87a68e9
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/keyboard_suggest_strip_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_delete_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_delete_holo.png
new file mode 100644
index 000000000..155579169
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_delete_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num0_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num0_holo.png
new file mode 100644
index 000000000..e1d395b45
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num0_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num1_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num1_holo.png
new file mode 100644
index 000000000..225436ac2
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num1_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num2_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num2_holo.png
new file mode 100644
index 000000000..e513fa4a0
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num2_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num3_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num3_holo.png
new file mode 100644
index 000000000..b91e005fc
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num3_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num4_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num4_holo.png
new file mode 100644
index 000000000..65f88245b
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num4_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num5_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num5_holo.png
new file mode 100644
index 000000000..b89ef07eb
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num5_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num6_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num6_holo.png
new file mode 100644
index 000000000..931275a9e
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num6_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num7_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num7_holo.png
new file mode 100644
index 000000000..9396c4c8f
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num7_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num8_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num8_holo.png
new file mode 100644
index 000000000..12e3eef45
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num8_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num9_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num9_holo.png
new file mode 100644
index 000000000..6911c2b4f
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num9_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_numbpound_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numbpound_holo.png
new file mode 100644
index 000000000..e3a8b4900
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numbpound_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_numbstar_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numbstar_holo.png
new file mode 100644
index 000000000..e80e9345f
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numbstar_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_numsymbol_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numsymbol_holo.png
new file mode 100644
index 000000000..73153849c
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numsymbol_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_return_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_return_holo.png
new file mode 100644
index 000000000..d519ccecf
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_return_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_settings_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_settings_holo.png
new file mode 100644
index 000000000..784a45054
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_settings_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_holo.png
new file mode 100644
index 000000000..91d6e32f9
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_locked_holo.png
new file mode 100644
index 000000000..2bd053656
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_locked_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_space_holo.png
index 594fe211c..25e655d96 100644
--- a/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_space_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_tab_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_tab_holo.png
new file mode 100644
index 000000000..5acd12cc4
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_tab_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_holo.png
new file mode 100644
index 000000000..c1116dc17
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_off_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_off_holo.png
new file mode 100644
index 000000000..44919dfcc
--- /dev/null
+++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_off_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw600dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 000000000..8b5d1b098
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..bc37fa844
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 000000000..8d43a4bdb
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 000000000..e973c7e6a
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/sym_keyboard_numsymbol_holo.png b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_numsymbol_holo.png
new file mode 100644
index 000000000..c7a8b286a
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_numsymbol_holo.png
Binary files differ
diff --git a/java/res/drawable-sw600dp-xhdpi/sym_keyboard_tab_holo.png b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_tab_holo.png
new file mode 100644
index 000000000..fd9f8cce6
--- /dev/null
+++ b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_tab_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw768dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 000000000..544ed7f78
--- /dev/null
+++ b/java/res/drawable-sw768dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-hdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..2ffc6ea2b
--- /dev/null
+++ b/java/res/drawable-sw768dp-hdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 000000000..099a50873
--- /dev/null
+++ b/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 000000000..c21240f17
--- /dev/null
+++ b/java/res/drawable-sw768dp-hdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-land-hdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..2b93014e1
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-hdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_minus_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/hint_popup_holo.9.png
index e59a31587..c409cea00 100644
--- a/java/res/drawable-mdpi/key_hint_minus_holo.9.png
+++ b/java/res/drawable-sw768dp-land-mdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_at_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_at_holo.9.png
new file mode 100644
index 000000000..5b946ff9b
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_at_large_holo.9.png
new file mode 100644
index 000000000..852f899ed
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_holo.9.png
new file mode 100644
index 000000000..1d9346e6f
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_large_holo.9.png
new file mode 100644
index 000000000..17e9091b4
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_underscore_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_holo.9.png
index 52e871e0a..c2a913c04 100644
--- a/java/res/drawable-land-mdpi/key_hint_underscore_holo.9.png
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_minus_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_large_holo.9.png
index e59a31587..846f213f1 100644
--- a/java/res/drawable-land-mdpi/key_hint_minus_holo.9.png
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_holo.9.png
new file mode 100644
index 000000000..ce8e8de43
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_large_holo.9.png
new file mode 100644
index 000000000..035dcf85d
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_holo.9.png
new file mode 100644
index 000000000..931390b45
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_large_holo.9.png
new file mode 100644
index 000000000..e6f9f8a9c
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_question_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_question_holo.9.png
new file mode 100644
index 000000000..6cbeb5993
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_question_large_holo.9.png
new file mode 100644
index 000000000..bfd58de09
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_minus_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_holo.9.png
index 52c28dd87..3b361b71c 100644
--- a/java/res/drawable-land-mdpi/key_hint_minus_large_holo.9.png
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_large_holo.9.png
new file mode 100644
index 000000000..2a08aa12e
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_underscore_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_holo.9.png
index 52e871e0a..06f3efb7e 100644
--- a/java/res/drawable-mdpi/key_hint_underscore_holo.9.png
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_underscore_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_large_holo.9.png
index ee0e83578..50f99a191 100644
--- a/java/res/drawable-land-mdpi/key_hint_underscore_large_holo.9.png
+++ b/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-land-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..3cd20d34f
--- /dev/null
+++ b/java/res/drawable-sw768dp-land-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png
new file mode 100644
index 000000000..2ad73041e
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
new file mode 100644
index 000000000..fc21e79c4
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
new file mode 100644
index 000000000..76cfbb221
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
new file mode 100644
index 000000000..73748c2fb
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
new file mode 100644
index 000000000..059d4ac2e
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
new file mode 100644
index 000000000..e5cfdec88
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_normal_holo.9.png
new file mode 100644
index 000000000..060524a53
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png
new file mode 100644
index 000000000..f4b061e07
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 000000000..ffa7386df
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-mdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..01d1139d8
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_at_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_at_holo.9.png
new file mode 100644
index 000000000..8c84654c9
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_at_large_holo.9.png
new file mode 100644
index 000000000..b9e095b99
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_colon_holo.9.png
new file mode 100644
index 000000000..3cd0e3c4b
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_colon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_colon_large_holo.9.png
new file mode 100644
index 000000000..01b47b25f
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_comma_holo.9.png
new file mode 100644
index 000000000..b70f71b55
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_comma_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_comma_large_holo.9.png
new file mode 100644
index 000000000..1ae82d404
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_comma_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_holo.9.png
new file mode 100644
index 000000000..3409535fb
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_large_holo.9.png
new file mode 100644
index 000000000..8dd2f27c4
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_plus_holo.9.png
new file mode 100644
index 000000000..51e86ba11
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_plus_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_plus_large_holo.9.png
new file mode 100644
index 000000000..bf30f92d8
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_question_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_question_holo.9.png
new file mode 100644
index 000000000..38b5d6102
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_question_large_holo.9.png
new file mode 100644
index 000000000..448a02700
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_quote_holo.9.png
new file mode 100644
index 000000000..92fe8eaf8
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_quote_large_holo.9.png
new file mode 100644
index 000000000..a777d0187
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_underline_holo.9.png
new file mode 100644
index 000000000..7a452c5e2
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/key_hint_underline_large_holo.9.png
new file mode 100644
index 000000000..f738b0202
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/key_hint_underline_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/keyboard_background_holo.9.png b/java/res/drawable-sw768dp-mdpi/keyboard_background_holo.9.png
new file mode 100644
index 000000000..a93966c92
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/keyboard_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw768dp-mdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 000000000..286cf84fc
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw768dp-mdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 000000000..e3f5be86d
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/keyboard_popup_panel_background_holo.9.png b/java/res/drawable-sw768dp-mdpi/keyboard_popup_panel_background_holo.9.png
new file mode 100644
index 000000000..7be7ab7e2
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/keyboard_popup_panel_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-sw768dp-mdpi/keyboard_suggest_strip_holo.9.png
new file mode 100644
index 000000000..1f87a68e9
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/keyboard_suggest_strip_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_delete_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_delete_holo.png
new file mode 100644
index 000000000..155579169
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_delete_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num0_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num0_holo.png
new file mode 100644
index 000000000..e1d395b45
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num0_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num1_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num1_holo.png
new file mode 100644
index 000000000..225436ac2
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num1_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num2_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num2_holo.png
new file mode 100644
index 000000000..e513fa4a0
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num2_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num3_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num3_holo.png
new file mode 100644
index 000000000..b91e005fc
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num3_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num4_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num4_holo.png
new file mode 100644
index 000000000..65f88245b
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num4_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num5_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num5_holo.png
new file mode 100644
index 000000000..b89ef07eb
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num5_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num6_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num6_holo.png
new file mode 100644
index 000000000..931275a9e
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num6_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num7_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num7_holo.png
new file mode 100644
index 000000000..9396c4c8f
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num7_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num8_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num8_holo.png
new file mode 100644
index 000000000..12e3eef45
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num8_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num9_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num9_holo.png
new file mode 100644
index 000000000..6911c2b4f
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num9_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbpound_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbpound_holo.png
new file mode 100644
index 000000000..e3a8b4900
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbpound_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbstar_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbstar_holo.png
new file mode 100644
index 000000000..e80e9345f
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbstar_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_return_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_return_holo.png
new file mode 100644
index 000000000..d519ccecf
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_return_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_settings_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_settings_holo.png
new file mode 100644
index 000000000..784a45054
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_settings_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_holo.png
new file mode 100644
index 000000000..91d6e32f9
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_locked_holo.png
new file mode 100644
index 000000000..2bd053656
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_locked_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_space_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_space_holo.png
new file mode 100644
index 000000000..25e655d96
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_space_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_holo.png
new file mode 100644
index 000000000..c1116dc17
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_off_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_off_holo.png
new file mode 100644
index 000000000..44919dfcc
--- /dev/null
+++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_off_holo.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw768dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 000000000..8b5d1b098
--- /dev/null
+++ b/java/res/drawable-sw768dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-xhdpi/hint_popup_holo.9.png
new file mode 100644
index 000000000..bc37fa844
--- /dev/null
+++ b/java/res/drawable-sw768dp-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_background_holo.9.png
new file mode 100644
index 000000000..38c84e81b
--- /dev/null
+++ b/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png
new file mode 100644
index 000000000..f66e54538
--- /dev/null
+++ b/java/res/drawable-sw768dp-xhdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png
new file mode 100644
index 000000000..eae1e3a54
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.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
new file mode 100644
index 000000000..3e4a81247
--- /dev/null
+++ 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.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png
new file mode 100644
index 000000000..13bad8f1a
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.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
new file mode 100644
index 000000000..d61dd2b88
--- /dev/null
+++ 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.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png
new file mode 100644
index 000000000..853b8bc6e
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.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
new file mode 100644
index 000000000..c127e2ad0
--- /dev/null
+++ 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.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png
new file mode 100644
index 000000000..1edfd64fe
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.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
new file mode 100644
index 000000000..ac3f3581b
--- /dev/null
+++ 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.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png
new file mode 100644
index 000000000..dfdbfadd3
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.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
new file mode 100644
index 000000000..e5de3b0a2
--- /dev/null
+++ 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.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png
new file mode 100644
index 000000000..0e2733e17
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.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
new file mode 100644
index 000000000..c63b69a6c
--- /dev/null
+++ 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_light_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png
new file mode 100644
index 000000000..ea13a7fdf
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.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
new file mode 100644
index 000000000..e1361edf2
--- /dev/null
+++ 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_popup_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_normal.9.png
new file mode 100644
index 000000000..2ed1b3447
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_normal.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png
new file mode 100644
index 000000000..057c5716e
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png
new file mode 100644
index 000000000..5d8e46de0
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.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
new file mode 100644
index 000000000..6efd3a759
--- /dev/null
+++ 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_popup_selected_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
new file mode 100644
index 000000000..3ed9b1e7c
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.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
new file mode 100644
index 000000000..bc37fa844
--- /dev/null
+++ b/java/res/drawable-xhdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_at_holo.9.png b/java/res/drawable-xhdpi/key_hint_at_holo.9.png
new file mode 100644
index 000000000..1d257cba2
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_at_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_at_large_holo.9.png
new file mode 100644
index 000000000..53de283da
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_colon_holo.9.png b/java/res/drawable-xhdpi/key_hint_colon_holo.9.png
new file mode 100644
index 000000000..73394b57b
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_colon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_colon_large_holo.9.png
new file mode 100644
index 000000000..a4a6acbe1
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_colon_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_comma_holo.9.png b/java/res/drawable-xhdpi/key_hint_comma_holo.9.png
new file mode 100644
index 000000000..d4dbdf4bf
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_comma_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_comma_large_holo.9.png
new file mode 100644
index 000000000..aea5c8ed5
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_comma_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-xhdpi/key_hint_exclamation_holo.9.png
new file mode 100644
index 000000000..078d1d8f7
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_exclamation_large_holo.9.png
new file mode 100644
index 000000000..ddd6b13cb
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_plus_holo.9.png b/java/res/drawable-xhdpi/key_hint_plus_holo.9.png
new file mode 100644
index 000000000..d0ce9c948
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_plus_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_plus_large_holo.9.png
new file mode 100644
index 000000000..9cf20e8b1
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_plus_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_question_holo.9.png b/java/res/drawable-xhdpi/key_hint_question_holo.9.png
new file mode 100644
index 000000000..1e886d897
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_question_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_question_large_holo.9.png
new file mode 100644
index 000000000..826228796
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_quote_holo.9.png b/java/res/drawable-xhdpi/key_hint_quote_holo.9.png
new file mode 100644
index 000000000..fd8bbad83
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_quote_large_holo.9.png
new file mode 100644
index 000000000..51d5b498c
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_underline_holo.9.png b/java/res/drawable-xhdpi/key_hint_underline_holo.9.png
new file mode 100644
index 000000000..37d2fa58e
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-xhdpi/key_hint_underline_large_holo.9.png
new file mode 100644
index 000000000..4249a8edf
--- /dev/null
+++ b/java/res/drawable-xhdpi/key_hint_underline_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background.9.png
new file mode 100644
index 000000000..16c76106c
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_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
new file mode 100644
index 000000000..943f9e4bc
--- /dev/null
+++ 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_more_background.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background.9.png
new file mode 100644
index 000000000..e020e34b1
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background.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
new file mode 100644
index 000000000..f66e54538
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/caution.png b/java/res/drawable-xlarge/caution.png
deleted file mode 100755
index eaef53425..000000000
--- a/java/res/drawable-xlarge/caution.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xlarge/mic_slash.png b/java/res/drawable-xlarge/mic_slash.png
deleted file mode 100644
index 1dd05c5b4..000000000
--- a/java/res/drawable-xlarge/mic_slash.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable/btn_keyboard_key2.xml b/java/res/drawable/btn_keyboard_key2.xml
deleted file mode 100644
index bd745b76e..000000000
--- a/java/res/drawable/btn_keyboard_key2.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-
- <!-- Toggle keys. Use checkable/checked state. -->
-
- <item android:state_checkable="true" android:state_checked="true"
- android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_on" />
- <item android:state_checkable="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" />
- <item android:state_checkable="true" android:state_checked="true"
- android:drawable="@drawable/btn_keyboard_key_normal_on" />
- <item android:state_checkable="true"
- android:drawable="@drawable/btn_keyboard_key_fulltrans_normal" />
-
- <!-- Normal keys -->
-
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" />
- <item android:drawable="@drawable/btn_keyboard_key_fulltrans_normal" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_gingerbread_popup.xml b/java/res/drawable/btn_keyboard_key_popup.xml
index 9b6d23beb..860cfd5d5 100644
--- a/java/res/drawable/btn_keyboard_key_gingerbread_popup.xml
+++ b/java/res/drawable/btn_keyboard_key_popup.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/drawable/btn_keyboard_key_honeycomb_popup.xml b/java/res/drawable/btn_keyboard_key_popup_honeycomb.xml
index 6c2713650..f5a191fc0 100644
--- a/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml
+++ b/java/res/drawable/btn_keyboard_key_popup_honeycomb.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/drawable/caution.png b/java/res/drawable/caution.png
deleted file mode 100755
index eaef53425..000000000
--- a/java/res/drawable/caution.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable/mic_slash.png b/java/res/drawable/mic_slash.png
deleted file mode 100644
index 1dd05c5b4..000000000
--- a/java/res/drawable/mic_slash.png
+++ /dev/null
Binary files differ
diff --git a/java/res/layout-xlarge/candidates.xml b/java/res/layout-sw768dp/candidates.xml
index 096a0adf1..93b030422 100644
--- a/java/res/layout-xlarge/candidates.xml
+++ b/java/res/layout-sw768dp/candidates.xml
@@ -20,6 +20,7 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/candidates_container"
android:orientation="horizontal"
android:gravity="bottom"
android:layout_width="match_parent"
@@ -33,9 +34,9 @@
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@drawable/keyboard_suggest_strip_holo"
android:paddingRight="@dimen/candidate_strip_padding"
android:paddingLeft="@dimen/candidate_strip_padding"
+ style="?attr/suggestionsStripBackgroundStyle"
>
<HorizontalScrollView
android:layout_width="match_parent"
diff --git a/java/res/layout-xlarge/recognition_status.xml b/java/res/layout-sw768dp/recognition_status.xml
index 40bc09823..40bc09823 100644
--- a/java/res/layout-xlarge/recognition_status.xml
+++ b/java/res/layout-sw768dp/recognition_status.xml
diff --git a/java/res/layout-xlarge/candidate.xml b/java/res/layout-xlarge/candidate.xml
deleted file mode 100644
index 582e64261..000000000
--- a/java/res/layout-xlarge/candidate.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:orientation="horizontal"
->
- <ImageView
- android:id="@+id/candidate_divider"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:src="@drawable/keyboard_suggest_strip_divider"
- android:paddingRight="@dimen/candidate_padding"
- android:paddingLeft="@dimen/candidate_padding"
- android:visibility="invisible"
- android:focusable="false"
- android:clickable="false"
- android:gravity="center_vertical|center_horizontal" />
- <Button
- android:id="@+id/candidate_word"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:minWidth="@dimen/candidate_min_width"
- android:textSize="@dimen/candidate_text_size"
- android:textColor="@color/candidate_normal"
- android:background="@drawable/btn_candidate_holo"
- android:focusable="true"
- android:clickable="true"
- android:gravity="center_vertical|center_horizontal" />
- <TextView
- android:id="@+id/candidate_debug_info"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:visibility="gone"
- android:textSize="10dip"
- android:textColor="#ff808080"
- android:focusable="false"
- android:clickable="false"
- android:gravity="bottom" />
-</LinearLayout>
diff --git a/java/res/layout/bubble_text.xml b/java/res/layout/bubble_text.xml
deleted file mode 100644
index c3957b65e..000000000
--- a/java/res/layout/bubble_text.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2009, 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.
-*/
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="14sp"
- android:textColor="?android:attr/textColorPrimary"
- android:minWidth="32dip"
- android:gravity="center"
- android:shadowRadius="2.75"
- android:shadowColor="#BB000000"
- />
diff --git a/java/res/layout/candidate.xml b/java/res/layout/candidate.xml
index 5472a1dd1..aa2845fb4 100644
--- a/java/res/layout/candidate.xml
+++ b/java/res/layout/candidate.xml
@@ -24,17 +24,6 @@
android:layout_height="match_parent"
android:orientation="horizontal"
>
- <ImageView
- android:id="@+id/candidate_divider"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:src="@drawable/keyboard_suggest_strip_divider"
- android:paddingRight="@dimen/candidate_padding"
- android:paddingLeft="@dimen/candidate_padding"
- android:visibility="invisible"
- android:focusable="false"
- android:clickable="false"
- android:gravity="center_vertical|center_horizontal" />
<Button
android:id="@+id/candidate_word"
android:layout_width="wrap_content"
@@ -42,10 +31,10 @@
android:minWidth="@dimen/candidate_min_width"
android:textSize="@dimen/candidate_text_size"
android:textColor="@color/candidate_normal"
- android:background="@drawable/btn_candidate"
android:focusable="true"
android:clickable="true"
- android:gravity="center_vertical|center_horizontal" />
+ android:gravity="center_vertical|center_horizontal"
+ style="?attr/suggestionBackgroundStyle" />
<TextView
android:id="@+id/candidate_debug_info"
android:layout_width="wrap_content"
diff --git a/java/res/layout-xlarge/candidate_preview.xml b/java/res/layout/candidate_divider.xml
index 61d5f8e7b..dc6738a4a 100644
--- a/java/res/layout-xlarge/candidate_preview.xml
+++ b/java/res/layout/candidate_divider.xml
@@ -18,12 +18,14 @@
*/
-->
-<TextView
+<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/candidate_divider"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="18sp"
- android:textColor="?android:attr/textColorPrimaryInverse"
- android:minWidth="32dip"
- android:gravity="center"
- android:background="@drawable/keyboard_popup_panel_background_holo" />
+ android:layout_height="match_parent"
+ android:src="@drawable/keyboard_suggest_strip_divider"
+ android:paddingRight="@dimen/candidate_padding"
+ android:paddingLeft="@dimen/candidate_padding"
+ android:focusable="false"
+ android:clickable="false"
+ android:gravity="center_vertical|center_horizontal" />
diff --git a/java/res/layout/candidate_preview.xml b/java/res/layout/candidate_preview.xml
index fe2002d46..32705c996 100644
--- a/java/res/layout/candidate_preview.xml
+++ b/java/res/layout/candidate_preview.xml
@@ -19,11 +19,10 @@
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="?android:attr/textColorPrimaryInverse"
android:minWidth="32dip"
android:gravity="center"
- android:background="@drawable/candidate_feedback_background"
- />
+ style="?attr/suggestionPreviewBackgroundStyle" />
diff --git a/java/res/layout/candidates.xml b/java/res/layout/candidates.xml
index 3d91c1d20..2bcafc985 100644
--- a/java/res/layout/candidates.xml
+++ b/java/res/layout/candidates.xml
@@ -20,6 +20,7 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/candidates_container"
android:orientation="horizontal"
android:gravity="bottom"
android:layout_width="match_parent"
@@ -31,10 +32,10 @@
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@drawable/keyboard_suggest_strip"
android:fadingEdge="horizontal"
android:fadingEdgeLength="@dimen/candidate_strip_fading_edge_length"
android:scrollbars="none"
+ style="?attr/suggestionsStripBackgroundStyle"
>
<com.android.inputmethod.latin.CandidateView
android:id="@+id/candidates"
diff --git a/java/res/layout/input_basic.xml b/java/res/layout/input_basic.xml
deleted file mode 100644
index 8666daece..000000000
--- a/java/res/layout/input_basic.xml
+++ /dev/null
@@ -1,32 +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.
-*/
--->
-
-<com.android.inputmethod.keyboard.LatinKeyboardView
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- android:id="@+id/latin_keyboard_view"
- android:layout_alignParentBottom="true"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="0dip"
- android:background="@drawable/keyboard_background"
-
- latin:keyBackground="@drawable/btn_keyboard_key"
- />
diff --git a/java/res/layout/input_honeycomb.xml b/java/res/layout/input_honeycomb.xml
deleted file mode 100644
index 8dadafd81..000000000
--- a/java/res/layout/input_honeycomb.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-
-<com.android.inputmethod.keyboard.LatinKeyboardView
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- android:id="@+id/latin_keyboard_view"
- android:layout_alignParentBottom="true"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="0dip"
- android:background="@drawable/keyboard_background_holo"
-
- latin:keyBackground="@drawable/btn_keyboard_key_honeycomb"
- latin:keyPreviewLayout="@layout/key_preview_honeycomb"
- latin:keyPreviewHeight="@dimen/key_preview_height_holo"
- latin:keyPreviewOffset="@dimen/key_preview_offset_holo"
- latin:popupLayout="@layout/keyboard_popup_honeycomb"
- latin:keyTextColorDisabled="#FF63666D"
- latin:keyLetterStyle="bold"
- latin:shadowColor="#00000000"
- latin:shadowRadius="0.0"
- />
diff --git a/java/res/layout/input_stone_bold.xml b/java/res/layout/input_stone_bold.xml
deleted file mode 100644
index a0b40684f..000000000
--- a/java/res/layout/input_stone_bold.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-
-<com.android.inputmethod.keyboard.LatinKeyboardView
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- android:id="@+id/latin_keyboard_view"
- android:layout_alignParentBottom="true"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="0dip"
- android:background="@drawable/keyboard_background"
-
- latin:keyBackground="@drawable/btn_keyboard_key_stone"
- latin:keyTextColor="@color/latinkeyboard_key_color_black"
- latin:keyTextColorDisabled="#FF808080"
- latin:shadowColor="@color/latinkeyboard_key_color_white"
- latin:keyLetterStyle="bold"
- latin:colorScheme="black"
- latin:popupLayout="@layout/keyboard_popup_stone"
- />
diff --git a/java/res/layout/input_stone_normal.xml b/java/res/layout/input_stone_normal.xml
deleted file mode 100644
index 41cbc16fa..000000000
--- a/java/res/layout/input_stone_normal.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-
-<com.android.inputmethod.keyboard.LatinKeyboardView
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- android:id="@+id/latin_keyboard_view"
- android:layout_alignParentBottom="true"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="0dip"
- android:background="@drawable/keyboard_background"
-
- latin:keyBackground="@drawable/btn_keyboard_key_stone"
- latin:keyTextColor="@color/latinkeyboard_key_color_black"
- latin:keyTextColorDisabled="#FF808080"
- latin:shadowColor="@color/latinkeyboard_key_color_white"
- latin:colorScheme="black"
- latin:popupLayout="@layout/keyboard_popup_stone"
- />
diff --git a/java/res/layout/input_gingerbread.xml b/java/res/layout/input_view.xml
index ccca501af..c8820b02e 100644
--- a/java/res/layout/input_gingerbread.xml
+++ b/java/res/layout/input_view.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.
@@ -18,16 +18,19 @@
*/
-->
-<com.android.inputmethod.keyboard.LatinKeyboardView
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+>
+ <include
+ layout="@layout/candidates" />
+ <com.android.inputmethod.keyboard.LatinKeyboardView
android:id="@+id/latin_keyboard_view"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:padding="0dip"
- android:background="@drawable/keyboard_dark_background"
-
- latin:keyBackground="@drawable/btn_keyboard_key_gingerbread"
- latin:keyLetterStyle="bold"
- />
+ android:padding="0dip" />
+</LinearLayout>
diff --git a/java/res/layout/key_preview.xml b/java/res/layout/key_preview.xml
index de03506ad..5032dd556 100644
--- a/java/res/layout/key_preview.xml
+++ b/java/res/layout/key_preview.xml
@@ -25,5 +25,5 @@
android:textColor="@color/latinkeyboard_key_color_white"
android:minWidth="32dip"
android:gravity="center"
- android:background="@drawable/keyboard_key_feedback"
+ style="?attr/keyPreviewStyle"
/>
diff --git a/java/res/layout/keyboard_popup.xml b/java/res/layout/keyboard_popup.xml
index 0317d8deb..e2508da78 100644
--- a/java/res/layout/keyboard_popup.xml
+++ b/java/res/layout/keyboard_popup.xml
@@ -22,9 +22,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:background="@drawable/keyboard_popup_panel_background"
- android:paddingLeft="@dimen/mini_keyboard_horizontal_padding"
- android:paddingRight="@dimen/mini_keyboard_horizontal_padding"
+ style="?attr/popupMiniKeyboardPanelStyle"
>
<com.android.inputmethod.keyboard.PopupMiniKeyboardView
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
@@ -32,9 +30,5 @@
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
-
- latin:keyBackground="@drawable/btn_keyboard_key_gingerbread_popup"
- latin:keyHysteresisDistance="0dip"
- latin:verticalCorrection="@dimen/mini_keyboard_vertical_correction"
/>
</LinearLayout>
diff --git a/java/res/layout/keyboard_popup_honeycomb.xml b/java/res/layout/keyboard_popup_honeycomb.xml
deleted file mode 100644
index 2ddcbdc0c..000000000
--- a/java/res/layout/keyboard_popup_honeycomb.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:background="@drawable/keyboard_popup_panel_background_holo"
- android:paddingLeft="@dimen/mini_keyboard_horizontal_padding_holo"
- android:paddingRight="@dimen/mini_keyboard_horizontal_padding_holo"
- >
- <com.android.inputmethod.keyboard.PopupMiniKeyboardView
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- android:id="@+id/mini_keyboard_view"
- android:layout_alignParentBottom="true"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
-
- latin:keyBackground="@drawable/btn_keyboard_key_honeycomb_popup"
- latin:keyHysteresisDistance="0dip"
- latin:verticalCorrection="@dimen/mini_keyboard_vertical_correction"
- />
-</LinearLayout>
diff --git a/java/res/layout/keyboard_popup_stone.xml b/java/res/layout/keyboard_popup_stone.xml
deleted file mode 100644
index 94176b244..000000000
--- a/java/res/layout/keyboard_popup_stone.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:background="@drawable/keyboard_popup_panel_background"
- >
- <com.android.inputmethod.keyboard.PopupMiniKeyboardView
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- android:id="@+id/mini_keyboard_view"
- android:layout_alignParentBottom="true"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="@drawable/keyboard_background"
-
- latin:keyBackground="@drawable/btn_keyboard_key_stone"
- latin:keyTextColor="@color/latinkeyboard_key_color_black"
- latin:shadowColor="@color/latinkeyboard_key_color_white"
- />
-</LinearLayout>
diff --git a/java/res/raw/type3.ogg b/java/res/raw/type3.ogg
deleted file mode 100644
index 20e670807..000000000
--- a/java/res/raw/type3.ogg
+++ /dev/null
Binary files differ
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml
new file mode 100644
index 000000000..22e8d2c39
--- /dev/null
+++ b/java/res/values-af/strings.xml
@@ -0,0 +1,245 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_name" msgid="7252517407088836577">"Android-sleutelbord"</string>
+ <string name="english_ime_settings" msgid="6661589557206947774">"Android-sleutelbordinstellings"</string>
+ <!-- no translation found for english_ime_input_options (3909945612939668554) -->
+ <skip />
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibreer met sleuteldruk"</string>
+ <string name="sound_on_keypress" msgid="6093592297198243644">"Klank met sleuteldruk"</string>
+ <!-- no translation found for popup_on_keypress (123894815723512944) -->
+ <skip />
+ <!-- no translation found for general_category (1859088467017573195) -->
+ <skip />
+ <!-- no translation found for correction_category (2236750915056607613) -->
+ <skip />
+ <!-- no translation found for ngram_category (5337109164339320257) -->
+ <skip />
+ <!-- no translation found for misc_category (6894192814868233453) -->
+ <skip />
+ <!-- no translation found for advanced_settings (362895144495591463) -->
+ <skip />
+ <!-- no translation found for advanced_settings_summary (5193513161106637254) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
+ <skip />
+ <string name="auto_cap" msgid="1719746674854628252">"Outohoofletters"</string>
+ <string name="quick_fixes" msgid="5353213327680897927">"Vinnige oplossings"</string>
+ <string name="quick_fixes_summary" msgid="3405028402510332373">"Korrigeer algemene tikfoute"</string>
+ <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
+ <skip />
+ <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3551821800439659812) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
+ <skip />
+ <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) -->
+ <skip />
+ <!-- no translation found for prefs_settings_key (4623341240804046498) -->
+ <skip />
+ <!-- no translation found for settings_key_mode_auto_name (2993460277873684680) -->
+ <skip />
+ <!-- no translation found for settings_key_mode_always_show_name (3047567041784760575) -->
+ <skip />
+ <!-- no translation found for settings_key_mode_always_hide_name (7833948046716923994) -->
+ <skip />
+ <!-- outdated translation 7911639788808958255 --> <string name="auto_correction" msgid="4979925752001319458">"Woordvoorstelle"</string>
+ <!-- outdated translation 6881047311475758267 --> <string name="auto_correction_summary" msgid="5625751551134658006">"Korrigeer outomaties die vorige woord"</string>
+ <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
+ <skip />
+ <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
+ <skip />
+ <!-- no translation found for auto_correction_threshold_mode_aggeressive (3524029103734923819) -->
+ <skip />
+ <!-- no translation found for bigram_suggestion (2636414079905220518) -->
+ <skip />
+ <!-- no translation found for bigram_suggestion_summary (4383845146070101531) -->
+ <skip />
+ <!-- no translation found for bigram_prediction (8914273444762259739) -->
+ <skip />
+ <!-- no translation found for bigram_prediction_summary (1747261921174300098) -->
+ <skip />
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Gestoor"</string>
+ <string name="label_go_key" msgid="1635148082137219148">"Gaan"</string>
+ <string name="label_next_key" msgid="362972844525672568">"Volgende"</string>
+ <string name="label_done_key" msgid="2441578748772529288">"Klaar"</string>
+ <string name="label_send_key" msgid="2815056534433717444">"Stuur"</string>
+ <!-- no translation found for label_to_alpha_key (4793983863798817523) -->
+ <skip />
+ <!-- no translation found for label_more_key (3760239494604948502) -->
+ <skip />
+ <!-- no translation found for label_pause_key (181098308428035340) -->
+ <skip />
+ <!-- no translation found for label_wait_key (6402152600878093134) -->
+ <skip />
+ <!-- no translation found for voice_warning_title (4419354150908395008) -->
+ <skip />
+ <!-- no translation found for voice_warning_locale_not_supported (637923019716442333) -->
+ <skip />
+ <!-- no translation found for voice_warning_may_not_understand (5596289095878251072) -->
+ <skip />
+ <!-- no translation found for voice_warning_how_to_turn_off (3190378129944934856) -->
+ <skip />
+ <!-- no translation found for voice_hint_dialog_message (1420686286820661548) -->
+ <skip />
+ <!-- no translation found for voice_listening (467518160751321844) -->
+ <skip />
+ <!-- no translation found for voice_working (6666937792815731889) -->
+ <skip />
+ <string name="voice_initializing" msgid="661962047129906646"></string>
+ <!-- no translation found for voice_error (5140896300312186162) -->
+ <skip />
+ <!-- no translation found for voice_network_error (6649556447401862563) -->
+ <skip />
+ <!-- no translation found for voice_too_much_speech (5746973620134227376) -->
+ <skip />
+ <!-- no translation found for voice_audio_error (5072707727016414454) -->
+ <skip />
+ <!-- no translation found for voice_server_error (7807129913977261644) -->
+ <skip />
+ <!-- no translation found for voice_speech_timeout (8461817525075498795) -->
+ <skip />
+ <!-- no translation found for voice_no_match (4285117547030179174) -->
+ <skip />
+ <string name="voice_not_installed" msgid="5552450909753842415">"Stemsoek nie geïnstalleer nie"</string>
+ <!-- no translation found for voice_swipe_hint (6943546180310682021) -->
+ <skip />
+ <!-- no translation found for voice_punctuation_hint (1611389463237317754) -->
+ <skip />
+ <string name="cancel" msgid="6830980399865683324">"Kanselleer"</string>
+ <string name="ok" msgid="7898366843681727667">"OK"</string>
+ <!-- no translation found for voice_input (2466640768843347841) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
+ <skip />
+ <!-- no translation found for selectInputMethod (315076553378705821) -->
+ <skip />
+ <!-- no translation found for language_selection_title (1651299598555326750) -->
+ <skip />
+ <!-- no translation found for language_selection_summary (187110938289512256) -->
+ <skip />
+ <!-- no translation found for hint_add_to_dictionary (9006292060636342317) -->
+ <skip />
+ <!-- no translation found for has_dictionary (6071847973466625007) -->
+ <skip />
+ <!-- no translation found for prefs_enable_log (6620424505072963557) -->
+ <skip />
+ <!-- no translation found for prefs_description_log (5827825607258246003) -->
+ <skip />
+ <!-- no translation found for prefs_enable_recorrection (4588408906649533582) -->
+ <skip />
+ <!-- no translation found for prefs_enable_recorrection_summary (5082041365862396329) -->
+ <skip />
+ <!-- no translation found for keyboard_layout (437433231038683666) -->
+ <skip />
+ <!-- no translation found for subtype_mode_cs_keyboard (1141718931112377586) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ar_keyboard (2655338636329774995) -->
+ <skip />
+ <!-- no translation found for subtype_mode_da_keyboard (1243570804427922104) -->
+ <skip />
+ <!-- no translation found for subtype_mode_de_keyboard (1990979135959462145) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_GB_keyboard (7945856548410373708) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_US_keyboard (3708655163769735410) -->
+ <skip />
+ <!-- no translation found for subtype_mode_es_keyboard (1775125478866113148) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_keyboard (8016515336759761014) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_CA_keyboard (2628517247158376263) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_CH_keyboard (6742806653181621228) -->
+ <skip />
+ <!-- no translation found for subtype_mode_iw_keyboard (1787536828253289950) -->
+ <skip />
+ <!-- no translation found for subtype_mode_it_keyboard (4934199655425394484) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nb_keyboard (1175783216100212360) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nl_keyboard (5090278083256037936) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ru_keyboard (1383995915064277943) -->
+ <skip />
+ <!-- no translation found for subtype_mode_sr_keyboard (5019440799612208168) -->
+ <skip />
+ <!-- no translation found for subtype_mode_sv_keyboard (4933838139861753401) -->
+ <skip />
+ <!-- no translation found for subtype_mode_af_voice (7542487489657902699) -->
+ <skip />
+ <!-- no translation found for subtype_mode_cs_voice (1136386688120958641) -->
+ <skip />
+ <!-- no translation found for subtype_mode_de_voice (8378803143958089866) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_voice (6643420989651848728) -->
+ <skip />
+ <!-- no translation found for subtype_mode_es_voice (1323473601346507487) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_voice (4675914209337824269) -->
+ <skip />
+ <!-- no translation found for subtype_mode_it_voice (5077373057157441323) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ja_voice (6604859132669646367) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ko_voice (4890391190762324561) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nl_voice (2603552312869575021) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pl_voice (2076196021014840487) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_voice (8036522712795994397) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ru_voice (8034596947963787529) -->
+ <skip />
+ <!-- no translation found for subtype_mode_tr_voice (3402067436761140005) -->
+ <skip />
+ <!-- no translation found for subtype_mode_yue_voice (1576887891614624263) -->
+ <skip />
+ <!-- no translation found for subtype_mode_zh_voice (4360533229467271152) -->
+ <skip />
+ <!-- no translation found for subtype_mode_zu_voice (1146122571698884636) -->
+ <skip />
+ <!-- no translation found for prefs_usability_study_mode (6937813623647419810) -->
+ <skip />
+</resources>
diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml
new file mode 100644
index 000000000..536f061ae
--- /dev/null
+++ b/java/res/values-am/strings.xml
@@ -0,0 +1,209 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_name" msgid="7252517407088836577">"የAndroid ቁልፍሰሌዳ"</string>
+ <string name="english_ime_settings" msgid="6661589557206947774">"የAndroid ቁልፍሰሌዳ ቅንብሮች"</string>
+ <string name="english_ime_input_options" msgid="3909945612939668554">"ግቤት አማራጮች"</string>
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"በቁልፍመጫንጊዜ አንዝር"</string>
+ <string name="sound_on_keypress" msgid="6093592297198243644">"በቁልፍ መጫን ላይ የሚወጣ ድምፅ"</string>
+ <string name="popup_on_keypress" msgid="123894815723512944">"ቁልፍ ጫን ላይ ብቅ ባይ"</string>
+ <!-- no translation found for general_category (1859088467017573195) -->
+ <skip />
+ <!-- no translation found for correction_category (2236750915056607613) -->
+ <skip />
+ <!-- no translation found for ngram_category (5337109164339320257) -->
+ <skip />
+ <!-- no translation found for misc_category (6894192814868233453) -->
+ <skip />
+ <!-- no translation found for advanced_settings (362895144495591463) -->
+ <skip />
+ <!-- no translation found for advanced_settings_summary (5193513161106637254) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
+ <skip />
+ <string name="auto_cap" msgid="1719746674854628252">"ራስ-ሰር አቢይ ማድረግ"</string>
+ <string name="quick_fixes" msgid="5353213327680897927">"ፈጣንጥገና"</string>
+ <string name="quick_fixes_summary" msgid="3405028402510332373">" የተለመዱ የትየባ ስህተቶችንያስተካክላል"</string>
+ <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
+ <skip />
+ <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3551821800439659812) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
+ <skip />
+ <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) -->
+ <skip />
+ <string name="prefs_settings_key" msgid="4623341240804046498">"የቅንብሮች ቁልፍ አሳይ"</string>
+ <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"ራስ ሰር"</string>
+ <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"ሁልጊዜ አሳይ"</string>
+ <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"ሁልጊዜ ደብቅ"</string>
+ <!-- outdated translation 7911639788808958255 --> <string name="auto_correction" msgid="4979925752001319458">"የቃልአማራጮች"</string>
+ <!-- outdated translation 6881047311475758267 --> <string name="auto_correction_summary" msgid="5625751551134658006">"የቀደመውን ቃል በራስሰር አስተካክል"</string>
+ <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
+ <skip />
+ <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
+ <skip />
+ <!-- no translation found for auto_correction_threshold_mode_aggeressive (3524029103734923819) -->
+ <skip />
+ <!-- outdated translation 1323347224043514969 --> <string name="bigram_suggestion" msgid="2636414079905220518">"ቢግራም ምክሮች"</string>
+ <string name="bigram_suggestion_summary" msgid="4383845146070101531">"ምክርን ለማሻሻል የቀደመ ቃልን ተጠቀም"</string>
+ <!-- no translation found for bigram_prediction (8914273444762259739) -->
+ <skip />
+ <!-- no translation found for bigram_prediction_summary (1747261921174300098) -->
+ <skip />
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : ተቀምጧል"</string>
+ <string name="label_go_key" msgid="1635148082137219148">"ሂድ"</string>
+ <string name="label_next_key" msgid="362972844525672568">"በመቀጠል"</string>
+ <string name="label_done_key" msgid="2441578748772529288">"ተከናውኗል"</string>
+ <string name="label_send_key" msgid="2815056534433717444">" ይላኩ"</string>
+ <!-- no translation found for label_to_alpha_key (4793983863798817523) -->
+ <skip />
+ <string name="label_more_key" msgid="3760239494604948502">"ተጨማሪ"</string>
+ <!-- no translation found for label_pause_key (181098308428035340) -->
+ <skip />
+ <!-- no translation found for label_wait_key (6402152600878093134) -->
+ <skip />
+ <string name="voice_warning_title" msgid="4419354150908395008">"የድምፅ ግቤ ት"</string>
+ <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"የድምፅ ግቤት በአሁኑ ጊዜ ለእርስዎን ቋንቋ አይደግፍም፣ ግን በእንግሊዘኛ ይሰራል።"</string>
+ <!-- outdated translation 4611518823070986445 --> <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"የድምፅ ግቤት የGoogleን አውታረ መረብ ንግግር ማወቂያ የሙከራ ገፅታ ነው።"</string>
+ <!-- outdated translation 5652369578498701761 --> <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"የድምፅ ግቤት አጥፋ፣ ወደ ቁልፍሰሌዳ ቅንብሮች ሂድ።"</string>
+ <!-- outdated translation 6892342981545727994 --> <string name="voice_hint_dialog_message" msgid="1420686286820661548">"የድምፅ ግቤት ለመጠቀም፣ የማይክሮፎን አዝራሩን ይጫኑ ወይም በማያ ቁልፍ ሰሌዳው ላይ ጣትዎን ያንሸራቱ።"</string>
+ <string name="voice_listening" msgid="467518160751321844">"አሁን ተናገር"</string>
+ <string name="voice_working" msgid="6666937792815731889">"ሥራ ላይ"</string>
+ <string name="voice_initializing" msgid="661962047129906646"></string>
+ <string name="voice_error" msgid="5140896300312186162">"ስህተት፣ እባክዎ እንደገና ይሞክሩ።"</string>
+ <string name="voice_network_error" msgid="6649556447401862563">"ማያያዝ አልተቻለም"</string>
+ <string name="voice_too_much_speech" msgid="5746973620134227376">"ስህተት፣ በጣም ብዙ ንግግር።"</string>
+ <string name="voice_audio_error" msgid="5072707727016414454">"የድምፅ ችግር"</string>
+ <string name="voice_server_error" msgid="7807129913977261644">"የአገልጋይ ስህተት"</string>
+ <string name="voice_speech_timeout" msgid="8461817525075498795">"ምንም ንግግር አልተሰማም"</string>
+ <string name="voice_no_match" msgid="4285117547030179174">"ምንም ተመሳሳይ አልተገኘም።"</string>
+ <string name="voice_not_installed" msgid="5552450909753842415">"የድምፅ ፍለጋአልተጫነም"</string>
+ <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"ምክር፡"</b>" ለመናገር በቁልፍሰሌዳ ላይ አንሸራት"</string>
+ <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"ምክር፡"</b>" ሌላ ጊዜ፣ እንደ \"period\", \"comma\", ወይም \"question mark\" ያሉ ስርዓተ ነጥቦችን ለመናገር ሞክር።"</string>
+ <string name="cancel" msgid="6830980399865683324">"ይቅር"</string>
+ <string name="ok" msgid="7898366843681727667">"እሺ"</string>
+ <string name="voice_input" msgid="2466640768843347841">"የድምፅ ግቤት"</string>
+ <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
+ <skip />
+ <string name="selectInputMethod" msgid="315076553378705821">"የግቤት ሜተድ ምረጥ"</string>
+ <string name="language_selection_title" msgid="1651299598555326750">"ቋንቋዎች አግቤት"</string>
+ <string name="language_selection_summary" msgid="187110938289512256">"ቋንቋ ለመለወጥ የቦታ ቁልፍ ላይ ጣትዎን ያንሸራቱ"</string>
+ <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← ለማስቀመጥ ድጋሚ ንካ"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"መዝገበ ቃላት አለ"</string>
+ <string name="prefs_enable_log" msgid="6620424505072963557">"የተጠቃሚ ግብረ ምላሽ አንቃ"</string>
+ <string name="prefs_description_log" msgid="5827825607258246003">"ወደ Google የተሰናከለ ሪፖርቶች እና አጠቃቀም ስታስቲክስ በራስ ሰር በመላክ ይህን ግቤት ሜተድ አርትኢ እገዛ ያሻሽላል።"</string>
+ <string name="prefs_enable_recorrection" msgid="4588408906649533582">"ቃላትን ለማስተካከል ንካ"</string>
+ <!-- outdated translation 1056068922330206170 --> <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"የገቡ ቃላትን ለማስተካከል ንካ"</string>
+ <string name="keyboard_layout" msgid="437433231038683666">"የቁልፍ ሰሌዳ ገጽታ"</string>
+ <!-- no translation found for subtype_mode_cs_keyboard (1141718931112377586) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ar_keyboard (2655338636329774995) -->
+ <skip />
+ <!-- no translation found for subtype_mode_da_keyboard (1243570804427922104) -->
+ <skip />
+ <!-- no translation found for subtype_mode_de_keyboard (1990979135959462145) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_GB_keyboard (7945856548410373708) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_US_keyboard (3708655163769735410) -->
+ <skip />
+ <!-- no translation found for subtype_mode_es_keyboard (1775125478866113148) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_keyboard (8016515336759761014) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_CA_keyboard (2628517247158376263) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_CH_keyboard (6742806653181621228) -->
+ <skip />
+ <!-- no translation found for subtype_mode_iw_keyboard (1787536828253289950) -->
+ <skip />
+ <!-- no translation found for subtype_mode_it_keyboard (4934199655425394484) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nb_keyboard (1175783216100212360) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nl_keyboard (5090278083256037936) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ru_keyboard (1383995915064277943) -->
+ <skip />
+ <!-- no translation found for subtype_mode_sr_keyboard (5019440799612208168) -->
+ <skip />
+ <!-- no translation found for subtype_mode_sv_keyboard (4933838139861753401) -->
+ <skip />
+ <!-- no translation found for subtype_mode_af_voice (7542487489657902699) -->
+ <skip />
+ <!-- no translation found for subtype_mode_cs_voice (1136386688120958641) -->
+ <skip />
+ <!-- no translation found for subtype_mode_de_voice (8378803143958089866) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_voice (6643420989651848728) -->
+ <skip />
+ <!-- no translation found for subtype_mode_es_voice (1323473601346507487) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_voice (4675914209337824269) -->
+ <skip />
+ <!-- no translation found for subtype_mode_it_voice (5077373057157441323) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ja_voice (6604859132669646367) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ko_voice (4890391190762324561) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nl_voice (2603552312869575021) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pl_voice (2076196021014840487) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_voice (8036522712795994397) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ru_voice (8034596947963787529) -->
+ <skip />
+ <!-- no translation found for subtype_mode_tr_voice (3402067436761140005) -->
+ <skip />
+ <!-- no translation found for subtype_mode_yue_voice (1576887891614624263) -->
+ <skip />
+ <!-- no translation found for subtype_mode_zh_voice (4360533229467271152) -->
+ <skip />
+ <!-- no translation found for subtype_mode_zu_voice (1146122571698884636) -->
+ <skip />
+ <!-- no translation found for prefs_usability_study_mode (6937813623647419810) -->
+ <skip />
+</resources>
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index df5b87ac1..2e7e4823a 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"تصحيح النص"</string>
<string name="ngram_category" msgid="5337109164339320257">"الاقتراحات بناءً على الكلمات السابقة"</string>
<string name="misc_category" msgid="6894192814868233453">"خيارات أخرى"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"الإعدادات المتقدمة"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"خيارات للمستخدمين الخبراء"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"تأخير إزالة النافذة المنبثقة الأساسية"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"بلا تأخير"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"افتراضي"</string>
<string name="auto_cap" msgid="1719746674854628252">"استخدام الأحرف الكبيرة تلقائيًا"</string>
<string name="quick_fixes" msgid="5353213327680897927">"إصلاحات سريعة"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"تصحيح الأخطاء المكتوبة الشائعة"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"لوحة مفاتيح إنجليزية (بريطانيا)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"لوحة مفاتيح إنجليزية (الولايات المتحدة)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"لوحة مفاتيح إسبانية"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"لوحة مفاتيح إسبانية (الولايات المتحدة)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"لوحة مفاتيح فرنسية"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"لوحة مفاتيح فرنسية (كندا)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"لوحة مفاتيح فرنسية (سويسرا)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"لوحة مفاتيح إيطالية"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"لوحة مفاتيح نرويجية"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"لوحة مفاتيح بولندية"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"لوحة المفاتيح البولندية"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"لوحة المفاتيح البرتغالية"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"لوحة مفاتيح روسية"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"لوحة مفاتيح صربية"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"لوحة مفاتيح سويدية"</string>
diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml
index 7f59a13db..4c2a96856 100644
--- a/java/res/values-bg/strings.xml
+++ b/java/res/values-bg/strings.xml
@@ -28,8 +28,13 @@
<string name="popup_on_keypress" msgid="123894815723512944">"Изскачащ прозорец при натискане на клавиш"</string>
<string name="general_category" msgid="1859088467017573195">"Общи"</string>
<string name="correction_category" msgid="2236750915056607613">"Корекция на текста"</string>
- <string name="ngram_category" msgid="5337109164339320257">"Предложения въз на основа на предишни думи"</string>
+ <string name="ngram_category" msgid="5337109164339320257">"Предложения въз основа на предишни думи"</string>
<string name="misc_category" msgid="6894192814868233453">"Други опции"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Разширени настройки"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Опции за потребителите експерти"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Отхвърляне на подсказката"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Без задържане"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"По подразбиране"</string>
<string name="auto_cap" msgid="1719746674854628252">"Автоматично поставяне на главни букви"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Бързи корекции"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Коригира най-честите грешки при въвеждане"</string>
@@ -38,7 +43,7 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Винаги да се показва"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Показване с вертикална ориентация"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Винаги да се скрива"</string>
- <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Клавишът интервал да превкл. езика"</string>
+ <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Смяна на езика с клавиша за интервал"</string>
<string name="prefs_settings_key" msgid="4623341240804046498">"Показване на клавиша за настройки"</string>
<string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Автоматично"</string>
<string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Да се показва винаги"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"английска (Великобрит.) клавиатура"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"английска (САЩ) клавиатура"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"испанска клавиатура"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"испанска (САЩ) клавиатура"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"френска клавиатура"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"френска (Канада) клавиатура"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"френска (Швейцария) клавиатура"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"италианска клавиатура"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"норвежка клавиатура"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"нидерландска клавиатура"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Полска клавиатура"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Португалска клавиатура"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"руска клавиатура"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"сръбска клавиатура"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"шведска клавиатура"</string>
diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml
index 36939fef7..ca14863d0 100644
--- a/java/res/values-ca/strings.xml
+++ b/java/res/values-ca/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Correcció de text"</string>
<string name="ngram_category" msgid="5337109164339320257">"Suggeriments basats en paraules anteriors"</string>
<string name="misc_category" msgid="6894192814868233453">"Altres opcions"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Configuració avançada"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opcions per a usuaris experts"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Retard d\'om. em. de tecla"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sense retard"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predeterminat"</string>
<string name="auto_cap" msgid="1719746674854628252">"Majúscules automàtiques"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Correccions ràpides"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Corregeix els errors d\'ortografia habituals"</string>
@@ -38,7 +43,7 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostra sempre"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Mostra en mode vertical"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Amaga sempre"</string>
- <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Utilitza el canvi d\'idioma amb la barra espaiadora"</string>
+ <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Canvi d\'idioma amb la barra espaiadora"</string>
<string name="prefs_settings_key" msgid="4623341240804046498">"Mostra la tecla de configuració"</string>
<string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automàtic"</string>
<string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostra sempre"</string>
@@ -51,7 +56,7 @@
<string name="bigram_suggestion" msgid="2636414079905220518">"Suggeriments Bigram"</string>
<string name="bigram_suggestion_summary" msgid="4383845146070101531">"Utilitza la paraula anterior per millorar el suggeriment"</string>
<string name="bigram_prediction" msgid="8914273444762259739">"Predicció Bigram"</string>
- <string name="bigram_prediction_summary" msgid="1747261921174300098">"Utilitza la paraula anterior per a la predicció també"</string>
+ <string name="bigram_prediction_summary" msgid="1747261921174300098">"Utilitza també la paraula anterior per a la predicció"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: desada"</string>
<string name="label_go_key" msgid="1635148082137219148">"Vés"</string>
<string name="label_next_key" msgid="362972844525672568">"Següent"</string>
@@ -63,7 +68,7 @@
<string name="label_wait_key" msgid="6402152600878093134">"Espera"</string>
<string name="voice_warning_title" msgid="4419354150908395008">"Entrada de veu"</string>
<string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Actualment, l\'entrada de veu no és compatible amb el vostre idioma, però funciona en anglès."</string>
- <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"L\'entrada de veu utilitza el reconeixement de veu de Google. S\'hi aplica la "<a href="http://m.google.com/privacy">"Política de privadesa de Google Mobile"</a>"."</string>
+ <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"L\'entrada de veu utilitza el reconeixement de veu de Google. S\'hi aplica la "<a href="http://m.google.com/privacy">"Política de privadesa de Google per a mòbils"</a>"."</string>
<string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Per desactivar l\'entada de veu, vés a la configuració del mètode d\'entrada."</string>
<string name="voice_hint_dialog_message" msgid="1420686286820661548">"Per utilitzar l\'entrada de veu, prem el botó del micròfon."</string>
<string name="voice_listening" msgid="467518160751321844">"Parleu ara"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Teclat anglès (Regne Unit)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Teclat anglès (Estats Units)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Teclat espanyol"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Teclat espanyol (Estats Units)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Teclat francès"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Teclat francès (Canadà)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Teclat francès (Suïssa)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Teclat italià"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Teclat noruec"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Teclat holandès"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Teclat polonès"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Teclat portuguès"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Teclat rus"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Teclat serbi"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Teclat suec"</string>
diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index 132bc1c29..65f9509ed 100644
--- a/java/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Oprava textu"</string>
<string name="ngram_category" msgid="5337109164339320257">"Návrhy na základě předchozích slov"</string>
<string name="misc_category" msgid="6894192814868233453">"Další možnosti"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Pokročilá nastavení"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Možnosti pro zkušené uživatele"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Prodleva vysk. okna kláv."</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez prodlevy"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Výchozí"</string>
<string name="auto_cap" msgid="1719746674854628252">"Velká písmena automaticky"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Rychlé opravy"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Opravuje nejčastější chyby při psaní"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Klávesnice – angličtina (VB)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Klávesnice – angličtina (USA)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Klávesnice – španělština"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Klávesnice – španělština (USA)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Klávesnice – francouzština"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Klávesnice – francouzština (Kanada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Klávesnice – francouzština (Švýc.)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Klávesnice – italština"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Klávesnice – norština"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Klávesnice – holandština"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polská klávesnice"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugalská klávesnice"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Klávesnice – ruština"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Klávesnice – srbština"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Klávesnice – švédština"</string>
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index ad92b24d1..1b0e9c4a3 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Tekstkorrigering"</string>
<string name="ngram_category" msgid="5337109164339320257">"Forslag baseret på tidligere ord"</string>
<string name="misc_category" msgid="6894192814868233453">"Andre valgmuligheder"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Avancerede indstillinger"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Muligheder for ekspertbrugere"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Forsink. afvis. af taste-popup"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Ingen forsink."</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string>
<string name="auto_cap" msgid="1719746674854628252">"Skriv aut. med stort"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Hurtige løsninger"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Retter almindelige stavefejl"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engelsk tastatur (Storbritannien)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engelsk tastatur (USA)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spansk tastatur"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spansk tastatur (USA)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Fransk tastatur"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Fransk tastatur (Canada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Fransk tastatur (Schweiz)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italiensk tastatur"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norsk tastatur"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Hollandsk tastatur"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polsk tastatur"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugisisk tastatur"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russisk tastatur"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbisk tastatur"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Svensk tastatur"</string>
diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml
index 65f0faa32..da232c2bd 100644
--- a/java/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Textkorrektur"</string>
<string name="ngram_category" msgid="5337109164339320257">"Vorschläge basieren auf bisherigen Wörtern"</string>
<string name="misc_category" msgid="6894192814868233453">"Sonstige Optionen"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Erweiterte Einstellungen"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Optionen für Experten"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Verzög. Schlüssel-Pop-up"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Keine Verzögerung"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string>
<string name="auto_cap" msgid="1719746674854628252">"Autom. Groß-/Kleinschr."</string>
<string name="quick_fixes" msgid="5353213327680897927">"Quick Fixes"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Korrigiert gängige Tippfehler"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Englische Tastatur (GB)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Englische Tastatur (USA)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spanische Tastatur"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spanische Tastatur (USA)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Französische Tastatur"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Französische Tastatur (Kanada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Französische Tastatur (Schweiz)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italienische Tastatur"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norwegische Tastatur"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Niederländische Tastatur"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polnische Tastatur"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugiesische Tastatur"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russische Tastatur"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbische Tastatur"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Schwedische Tastatur"</string>
diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml
index 5cee959a0..120cbc3a2 100644
--- a/java/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Διόρθωση κειμένου"</string>
<string name="ngram_category" msgid="5337109164339320257">"Προτάσεις που βασίζονται σε προηγούμενες λέξεις"</string>
<string name="misc_category" msgid="6894192814868233453">"Άλλες επιλογές"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Σύνθετες ρυθμίσεις"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Επιλογές για έμπειρους χρήστες"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Χρόνος εξαφ. αναδ. παραθ."</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Χωρίς καθυστέρ."</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Προεπιλογή"</string>
<string name="auto_cap" msgid="1719746674854628252">"Αυτόματη χρήση κεφαλαίων"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Γρήγορες διορθώσεις"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Διορθώνει συνηθισμένα λάθη πληκτρολόγησης"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Αγγλικό (ΗΒ) πληκτρολόγιο"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Αγγλικό (ΗΠΑ) πληκτρολόγιο"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Ισπανικό πληκτρολόγιο"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Ισπανικό (ΗΠΑ) πληκτρολόγιο"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Γαλλικό πληκτρολόγιο"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Γαλλικό (Καναδάς) πληκτρολόγιο"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Γαλλικό (Ελβετία) πληκτρολόγιο"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Ιταλικό πληκτρολόγιο"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Νορβηγικό πληκτρολόγιο"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Ολλανδικό πληκτρολόγιο"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Πληκτρολόγιο με πολωνικούς χαρακτήρες"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Πορτογαλικό πληκτρολόγιο"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Ρωσικό πληκτρολόγιο"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Σερβικό πληκτρολόγιο"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Σουηδικό πληκτρολόγιο"</string>
diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml
index 7d5d50177..3aa37c975 100644
--- a/java/res/values-en-rGB/strings.xml
+++ b/java/res/values-en-rGB/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Text correction"</string>
<string name="ngram_category" msgid="5337109164339320257">"Suggestions based on previous words"</string>
<string name="misc_category" msgid="6894192814868233453">"Other Options"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Advanced settings"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Options for expert users"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Key pop-up dismiss delay"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"No delay"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Default"</string>
<string name="auto_cap" msgid="1719746674854628252">"Auto-capitalisation"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Quick fixes"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Corrects commonly typed mistakes"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"English (UK) Keyboard"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"English (US) Keyboard"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spanish Keyboard"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spanish (US) Keyboard"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"French Keyboard"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"French (Canada) Keyboard"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"French (Switzerland) Keyboard"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italian Keyboard"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norwegian Keyboard"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Dutch Keyboard"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polish keyboard"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portuguese Keyboard"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russian Keyboard"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbian Keyboard"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Swedish Keyboard"</string>
diff --git a/java/res/layout/input_basic_highcontrast.xml b/java/res/values-en/whitelist.xml
index 4829c7d7c..9395f4c88 100644
--- a/java/res/layout/input_basic_highcontrast.xml
+++ b/java/res/values-en/whitelist.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.
@@ -17,16 +17,22 @@
** limitations under the License.
*/
-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!--
+ An entry of the whitelist word should be:
+ 1. (int)frequency
+ 2. (String)before
+ 3. (String)after
+ -->
+ <string-array name="wordlist_whitelist" translatable="false">
-<com.android.inputmethod.keyboard.LatinKeyboardView
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- android:id="@+id/latin_keyboard_view"
- android:layout_alignParentBottom="true"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="0dip"
- android:background="@android:color/black"
+ <item>255</item>
+ <item>ill</item>
+ <item>I\'ll</item>
- latin:keyBackground="@drawable/btn_keyboard_key3"
- />
+ <item>255</item>
+ <item>thisd</item>
+ <item>this\'d</item>
+
+ </string-array>
+</resources>
diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index e40f98b3b..dc9028e8c 100644
--- a/java/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Corrección de texto"</string>
<string name="ngram_category" msgid="5337109164339320257">"Sugerencias sobre la base de palabras anteriores"</string>
<string name="misc_category" msgid="6894192814868233453">"Otras opciones"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Configuración avanzada"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opciones para usuarios expertos"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Demora en rechazo de ventana emergente de clave"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sin demora"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predeterminada"</string>
<string name="auto_cap" msgid="1719746674854628252">"Mayúsculas automáticas"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Arreglos rápidos"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige errores de escritura comunes"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Teclado en inglés (Reino Unido)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Teclado en inglés (EE.UU.)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Teclado en español"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Teclado en español (EE.UU.)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Teclado en francés"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Teclado en francés (Canadá)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Teclado en francés (Suiza)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Teclado en italiano"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Teclado en noruego"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Teclado en holandés"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Teclado polaco"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Teclado en portugués"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Teclado en ruso"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Teclado en serbio"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Teclado en sueco"</string>
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index e1532427a..6a9774870 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -27,12 +27,14 @@
<string name="sound_on_keypress" msgid="6093592297198243644">"Sonido al pulsar tecla"</string>
<string name="popup_on_keypress" msgid="123894815723512944">"Popup al pulsar tecla"</string>
<string name="general_category" msgid="1859088467017573195">"General"</string>
- <!-- no translation found for correction_category (2236750915056607613) -->
- <skip />
- <!-- no translation found for ngram_category (5337109164339320257) -->
- <skip />
- <!-- no translation found for misc_category (6894192814868233453) -->
- <skip />
+ <string name="correction_category" msgid="2236750915056607613">"Corrección ortográfica"</string>
+ <string name="ngram_category" msgid="5337109164339320257">"Sugerencias basadas en palabras anteriores"</string>
+ <string name="misc_category" msgid="6894192814868233453">"Otras opciones"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Ajustes avanzados"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opciones para usuarios expertos"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Retraso de rechazo"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sin retraso"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predeterminado"</string>
<string name="auto_cap" msgid="1719746674854628252">"Mayúsculas automáticas"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Correcciones rápidas"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige los errores tipográficos que se cometen con más frecuencia."</string>
@@ -41,8 +43,7 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostrar siempre"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Mostrar en modo vertical"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ocultar siempre"</string>
- <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) -->
- <skip />
+ <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Utilizar espacio para cambiar idioma"</string>
<string name="prefs_settings_key" msgid="4623341240804046498">"Mostrar tecla de ajustes"</string>
<string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automáticamente"</string>
<string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostrar siempre"</string>
@@ -52,12 +53,10 @@
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desactivada"</string>
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Parcial"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Total"</string>
- <!-- outdated translation 7146707435859263625 --> <string name="bigram_suggestion" msgid="2636414079905220518">"Sugerencias de bigramas"</string>
+ <string name="bigram_suggestion" msgid="2636414079905220518">"Sugerencias de bigramas"</string>
<string name="bigram_suggestion_summary" msgid="4383845146070101531">"Usar palabra anterior para mejorar sugerencias"</string>
- <!-- no translation found for bigram_prediction (8914273444762259739) -->
- <skip />
- <!-- no translation found for bigram_prediction_summary (1747261921174300098) -->
- <skip />
+ <string name="bigram_prediction" msgid="8914273444762259739">"Predicción de bigramas"</string>
+ <string name="bigram_prediction_summary" msgid="1747261921174300098">"Utilizar también la palabra anterior para realizar la predicción"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: guardada"</string>
<string name="label_go_key" msgid="1635148082137219148">"Ir"</string>
<string name="label_next_key" msgid="362972844525672568">"Sig."</string>
@@ -111,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Teclado inglés (Reino Unido)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Teclado de inglés (EE.UU.)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Teclado español"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Teclado en español (EE.UU.)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Teclado francés"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Teclado francés (Canadá)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Teclado francés (Suiza)"</string>
@@ -119,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Teclado italiano"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Teclado noruego"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Teclado holandés"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Teclado polaco"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Teclado portugués"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Teclado ruso"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Teclado serbio"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Teclado sueco"</string>
diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml
index 25ee9dff8..9b6023f9b 100644
--- a/java/res/values-fa/strings.xml
+++ b/java/res/values-fa/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"تصحیح متن"</string>
<string name="ngram_category" msgid="5337109164339320257">"پیشنهادهایی بر اساس کلمه های قبلی"</string>
<string name="misc_category" msgid="6894192814868233453">"سایر گزینه ها"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"تنظیمات پیشرفته"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"گزینه هایی برای کاربران حرفه ای"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"تأخیر در رد کردن کلید نمایشی"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"بدون تأخیر"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"پیش فرض"</string>
<string name="auto_cap" msgid="1719746674854628252">"نوشتن با حروف بزرگ خودکار"</string>
<string name="quick_fixes" msgid="5353213327680897927">"راه حل های سریع"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"تصحیح خطاهای تایپی رایج"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"صفحه کلید انگلیسی (بریتانیایی)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"صفحه کلید انگلیسی (آمریکایی)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"صفحه کلید اسپانیایی"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"صفحه کلید اسپانیایی (آمریکایی)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"صفحه کلید فرانسوی"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"صفحه کلید فرانسوی (کانادایی)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"صفحه کلید فرانسوی (سوئیس)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"صفحه کلید ایتالیایی"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"صفحه کلید نروژی"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"صفحه کلید هلندی"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"صفحه کلید لهستانی"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"صفحه کلید پرتغالی"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"صفحه کلید روسی"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"صفحه کلید صربی"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"صفحه کلید سوئدی"</string>
diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml
index f02e8217d..60cf7a17b 100644
--- a/java/res/values-fi/strings.xml
+++ b/java/res/values-fi/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Tekstin korjaus"</string>
<string name="ngram_category" msgid="5337109164339320257">"Aiempiin sanoihin perustuvat ehdotukset"</string>
<string name="misc_category" msgid="6894192814868233453">"Muut vaihtoehdot"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Lisäasetukset"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Valinnat kokeneille käyttäjille"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Näppäimen hylkäysviive"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Ei viivettä"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Oletus"</string>
<string name="auto_cap" msgid="1719746674854628252">"Automaattiset isot kirjaimet"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Pikakorjaukset"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Korjaa yleiset kirjoitusvirheet"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Näppäimistö: englanti (UK)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Näppäimistö: englanti (US)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Näppäimistö: espanja"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Näppäimistö: espanja (US)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Näppäimistö: ranska"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Näppäimistö: ranska (Kanada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Näppäimistö: ranska (Sveitsi)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Näppäimistö: italia"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Näppäimistö: norja"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Näppäimistö: hollanti"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Näppäimistö: puola"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Näppäimistö: portugali"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Näppäimistö: venäjä"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Näppäimistö: serbia"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Näppäimistö: ruotsi"</string>
diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index 276aed2c5..67d2f502a 100644
--- a/java/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Correction du texte"</string>
<string name="ngram_category" msgid="5337109164339320257">"Suggestions basées sur les mots précédents"</string>
<string name="misc_category" msgid="6894192814868233453">"Autres options"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Paramètres avancés"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Options destinées aux utilisateurs expérimentés"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Délai masq. touche pop-up"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Aucun délai"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Par défaut"</string>
<string name="auto_cap" msgid="1719746674854628252">"Majuscules auto"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Corrections rapides"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige les fautes de frappe courantes"</string>
@@ -38,7 +43,7 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Toujours afficher"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Afficher en mode Portrait"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Toujours masquer"</string>
- <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Sélecteur langue barre d\'espace"</string>
+ <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Barre d\'espace pour changer langue"</string>
<string name="prefs_settings_key" msgid="4623341240804046498">"Afficher touche param."</string>
<string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatique"</string>
<string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Toujours afficher"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Clavier anglais (Royaume-Uni)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Clavier anglais (États-Unis)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Clavier espagnol"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Clavier espagnol (États-Unis)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Clavier français"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Clavier français (Canada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Clavier français (Suisse)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Clavier italien"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Clavier norvégien"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Clavier néerlandais"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Clavier polonais"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Clavier portugais"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Clavier russe"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Clavier serbe"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Clavier suédois"</string>
diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml
index 6117821ee..e1e83c523 100644
--- a/java/res/values-hr/strings.xml
+++ b/java/res/values-hr/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Ispravak teksta"</string>
<string name="ngram_category" msgid="5337109164339320257">"Prijedlozi na temelju prethodnih riječi"</string>
<string name="misc_category" msgid="6894192814868233453">"Ostale opcije"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Napredne postavke"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opcije za stručne korisnike"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Bez odgode klj. skočnih"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez odgode"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Zadano"</string>
<string name="auto_cap" msgid="1719746674854628252">"Automatsko pisanje velikih slova"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Brzi popravci"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Ispravlja uobičajene pogreške u pisanju"</string>
@@ -38,7 +43,7 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Uvijek prikaži"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Prikaži u portretnom načinu"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Uvijek sakrij"</string>
- <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Koristite razmaknicu za prebacivanje jezika"</string>
+ <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Upotrijebite razmaknicu za prebacivanje jezika"</string>
<string name="prefs_settings_key" msgid="4623341240804046498">"Prikaži tipku postavki"</string>
<string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatski"</string>
<string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Uvijek prikaži"</string>
@@ -51,7 +56,7 @@
<string name="bigram_suggestion" msgid="2636414079905220518">"Bigram prijedlozi"</string>
<string name="bigram_suggestion_summary" msgid="4383845146070101531">"Upotrijebi prethodnu riječ radi poboljšanja prijedloga"</string>
<string name="bigram_prediction" msgid="8914273444762259739">"Bigram predviđanje"</string>
- <string name="bigram_prediction_summary" msgid="1747261921174300098">"Koristite prethodnu riječ i za predviđanje"</string>
+ <string name="bigram_prediction_summary" msgid="1747261921174300098">"Upotrijebite prethodnu riječ i za predviđanje"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Spremljeno"</string>
<string name="label_go_key" msgid="1635148082137219148">"Idi"</string>
<string name="label_next_key" msgid="362972844525672568">"Dalje"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engleska (UK) tipkovnica"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engleska (SAD) tipkovnica"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Španjolska tipkovnica"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Tipkovnica za španjolski (SAD)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Francuska tipkovnica"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Francuska (Kanada) tipkovnica"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Francuska (Švicarska) tipkovnica"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Talijanska tipkovnica"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norveška tipkovnica"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Nizozemska tipkovnica"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Poljska tipkovnica"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugalska tipkovnica"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Ruska tipkovnica"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Srpska tipkovnica"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Švedska tipkovnica"</string>
diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml
index 81255d719..5cbc57136 100644
--- a/java/res/values-hu/strings.xml
+++ b/java/res/values-hu/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Szövegjavítás"</string>
<string name="ngram_category" msgid="5337109164339320257">"Javaslatok korábbi szavak alapján"</string>
<string name="misc_category" msgid="6894192814868233453">"Egyéb beállítások"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Speciális beállítások"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Beállítások gyakorlott felhasználóknak"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Gombeltüntetés késése"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Nincs késés"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Alapbeállítás"</string>
<string name="auto_cap" msgid="1719746674854628252">"Automatikusan nagy kezdőbetű"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Gyorsjavítások"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Kijavítja a gyakori gépelési hibákat"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Angol (UK) billentyűzet"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Angol (US) billentyűzet"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spanyol billentyűzet"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spanyol (US) billentyűzet"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Francia billentyűzet"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Francia (kanadai) billentyűzet"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Francia (svájci) billentyűzet"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Olasz billentyűzet"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norvég billentyűzet"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Holland billentyűzet"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Lengyel billentyűzet"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugál billentyűzet"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Orosz billentyűzet"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Szerb billentyűzet"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Svéd billentyűzet"</string>
diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml
index 32ef38d35..79eaf1247 100644
--- a/java/res/values-in/strings.xml
+++ b/java/res/values-in/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Koreksi teks"</string>
<string name="ngram_category" msgid="5337109164339320257">"Saran berdasarkan kata sebelumnya"</string>
<string name="misc_category" msgid="6894192814868233453">"Opsi lain"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Setelan lanjutan"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Pilihan untuk pengguna ahli"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Tundaan singkir munculan kunci"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Tanpa penundaan"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Bawaan"</string>
<string name="auto_cap" msgid="1719746674854628252">"Kapitalisasi otomatis"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Perbaikan cepat"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Memperbaiki kesalahan ketik umum"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Keyboard Inggris (Britania Raya)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Keyboard Inggris (AS)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Keyboard Spanyol"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Keyboard Spanyol (AS)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Keyboard Prancis"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Keyboard Prancis (Kanada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Keyboard Prancis (Swiss)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Keyboard Italia"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Keyboard Norwegia"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Keyboard Belanda"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Keyboard bahasa Polski"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Keyboard Portugis"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Keyboard Rusia"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Keyboard Serbia"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Keyboard Swedia"</string>
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 3a896fcd7..054133cdc 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Correzione testo"</string>
<string name="ngram_category" msgid="5337109164339320257">"Suggerimenti in base alle parole precedenti"</string>
<string name="misc_category" msgid="6894192814868233453">"Altre opzioni"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Impostazioni avanzate"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opzioni per utenti esperti"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Ritardo eliminaz. popup tasto"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Nessun ritardo"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predefinito"</string>
<string name="auto_cap" msgid="1719746674854628252">"Maiuscole automatiche"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Correzioni veloci"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Corregge gli errori di digitazione più comuni"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Tastiera inglese (Regno Unito)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Tastiera inglese (Stati Uniti)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Tastiera spagnola"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Tastiera spagnola (Stati Uniti)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Tastiera francese"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Tastiera francese (Canada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Tastiera francese (Svizzera)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Tastiera italiana"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Tastiera norvegese"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Tastiera olandese"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Tastiera polacca"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Tastiera portoghese"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Tastiera russa"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Tastiera serba"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Tastiera svedese"</string>
diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml
index 0b26ed9fe..e28434fc9 100644
--- a/java/res/values-iw/strings.xml
+++ b/java/res/values-iw/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"תיקון טקסט"</string>
<string name="ngram_category" msgid="5337109164339320257">"הצעות המבוססות על מילים קודמות"</string>
<string name="misc_category" msgid="6894192814868233453">"אפשרויות אחרות"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"הגדרות מתקדמות"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"אפשרויות עבור משתמשים מתקדמים"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"עיכוב דחייה של מוקפץ ראשי"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"ללא עיכוב"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"ברירת מחדל"</string>
<string name="auto_cap" msgid="1719746674854628252">"הפיכה אוטומטית של אותיות לרישיות"</string>
<string name="quick_fixes" msgid="5353213327680897927">"תיקונים מהירים"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"מתקן שגיאות הקלדה נפוצות"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"מקלדת אנגלית (בריטניה)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"מקלדת אנגלית (ארה\"ב)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"מקלדת ספרדית"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"מקלדת ספרדית (ארה\"ב)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"מקלדת צרפתית"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"מקלדת צרפתית (קנדה)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"מקלדת צרפתית (שוויץ)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"מקלדת איטלקית"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"מקלדת נורווגית"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"מקלדת הולנדית"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"מקלדת פולנית"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"מקלדת פורטוגזית"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"מקלדת רוסית"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"מקלדת סרבית"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"מקלדת שוודית"</string>
diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index 402c35675..90e3ee702 100644
--- a/java/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"テキストの修正"</string>
<string name="ngram_category" msgid="5337109164339320257">"前の語句に基づいた入力候補表示"</string>
<string name="misc_category" msgid="6894192814868233453">"他のオプション"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"詳細設定"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"上級ユーザー向けオプション"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"キーのポップアップ時間"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"すぐに消去"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"デフォルト"</string>
<string name="auto_cap" msgid="1719746674854628252">"自動大文字変換"</string>
<string name="quick_fixes" msgid="5353213327680897927">"クイックフィックス"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"よくある誤字・脱字を修正します"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"英語(英国)のキーボード"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"英語(米国)のキーボード"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"スペイン語のキーボード"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"スペイン語(米国)のキーボード"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"フランス語のキーボード"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"フランス語(カナダ)のキーボード"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"フランス語(スイス)のキーボード"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"イタリア語のキーボード"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"ノルウェー語のキーボード"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"オランダ語のキーボード"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"ポーランド語のキーボード"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"ポルトガル語のキーボード"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"ロシア語のキーボード"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"セルビア語のキーボード"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"スウェーデン語のキーボード"</string>
diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml
index ca2f570a8..3660d0a76 100644
--- a/java/res/values-ko/strings.xml
+++ b/java/res/values-ko/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"텍스트 수정"</string>
<string name="ngram_category" msgid="5337109164339320257">"이전 단어에 기반한 추천"</string>
<string name="misc_category" msgid="6894192814868233453">"기타 옵션"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"고급 설정"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"전문 사용자용 옵션"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"키 팝업 해제 지연"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"지연 없음"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"기본값"</string>
<string name="auto_cap" msgid="1719746674854628252">"자동 대문자화"</string>
<string name="quick_fixes" msgid="5353213327680897927">"빠른 수정"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"자주 발생하는 오타를 수정합니다."</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"영어(영국) 키보드"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"영어(미국) 키보드"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"스페인어 키보드"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"스페인어(미국) 키보드"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"프랑스어 키보드"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"프랑스어(캐나다) 키보드"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"프랑스어(스위스) 키보드"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"이탈리아어 키보드"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"노르웨이어 키보드"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"네덜란드어 키보드"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"폴란드어 키보드"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"포르투갈어 키보드"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"러시아어 키보드"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"세르비아어 키보드"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"스웨덴어 키보드"</string>
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index c46a51711..6b52ad4e1 100644
--- a/java/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
@@ -21,6 +21,7 @@
<resources>
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=0.260in -->
<dimen name="keyboardHeight">1.100in</dimen>
+ <fraction name="minKeyboardHeight">45%p</fraction>
<!-- key_height + key_bottom_gap = popup_key_height -->
<!-- <dimen name="key_height">0.260in</dimen>-->
<dimen name="key_bottom_gap">0.020in</dimen>
@@ -28,9 +29,12 @@
<dimen name="keyboard_top_padding">0.0in</dimen>
<dimen name="keyboard_bottom_padding">0.0in</dimen>
<dimen name="keyboard_horizontal_edges_padding">0.0in</dimen>
+ <fraction name="key_letter_ratio">55%</fraction>
+ <fraction name="key_label_text_ratio">35%</fraction>
+ <dimen name="key_preview_offset">0.08in</dimen>
+ <fraction name="key_preview_text_ratio">90%</fraction>
<dimen name="candidate_strip_height">38dip</dimen>
<dimen name="candidate_strip_fading_edge_length">63dip</dimen>
- <dimen name="spacebar_vertical_correction">2dip</dimen>
<!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
<!-- popup_key_height x 1.2 -->
<dimen name="mini_keyboard_slide_allowance">0.336in</dimen>
diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml
index fbe50e005..631c87548 100644
--- a/java/res/values-lt/strings.xml
+++ b/java/res/values-lt/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Teksto taisymas"</string>
<string name="ngram_category" msgid="5337109164339320257">"Pasiūlymai pagal ankstesnius žodžius"</string>
<string name="misc_category" msgid="6894192814868233453">"Kitos parinktys"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Išplėstiniai nustatymai"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Parinktys ekspertams"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Pagr. išš. l. atsis. d."</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Be delsos"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Numatytasis"</string>
<string name="auto_cap" msgid="1719746674854628252">"Automatinis didžiųjų raidžių rašymas"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Greiti pataisymai"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Taiso dažnai padarytas rašybos klaidas"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Angliška (JK) klaviatūra"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Angliška (JAV) klaviatūra"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Ispaniška klaviatūra"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Ispaniška (JAV) klaviatūra"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Prancūziška klaviatūra"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Prancūziška (Kanada) klaviatūra"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Prancūziška (Šveicarija) klaviatūra"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Itališka klaviatūra"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norvegiška klaviatūra"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Olandiška klaviatūra"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Lenkiška klaviatūra"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugališka klaviatūra"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Rusiška klaviatūra"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbiška klaviatūra"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Švediška klaviatūra"</string>
diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml
index 84bee5382..101afbef8 100644
--- a/java/res/values-lv/strings.xml
+++ b/java/res/values-lv/strings.xml
@@ -28,8 +28,13 @@
<string name="popup_on_keypress" msgid="123894815723512944">"Nospiežot taustiņu, parādīt uznirstošo izvēlni"</string>
<string name="general_category" msgid="1859088467017573195">"Vispārīgi"</string>
<string name="correction_category" msgid="2236750915056607613">"Teksta korekcija"</string>
- <string name="ngram_category" msgid="5337109164339320257">"Ieteikumi, pamatojoties uz iepriekšējiem vārdiem"</string>
+ <string name="ngram_category" msgid="5337109164339320257">"Ieteikumi, kuru pamatā ir iepriekšējie vārdi"</string>
<string name="misc_category" msgid="6894192814868233453">"Citas opcijas"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Papildu iestatījumi"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opcijas speciālistiem"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Taust. uzn. loga noraid. aizk."</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez aizkaves"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Noklusējums"</string>
<string name="auto_cap" msgid="1719746674854628252">"Automātiska lielo burtu lietošana"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Ātrie labojumi"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Nodrošina izplatītu drukas kļūdu labošanu."</string>
@@ -38,7 +43,7 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Vienmēr rādīt"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Rādīt portreta režīmā"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Vienmēr slēpt"</string>
- <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Izmantot atstarpēšanas taustiņu, lai pārslēgtu valodu"</string>
+ <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Izmantot valodu pārslēgšanai atstarpēšanas taustiņu"</string>
<string name="prefs_settings_key" msgid="4623341240804046498">"Rādīt iestatījumu taustiņu"</string>
<string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automātiski"</string>
<string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vienmēr rādīt"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Angļu (Lielbritānija) tastatūra"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Angļu (ASV) tastatūra"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spāņu tastatūra"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spāņu (ASV) tastatūra"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Franču tastatūra"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Franču (Kanāda) tastatūra"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Franču (Šveices) tastatūra"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Itāļu tastatūra"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norvēģu tastatūra"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Holandiešu tastatūra"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Poļu valodas tastatūra"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugāļu valodas tastatūra"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Krievu tastatūra"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbu tastatūra"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Zviedru tastatūra"</string>
diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml
new file mode 100644
index 000000000..4fc52e5e2
--- /dev/null
+++ b/java/res/values-ms/strings.xml
@@ -0,0 +1,248 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_name" msgid="7252517407088836577">"Papan kekunci Android"</string>
+ <string name="english_ime_settings" msgid="6661589557206947774">"Tetapan papan kekunci Android"</string>
+ <!-- no translation found for english_ime_input_options (3909945612939668554) -->
+ <skip />
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Getar pada tekanan kekunci"</string>
+ <string name="sound_on_keypress" msgid="6093592297198243644">"Bunyi pada tekanan kekunci"</string>
+ <!-- no translation found for popup_on_keypress (123894815723512944) -->
+ <skip />
+ <!-- no translation found for general_category (1859088467017573195) -->
+ <skip />
+ <!-- no translation found for correction_category (2236750915056607613) -->
+ <skip />
+ <!-- no translation found for ngram_category (5337109164339320257) -->
+ <skip />
+ <!-- no translation found for misc_category (6894192814868233453) -->
+ <skip />
+ <!-- no translation found for advanced_settings (362895144495591463) -->
+ <skip />
+ <!-- no translation found for advanced_settings_summary (5193513161106637254) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
+ <skip />
+ <string name="auto_cap" msgid="1719746674854628252">"Huruf besar auto"</string>
+ <string name="quick_fixes" msgid="5353213327680897927">"Pembaikan pantas"</string>
+ <string name="quick_fixes_summary" msgid="3405028402510332373">"Membetulkan kesalahan menaip yang biasa"</string>
+ <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
+ <skip />
+ <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3551821800439659812) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
+ <skip />
+ <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) -->
+ <skip />
+ <!-- no translation found for prefs_settings_key (4623341240804046498) -->
+ <skip />
+ <!-- no translation found for settings_key_mode_auto_name (2993460277873684680) -->
+ <skip />
+ <!-- no translation found for settings_key_mode_always_show_name (3047567041784760575) -->
+ <skip />
+ <!-- no translation found for settings_key_mode_always_hide_name (7833948046716923994) -->
+ <skip />
+ <!-- outdated translation 7911639788808958255 --> <string name="auto_correction" msgid="4979925752001319458">"Cadangan perkataan"</string>
+ <!-- outdated translation 6881047311475758267 --> <string name="auto_correction_summary" msgid="5625751551134658006">"Membetulkan perkataan sebelumnya secara automatik"</string>
+ <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
+ <skip />
+ <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
+ <skip />
+ <!-- no translation found for auto_correction_threshold_mode_aggeressive (3524029103734923819) -->
+ <skip />
+ <!-- no translation found for bigram_suggestion (2636414079905220518) -->
+ <skip />
+ <!-- no translation found for bigram_suggestion_summary (4383845146070101531) -->
+ <skip />
+ <!-- no translation found for bigram_prediction (8914273444762259739) -->
+ <skip />
+ <!-- no translation found for bigram_prediction_summary (1747261921174300098) -->
+ <skip />
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Disimpan"</string>
+ <string name="label_go_key" msgid="1635148082137219148">"Pergi"</string>
+ <string name="label_next_key" msgid="362972844525672568">"Seterusnya"</string>
+ <string name="label_done_key" msgid="2441578748772529288">"Selesai"</string>
+ <string name="label_send_key" msgid="2815056534433717444">"Hantar"</string>
+ <!-- no translation found for label_to_alpha_key (4793983863798817523) -->
+ <skip />
+ <!-- no translation found for label_more_key (3760239494604948502) -->
+ <skip />
+ <!-- no translation found for label_pause_key (181098308428035340) -->
+ <skip />
+ <!-- no translation found for label_wait_key (6402152600878093134) -->
+ <skip />
+ <!-- no translation found for voice_warning_title (4419354150908395008) -->
+ <skip />
+ <!-- no translation found for voice_warning_locale_not_supported (637923019716442333) -->
+ <skip />
+ <!-- no translation found for voice_warning_may_not_understand (5596289095878251072) -->
+ <skip />
+ <!-- no translation found for voice_warning_how_to_turn_off (3190378129944934856) -->
+ <skip />
+ <!-- no translation found for voice_hint_dialog_message (1420686286820661548) -->
+ <skip />
+ <!-- no translation found for voice_listening (467518160751321844) -->
+ <skip />
+ <!-- no translation found for voice_working (6666937792815731889) -->
+ <skip />
+ <string name="voice_initializing" msgid="661962047129906646"></string>
+ <!-- no translation found for voice_error (5140896300312186162) -->
+ <skip />
+ <!-- no translation found for voice_network_error (6649556447401862563) -->
+ <skip />
+ <!-- no translation found for voice_too_much_speech (5746973620134227376) -->
+ <skip />
+ <!-- no translation found for voice_audio_error (5072707727016414454) -->
+ <skip />
+ <!-- no translation found for voice_server_error (7807129913977261644) -->
+ <skip />
+ <!-- no translation found for voice_speech_timeout (8461817525075498795) -->
+ <skip />
+ <!-- no translation found for voice_no_match (4285117547030179174) -->
+ <skip />
+ <!-- no translation found for voice_not_installed (5552450909753842415) -->
+ <skip />
+ <!-- no translation found for voice_swipe_hint (6943546180310682021) -->
+ <skip />
+ <!-- no translation found for voice_punctuation_hint (1611389463237317754) -->
+ <skip />
+ <!-- no translation found for cancel (6830980399865683324) -->
+ <skip />
+ <!-- no translation found for ok (7898366843681727667) -->
+ <skip />
+ <!-- no translation found for voice_input (2466640768843347841) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
+ <skip />
+ <!-- no translation found for selectInputMethod (315076553378705821) -->
+ <skip />
+ <!-- no translation found for language_selection_title (1651299598555326750) -->
+ <skip />
+ <!-- no translation found for language_selection_summary (187110938289512256) -->
+ <skip />
+ <!-- no translation found for hint_add_to_dictionary (9006292060636342317) -->
+ <skip />
+ <!-- no translation found for has_dictionary (6071847973466625007) -->
+ <skip />
+ <!-- no translation found for prefs_enable_log (6620424505072963557) -->
+ <skip />
+ <!-- no translation found for prefs_description_log (5827825607258246003) -->
+ <skip />
+ <!-- no translation found for prefs_enable_recorrection (4588408906649533582) -->
+ <skip />
+ <!-- no translation found for prefs_enable_recorrection_summary (5082041365862396329) -->
+ <skip />
+ <!-- no translation found for keyboard_layout (437433231038683666) -->
+ <skip />
+ <!-- no translation found for subtype_mode_cs_keyboard (1141718931112377586) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ar_keyboard (2655338636329774995) -->
+ <skip />
+ <!-- no translation found for subtype_mode_da_keyboard (1243570804427922104) -->
+ <skip />
+ <!-- no translation found for subtype_mode_de_keyboard (1990979135959462145) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_GB_keyboard (7945856548410373708) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_US_keyboard (3708655163769735410) -->
+ <skip />
+ <!-- no translation found for subtype_mode_es_keyboard (1775125478866113148) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_keyboard (8016515336759761014) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_CA_keyboard (2628517247158376263) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_CH_keyboard (6742806653181621228) -->
+ <skip />
+ <!-- no translation found for subtype_mode_iw_keyboard (1787536828253289950) -->
+ <skip />
+ <!-- no translation found for subtype_mode_it_keyboard (4934199655425394484) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nb_keyboard (1175783216100212360) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nl_keyboard (5090278083256037936) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ru_keyboard (1383995915064277943) -->
+ <skip />
+ <!-- no translation found for subtype_mode_sr_keyboard (5019440799612208168) -->
+ <skip />
+ <!-- no translation found for subtype_mode_sv_keyboard (4933838139861753401) -->
+ <skip />
+ <!-- no translation found for subtype_mode_af_voice (7542487489657902699) -->
+ <skip />
+ <!-- no translation found for subtype_mode_cs_voice (1136386688120958641) -->
+ <skip />
+ <!-- no translation found for subtype_mode_de_voice (8378803143958089866) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_voice (6643420989651848728) -->
+ <skip />
+ <!-- no translation found for subtype_mode_es_voice (1323473601346507487) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_voice (4675914209337824269) -->
+ <skip />
+ <!-- no translation found for subtype_mode_it_voice (5077373057157441323) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ja_voice (6604859132669646367) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ko_voice (4890391190762324561) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nl_voice (2603552312869575021) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pl_voice (2076196021014840487) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_voice (8036522712795994397) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ru_voice (8034596947963787529) -->
+ <skip />
+ <!-- no translation found for subtype_mode_tr_voice (3402067436761140005) -->
+ <skip />
+ <!-- no translation found for subtype_mode_yue_voice (1576887891614624263) -->
+ <skip />
+ <!-- no translation found for subtype_mode_zh_voice (4360533229467271152) -->
+ <skip />
+ <!-- no translation found for subtype_mode_zu_voice (1146122571698884636) -->
+ <skip />
+ <!-- no translation found for prefs_usability_study_mode (6937813623647419810) -->
+ <skip />
+</resources>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index e20c9515e..f4a81542a 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Tekstkorrigering"</string>
<string name="ngram_category" msgid="5337109164339320257">"Forslag basert på tidligere ord"</string>
<string name="misc_category" msgid="6894192814868233453">"Andre alternativer"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Avanserte innstillinger"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Alternativer for ekspertbrukere"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Tregt tastevindu"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"U/ forsinkelse"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string>
<string name="auto_cap" msgid="1719746674854628252">"Stor forbokstav"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Autokorrektur"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Retter vanlige stavefeil"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engelsk tastatur (Storbritannia)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engelsk tastatur (USA)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spansk tastatur"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spansk tastatur (USA)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Fransk tastatur"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Fransk tastatur (Canada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Fransk tastatur (Sveits)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italiensk tastatur"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norsk tastatur"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Nederlandsk tastatur"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polsk tastatur"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugisisk tastatur"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russisk tastatur"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbisk tastatur"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Svensk tastatur"</string>
diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index 89b714bc8..ab563893f 100644
--- a/java/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Tekstcorrectie"</string>
<string name="ngram_category" msgid="5337109164339320257">"Suggesties op basis van eerdere woorden"</string>
<string name="misc_category" msgid="6894192814868233453">"Andere opties"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Geavanceerde instellingen"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opties voor ervaren gebruikers"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Afwijz.vertr. toetspop-up"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Geen vertraging"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standaard"</string>
<string name="auto_cap" msgid="1719746674854628252">"Auto-hoofdlettergebruik"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Snelle oplossingen"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Hiermee worden veelvoorkomende typefouten gecorrigeerd"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engels toetsenbord (VK)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engels toetsenbord (VS)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spaans toetsenbord"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spaans toetsenbord (VS)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Frans toetsenbord"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Frans toetsenbord (Canada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Frans toetsenbord (Zwitserland)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italiaans toetsenbord"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Noors toetsenbord"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Nederlands toetsenbord"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Pools toetsenbord"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugees toetsenbord"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russisch toetsenbord"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Servisch toetsenbord"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Zweeds toetsenbord"</string>
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index 65240d748..7b8302908 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Poprawianie tekstu"</string>
<string name="ngram_category" msgid="5337109164339320257">"Podpowiedzi na podstawie wcześniejszych słów"</string>
<string name="misc_category" msgid="6894192814868233453">"Inne opcje"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Ustawienia zaawansowane"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opcje dla zaawansowanych użytkowników"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Opóźnienie wyłączenia wyskakującego okienka"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez opóźnienia"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Wartość domyślna"</string>
<string name="auto_cap" msgid="1719746674854628252">"Wstawiaj wielkie litery"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Szybkie poprawki"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Poprawia częste błędy wpisywania"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Klawiatura angielska (UK)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Klawiatura angielska (USA)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Klawiatura hiszpańska"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Klawiatura hiszpańska (USA)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Klawiatura francuska"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Klawiatura francuska (Kanada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Klawiatura francuska (Szwajcaria)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Klawiatura włoska"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Klawiatura norweska"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Klawiatura holenderska"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Klawiatura polska"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Klawiatura portugalska"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Klawiatura rosyjska"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Klawiatura serbska"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Klawiatura szwedzka"</string>
diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index b972ce049..491e9c1a7 100644
--- a/java/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Correção de texto"</string>
<string name="ngram_category" msgid="5337109164339320257">"Sugestões baseadas em palavras anteriores"</string>
<string name="misc_category" msgid="6894192814868233453">"Outras opções"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Definições avançadas"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opções para utilizadores experientes"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Atraso p/ ignorar pop-up"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sem atraso"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predefinido"</string>
<string name="auto_cap" msgid="1719746674854628252">"Letras maiúsculas automáticas"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Correcções rápidas"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige os erros de escrita comuns"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Teclado inglês (Reino Unido)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Teclado inglês (EUA)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Teclado espanhol"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Teclado espanhol (EUA)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Teclado francês"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Teclado francês (Canadá)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Teclado francês (Suíça)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Teclado italiano"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Teclado norueguês"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Teclado holandês"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Teclado Polaco"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Teclado Português"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Teclado russo"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Teclado sérvio"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Teclado sueco"</string>
diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml
index a999dc67e..c24e07930 100644
--- a/java/res/values-pt/strings.xml
+++ b/java/res/values-pt/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Correção de texto"</string>
<string name="ngram_category" msgid="5337109164339320257">"Sugestões baseadas em palavras anteriores"</string>
<string name="misc_category" msgid="6894192814868233453">"Outras opções"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Configurações avançadas"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opções para usuários experientes"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Dispens. atraso chave princ."</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sem atraso"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Padrão"</string>
<string name="auto_cap" msgid="1719746674854628252">"Capitaliz. automática"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Reparos rápidos"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige erros comuns de digitação"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Teclado para inglês (Reino Unido)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Teclado para inglês (EUA)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Teclado para espanhol"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Teclado para espanhol"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Teclado para francês"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Teclado para francês (Canadá)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Teclado para francês (Suíça)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Teclado para italiano"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Teclado para norueguês"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Teclado para holandês"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Teclado polonês"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Teclado em português"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Teclado para russo"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Teclado para sérvio"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Teclado para sueco"</string>
diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml
index b0c1bea24..e42412241 100644
--- a/java/res/values-rm/strings.xml
+++ b/java/res/values-rm/strings.xml
@@ -35,6 +35,16 @@
<skip />
<!-- no translation found for misc_category (6894192814868233453) -->
<skip />
+ <!-- no translation found for advanced_settings (362895144495591463) -->
+ <skip />
+ <!-- no translation found for advanced_settings_summary (5193513161106637254) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
+ <skip />
<string name="auto_cap" msgid="1719746674854628252">"Maiusclas automaticas"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Correcturas sveltas"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Curregia sbagls da tippar currents"</string>
@@ -145,8 +155,6 @@
<skip />
<!-- no translation found for subtype_mode_es_keyboard (1775125478866113148) -->
<skip />
- <!-- no translation found for subtype_mode_es_US_keyboard (3702125193532262008) -->
- <skip />
<!-- no translation found for subtype_mode_fr_keyboard (8016515336759761014) -->
<skip />
<!-- no translation found for subtype_mode_fr_CA_keyboard (2628517247158376263) -->
@@ -161,6 +169,10 @@
<skip />
<!-- no translation found for subtype_mode_nl_keyboard (5090278083256037936) -->
<skip />
+ <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) -->
+ <skip />
<!-- no translation found for subtype_mode_ru_keyboard (1383995915064277943) -->
<skip />
<!-- no translation found for subtype_mode_sr_keyboard (5019440799612208168) -->
diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml
index 0fcefd1f2..7b11f914f 100644
--- a/java/res/values-ro/strings.xml
+++ b/java/res/values-ro/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Corectare text"</string>
<string name="ngram_category" msgid="5337109164339320257">"Sugestii bazate pe cuvinte anterioare"</string>
<string name="misc_category" msgid="6894192814868233453">"Alte opţiuni"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Setări avansate"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Opţiuni pt. utiliz. experţi"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Înt. înch. pop-up esenţ."</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Fără întârziere"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Prestabilit"</string>
<string name="auto_cap" msgid="1719746674854628252">"Auto-capitalizare"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Remedieri rapide"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Corectează greşelile introduse frecvent"</string>
@@ -38,7 +43,7 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Afişaţi întotdeauna"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Afişaţi în modul Portret"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ascundeţi întotdeauna"</string>
- <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Sp. pt. comut. lb."</string>
+ <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Spacebar – selector limbă"</string>
<string name="prefs_settings_key" msgid="4623341240804046498">"Afişaţi tasta setări"</string>
<string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automat"</string>
<string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Afişaţi întotdeauna"</string>
@@ -48,10 +53,10 @@
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Dezactivată"</string>
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Moderată"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Agresivă"</string>
- <string name="bigram_suggestion" msgid="2636414079905220518">"Sugestii pentru cuvinte de două litere"</string>
+ <string name="bigram_suggestion" msgid="2636414079905220518">"Sugestii de tip bigram"</string>
<string name="bigram_suggestion_summary" msgid="4383845146070101531">"Utilizaţi cuvântul anterior pentru a îmbunătăţi sugestia"</string>
- <string name="bigram_prediction" msgid="8914273444762259739">"Sugestii pentru cuvinte de două litere"</string>
- <string name="bigram_prediction_summary" msgid="1747261921174300098">"De asemenea, utilizaţi pentru sugestii cuvântul precedent"</string>
+ <string name="bigram_prediction" msgid="8914273444762259739">"Predicţii de tip bigram"</string>
+ <string name="bigram_prediction_summary" msgid="1747261921174300098">"Se utilizează şi cuvântul precedent pentru predicţii"</string>
<string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: salvat"</string>
<string name="label_go_key" msgid="1635148082137219148">"OK"</string>
<string name="label_next_key" msgid="362972844525672568">"Înainte"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Tastatură engleză (Marea Britanie)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Tastatură engleză (S.U.A.)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Tastatură spaniolă"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Tastatură spaniolă (S.U.A.)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Tastatură franceză"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Tastatură franceză (Canada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Tastatură franceză (Elveţia)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Tastatură italiană"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Tastatură norvegiană"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Tastatură olandeză"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Tastatură poloneză"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Tastatură portugheză"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Tastatură rusă"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Tastatură sârbă"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Tastatură suedeză"</string>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index 2e8577ea1..f8134138b 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Исправление текста"</string>
<string name="ngram_category" msgid="5337109164339320257">"Подсказки, основанные на предыдущих словах"</string>
<string name="misc_category" msgid="6894192814868233453">"Другие варианты"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Расширенные настройки"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Для опытных пользователей"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Задержка закрытия"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Без задержки"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"По умолчанию"</string>
<string name="auto_cap" msgid="1719746674854628252">"Заглавные автоматически"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Быстрое исправление"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Исправлять распространенные опечатки"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Клавиатура: английская (Великобритания)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Клавиатура: английская (США)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Клавиатура: испанская"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Клавиатура: испанская (США)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Клавиатура: французская"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Клавиатура: французская"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Клавиатура: французская (Швейцария)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Клавиатура: итальянская"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Клавиатура: норвежская"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Клавиатура: голландская"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Польская клавиатура"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Португальская раскладка"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Клавиатура: русская"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Клавиатура: сербская"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Голос: шведский"</string>
diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml
index eeefa820f..911e1ec1f 100644
--- a/java/res/values-sk/strings.xml
+++ b/java/res/values-sk/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Oprava textu"</string>
<string name="ngram_category" msgid="5337109164339320257">"Návrhy na základe predchádzajúcich slov"</string>
<string name="misc_category" msgid="6894192814868233453">"Ďalšie možnosti"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Rozšírené nastavenia"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Možnosti pre skúsených používateľov"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Onesk. zrušenia kľúč. kon. okna"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez oneskorenia"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predvolená"</string>
<string name="auto_cap" msgid="1719746674854628252">"Veľké písmená automaticky"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Rýchle opravy"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Opravuje najčastejšie chyby pri písaní"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"klávesnica – angličtina (br.)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"klávesnica – angličtina (am.)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"klávesnica – španielčina"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"klávesnica – španielčina (am.)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"klávesnica – francúzština"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"klávesnica – francúzština (Kanada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"klávesnica – francúzština (Švajč.)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"klávesnica – taliančina"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"klávesnica – nórčina"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"klávesnica – holandčina"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Poľská klávesnica"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugalská klávesnica"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"klávesnica – ruština"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"hlas – srbčina"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"klávesnica – švédčina"</string>
diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml
index 91f9036e6..f04f3437a 100644
--- a/java/res/values-sl/strings.xml
+++ b/java/res/values-sl/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Popravek besedila"</string>
<string name="ngram_category" msgid="5337109164339320257">"Predlogi, ki temeljijo na prejšnjih besedah"</string>
<string name="misc_category" msgid="6894192814868233453">"Druge možnosti"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Dodatne nastavitve"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Možnosti za izkušene uporabnike"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Zakas. okna za zavrnitev"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Brez zamude"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Privzeto"</string>
<string name="auto_cap" msgid="1719746674854628252">"Samodejne velike začetnice"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Hitri popravki"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Popravi pogoste tipkarske napake"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Tipkovnica za britansko angleščino"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Tipkovnica za ameriško angleščino"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Španska tipkovnica"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Tipkovnica za ameriško španščino"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Francoska tipkovnica"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Tipkovnica za kanadsko francoščino"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Tipkovnica za švicarsko francoščino"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italijanska tipkovnica"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norveška tipkovnica"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Nizozemska tipkovnica"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Poljska tipkovnica"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugalska tipkovnica"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Ruska tipkovnica"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Srbska tipkovnica"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Švedska tipkovnica"</string>
diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml
index b20f1df2e..375f64632 100644
--- a/java/res/values-sr/strings.xml
+++ b/java/res/values-sr/strings.xml
@@ -29,7 +29,12 @@
<string name="general_category" msgid="1859088467017573195">"Опште"</string>
<string name="correction_category" msgid="2236750915056607613">"Исправљање текста"</string>
<string name="ngram_category" msgid="5337109164339320257">"Предлози на основу претходних речи"</string>
- <string name="misc_category" msgid="6894192814868233453">"Друге опције:"</string>
+ <string name="misc_category" msgid="6894192814868233453">"Друге опције"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Напредна подешавања"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Опције за искусне кориснике"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Одложи одбац. иск. прозора тастера"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Без одлагања"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Подразумевано"</string>
<string name="auto_cap" msgid="1719746674854628252">"Аутоматски унос великих слова"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Брзе исправке"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Исправља честе грешке у куцању"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Језик тастатуре: енглески (УК)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Језик тастатуре: енглески (САД)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Језик тастатуре: шпански"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Језик тастатуре: шпански (САД)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Језик тастатуре: француски"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Језик тастатуре: француски (Канада)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Језик тастатуре: француски (Швајц.)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Језик тастатуре: италијански"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Језик тастатуре: норвешки"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Језик тастатуре: холандски"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Језик тастатуре: пољски"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Језик тастатуре: португалски"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Језик тастатуре: руски"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Језик тастатуре: српски"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Језик тастатуре: шведски"</string>
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index 2d35fd87b..d9e51a372 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Textkorrigering"</string>
<string name="ngram_category" msgid="5337109164339320257">"Förslag baserade på tidigare ord"</string>
<string name="misc_category" msgid="6894192814868233453">"Andra alternativ"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Avancerade inställningar"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Alternativ för expertanvändare"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Ta bort popup-fördröjning"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Fördröj inte"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string>
<string name="auto_cap" msgid="1719746674854628252">"Automatiska versaler"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Snabba lösningar"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Åtgärdar automatiskt vanliga misstag"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engelskt tangentbord (Storbrit.)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engelskt tangentbord (USA)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spanskt tangentbord"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spanskt tangentbord (USA)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Franskt tangentbord"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Franskt tangentbord (Kanada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Franskt tangentbord (Schweiz)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italienskt tangentbord"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norskt tangentbord"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Holländskt tangentbord"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polskt tangentbord"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugisiskt tangentbord"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Ryskt tangentbord"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbiskt tangentbord"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Svenskt tangentbord"</string>
diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml
new file mode 100644
index 000000000..dd8f7fce5
--- /dev/null
+++ b/java/res/values-sw/strings.xml
@@ -0,0 +1,209 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_name" msgid="7252517407088836577">"Kibodi ya Android"</string>
+ <string name="english_ime_settings" msgid="6661589557206947774">"Mipangilio ya kibodi ya Android"</string>
+ <string name="english_ime_input_options" msgid="3909945612939668554">"Chaguo za uingizaji"</string>
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Tetema unabofya kitufe"</string>
+ <string name="sound_on_keypress" msgid="6093592297198243644">"Toa sauti unapobofya kitufe"</string>
+ <string name="popup_on_keypress" msgid="123894815723512944">"Ibuka kitufe kinapobonyezwa"</string>
+ <!-- no translation found for general_category (1859088467017573195) -->
+ <skip />
+ <!-- no translation found for correction_category (2236750915056607613) -->
+ <skip />
+ <!-- no translation found for ngram_category (5337109164339320257) -->
+ <skip />
+ <!-- no translation found for misc_category (6894192814868233453) -->
+ <skip />
+ <!-- no translation found for advanced_settings (362895144495591463) -->
+ <skip />
+ <!-- no translation found for advanced_settings_summary (5193513161106637254) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
+ <skip />
+ <string name="auto_cap" msgid="1719746674854628252">"Uwekaji wa herufi kubwa kiotomatiki"</string>
+ <string name="quick_fixes" msgid="5353213327680897927">"Utatuzi wa haraka"</string>
+ <string name="quick_fixes_summary" msgid="3405028402510332373">"Husahihisha makosa ya kawaida yaliyoandikwa"</string>
+ <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
+ <skip />
+ <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3551821800439659812) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
+ <skip />
+ <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) -->
+ <skip />
+ <string name="prefs_settings_key" msgid="4623341240804046498">"Onyesha kitufe cha mipangilio"</string>
+ <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Kiotomatiki"</string>
+ <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Onyesha kila wakati"</string>
+ <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">" Ficha kila mara"</string>
+ <!-- outdated translation 7911639788808958255 --> <string name="auto_correction" msgid="4979925752001319458">"Mapendekezo ya neno"</string>
+ <!-- outdated translation 6881047311475758267 --> <string name="auto_correction_summary" msgid="5625751551134658006">"Sahihisha neno lililotangulia kiotomatiki"</string>
+ <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
+ <skip />
+ <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
+ <skip />
+ <!-- no translation found for auto_correction_threshold_mode_aggeressive (3524029103734923819) -->
+ <skip />
+ <!-- outdated translation 1323347224043514969 --> <string name="bigram_suggestion" msgid="2636414079905220518">"Mapendekezo ya Bigramu"</string>
+ <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Tumia neno la hapo awali ili kuboresha pendekezo"</string>
+ <!-- no translation found for bigram_prediction (8914273444762259739) -->
+ <skip />
+ <!-- no translation found for bigram_prediction_summary (1747261921174300098) -->
+ <skip />
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Imehifadhiwa"</string>
+ <string name="label_go_key" msgid="1635148082137219148">"Nenda"</string>
+ <string name="label_next_key" msgid="362972844525672568">"Ifuatayo"</string>
+ <string name="label_done_key" msgid="2441578748772529288">"Kwisha"</string>
+ <string name="label_send_key" msgid="2815056534433717444">"Tuma"</string>
+ <!-- no translation found for label_to_alpha_key (4793983863798817523) -->
+ <skip />
+ <string name="label_more_key" msgid="3760239494604948502">"Zaidi"</string>
+ <!-- no translation found for label_pause_key (181098308428035340) -->
+ <skip />
+ <!-- no translation found for label_wait_key (6402152600878093134) -->
+ <skip />
+ <string name="voice_warning_title" msgid="4419354150908395008">"Uingizaji wa sauti"</string>
+ <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Uingizaji wa sauti hauhimiliwi kwa lugha yako kwa sasa, lakini inafanya kazi kwa Kiingereza."</string>
+ <!-- outdated translation 4611518823070986445 --> <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Uingizaji wa sauti ni kipengele cha jaribio kinachotumia utambulisho wa mtandao wa matamshi kutoka Google."</string>
+ <!-- outdated translation 5652369578498701761 --> <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Kuzima uingizaji wa sauti, nenda kwa mipangilio ya kibodi."</string>
+ <!-- outdated translation 6892342981545727994 --> <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Ili kutumia uingizaji wa sauti, bonyeza kitufe cha kipaza sauti au telezesha kidole chako kwa kibodi ya skirini.."</string>
+ <string name="voice_listening" msgid="467518160751321844">"Ongea sasa"</string>
+ <string name="voice_working" msgid="6666937792815731889">"Inafanya kazi"</string>
+ <string name="voice_initializing" msgid="661962047129906646"></string>
+ <string name="voice_error" msgid="5140896300312186162">"Hitilafu. Tafadhali jaribu tena."</string>
+ <string name="voice_network_error" msgid="6649556447401862563">"Haiwezi kuunganisha"</string>
+ <string name="voice_too_much_speech" msgid="5746973620134227376">"Hitilafu, usemi ni zaidi."</string>
+ <string name="voice_audio_error" msgid="5072707727016414454">"Tatizo la sauti"</string>
+ <string name="voice_server_error" msgid="7807129913977261644">"Hitilafu ya Seva"</string>
+ <string name="voice_speech_timeout" msgid="8461817525075498795">"Hakuna matamshi yaliyosikizwa"</string>
+ <string name="voice_no_match" msgid="4285117547030179174">"Hakuna zinazolingana zilizopatikana."</string>
+ <string name="voice_not_installed" msgid="5552450909753842415">"Utafutaji wa sauti haujawekwa"</string>
+ <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Kidokezo:"</b>" Telezesha kidole kwenye kibodi ili utamke"</string>
+ <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Kidokezo:"</b>" Wakati mwingine, jaribu kutamka uakifishaji kama vile \"kituo\", \"koma\", au \"kiulizio cha swali\"."</string>
+ <string name="cancel" msgid="6830980399865683324">"Ghairi"</string>
+ <string name="ok" msgid="7898366843681727667">"Sawa"</string>
+ <string name="voice_input" msgid="2466640768843347841">"Uingizaji wa sauti"</string>
+ <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
+ <skip />
+ <string name="selectInputMethod" msgid="315076553378705821">"Chagua mtindo wa uingizaji"</string>
+ <string name="language_selection_title" msgid="1651299598555326750">"Lugha za uingizaji"</string>
+ <string name="language_selection_summary" msgid="187110938289512256">"Telezesha kidole kwenye kitufe cha nafasi ili kubadilisha lugha"</string>
+ <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Gusa tena ili kuhifadhi"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Kamusi inapatikana"</string>
+ <string name="prefs_enable_log" msgid="6620424505072963557">"Wezesha maoni ya watumiaji"</string>
+ <string name="prefs_description_log" msgid="5827825607258246003">"Saidia kuimarisha mbinu ya uingizaji wa kihariri, kwa kutuma takwimu za matumizi na ripoti za kuvurugika kwa Google kiotomatiki."</string>
+ <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Gusa ili kurekebisha maneno"</string>
+ <!-- outdated translation 1056068922330206170 --> <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Gusa maneno yaliyoingizwa ili kuyarekebisha"</string>
+ <string name="keyboard_layout" msgid="437433231038683666">"Maandhari ya Kibodi"</string>
+ <!-- no translation found for subtype_mode_cs_keyboard (1141718931112377586) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ar_keyboard (2655338636329774995) -->
+ <skip />
+ <!-- no translation found for subtype_mode_da_keyboard (1243570804427922104) -->
+ <skip />
+ <!-- no translation found for subtype_mode_de_keyboard (1990979135959462145) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_GB_keyboard (7945856548410373708) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_US_keyboard (3708655163769735410) -->
+ <skip />
+ <!-- no translation found for subtype_mode_es_keyboard (1775125478866113148) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_keyboard (8016515336759761014) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_CA_keyboard (2628517247158376263) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_CH_keyboard (6742806653181621228) -->
+ <skip />
+ <!-- no translation found for subtype_mode_iw_keyboard (1787536828253289950) -->
+ <skip />
+ <!-- no translation found for subtype_mode_it_keyboard (4934199655425394484) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nb_keyboard (1175783216100212360) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nl_keyboard (5090278083256037936) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ru_keyboard (1383995915064277943) -->
+ <skip />
+ <!-- no translation found for subtype_mode_sr_keyboard (5019440799612208168) -->
+ <skip />
+ <!-- no translation found for subtype_mode_sv_keyboard (4933838139861753401) -->
+ <skip />
+ <!-- no translation found for subtype_mode_af_voice (7542487489657902699) -->
+ <skip />
+ <!-- no translation found for subtype_mode_cs_voice (1136386688120958641) -->
+ <skip />
+ <!-- no translation found for subtype_mode_de_voice (8378803143958089866) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_voice (6643420989651848728) -->
+ <skip />
+ <!-- no translation found for subtype_mode_es_voice (1323473601346507487) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_voice (4675914209337824269) -->
+ <skip />
+ <!-- no translation found for subtype_mode_it_voice (5077373057157441323) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ja_voice (6604859132669646367) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ko_voice (4890391190762324561) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nl_voice (2603552312869575021) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pl_voice (2076196021014840487) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_voice (8036522712795994397) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ru_voice (8034596947963787529) -->
+ <skip />
+ <!-- no translation found for subtype_mode_tr_voice (3402067436761140005) -->
+ <skip />
+ <!-- no translation found for subtype_mode_yue_voice (1576887891614624263) -->
+ <skip />
+ <!-- no translation found for subtype_mode_zh_voice (4360533229467271152) -->
+ <skip />
+ <!-- no translation found for subtype_mode_zu_voice (1146122571698884636) -->
+ <skip />
+ <!-- no translation found for prefs_usability_study_mode (6937813623647419810) -->
+ <skip />
+</resources>
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
new file mode 100644
index 000000000..618b7f44c
--- /dev/null
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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>
+ <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
+ <dimen name="keyboardHeight">45.0mm</dimen>
+ <!-- key_height + key_bottom_gap = popup_key_height -->
+ <!-- <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>
+ <!-- key_height x 1.0 -->
+ <dimen name="key_preview_height">13.0mm</dimen>
+
+ <dimen name="key_letter_size">25dip</dimen>
+ <dimen name="key_label_text_size">18dip</dimen>
+ <!-- left or right padding of label alignment -->
+ <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
+ <dimen name="candidate_strip_padding">40.0mm</dimen>
+</resources>
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml
new file mode 100644
index 000000000..c3d34456e
--- /dev/null
+++ b/java/res/values-sw600dp/config.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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>
+ <bool name="config_enable_show_settings_key_option">true</bool>
+ <bool name="config_enable_show_subtype_settings">false</bool>
+ <bool name="config_enable_show_voice_key_option">false</bool>
+ <bool name="config_enable_show_popup_on_keypress_option">false</bool>
+ <bool name="config_enable_show_recorrection_option">false</bool>
+ <bool name="config_enable_quick_fixes_option">false</bool>
+ <bool name="config_enable_bigram_suggestions_option">false</bool>
+ <bool name="config_candidate_highlight_font_color_enabled">false</bool>
+ <bool name="config_swipe_down_dismiss_keyboard_enabled">false</bool>
+ <bool name="config_sliding_key_input_enabled">false</bool>
+ <bool name="config_digit_popup_characters_enabled">false</bool>
+ <!-- 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_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>
+ <!-- The language is never displayed if == 0, always displayed if < 0 -->
+ <integer name="config_delay_before_fadeout_language_on_spacebar">1200</integer>
+ <!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. -->
+ <string name="config_default_keyboard_theme_id" translatable="false">5</string>
+ <string name="config_text_size_of_language_on_spacebar" translatable="false">medium</string>
+ <integer name="config_max_popup_keyboard_column">5</integer>
+</resources>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
new file mode 100644
index 000000000..7cdf72726
--- /dev/null
+++ b/java/res/values-sw600dp/dimens.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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>
+ <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
+ <dimen name="keyboardHeight">48.0mm</dimen>
+ <fraction name="maxKeyboardHeight">50%p</fraction>
+ <fraction name="minKeyboardHeight">-61.8%p</fraction>
+ <!-- key_height + key_bottom_gap = popup_key_height -->
+ <!-- <dimen name="key_height">14.5mm</dimen> -->
+ <dimen name="key_bottom_gap">1.0mm</dimen>
+ <dimen name="key_horizontal_gap">1.0mm</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>
+ <!-- key_height x 1.0 -->
+ <dimen name="key_preview_height">13.0mm</dimen>
+ <dimen name="mini_keyboard_key_horizontal_padding">12dip</dimen>
+ <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
+ <!-- popup_key_height x 1.2 -->
+ <dimen name="mini_keyboard_slide_allowance">15.6mm</dimen>
+ <!-- popup_key_height x -1.0 -->
+ <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
+
+ <fraction name="key_letter_ratio">45%</fraction>
+ <fraction name="key_label_text_ratio">29%</fraction>
+ <fraction name="key_preview_text_ratio">82%</fraction>
+ <!-- left or right padding of label alignment -->
+ <dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
+
+ <dimen name="candidate_strip_height">46dip</dimen>
+ <dimen name="candidate_strip_padding">15.0mm</dimen>
+ <dimen name="candidate_min_width">0.3in</dimen>
+ <dimen name="candidate_padding">12dip</dimen>
+ <dimen name="candidate_text_size">22dip</dimen>
+</resources>
diff --git a/java/res/values/durations.xml b/java/res/values-sw600dp/donottranslate.xml
index 92af68e39..6d94c2811 100644
--- a/java/res/values/durations.xml
+++ b/java/res/values-sw600dp/donottranslate.xml
@@ -1,25 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
-/*
+/*
**
-** Copyright 2008, 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.
-** You may obtain a copy of the License at
+** 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
+** 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
+** 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>
- <!-- Vibration duration in milliseconds, for key presses in the IME. This can be hardware
- dependent and may require overriding with a device specific overlay. -->
- <integer name="vibrate_duration_ms">40</integer>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Default value of the visibility of the suggestion strip -->
+ <string name="prefs_suggestion_visibility_default_value" translatable="false">1</string>
</resources>
diff --git a/java/res/values-xlarge-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index fd6b1f386..ce3614516 100644
--- a/java/res/values-xlarge-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -21,17 +21,18 @@
<resources>
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=14.5mm -->
<dimen name="keyboardHeight">58.0mm</dimen>
+ <fraction name="minKeyboardHeight">45%p</fraction>
<!-- key_height + key_bottom_gap = popup_key_height -->
<!-- <dimen name="key_height">14.5mm</dimen> -->
- <dimen name="key_bottom_gap">0.0mm</dimen>
- <dimen name="key_horizontal_gap">0.0mm</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="keyboard_horizontal_edges_padding">0.0mm</dimen>
- <dimen name="key_letter_size">28dip</dimen>
- <dimen name="key_label_text_size">20dip</dimen>
+ <fraction name="key_letter_ratio">30.7%</fraction>
+ <fraction name="key_label_text_ratio">21.9%</fraction>
<!-- left or right padding of label alignment -->
<dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
<dimen name="key_preview_height_holo">26.5mm</dimen>
diff --git a/java/res/values-xlarge/config.xml b/java/res/values-sw768dp/config.xml
index 80ef3cd8e..663332fe1 100644
--- a/java/res/values-xlarge/config.xml
+++ b/java/res/values-sw768dp/config.xml
@@ -20,7 +20,6 @@
<resources>
<bool name="config_enable_show_settings_key_option">false</bool>
- <bool name="config_enable_show_subtype_settings">false</bool>
<bool name="config_enable_show_voice_key_option">false</bool>
<!-- TODO: This configuration value is temporary set true to check popup preview behavior. -->
<bool name="config_enable_show_popup_on_keypress_option">true</bool>
diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-sw768dp/dimens.xml
index 4f78bea4f..cb380fbe4 100644
--- a/java/res/values-xlarge/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -21,10 +21,11 @@
<resources>
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=12mm -->
<dimen name="keyboardHeight">48.0mm</dimen>
+ <fraction name="minKeyboardHeight">-35.0%p</fraction>
<!-- key_height + key_bottom_gap = popup_key_height -->
<!-- <dimen name="key_height">14.5mm</dimen> -->
- <dimen name="key_bottom_gap">0.0mm</dimen>
- <dimen name="key_horizontal_gap">0.0mm</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>
@@ -37,11 +38,11 @@
<!-- popup_key_height x -1.0 -->
<dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
- <dimen name="key_letter_size">26dip</dimen>
- <dimen name="key_label_text_size">16dip</dimen>
+ <fraction name="key_letter_ratio">34.4%</fraction>
+ <fraction name="key_label_text_ratio">21.2%</fraction>
<!-- left or right padding of label alignment -->
<dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
- <dimen name="key_preview_text_size_large">24dip</dimen>
+ <fraction name="key_preview_text_ratio">26.3%</fraction>
<dimen name="key_preview_height_holo">23.0mm</dimen>
<dimen name="key_preview_offset_holo">8.0mm</dimen>
diff --git a/java/res/values-xlarge/donottranslate.xml b/java/res/values-sw768dp/donottranslate.xml
index 672dea589..672dea589 100644
--- a/java/res/values-xlarge/donottranslate.xml
+++ b/java/res/values-sw768dp/donottranslate.xml
diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml
index cd7fe95c0..64f96d682 100644
--- a/java/res/values-th/strings.xml
+++ b/java/res/values-th/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"การแก้ไขข้อความ"</string>
<string name="ngram_category" msgid="5337109164339320257">"ข้อเสนอแนะตามคำก่อนหน้านี้"</string>
<string name="misc_category" msgid="6894192814868233453">"ตัวเลือกอื่นๆ"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"การตั้งค่าขั้นสูง"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"ตัวเลือกสำหรับผู้ใช้ที่มีความเชี่ยวชาญ"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"การหน่วงเวลาก่อนปิดป๊อปอัพหลัก"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"ไม่มีการหน่วงเวลา"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"ค่าเริ่มต้น"</string>
<string name="auto_cap" msgid="1719746674854628252">"ปรับเป็นตัวพิมพ์ใหญ่อัตโนมัติ"</string>
<string name="quick_fixes" msgid="5353213327680897927">"แก้ไขด่วน"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"แก้ไขข้อผิดพลาดในการพิมพ์ที่พบบ่อย"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"แป้นพิมพ์ภาษาอังกฤษ (สหราชอาณาจักร)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"แป้นพิมพ์ภาษาอังกฤษ (สหรัฐอเมริกา)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"แปันพิมพ์ภาษาสเปน"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"แป้นพิมพ์ภาษาสเปน (สหรัฐอเมริกา)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"แป้นพิมพ์ภาษาฝรั่งเศส"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"แป้นพิมพ์ภาษาฝรั่งเศส (แคนาดา)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"แป้นพิมพ์ภาษาฝรั่งเศส (สวิตเซอร์แลนด์)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"แป้นพิมพ์ภาษาอิตาลี"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"แป้นพิมพ์ภาษานอร์เวย์"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"แป้นพิมพ์ภาษาดัตช์"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"แป้นพิมพ์ภาษาโปแลนด์"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"แป้นพิมพ์ภาษาโปรตุเกส"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"แป้นพิมพ์ภาษารัสเซีย"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"แป้นพิมพ์ภาษาเซอร์เบีย"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"แป้นพิมพ์ภาษาสวีเดน"</string>
diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml
index da62eafc6..e4061498e 100644
--- a/java/res/values-tl/strings.xml
+++ b/java/res/values-tl/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Pagwawasto ng teksto"</string>
<string name="ngram_category" msgid="5337109164339320257">"Mga suhestiyon batay sa mga nakaraang salita"</string>
<string name="misc_category" msgid="6894192814868233453">"Iba pang mga pagpipilian"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Mga advanced na setting"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Mga pagpipilian para sa mga ekspertong user"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Balewala antala key popup"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Walang antala"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Default"</string>
<string name="auto_cap" msgid="1719746674854628252">"Auto-capitalization"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Mga mabilisang pagsasaayos"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Itinatama ang mga karaniwang na-type na mali"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Ingles (UK) na Keyboard"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Ingles (US) na Keyboard"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spanish na Keyboard"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spanish (US) na Keyboard"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"French na Keyboard"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"French (Canada) na Keyboard"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"French (Switzerland) na Keyboard"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italian na Keyboard"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norwegian na Keyboard"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Dutch na Keyboard"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polish na Keyboard"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portuguese na Keyboard"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russian na Keyboard"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbian na Keyboard"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Swedish na Keyboard"</string>
diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index 2607ae257..fee878e1b 100644
--- a/java/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Metin düzeltme"</string>
<string name="ngram_category" msgid="5337109164339320257">"Önceki kelimelere dayalı öneriler"</string>
<string name="misc_category" msgid="6894192814868233453">"Diğer seçenekler"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Gelişmiş ayarlar"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Uzman kullanıcılar için seçenekler"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Tuş popup içn kaptm ertlm"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Gecikme yok"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Varsayılan"</string>
<string name="auto_cap" msgid="1719746674854628252">"Otomatik olarak büyük harf yap"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Hızlı onarımlar"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Yaygın olarak yapılan yazım hatalarını düzeltir"</string>
@@ -38,7 +43,7 @@
<string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Her zaman göster"</string>
<string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Dikey modda göster"</string>
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Her zaman gizle"</string>
- <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Dil geçişi içn boşluk çubğn kullan"</string>
+ <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Dil geçişi &gt; boşluk çubuğuyla"</string>
<string name="prefs_settings_key" msgid="4623341240804046498">"Ayarları göster tuşu"</string>
<string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Otomatik"</string>
<string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Her zaman göster"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"İngilizce (İngiltere) Klavye"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"İngilizce (ABD) Klavye"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"İspanyolca Klavye"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"İspanyolca (ABD) Klavye"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Fransızca Klavye"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Fransızca (Kanada) Klavye"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Fransızca (İsviçre) Klavye"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"İtalyanca Klavye"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norveççe Klavye"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Felemenkçe Klavye"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Lehçe Klavye"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portekizce Klavye"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Rusça Klavye"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Sırpça Klavye"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"İsveççe Klavye"</string>
diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml
index a2f589d1d..cb1a864d6 100644
--- a/java/res/values-uk/strings.xml
+++ b/java/res/values-uk/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Виправлення тексту"</string>
<string name="ngram_category" msgid="5337109164339320257">"Пропозиції на основі попередніх слів"</string>
<string name="misc_category" msgid="6894192814868233453">"Інші опції"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Розширені налаштування"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Налаштування для досвідчених користувачів"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Затримка клавіши закриття"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Без затримки"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"За умовчанням"</string>
<string name="auto_cap" msgid="1719746674854628252">"Авто викор. вел. літер"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Шв. виправлення"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Виправляє поширені помилки"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Англ. розкладка (Великобританія)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Англійська розкладка (США)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Іспанська розкладка"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Іспанська розкладка (США)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Французька розкладка"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Французька розкладка (Канада)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Французька розкладка (Швейцарія)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Італійська розкладка"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Норвезька розкладка"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Голланд. розклад."</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Польська розкладка"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Португальська розкладка"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Російська розкладка"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Сербська розкладка"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Шведська розкладка"</string>
diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml
index 81be8264e..53bd16a48 100644
--- a/java/res/values-vi/strings.xml
+++ b/java/res/values-vi/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"Sửa văn bản"</string>
<string name="ngram_category" msgid="5337109164339320257">"Đề xuất dựa trên các từ trước đó"</string>
<string name="misc_category" msgid="6894192814868233453">"Tùy chọn khác"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Cài đặt nâng cao"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Tùy chọn cho người dùng chuyên gia"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Hlại việc l.bỏ csổ b.lên chính"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Không có tgian trễ"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Mặc định"</string>
<string name="auto_cap" msgid="1719746674854628252">"Tự động viết hoa"</string>
<string name="quick_fixes" msgid="5353213327680897927">"Sửa nhanh"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"Sửa lỗi nhập thông thường"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Bàn phím tiếng Anh (Anh)"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Bàn phím tiếng Anh (Mỹ)"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Bàn phím tiếng Tây Ban Nha"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Bàn phím tiếng Tây Ban Nha (Mỹ)"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Bàn phím tiếng Pháp"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Bàn phím tiếng Pháp (Canada)"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Bàn phím tiếng Pháp (Thụy Sĩ)"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Bàn phím tiếng Ý"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Bàn phím tiếng Na Uy"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Bàn phím tiếng Hà Lan"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Bàn phím tiếng Ba Lan"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Bàn phím tiếng Bồ Đào Nha"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Bàn phím tiếng Nga"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Bàn phím tiếng Serbia"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Bàn phím tiếng Thụy Điển"</string>
diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index 1f15831b3..12e10b09b 100644
--- a/java/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"文本更正"</string>
<string name="ngram_category" msgid="5337109164339320257">"根据前面的字词提供建议"</string>
<string name="misc_category" msgid="6894192814868233453">"其他选项"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"高级设置"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"适合专家级用户的选项"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"关闭弹出式键盘的延迟"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"无延迟"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"默认"</string>
<string name="auto_cap" msgid="1719746674854628252">"自动大写"</string>
<string name="quick_fixes" msgid="5353213327680897927">"快速纠正"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"纠正常见的输入错误"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"英语(英国)键盘"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"英语(美国)键盘"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"西班牙语键盘"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"西班牙语(美国)键盘"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"法语键盘"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"法语(加拿大)键盘"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"法语(瑞士)键盘"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"意大利语键盘"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"挪威语键盘"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"荷兰语键盘"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"波兰语键盘"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"葡萄牙语键盘"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"俄语键盘"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"塞尔维亚语键盘"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"瑞典语键盘"</string>
diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index 8a89aeb08..5251dd306 100644
--- a/java/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -30,6 +30,11 @@
<string name="correction_category" msgid="2236750915056607613">"文字修正"</string>
<string name="ngram_category" msgid="5337109164339320257">"根據先前字詞產生的建議"</string>
<string name="misc_category" msgid="6894192814868233453">"其他選項"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"進階設定"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"提供給專業使用者的選項"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"關閉彈出式鍵盤的延遲時間"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"不延遲"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"預設"</string>
<string name="auto_cap" msgid="1719746674854628252">"自動大寫"</string>
<string name="quick_fixes" msgid="5353213327680897927">"快速修正"</string>
<string name="quick_fixes_summary" msgid="3405028402510332373">"修正一般打字錯誤"</string>
@@ -105,7 +110,6 @@
<string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"英文 (英國) 鍵盤"</string>
<string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"英文 (美國) 鍵盤"</string>
<string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"西班牙文鍵盤"</string>
- <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"西班牙文 (美國) 鍵盤"</string>
<string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"法文鍵盤"</string>
<string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"法文 (加拿大) 鍵盤"</string>
<string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"法文 (瑞士) 鍵盤"</string>
@@ -113,6 +117,8 @@
<string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"義大利文鍵盤"</string>
<string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"挪威文鍵盤"</string>
<string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"荷蘭文鍵盤"</string>
+ <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"波蘭文鍵盤"</string>
+ <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"葡萄牙文鍵盤"</string>
<string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"俄文鍵盤"</string>
<string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"塞爾維亞文鍵盤"</string>
<string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"瑞典文語音"</string>
diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml
new file mode 100644
index 000000000..4ee4604e1
--- /dev/null
+++ b/java/res/values-zu/strings.xml
@@ -0,0 +1,209 @@
+<?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 xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_name" msgid="7252517407088836577">"Ikhibhodi ye-Android"</string>
+ <string name="english_ime_settings" msgid="6661589557206947774">"Izilungiselelo zekhibhodi ye-Android"</string>
+ <string name="english_ime_input_options" msgid="3909945612939668554">"Okukhethwa kukho kokungenayo"</string>
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Dlidlizelisa ngokucindezela inkinobho"</string>
+ <string name="sound_on_keypress" msgid="6093592297198243644">"Umsindo wokucindezela ukhiye"</string>
+ <string name="popup_on_keypress" msgid="123894815723512944">"Ugaxekile ngokucindezela ukhiye"</string>
+ <!-- no translation found for general_category (1859088467017573195) -->
+ <skip />
+ <!-- no translation found for correction_category (2236750915056607613) -->
+ <skip />
+ <!-- no translation found for ngram_category (5337109164339320257) -->
+ <skip />
+ <!-- no translation found for misc_category (6894192814868233453) -->
+ <skip />
+ <!-- no translation found for advanced_settings (362895144495591463) -->
+ <skip />
+ <!-- no translation found for advanced_settings_summary (5193513161106637254) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
+ <skip />
+ <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
+ <skip />
+ <string name="auto_cap" msgid="1719746674854628252">"Ukwenza ofeleba okuzenzakalelayo"</string>
+ <string name="quick_fixes" msgid="5353213327680897927">"Ukulungisa okusheshayo"</string>
+ <string name="quick_fixes_summary" msgid="3405028402510332373">"Ilungisa amaphutha athayiphwa ngokuvamile"</string>
+ <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
+ <skip />
+ <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3551821800439659812) -->
+ <skip />
+ <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
+ <skip />
+ <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) -->
+ <skip />
+ <string name="prefs_settings_key" msgid="4623341240804046498">"Bonisa ukhiye wezilungiselelo"</string>
+ <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Okuzenzakalelayo"</string>
+ <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Bonisa njalo"</string>
+ <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Fihla njalo"</string>
+ <!-- outdated translation 7911639788808958255 --> <string name="auto_correction" msgid="4979925752001319458">"Iziphakamiso zezwi"</string>
+ <!-- outdated translation 6881047311475758267 --> <string name="auto_correction_summary" msgid="5625751551134658006">"Ngokuzenzakalelayo ilungisa igama elandulele"</string>
+ <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
+ <skip />
+ <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
+ <skip />
+ <!-- no translation found for auto_correction_threshold_mode_aggeressive (3524029103734923819) -->
+ <skip />
+ <!-- outdated translation 1323347224043514969 --> <string name="bigram_suggestion" msgid="2636414079905220518">"Iziphakamiso ze-Biagram"</string>
+ <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Sebenzisa igama elandulele ukuthuthukisa okusikiselwayo"</string>
+ <!-- no translation found for bigram_prediction (8914273444762259739) -->
+ <skip />
+ <!-- no translation found for bigram_prediction_summary (1747261921174300098) -->
+ <skip />
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Kulondoloziwe"</string>
+ <string name="label_go_key" msgid="1635148082137219148">"Iya"</string>
+ <string name="label_next_key" msgid="362972844525672568">"Okulandelayo"</string>
+ <string name="label_done_key" msgid="2441578748772529288">"Kwenziwe"</string>
+ <string name="label_send_key" msgid="2815056534433717444">"Thumela"</string>
+ <!-- no translation found for label_to_alpha_key (4793983863798817523) -->
+ <skip />
+ <string name="label_more_key" msgid="3760239494604948502">"Okungaphezulu"</string>
+ <!-- no translation found for label_pause_key (181098308428035340) -->
+ <skip />
+ <!-- no translation found for label_wait_key (6402152600878093134) -->
+ <skip />
+ <string name="voice_warning_title" msgid="4419354150908395008">"Okungenayo kwezwi"</string>
+ <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Okungenayo kwezwi akusekelwa kolimi lwakho, kodwa kuyasebenza Ngesingisi."</string>
+ <!-- outdated translation 4611518823070986445 --> <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Okungenayo kwezwi isici sokuhlola kusebenzisa ukuqaphela izwi lenethiwekhi ye-Google."</string>
+ <!-- outdated translation 5652369578498701761 --> <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Ukuvala okungenayo kwezwi, iya kwizilungiselelo zekhibhodi."</string>
+ <!-- outdated translation 6892342981545727994 --> <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Ukusebenzisa okungenayo kwezwi, cindezela inkinobho yemakrofoni noma slayida umunwe wakho kwikhibhodi esesikrinini."</string>
+ <string name="voice_listening" msgid="467518160751321844">"Khuluma manje"</string>
+ <string name="voice_working" msgid="6666937792815731889">"Kuyasebenza"</string>
+ <string name="voice_initializing" msgid="661962047129906646"></string>
+ <string name="voice_error" msgid="5140896300312186162">"Iphutha. Sicela uzame futhi."</string>
+ <string name="voice_network_error" msgid="6649556447401862563">"Ayikwazanga ukuxhuma"</string>
+ <string name="voice_too_much_speech" msgid="5746973620134227376">"Iphutha, kunamagama amaningi."</string>
+ <string name="voice_audio_error" msgid="5072707727016414454">"Inkinga yomsindo"</string>
+ <string name="voice_server_error" msgid="7807129913977261644">"Iphutha leseva"</string>
+ <string name="voice_speech_timeout" msgid="8461817525075498795">"Awekho amagama azwakele"</string>
+ <string name="voice_no_match" msgid="4285117547030179174">"Akukho okufanayo okutholiwe"</string>
+ <string name="voice_not_installed" msgid="5552450909753842415">"Ukusesha ngezwi akufakiwe"</string>
+ <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Isexwayiso:"</b>"Shintshela kwikhibhodi ukuze ukhulume"</string>
+ <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Isixwayiso: "</b>"Esikhathini esilandelayo, zama ukukhuluma izimpimiselo ezinjengo \"isikhathi, \"ikhefu\" noma \"uphawu lombuzo\"."</string>
+ <string name="cancel" msgid="6830980399865683324">"Khansela"</string>
+ <string name="ok" msgid="7898366843681727667">"KULUNGILE"</string>
+ <string name="voice_input" msgid="2466640768843347841">"Okungenayo kwezwi"</string>
+ <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
+ <skip />
+ <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
+ <skip />
+ <string name="selectInputMethod" msgid="315076553378705821">"Khetha indlela yokungenayo"</string>
+ <string name="language_selection_title" msgid="1651299598555326750">"Izilimi zokufakwayo"</string>
+ <string name="language_selection_summary" msgid="187110938289512256">"Slayida umunwe kwibha yesikhala ukushintsha ulimi"</string>
+ <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Thinta futhi ukulondoloza"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Isichazamazwi siyatholakala"</string>
+ <string name="prefs_enable_log" msgid="6620424505072963557">"Vumela impendulo yomsebenzisi"</string>
+ <string name="prefs_description_log" msgid="5827825607258246003">"Siza ukuthuthukisa umhleli wendlela yokungenayo ngokuthumela izibalo zokubala nokuphahlaza imibiko e-Google."</string>
+ <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Thinta ukulungisa amagama"</string>
+ <!-- outdated translation 1056068922330206170 --> <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Thinta amagama afakiwe ukuwalungisa"</string>
+ <string name="keyboard_layout" msgid="437433231038683666">"Indikimba Yekhibhodi"</string>
+ <!-- no translation found for subtype_mode_cs_keyboard (1141718931112377586) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ar_keyboard (2655338636329774995) -->
+ <skip />
+ <!-- no translation found for subtype_mode_da_keyboard (1243570804427922104) -->
+ <skip />
+ <!-- no translation found for subtype_mode_de_keyboard (1990979135959462145) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_GB_keyboard (7945856548410373708) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_US_keyboard (3708655163769735410) -->
+ <skip />
+ <!-- no translation found for subtype_mode_es_keyboard (1775125478866113148) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_keyboard (8016515336759761014) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_CA_keyboard (2628517247158376263) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_CH_keyboard (6742806653181621228) -->
+ <skip />
+ <!-- no translation found for subtype_mode_iw_keyboard (1787536828253289950) -->
+ <skip />
+ <!-- no translation found for subtype_mode_it_keyboard (4934199655425394484) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nb_keyboard (1175783216100212360) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nl_keyboard (5090278083256037936) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ru_keyboard (1383995915064277943) -->
+ <skip />
+ <!-- no translation found for subtype_mode_sr_keyboard (5019440799612208168) -->
+ <skip />
+ <!-- no translation found for subtype_mode_sv_keyboard (4933838139861753401) -->
+ <skip />
+ <!-- no translation found for subtype_mode_af_voice (7542487489657902699) -->
+ <skip />
+ <!-- no translation found for subtype_mode_cs_voice (1136386688120958641) -->
+ <skip />
+ <!-- no translation found for subtype_mode_de_voice (8378803143958089866) -->
+ <skip />
+ <!-- no translation found for subtype_mode_en_voice (6643420989651848728) -->
+ <skip />
+ <!-- no translation found for subtype_mode_es_voice (1323473601346507487) -->
+ <skip />
+ <!-- no translation found for subtype_mode_fr_voice (4675914209337824269) -->
+ <skip />
+ <!-- no translation found for subtype_mode_it_voice (5077373057157441323) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ja_voice (6604859132669646367) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ko_voice (4890391190762324561) -->
+ <skip />
+ <!-- no translation found for subtype_mode_nl_voice (2603552312869575021) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pl_voice (2076196021014840487) -->
+ <skip />
+ <!-- no translation found for subtype_mode_pt_voice (8036522712795994397) -->
+ <skip />
+ <!-- no translation found for subtype_mode_ru_voice (8034596947963787529) -->
+ <skip />
+ <!-- no translation found for subtype_mode_tr_voice (3402067436761140005) -->
+ <skip />
+ <!-- no translation found for subtype_mode_yue_voice (1576887891614624263) -->
+ <skip />
+ <!-- no translation found for subtype_mode_zh_voice (4360533229467271152) -->
+ <skip />
+ <!-- no translation found for subtype_mode_zu_voice (1146122571698884636) -->
+ <skip />
+ <!-- no translation found for prefs_usability_study_mode (6937813623647419810) -->
+ <skip />
+</resources>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index e88b007a9..5557dde1e 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -15,21 +15,32 @@
-->
<resources>
-
- <declare-styleable name="KeyboardView">
- <!-- Default KeyboardView style. -->
+ <declare-styleable name="KeyboardTheme">
+ <!-- KeyboardView style -->
<attr name="keyboardViewStyle" format="reference" />
+ <attr name="keyPreviewStyle" format="reference" />
+ <!-- PopupMiniKeyboardView style -->
+ <attr name="popupMiniKeyboardViewStyle" format="reference" />
+ <attr name="popupMiniKeyboardPanelStyle" format="reference" />
+ <!-- Suggestions strip style -->
+ <attr name="suggestionsStripBackgroundStyle" format="reference" />
+ <attr name="suggestionBackgroundStyle" format="reference" />
+ <attr name="suggestionPreviewBackgroundStyle" format="reference" />
+ </declare-styleable>
+ <declare-styleable name="KeyboardView">
<!-- Image for the key. This image needs to be a StateListDrawable, with the following
possible states: normal, pressed, checkable, checkable+pressed, checkable+checked,
checkable+checked+pressed. -->
<attr name="keyBackground" format="reference" />
- <!-- Size of the text for one letter character keys. -->
- <attr name="keyLetterSize" format="dimension" />
+ <!-- Size of the text for one letter character keys, in the proportion of key height.
+ -->
+ <attr name="keyLetterRatio" format="float" />
- <!-- Size of the text for custom keys with some text and no icon. -->
- <attr name="labelTextSize" format="dimension" />
+ <!-- Size of the text for custom keys with some text and no icon, in the proportion of key
+ height. -->
+ <attr name="labelTextRatio" format="float" />
<!-- Color to use for the label in a key. -->
<attr name="keyTextColor" format="color" />
@@ -59,7 +70,7 @@
<attr name="shadowRadius" format="float" />
<attr name="backgroundDimAmount" format="float" />
- <attr name="keyLetterStyle">
+ <attr name="keyLetterStyle" format="enum">
<!-- This should be aligned with Typeface.NORMAL etc. -->
<enum name="normal" value="0" />
<enum name="bold" value="1" />
@@ -67,7 +78,7 @@
<enum name="boldItalic" value="3" />
</attr>
- <attr name="colorScheme">
+ <attr name="colorScheme" format="enum">
<!-- This should be aligned with KeyboardView.COLOR_SCHEME_* -->
<enum name="white" value="0" />
<enum name="black" value="1" />
@@ -80,8 +91,19 @@
<attr name="keyboardHeight" format="dimension" />
<!-- Maximum keyboard height, in pixels or percentage of display height -->
<attr name="maxKeyboardHeight" format="dimension|fraction" />
- <!-- Default width of a key, in pixels or percentage of display width. -->
- <attr name="keyWidth" format="dimension|fraction" />
+ <!-- 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" />
+ <!-- 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.
+ If the value is negative, the actual key width will be determined to fill out the
+ area between the nearest key on the left hand side and the right edge of the keyboard.
+ -->
+ <attr name="keyWidth" format="dimension|fraction|enum">
+ <enum name="fillRight" value="0" />
+ <enum name="fillBoth" value="-1" />
+ </attr>
<!-- Default height of a row (key height + vertical gap), in pixels or percentage of
keyboard height. -->
<attr name="rowHeight" format="dimension|fraction" />
@@ -103,7 +125,7 @@
<!-- Maximum column of popup keyboard -->
<attr name="maxPopupKeyboardColumn" format="integer" />
<!-- Key edge flags. -->
- <attr name="keyEdgeFlags">
+ <attr name="keyEdgeFlags" format="integer">
<!-- Key is anchored to the left of the keyboard. -->
<flag name="left" value="1" />
<!-- Key is anchored to the right of the keyboard. -->
@@ -122,7 +144,7 @@
<!-- The label to display on the key. -->
<attr name="keyLabel" format="string" />
<!-- The key label option -->
- <attr name="keyLabelOption">
+ <attr name="keyLabelOption" format="integer">
<!-- This should be aligned with KeyboardView.KEY_LABEL_OPTION_* -->
<flag name="alignLeft" value="1" />
<flag name="alignRight" value="2" />
@@ -147,11 +169,14 @@
<!-- Visual insets -->
<attr name="visualInsetsLeft" format="dimension|fraction" />
<attr name="visualInsetsRight" format="dimension|fraction" />
+ <!-- The X-coordinate of upper right corner of this key including horizontal gap.
+ If the value is negative, the origin is the right edge of the keyboard. -->
+ <attr name="keyXPos" format="dimension|fraction" />
</declare-styleable>
<declare-styleable name="Keyboard_Row">
<!-- Row edge flags. -->
- <attr name="rowEdgeFlags">
+ <attr name="rowEdgeFlags" format="integer">
<!-- Row is anchored to the top of the keyboard. -->
<flag name="top" value="4" />
<!-- Row is anchored to the bottom of the keyboard. -->
@@ -165,29 +190,31 @@
<declare-styleable name="Keyboard_Case">
<!-- This should be aligned with KeyboardId.MODE_* -->
- <attr name="mode">
+ <attr name="mode" format="enum|string">
<enum name="text" value="0" />
<enum name="url" value="1" />
<enum name="email" value="2" />
<enum name="im" value="3" />
- <enum name="web" value="4" />
- <enum name="phone" value="5" />
+ <enum name="phone" value="4" />
+ <enum name="number" value="5" />
</attr>
+ <attr name="webInput" format="boolean" />
<attr name="passwordInput" format="boolean" />
<attr name="hasSettingsKey" format="string" />
<attr name="voiceKeyEnabled" format="string" />
<attr name="hasVoiceKey" format="string" />
- <attr name="imeAction">
+ <attr name="imeAction" format="enum">
<!-- This should be aligned with EditorInfo.IME_ACTION_* -->
- <flag name="actionUnspecified" value="0" />
- <flag name="actionNone" value="1" />
- <flag name="actionGo" value="2" />
- <flag name="actionSearch" value="3" />
- <flag name="actionSend" value="4" />
- <flag name="actionNext" value="5" />
- <flag name="actionDone" value="6" />
- <flag name="actionPrevious" value="7" />
+ <enum name="actionUnspecified" value="0" />
+ <enum name="actionNone" value="1" />
+ <enum name="actionGo" value="2" />
+ <enum name="actionSearch" value="3" />
+ <enum name="actionSend" value="4" />
+ <enum name="actionNext" value="5" />
+ <enum name="actionDone" value="6" />
+ <enum name="actionPrevious" value="7" />
</attr>
+ <attr name="localeCode" format="string" />
<attr name="languageCode" format="string" />
<attr name="countryCode" format="string" />
</declare-styleable>
diff --git a/java/res/values/bools.xml b/java/res/values/bools.xml
index 2a181e17d..889d8f784 100644
--- a/java/res/values/bools.xml
+++ b/java/res/values/bools.xml
@@ -21,6 +21,4 @@
<!-- Whether this input method should be used as the default for a locale. Override it
for latin languages. -->
<bool name="im_is_default">false</bool>
- <!-- Whether or not voice input is enabled by default. -->
- <bool name="voice_input_default">true</bool>
</resources>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 1d24b1088..c61a6d52a 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -20,9 +20,7 @@
<resources>
<bool name="config_swipeDisambiguation">true</bool>
- <bool name="config_long_press_comma_for_settings_enabled">true</bool>
<bool name="config_enable_show_settings_key_option">true</bool>
- <bool name="config_enable_show_subtype_settings">true</bool>
<bool name="config_enable_show_voice_key_option">true</bool>
<bool name="config_enable_show_popup_on_keypress_option">true</bool>
<bool name="config_enable_show_recorrection_option">true</bool>
@@ -72,8 +70,6 @@
<string name="config_default_keyboard_theme_id" translatable="false">4</string>
<string name="config_text_size_of_language_on_spacebar" translatable="false">small</string>
<integer name="config_max_popup_keyboard_column">5</integer>
- <!-- Whether or not auto-correction should be enabled by default -->
- <bool name="enable_autocorrect">true</bool>
<string-array name="auto_correction_threshold_values" translatable="false">
<!-- Off, When auto correction setting is Off, this value is not used. -->
<item></item>
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 69f962f00..e26cad3f2 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -21,6 +21,8 @@
<resources>
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=0.295in -->
<dimen name="keyboardHeight">1.285in</dimen>
+ <fraction name="maxKeyboardHeight">50%p</fraction>
+ <fraction name="minKeyboardHeight">-61.8%p</fraction>
<!-- key_height + key_bottom_gap = popup_key_height -->
<!-- <dimen name="key_height">0.295in</dimen> -->
<dimen name="key_bottom_gap">0.035in</dimen>
@@ -41,13 +43,13 @@
to user's finger. -->
<dimen name="keyboard_vertical_correction">-0.05in</dimen>
- <dimen name="key_letter_size">0.13in</dimen>
- <dimen name="key_label_text_size">0.083in</dimen>
+ <fraction name="key_letter_ratio">45%</fraction>
+ <fraction name="key_label_text_ratio">29%</fraction>
<!-- left or right padding of label alignment -->
- <dimen name="key_label_horizontal_alignment_padding">0.13in</dimen>
+ <dimen name="key_label_horizontal_alignment_padding">21dip</dimen>
<dimen name="key_preview_height">80sp</dimen>
- <dimen name="key_preview_offset">0.000in</dimen>
- <dimen name="key_preview_text_size_large">36sp</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>
@@ -60,11 +62,9 @@
<dimen name="candidate_min_width">32dip</dimen>
<dimen name="candidate_padding">6dip</dimen>
<dimen name="candidate_text_size">18dip</dimen>
- <dimen name="spacebar_vertical_correction">4dip</dimen>
<!-- If the screen height in landscape is larger than the below value, then the keyboard
will not go into extract (fullscreen) mode. -->
<dimen name="max_height_for_fullscreen">2.5in</dimen>
- <dimen name="bubble_pointer_offset">22dip</dimen>
<dimen name="key_hysteresis_distance">0.05in</dimen>
</resources>
diff --git a/java/res/values/keycodes.xml b/java/res/values/keycodes.xml
index d5926ecfd..ee345291a 100644
--- a/java/res/values/keycodes.xml
+++ b/java/res/values/keycodes.xml
@@ -23,9 +23,6 @@
<integer name="key_tab">9</integer>
<integer name="key_return">10</integer>
<integer name="key_space">32</integer>
- <integer name="key_dash">45</integer>
- <integer name="key_single_quote">39</integer>
- <integer name="key_double_quote">34</integer>
<integer name="key_shift">-1</integer>
<integer name="key_switch_alpha_symbol">-2</integer>
<integer name="key_delete">-5</integer>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 823f1e58f..b75b21a84 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -46,6 +46,18 @@
<!-- Category title for misc options -->
<string name="misc_category">Other options</string>
+ <!-- Option name for advanced settings screen [CHAR LIMIT=25] -->
+ <string name="advanced_settings">Advanced settings</string>
+ <!-- Option summary for advanced settings screen [CHAR LIMIT=65 (two lines) or 30 (fits on one line, preferable)] -->
+ <string name="advanced_settings_summary">Options for expert users</string>
+
+ <!-- Option for the dismiss delay of the key popup [CHAR LIMIT=25] -->
+ <string name="key_preview_popup_dismiss_delay">Key popup dismiss delay</string>
+ <!-- Description for delay for dismissing a popup on keypress: no delay [CHAR LIMIT=15] -->
+ <string name="key_preview_popup_dismiss_no_delay">No delay</string>
+ <!-- Description for delay for dismissing a popup on screen: default value of the delay [CHAR LIMIT=15] -->
+ <string name="key_preview_popup_dismiss_default_delay">Default</string>
+
<!-- Option to enable auto capitalization of sentences -->
<string name="auto_cap">Auto-capitalization</string>
@@ -241,8 +253,6 @@
<string name="subtype_mode_en_US_keyboard">English (US) Keyboard</string>
<!-- Description for Spanish keyboard subtype [CHAR LIMIT=35] -->
<string name="subtype_mode_es_keyboard">Spanish Keyboard</string>
- <!-- Description for Spanish (United States) keyboard subtype [CHAR LIMIT=35] -->
- <string name="subtype_mode_es_US_keyboard">Spanish (US) Keyboard</string>
<!-- Description for French keyboard subtype [CHAR LIMIT=35] -->
<string name="subtype_mode_fr_keyboard">French Keyboard</string>
<!-- Description for French (Canada) keyboard subtype [CHAR LIMIT=35] -->
@@ -260,6 +270,8 @@
<string name="subtype_mode_nl_keyboard">Dutch Keyboard</string>
<!-- Description for Polish keyboard subtype [CHAR LIMIT=35] -->
<string name="subtype_mode_pl_keyboard">Polish Keyboard</string>
+ <!-- Description for Portuguese keyboard subtype [CHAR LIMIT=35] -->
+ <string name="subtype_mode_pt_keyboard">Portuguese Keyboard</string>
<!-- Description for Russian keyboard subtype [CHAR LIMIT=35] -->
<string name="subtype_mode_ru_keyboard">Russian Keyboard</string>
<!-- Description for Serbian keyboard subtype [CHAR LIMIT=35] -->
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 8a4b16d7a..7cb4593fa 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -15,18 +15,18 @@
-->
<resources>
+ <!-- Theme "Basic" -->
<style name="KeyboardView">
<item name="android:background">@drawable/keyboard_background</item>
-
<item name="keyBackground">@drawable/btn_keyboard_key</item>
- <item name="keyLetterSize">@dimen/key_letter_size</item>
+ <item name="keyLetterRatio">@fraction/key_letter_ratio</item>
<item name="keyLetterStyle">normal</item>
<item name="keyTextColor">#FFFFFFFF</item>
<item name="keyTextColorDisabled">#FFFFFFFF</item>
<item name="keyPreviewLayout">@layout/key_preview</item>
<item name="keyPreviewOffset">@dimen/key_preview_offset</item>
<item name="keyPreviewHeight">@dimen/key_preview_height</item>
- <item name="labelTextSize">@dimen/key_label_text_size</item>
+ <item name="labelTextRatio">@fraction/key_label_text_ratio</item>
<item name="popupLayout">@layout/keyboard_popup</item>
<item name="keyHysteresisDistance">@dimen/key_hysteresis_distance</item>
<item name="verticalCorrection">@dimen/keyboard_vertical_correction</item>
@@ -35,6 +35,91 @@
<item name="backgroundDimAmount">0.5</item>
<item name="colorScheme">white</item>
</style>
+ <style name="KeyPreviewStyle">
+ <item name="android:background">@drawable/keyboard_key_feedback</item>
+ </style>
+ <style name="PopupMiniKeyboardView" parent="KeyboardView">
+ <item name="keyBackground">@drawable/btn_keyboard_key_popup</item>
+ <item name="keyHysteresisDistance">0dip</item>
+ <item name="verticalCorrection">@dimen/mini_keyboard_vertical_correction</item>
+ </style>
+ <style name="PopupMiniKeyboardPanelStyle">
+ <item name="android:background">@drawable/keyboard_popup_panel_background</item>
+ <item name="android:paddingLeft">@dimen/mini_keyboard_horizontal_padding</item>
+ <item name="android:paddingRight">@dimen/mini_keyboard_horizontal_padding</item>
+ </style>
+ <style name="SuggestionsStripBackgroundStyle">
+ <item name="android:background">@drawable/keyboard_suggest_strip</item>
+ </style>
+ <style name="SuggestionBackgroundStyle">
+ <item name="android:background">@drawable/btn_candidate</item>
+ </style>
+ <style name="SuggestionPreviewBackgroundStyle">
+ <item name="android:background">@drawable/candidate_feedback_background</item>
+ </style>
+ <!-- Theme "Basic high contrast" -->
+ <style name="KeyboardView.HighContrast" parent="KeyboardView">
+ <item name="android:background">@android:color/black</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key3</item>
+ </style>
+ <!-- Theme "Stone" -->
+ <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="keyTextColorDisabled">#FF808080</item>
+ <item name="shadowColor">@color/latinkeyboard_key_color_white</item>
+ <item name="colorScheme">black</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>
+ </style>
+ <!-- Theme "Stone bold" -->
+ <style name="KeyboardView.Stone.Bold" parent="KeyboardView.Stone">
+ <item name="keyLetterStyle">bold</item>
+ </style>
+ <!-- Theme "Gingerbread" -->
+ <style name="KeyboardView.Gingerbread" parent="KeyboardView">
+ <item name="android:background">@drawable/keyboard_dark_background</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_gingerbread</item>
+ <item name="keyLetterStyle">bold</item>
+ </style>
+ <style name="PopupMiniKeyboardView.Gingerbread" parent="PopupMiniKeyboardView">
+ <item name="android:background">@null</item>
+ </style>
+ <!-- Theme "Honeycomb" -->
+ <style name="KeyboardView.Honeycomb" parent="KeyboardView">
+ <item name="android:background">@drawable/keyboard_background_holo</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_honeycomb</item>
+ <item name="keyPreviewHeight">@dimen/key_preview_height_holo</item>
+ <item name="keyPreviewOffset">@dimen/key_preview_offset_holo</item>
+ <item name="keyTextColorDisabled">#FF63666D</item>
+ <item name="keyLetterStyle">bold</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>
+ <style name="PopupMiniKeyboardView.Honeycomb" parent="PopupMiniKeyboardView">
+ <item name="android:background">@null</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_popup_honeycomb</item>
+ </style>
+ <style name="PopupMiniKeyboardPanelStyle.Honeycomb">
+ <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.Holo">
+ <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
+ </style>
+ <style name="SuggestionBackgroundStyle.Holo">
+ <item name="android:background">@drawable/btn_candidate_holo</item>
+ </style>
+ <style name="SuggestionPreviewBackgroundStyle.Holo">
+ <item name="android:background">@drawable/keyboard_popup_panel_background_holo</item>
+ </style>
<style name="PopupMiniKeyboardAnimation">
<item name="android:windowEnterAnimation">@anim/mini_keyboard_fadein</item>
<item name="android:windowExitAnimation">@anim/mini_keyboard_fadeout</item>
diff --git a/java/res/values/themes.xml b/java/res/values/themes.xml
new file mode 100644
index 000000000..5315a9a90
--- /dev/null
+++ b/java/res/values/themes.xml
@@ -0,0 +1,67 @@
+<?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="KeyboardTheme" parent="android:Theme">
+ <item name="keyboardViewStyle">@style/KeyboardView</item>
+ <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
+ <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
+ <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
+ <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
+ <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+ <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item>
+ </style>
+ <style name="KeyboardTheme.HighContrast" parent="android:Theme">
+ <item name="keyboardViewStyle">@style/KeyboardView.HighContrast</item>
+ <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
+ <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
+ <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
+ <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
+ <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+ </style>
+ <style name="KeyboardTheme.Stone" parent="android:Theme.Light">
+ <item name="keyboardViewStyle">@style/KeyboardView.Stone</item>
+ <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
+ <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
+ <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
+ <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
+ <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+ </style>
+ <style name="KeyboardTheme.Stone.Bold" parent="android:Theme.Light">
+ <item name="keyboardViewStyle">@style/KeyboardView.Stone.Bold</item>
+ <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
+ <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
+ <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
+ <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
+ <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+ </style>
+ <style name="KeyboardTheme.Gingerbread" parent="android:Theme.Black">
+ <item name="keyboardViewStyle">@style/KeyboardView.Gingerbread</item>
+ <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
+ <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Gingerbread</item>
+ <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
+ <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
+ <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
+ </style>
+ <style name="KeyboardTheme.Honeycomb" parent="android:Theme.Holo">
+ <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.Holo</item>
+ <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.Holo</item>
+ </style>
+</resources>
diff --git a/java/res/values/whitelist.xml b/java/res/values/whitelist.xml
index ced52e70e..d4ecbfaa4 100644
--- a/java/res/values/whitelist.xml
+++ b/java/res/values/whitelist.xml
@@ -25,14 +25,5 @@
3. (String)after
-->
<string-array name="wordlist_whitelist">
-
- <item>255</item>
- <item>ill</item>
- <item>I\'ll</item>
-
- <item>255</item>
- <item>thisd</item>
- <item>this\'d</item>
-
</string-array>
</resources>
diff --git a/java/res/xml-ar/kbd_qwerty.xml b/java/res/xml-ar/kbd_qwerty.xml
index 5faf60336..57823c9ac 100644
--- a/java/res/xml-ar/kbd_qwerty.xml
+++ b/java/res/xml-ar/kbd_qwerty.xml
@@ -21,9 +21,9 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
diff --git a/java/res/xml-cs/kbd_qwerty.xml b/java/res/xml-cs/kbd_qwerty.xml
index 0e6e40d7c..9ead49c3b 100644
--- a/java/res/xml-cs/kbd_qwerty.xml
+++ b/java/res/xml-cs/kbd_qwerty.xml
@@ -21,9 +21,9 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml
index d9847ae83..12ea33c13 100644
--- a/java/res/xml-da/kbd_qwerty.xml
+++ b/java/res/xml-da/kbd_qwerty.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml
index e6569667d..5c51bbdae 100644
--- a/java/res/xml-de/kbd_qwerty.xml
+++ b/java/res/xml-de/kbd_qwerty.xml
@@ -21,14 +21,14 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
- latin:keyboardLocale="de_DE"
+ latin:keyboardLocale="de"
>
<include
latin:keyboardLayout="@xml/kbd_qwertz_rows" />
diff --git a/java/res/xml-en/kbd_qwerty.xml b/java/res/xml-en/kbd_qwerty.xml
new file mode 100644
index 000000000..33e24d373
--- /dev/null
+++ b/java/res/xml-en/kbd_qwerty.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<!-- TODO: This is work around to avoid resource selection issue. This file must be removed when the
+ issue is sorted out. -->
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyboardHeight="@dimen/keyboardHeight"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
+ latin:rowHeight="25%p"
+ latin:horizontalGap="@dimen/key_horizontal_gap"
+ latin:verticalGap="@dimen/key_bottom_gap"
+ latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+ latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="en,en_US,en_GB"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+</Keyboard>
diff --git a/java/res/xml-es/kbd_qwerty.xml b/java/res/xml-es/kbd_qwerty.xml
new file mode 100644
index 000000000..f98649177
--- /dev/null
+++ b/java/res/xml-es/kbd_qwerty.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyboardHeight="@dimen/keyboardHeight"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
+ latin:rowHeight="25%p"
+ latin:horizontalGap="@dimen/key_horizontal_gap"
+ latin:verticalGap="@dimen/key_bottom_gap"
+ latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+ latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="es,es_US"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+</Keyboard>
diff --git a/java/res/xml-fi/kbd_qwerty.xml b/java/res/xml-fi/kbd_qwerty.xml
index ea08d670b..e35ab2b41 100644
--- a/java/res/xml-fi/kbd_qwerty.xml
+++ b/java/res/xml-fi/kbd_qwerty.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
diff --git a/java/res/xml-fr-rCA/kbd_qwerty.xml b/java/res/xml-fr-rCA/kbd_qwerty.xml
index f9c29698b..7f25848e2 100644
--- a/java/res/xml-fr-rCA/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCA/kbd_qwerty.xml
@@ -21,9 +21,9 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
diff --git a/java/res/xml-fr-rCH/kbd_qwerty.xml b/java/res/xml-fr-rCH/kbd_qwerty.xml
index e47cfd9b4..2baed3ce5 100644
--- a/java/res/xml-fr-rCH/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCH/kbd_qwerty.xml
@@ -21,9 +21,9 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml
index 2f8e67bb1..1b1065516 100644
--- a/java/res/xml-fr/kbd_qwerty.xml
+++ b/java/res/xml-fr/kbd_qwerty.xml
@@ -21,14 +21,14 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
- latin:keyboardLocale="fr_FR"
+ latin:keyboardLocale="fr"
>
<include
latin:keyboardLayout="@xml/kbd_azerty_rows" />
diff --git a/java/res/xml-hu/kbd_qwerty.xml b/java/res/xml-hu/kbd_qwerty.xml
index db729cf02..250b4553f 100644
--- a/java/res/xml-hu/kbd_qwerty.xml
+++ b/java/res/xml-hu/kbd_qwerty.xml
@@ -21,9 +21,9 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml
index 4cd565b88..e93927f1a 100644
--- a/java/res/xml-iw/kbd_qwerty.xml
+++ b/java/res/xml-iw/kbd_qwerty.xml
@@ -21,9 +21,9 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml
index 7b20ca28d..e7a743ca9 100644
--- a/java/res/xml-nb/kbd_qwerty.xml
+++ b/java/res/xml-nb/kbd_qwerty.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
diff --git a/java/res/xml-pl/kbd_qwerty.xml b/java/res/xml-pl/kbd_qwerty.xml
index fad28d641..7d9476d7b 100644
--- a/java/res/xml-pl/kbd_qwerty.xml
+++ b/java/res/xml-pl/kbd_qwerty.xml
@@ -21,14 +21,14 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
- latin:keyboardLocale="pl_PL"
+ latin:keyboardLocale="pl"
>
<include
latin:keyboardLayout="@xml/kbd_qwerty_rows" />
diff --git a/java/res/xml-pt/kbd_qwerty.xml b/java/res/xml-pt/kbd_qwerty.xml
new file mode 100644
index 000000000..1a8995510
--- /dev/null
+++ b/java/res/xml-pt/kbd_qwerty.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyboardHeight="@dimen/keyboardHeight"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
+ latin:rowHeight="25%p"
+ latin:horizontalGap="@dimen/key_horizontal_gap"
+ latin:verticalGap="@dimen/key_bottom_gap"
+ latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+ latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="pt"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+</Keyboard>
diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml
index e5aea581e..826818c46 100644
--- a/java/res/xml-ru/kbd_qwerty.xml
+++ b/java/res/xml-ru/kbd_qwerty.xml
@@ -21,13 +21,14 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
- latin:keyboardLocale="ru_RU"
+ latin:keyboardLocale="ru"
>
<include
latin:keyboardLayout="@xml/kbd_ru_rows" />
diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml
index 9782cd5eb..6116c7536 100644
--- a/java/res/xml-sr/kbd_qwerty.xml
+++ b/java/res/xml-sr/kbd_qwerty.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml
index 3ff1679a2..69f0b3fa0 100644
--- a/java/res/xml-sv/kbd_qwerty.xml
+++ b/java/res/xml-sv/kbd_qwerty.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
diff --git a/java/res/layout/key_preview_honeycomb.xml b/java/res/xml-sw600dp-land/kbd_popup_template.xml
index 2fbfbb517..2c1d1902e 100644
--- a/java/res/layout/key_preview_honeycomb.xml
+++ b/java/res/xml-sw600dp-land/kbd_popup_template.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.
@@ -18,12 +18,10 @@
*/
-->
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
- 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"
- android:background="@drawable/keyboard_key_feedback_honeycomb"
- />
+<Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyWidth="5%p"
+ latin:horizontalGap="0px"
+ latin:verticalGap="0px"
+ latin:rowHeight="@dimen/popup_key_height"
+ >
+</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_azerty_rows.xml b/java/res/xml-sw600dp/kbd_azerty_rows.xml
new file mode 100644
index 000000000..99c56e4cf
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_azerty_rows.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <Row
+ latin:keyWidth="9.0%p"
+ latin:rowEdgeFlags="top"
+ >
+ <Key
+ latin:keyLabel="a"
+ latin:popupCharacters="@string/alternates_for_a"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="z"
+ latin:popupCharacters="@string/alternates_for_z" />
+ <Key
+ latin:keyLabel="e"
+ latin:popupCharacters="@string/alternates_for_e" />
+ <Key
+ latin:keyLabel="r"
+ latin:popupCharacters="@string/alternates_for_r" />
+ <Key
+ latin:keyLabel="t"
+ latin:popupCharacters="@string/alternates_for_t" />
+ <Key
+ latin:keyLabel="y"
+ latin:popupCharacters="@string/alternates_for_y" />
+ <Key
+ latin:keyLabel="u"
+ latin:popupCharacters="@string/alternates_for_u" />
+ <Key
+ latin:keyLabel="i"
+ latin:popupCharacters="@string/alternates_for_i" />
+ <Key
+ latin:keyLabel="o"
+ latin:popupCharacters="@string/alternates_for_o" />
+ <Key
+ latin:keyLabel="p"
+ latin:popupCharacters="@string/alternates_for_p" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="9.0%p"
+ >
+ <Key
+ latin:keyLabel="q"
+ latin:popupCharacters="@string/alternates_for_q"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="s"
+ latin:popupCharacters="@string/alternates_for_s" />
+ <Key
+ latin:keyLabel="d"
+ latin:popupCharacters="@string/alternates_for_d" />
+ <Key
+ latin:keyLabel="f" />
+ <Key
+ latin:keyLabel="g"
+ latin:popupCharacters="@string/alternates_for_g" />
+ <Key
+ latin:keyLabel="h" />
+ <Key
+ latin:keyLabel="j" />
+ <Key
+ latin:keyLabel="k"
+ latin:popupCharacters="@string/alternates_for_k" />
+ <Key
+ latin:keyLabel="l"
+ latin:popupCharacters="@string/alternates_for_l" />
+ <Key
+ latin:keyLabel="m" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-14.6%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="8.9%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.0%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="w"
+ latin:popupCharacters="@string/alternates_for_w" />
+ <Key
+ latin:keyLabel="x" />
+ <Key
+ latin:keyLabel="c"
+ latin:popupCharacters="@string/alternates_for_c" />
+ <Key
+ latin:keyLabel="v"
+ latin:popupCharacters="@string/alternates_for_v" />
+ <Key
+ latin:keyLabel="b" />
+ <Key
+ latin:keyLabel="n"
+ latin:popupCharacters="@string/alternates_for_n" />
+ <Key
+ latin:keyLabel="\'" />
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel=","
+ latin:manualTemporaryUpperCaseCode="33"
+ latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:popupCharacters="!" />
+ <Key
+ latin:keyLabel="."
+ latin:manualTemporaryUpperCaseCode="63"
+ latin:keyHintIcon="@drawable/key_hint_question_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:popupCharacters="\?" />
+ </default>
+ </switch>
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
new file mode 100644
index 000000000..a98ffe679
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ 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>
+ <!-- Functional key styles -->
+ <switch>
+ <case
+ latin:colorScheme="white"
+ >
+ <key-style
+ latin:styleName="shiftKeyStyle"
+ latin:code="@integer/key_shift"
+ latin:keyIcon="@drawable/sym_keyboard_shift_holo"
+ latin:shiftedIcon="@drawable/sym_keyboard_shift_locked_holo"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
+ latin:parentStyle="functionalKeyStyle"
+ latin:isSticky="true" />
+ <key-style
+ latin:styleName="deleteKeyStyle"
+ latin:code="@integer/key_delete"
+ latin:keyIcon="@drawable/sym_keyboard_delete_holo"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
+ latin:parentStyle="functionalKeyStyle"
+ latin:isRepeatable="true" />
+ <key-style
+ latin:styleName="returnKeyStyle"
+ latin:code="@integer/key_return"
+ latin:keyIcon="@drawable/sym_keyboard_return_holo"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+ latin:parentStyle="functionalKeyStyle" />
+ <key-style
+ latin:styleName="spaceKeyStyle"
+ latin:code="@integer/key_space"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+ <key-style
+ latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
+ latin:code="@integer/key_space"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+ <key-style
+ latin:styleName="smileyKeyStyle"
+ latin:keyLabel=":-)"
+ latin:keyOutputText=":-) "
+ latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:popupCharacters="@string/alternates_for_smiley"
+ latin:maxPopupKeyboardColumn="5" />
+ <switch>
+ <case
+ latin:voiceKeyEnabled="true"
+ >
+ <key-style
+ latin:styleName="micOrSettingsKeyStyle"
+ latin:code="@integer/key_shortcut"
+ latin:keyIcon="@drawable/sym_keyboard_voice_holo"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
+ latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
+ latin:parentStyle="functionalKeyStyle" />
+ </case>
+ <default>
+ <key-style
+ latin:styleName="micOrSettingsKeyStyle"
+ latin:code="@integer/key_settings"
+ latin:keyIcon="@drawable/sym_keyboard_settings_holo"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+ latin:parentStyle="functionalKeyStyle" />
+ </default>
+ </switch>
+ </case>
+ <case
+ latin:colorScheme="black"
+ >
+ <key-style
+ latin:styleName="shiftKeyStyle"
+ latin:code="@integer/key_shift"
+ latin:keyIcon="@drawable/sym_bkeyboard_shift"
+ latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
+ latin:parentStyle="functionalKeyStyle"
+ latin:isSticky="true" />
+ <key-style
+ latin:styleName="deleteKeyStyle"
+ latin:code="@integer/key_delete"
+ latin:keyIcon="@drawable/sym_bkeyboard_delete"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
+ latin:parentStyle="functionalKeyStyle"
+ latin:isRepeatable="true" />
+ <key-style
+ latin:styleName="returnKeyStyle"
+ latin:code="@integer/key_return"
+ latin:keyIcon="@drawable/sym_bkeyboard_return"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+ latin:parentStyle="functionalKeyStyle" />
+ <key-style
+ latin:styleName="spaceKeyStyle"
+ latin:code="@integer/key_space"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+ <key-style
+ latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
+ latin:code="@integer/key_space"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+ <key-style
+ latin:styleName="smileyKeyStyle"
+ latin:keyLabel=":-)"
+ latin:keyOutputText=":-) "
+ latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:popupCharacters="@string/alternates_for_smiley"
+ latin:maxPopupKeyboardColumn="5" />
+ <switch>
+ <case
+ latin:voiceKeyEnabled="true"
+ >
+ <key-style
+ latin:styleName="micOrSettingsKeyStyle"
+ latin:code="@integer/key_shortcut"
+ latin:keyIcon="@drawable/sym_bkeyboard_mic"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
+ latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
+ latin:parentStyle="functionalKeyStyle" />
+ </case>
+ <default>
+ <key-style
+ latin:styleName="micOrSettingsKeyStyle"
+ latin:code="@integer/key_settings"
+ latin:keyIcon="@drawable/sym_bkeyboard_settings"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+ latin:parentStyle="functionalKeyStyle" />
+ </default>
+ </switch>
+ </case>
+ </switch>
+ <key-style
+ latin:styleName="tabKeyStyle"
+ latin:code="@integer/key_tab"
+ latin:keyIcon="@drawable/sym_keyboard_tab_holo"
+ latin:iconPreview="@drawable/sym_keyboard_tab_holo"
+ latin:parentStyle="functionalKeyStyle" />
+ <key-style
+ latin:styleName="toSymbolKeyStyle"
+ latin:code="@integer/key_switch_alpha_symbol"
+ latin:keyLabel="@string/label_to_symbol_key"
+ latin:keyLabelOption="fontNormal"
+ latin:parentStyle="functionalKeyStyle" />
+ <key-style
+ latin:styleName="toAlphaKeyStyle"
+ latin:code="@integer/key_switch_alpha_symbol"
+ latin:keyLabel="@string/label_to_alpha_key"
+ latin:keyLabelOption="fontNormal"
+ latin:parentStyle="functionalKeyStyle" />
+ <key-style
+ latin:styleName="moreKeyStyle"
+ latin:code="@integer/key_shift"
+ latin:keyLabel="@string/label_more_key"
+ latin:keyLabelOption="fontNormal"
+ latin:parentStyle="functionalKeyStyle"
+ latin:isSticky="true" />
+ <key-style
+ latin:styleName="comKeyStyle"
+ latin:keyLabel="@string/keylabel_for_popular_domain"
+ latin:keyLabelOption="fontNormal"
+ latin:keyOutputText="@string/keylabel_for_popular_domain"
+ latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:popupCharacters="@string/alternates_for_popular_domain" />
+ <switch>
+ <case
+ latin:passwordInput="true"
+ >
+ <key-style
+ latin:styleName="nonPasswordSymbolKeyStyle"
+ latin:enabled="false" />
+ </case>
+ <!-- latin:passwordInput="false" -->
+ <default>
+ <key-style
+ latin:styleName="nonPasswordSymbolKeyStyle"
+ latin:enabled="true" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml
new file mode 100644
index 000000000..f9096fc2c
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_number.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyboardHeight="@dimen/keyboardHeight"
+ latin:maxKeyboardHeight="50%p"
+ latin:rowHeight="25%p"
+ latin:keyWidth="16.75%p"
+ latin:horizontalGap="@dimen/key_horizontal_gap"
+ latin:verticalGap="@dimen/key_bottom_gap"
+ latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+ latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <include
+ latin:keyboardLayout="@xml/kbd_numkey_styles" />
+ <switch>
+ <case
+ latin:passwordInput="true"
+ >
+ <!-- This row is intentionally not marked as a top row -->
+ <Row>
+ <Key
+ latin:keyStyle="num1KeyStyle"
+ latin:keyXPos="24.875%p" />
+ <Key
+ latin:keyStyle="num2KeyStyle" />
+ <Key
+ latin:keyStyle="num3KeyStyle" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row>
+ <Key
+ latin:keyStyle="num4KeyStyle"
+ latin:keyXPos="24.875%p" />
+ <Key
+ latin:keyStyle="num5KeyStyle" />
+ <Key
+ latin:keyStyle="num6KeyStyle" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row>
+ <Key
+ latin:keyStyle="num7KeyStyle"
+ latin:keyXPos="24.875%p" />
+ <Key
+ latin:keyStyle="num8KeyStyle" />
+ <Key
+ latin:keyStyle="num9KeyStyle" />
+ </Row>
+ <!-- This row is intentionally not marked as a bottom row -->
+ <Row>
+ <Key
+ latin:keyStyle="tabKeyStyle"
+ latin:keyWidth="11.00%p"
+ latin:keyEdgeFlags="left" />
+ <Spacer
+ latin:keyXPos="24.875%p" />
+ <Key
+ latin:keyStyle="num0KeyStyle" />
+ <Spacer />
+ <Key
+ latin:keyStyle="micOrSettingsKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ </case>
+ <!-- latin:passwordInput="false" -->
+ <default>
+ <!-- This row is intentionally not marked as a top row -->
+ <Row>
+ <Key
+ latin:keyLabel="-"
+ latin:keyXPos="11.00%p"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyLabel="+"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyLabel="."
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyLabel="1"
+ latin:keyXPos="38.75%p" />
+ <Key
+ latin:keyLabel="2" />
+ <Key
+ latin:keyLabel="3" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row>
+ <Key
+ latin:keyLabel="*"
+ latin:keyXPos="11.00%p"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyLabel="/"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyLabel=","
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyLabel="4"
+ latin:keyXPos="38.75%p" />
+ <Key
+ latin:keyLabel="5" />
+ <Key
+ latin:keyLabel="6" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row>
+ <!-- There is an empty area below the "More" key and left of the "(" key. To
+ ignore the touch event on the area, "(" is intentionally not marked as a left
+ edge key. -->
+ <Key
+ latin:keyLabel="("
+ latin:keyXPos="11.00%p"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyLabel=")"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyLabel="="
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyLabel="7"
+ latin:keyXPos="38.75%p" />
+ <Key
+ latin:keyLabel="8" />
+ <Key
+ latin:keyLabel="9" />
+ </Row>
+ <!-- This row is intentionally not marked as a bottom row -->
+ <Row>
+ <Key
+ latin:keyStyle="tabKeyStyle"
+ latin:keyWidth="11.00%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+ latin:keyWidth="27.75%p" />
+ <Key
+ latin:keyLabel="*"
+ latin:keyXPos="38.75%p" />
+ <Key
+ latin:keyLabel="0" />
+ <Key
+ latin:keyLabel="#" />
+ <Key
+ latin:keyStyle="micOrSettingsKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ </default>
+ </switch>
+</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_numkey_styles.xml b/java/res/xml-sw600dp/kbd_numkey_styles.xml
new file mode 100644
index 000000000..b10dc9333
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_numkey_styles.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:colorScheme="white"
+ >
+ <key-style
+ latin:styleName="num0KeyStyle"
+ latin:code="48"
+ latin:keyIcon="@drawable/sym_keyboard_num0_holo" />
+ <key-style
+ latin:styleName="num1KeyStyle"
+ latin:code="49"
+ latin:keyIcon="@drawable/sym_keyboard_num1_holo" />
+ <key-style
+ latin:styleName="num2KeyStyle"
+ latin:code="50"
+ latin:keyIcon="@drawable/sym_keyboard_num2_holo" />
+ <key-style
+ latin:styleName="num3KeyStyle"
+ latin:code="51"
+ latin:keyIcon="@drawable/sym_keyboard_num3_holo" />
+ <key-style
+ latin:styleName="num4KeyStyle"
+ latin:code="52"
+ latin:keyIcon="@drawable/sym_keyboard_num4_holo" />
+ <key-style
+ latin:styleName="num5KeyStyle"
+ latin:code="53"
+ latin:keyIcon="@drawable/sym_keyboard_num5_holo" />
+ <key-style
+ latin:styleName="num6KeyStyle"
+ latin:code="54"
+ latin:keyIcon="@drawable/sym_keyboard_num6_holo" />
+ <key-style
+ latin:styleName="num7KeyStyle"
+ latin:code="55"
+ latin:keyIcon="@drawable/sym_keyboard_num7_holo" />
+ <key-style
+ latin:styleName="num8KeyStyle"
+ latin:code="56"
+ latin:keyIcon="@drawable/sym_keyboard_num8_holo" />
+ <key-style
+ latin:styleName="num9KeyStyle"
+ latin:code="57"
+ latin:keyIcon="@drawable/sym_keyboard_num9_holo" />
+ <key-style
+ latin:styleName="numStarKeyStyle"
+ latin:code="42"
+ latin:keyIcon="@drawable/sym_keyboard_numbstar_holo" />
+ <key-style
+ latin:styleName="numPoundKeyStyle"
+ latin:code="35"
+ latin:keyIcon="@drawable/sym_keyboard_numbpound_holo" />
+ <key-style
+ latin:styleName="numAltKeyStyle"
+ latin:code="@integer/key_switch_alpha_symbol"
+ latin:keyIcon="@drawable/sym_keyboard_numalt"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+ <key-style
+ latin:styleName="numSpaceKeyStyle"
+ latin:code="@integer/key_space"
+ latin:keyIcon="@drawable/sym_keyboard_space"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+ </case>
+ <case
+ latin:colorScheme="black"
+ >
+ <key-style
+ latin:styleName="num0KeyStyle"
+ latin:code="48"
+ latin:keyIcon="@drawable/sym_bkeyboard_num0" />
+ <key-style
+ latin:styleName="num1KeyStyle"
+ latin:code="49"
+ latin:keyIcon="@drawable/sym_bkeyboard_num1" />
+ <key-style
+ latin:styleName="num2KeyStyle"
+ latin:code="50"
+ latin:keyIcon="@drawable/sym_bkeyboard_num2" />
+ <key-style
+ latin:styleName="num3KeyStyle"
+ latin:code="51"
+ latin:keyIcon="@drawable/sym_bkeyboard_num3" />
+ <key-style
+ latin:styleName="num4KeyStyle"
+ latin:code="52"
+ latin:keyIcon="@drawable/sym_bkeyboard_num4" />
+ <key-style
+ latin:styleName="num5KeyStyle"
+ latin:code="53"
+ latin:keyIcon="@drawable/sym_bkeyboard_num5" />
+ <key-style
+ latin:styleName="num6KeyStyle"
+ latin:code="54"
+ latin:keyIcon="@drawable/sym_bkeyboard_num6" />
+ <key-style
+ latin:styleName="num7KeyStyle"
+ latin:code="55"
+ latin:keyIcon="@drawable/sym_bkeyboard_num7" />
+ <key-style
+ latin:styleName="num8KeyStyle"
+ latin:code="56"
+ latin:keyIcon="@drawable/sym_bkeyboard_num8" />
+ <key-style
+ latin:styleName="num9KeyStyle"
+ latin:code="57"
+ latin:keyIcon="@drawable/sym_bkeyboard_num9" />
+ <key-style
+ latin:styleName="numStarKeyStyle"
+ latin:code="42"
+ latin:keyIcon="@drawable/sym_bkeyboard_numstar" />
+ <key-style
+ latin:styleName="numPoundKeyStyle"
+ latin:code="35"
+ latin:keyIcon="@drawable/sym_bkeyboard_numpound" />
+ <key-style
+ latin:styleName="numAltKeyStyle"
+ latin:code="@integer/key_switch_alpha_symbol"
+ latin:keyIcon="@drawable/sym_bkeyboard_numalt"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+ <key-style
+ latin:styleName="numSpaceKeyStyle"
+ latin:code="@integer/key_space"
+ latin:keyIcon="@drawable/sym_bkeyboard_space"
+ latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+ </case>
+ </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
new file mode 100644
index 000000000..b20bb243f
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyboardHeight="@dimen/keyboardHeight"
+ latin:maxKeyboardHeight="50%p"
+ latin:rowHeight="25%p"
+ latin:keyWidth="16.75%p"
+ latin:horizontalGap="@dimen/key_horizontal_gap"
+ latin:verticalGap="@dimen/key_bottom_gap"
+ latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+ latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <include
+ latin:keyboardLayout="@xml/kbd_numkey_styles" />
+ <!-- This row is intentionally not marked as a top row -->
+ <Row>
+ <Key
+ latin:code="45"
+ latin:keyLabel=" - "
+ latin:keyXPos="15.625%p"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:code="43"
+ latin:keyLabel=" + "
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyStyle="num1KeyStyle"
+ latin:keyXPos="38.867%p" />
+ <Key
+ latin:keyStyle="num2KeyStyle" />
+ <Key
+ latin:keyStyle="num3KeyStyle" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row>
+ <Key
+ latin:code="44"
+ latin:keyLabel=" , "
+ latin:keyXPos="15.625%p"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:code="46"
+ latin:keyLabel=" . "
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyStyle="num4KeyStyle"
+ latin:keyXPos="38.867%p" />
+ <Key
+ latin:keyStyle="num5KeyStyle" />
+ <Key
+ latin:keyStyle="num6KeyStyle" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row>
+ <Key
+ latin:keyStyle="moreKeyStyle"
+ latin:keyWidth="11.0%p"
+ latin:keyEdgeFlags="left" />
+ <!-- There is an empty area below the "More" key and left of the "(" key. To ignore
+ the touch event on the area, "(" is intentionally not marked as a left edge key. -->
+ <Key
+ latin:code="40"
+ latin:keyLabel=" ( "
+ latin:keyXPos="15.625%p"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:code="41"
+ latin:keyLabel=" ) "
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyStyle="num7KeyStyle"
+ latin:keyXPos="38.867%p" />
+ <Key
+ latin:keyStyle="num8KeyStyle" />
+ <Key
+ latin:keyStyle="num9KeyStyle" />
+ </Row>
+ <!-- This row is intentionally not marked as a bottom row -->
+ <Row>
+ <Key
+ latin:keyStyle="tabKeyStyle"
+ latin:keyWidth="11.00%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+ latin:keyXPos="15.625%p"
+ latin:keyWidth="18.67%p" />
+ <Key
+ latin:keyStyle="numStarKeyStyle"
+ latin:keyXPos="38.867%p" />
+ <Key
+ latin:keyStyle="num0KeyStyle" />
+ <Key
+ latin:keyStyle="numPoundKeyStyle" />
+ <Key
+ latin:keyStyle="micOrSettingsKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml
new file mode 100644
index 000000000..7f6267341
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyboardHeight="@dimen/keyboardHeight"
+ latin:maxKeyboardHeight="50%p"
+ latin:rowHeight="25%p"
+ latin:keyWidth="16.75%p"
+ latin:horizontalGap="@dimen/key_horizontal_gap"
+ latin:verticalGap="@dimen/key_bottom_gap"
+ latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+ latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <include
+ latin:keyboardLayout="@xml/kbd_numkey_styles" />
+ <!-- This row is intentionally not marked as a top row -->
+ <Row>
+ <Key
+ latin:code="45"
+ latin:keyLabel=" - "
+ latin:keyXPos="11.00%p"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:code="43"
+ latin:keyLabel=" + "
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:code="44"
+ latin:keyLabel="@string/label_pause_key"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyStyle="num1KeyStyle"
+ latin:keyXPos="38.867%p" />
+ <Key
+ latin:keyStyle="num2KeyStyle" />
+ <Key
+ latin:keyStyle="num3KeyStyle" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row>
+ <Key
+ latin:code="44"
+ latin:keyLabel=" , "
+ latin:keyXPos="11.00%p"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:code="46"
+ latin:keyLabel=" . "
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:code="59"
+ latin:keyLabel="@string/label_wait_key"
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyStyle="num4KeyStyle"
+ latin:keyXPos="38.867%p" />
+ <Key
+ latin:keyStyle="num5KeyStyle" />
+ <Key
+ latin:keyStyle="num6KeyStyle" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row>
+ <Key
+ latin:keyStyle="moreKeyStyle"
+ latin:keyWidth="11.00%p"
+ latin:keyEdgeFlags="left" />
+ <!-- There is an empty area below the "More" key and left of the "(" key. To ignore
+ the touch event on the area, "(" is intentionally not marked as a left edge key. -->
+ <Key
+ latin:code="40"
+ latin:keyLabel=" ( "
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:code="41"
+ latin:keyLabel=" ) "
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:code="78"
+ latin:keyLabel=" N "
+ latin:keyWidth="9.25%p" />
+ <Key
+ latin:keyStyle="num7KeyStyle"
+ latin:keyXPos="38.867%p" />
+ <Key
+ latin:keyStyle="num8KeyStyle" />
+ <Key
+ latin:keyStyle="num9KeyStyle" />
+ </Row>
+ <!-- This row is intentionally not marked as a bottom row -->
+ <Row>
+ <Key
+ latin:keyStyle="tabKeyStyle"
+ latin:keyWidth="11.00%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+ latin:keyWidth="27.75%p" />
+ <Key
+ latin:keyStyle="numStarKeyStyle"
+ latin:keyXPos="38.867%p" />
+ <Key
+ latin:keyStyle="num0KeyStyle" />
+ <Key
+ latin:keyStyle="numPoundKeyStyle" />
+ <Key
+ latin:keyStyle="micOrSettingsKeyStyle"
+ latin:keyXPos="-11.00%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_popup_template.xml b/java/res/xml-sw600dp/kbd_popup_template.xml
new file mode 100644
index 000000000..fff2659be
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_popup_template.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyWidth="8%p"
+ latin:horizontalGap="@dimen/key_horizontal_gap"
+ latin:verticalGap="0px"
+ latin:rowHeight="@dimen/popup_key_height"
+ >
+</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_qwerty.xml b/java/res/xml-sw600dp/kbd_qwerty.xml
new file mode 100644
index 000000000..9541e13fd
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_qwerty.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyboardHeight="@dimen/keyboardHeight"
+ latin:maxKeyboardHeight="50%p"
+ latin:rowHeight="25%p"
+ latin:keyWidth="10%p"
+ latin:horizontalGap="@dimen/key_horizontal_gap"
+ latin:verticalGap="@dimen/key_bottom_gap"
+ latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+ latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row1.xml b/java/res/xml-sw600dp/kbd_qwerty_row1.xml
new file mode 100644
index 000000000..b781d681e
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_qwerty_row1.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <Row
+ latin:keyWidth="9.0%p"
+ latin:rowEdgeFlags="top"
+ >
+ <Key
+ latin:keyLabel="q"
+ latin:popupCharacters="@string/alternates_for_q"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="w"
+ latin:popupCharacters="@string/alternates_for_w" />
+ <Key
+ latin:keyLabel="e"
+ latin:popupCharacters="@string/alternates_for_e" />
+ <Key
+ latin:keyLabel="r"
+ latin:popupCharacters="@string/alternates_for_r" />
+ <Key
+ latin:keyLabel="t"
+ latin:popupCharacters="@string/alternates_for_t" />
+ <Key
+ latin:keyLabel="y"
+ latin:popupCharacters="@string/alternates_for_y" />
+ <Key
+ latin:keyLabel="u"
+ latin:popupCharacters="@string/alternates_for_u" />
+ <Key
+ latin:keyLabel="i"
+ latin:popupCharacters="@string/alternates_for_i" />
+ <Key
+ latin:keyLabel="o"
+ latin:popupCharacters="@string/alternates_for_o" />
+ <Key
+ latin:keyLabel="p"
+ latin:popupCharacters="@string/alternates_for_p" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row2.xml b/java/res/xml-sw600dp/kbd_qwerty_row2.xml
new file mode 100644
index 000000000..05b005af1
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_qwerty_row2.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <Row
+ latin:keyWidth="9.0%p"
+ >
+ <Key
+ latin:keyLabel="a"
+ latin:popupCharacters="@string/alternates_for_a"
+ latin:keyXPos="4.5%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="s"
+ latin:popupCharacters="@string/alternates_for_s" />
+ <Key
+ latin:keyLabel="d"
+ latin:popupCharacters="@string/alternates_for_d" />
+ <Key
+ latin:keyLabel="f" />
+ <Key
+ latin:keyLabel="g"
+ latin:popupCharacters="@string/alternates_for_g" />
+ <Key
+ latin:keyLabel="h" />
+ <Key
+ latin:keyLabel="j" />
+ <Key
+ latin:keyLabel="k"
+ latin:popupCharacters="@string/alternates_for_k" />
+ <Key
+ latin:keyLabel="l"
+ latin:popupCharacters="@string/alternates_for_l" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-14.6%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+</merge>
diff --git a/java/res/xml-xlarge/kbd_qwerty_row3.xml b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
index b7e9bcff9..4118ee197 100644
--- a/java/res/xml-xlarge/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row3.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.
@@ -22,11 +22,11 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<Row
- latin:keyWidth="8.042%p"
+ latin:keyWidth="8.9%p"
>
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="15.192%p"
+ latin:keyWidth="10.0%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="z"
@@ -70,9 +70,7 @@
latin:popupCharacters="\?" />
</default>
</switch>
- <Key
- latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="12.530%p"
- latin:keyEdgeFlags="right" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right" />
</Row>
</merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
new file mode 100644
index 000000000..3e5492e3d
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <!-- This row is intentionally not marked as a bottom row -->
+ <Row
+ latin:keyWidth="8.9%p"
+ >
+ <Key
+ latin:keyStyle="toSymbolKeyStyle"
+ latin:keyLabelOption="alignLeft"
+ latin:keyWidth="13.0%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="tabKeyStyle" />
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyStyle="comKeyStyle" />
+ </case>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyStyle="comKeyStyle" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="/"
+ latin:manualTemporaryUpperCaseCode="64"
+ latin:keyHintIcon="@drawable/key_hint_at_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
+ latin:popupCharacters="\@" />
+ </default>
+ </switch>
+ <Key
+ latin:keyStyle="spaceKeyStyle"
+ latin:keyXPos="30.750%p"
+ latin:keyWidth="39.750%p" />
+ <switch>
+ <case
+ latin:languageCode="ru"
+ >
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="-"
+ latin:keyWidth="9.750%p" />
+ </case>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel="/"
+ latin:manualTemporaryUpperCaseCode="58"
+ latin:keyHintIcon="@drawable/key_hint_colon_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+ latin:popupCharacters=":"
+ latin:keyWidth="9.750%p" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="\?"
+ latin:manualTemporaryUpperCaseCode="95"
+ latin:keyHintIcon="@drawable/key_hint_underline_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+ latin:popupCharacters="_"
+ latin:keyWidth="9.750%p" />
+ </default>
+ </switch>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="_"
+ latin:keyWidth="9.750%p" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="!"
+ latin:manualTemporaryUpperCaseCode="39"
+ latin:keyHintIcon="@drawable/key_hint_quote_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+ latin:popupCharacters="\'"
+ latin:keyWidth="9.750%p" />
+ </default>
+ </switch>
+ </case>
+ <!-- not languageCode="ru" -->
+ <default>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="-"
+ latin:keyWidth="9.750%p" />
+ </case>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel="/"
+ latin:manualTemporaryUpperCaseCode="58"
+ latin:keyHintIcon="@drawable/key_hint_colon_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+ latin:popupCharacters=":"
+ latin:keyWidth="9.750%p" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="\'"
+ latin:manualTemporaryUpperCaseCode="34"
+ latin:keyHintIcon="@drawable/key_hint_quote_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+ latin:popupCharacters="&quot;"
+ latin:keyWidth="9.750%p" />
+ </default>
+ </switch>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="_"
+ latin:keyWidth="9.750%p" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="-"
+ latin:manualTemporaryUpperCaseCode="95"
+ latin:keyHintIcon="@drawable/key_hint_underline_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+ latin:popupCharacters="_"
+ latin:keyWidth="9.750%p" />
+ </default>
+ </switch>
+ </default>
+ </switch>
+ <Key
+ latin:keyStyle="micOrSettingsKeyStyle"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_rows.xml b/java/res/xml-sw600dp/kbd_qwerty_rows.xml
new file mode 100644
index 000000000..a2d26b3de
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_qwerty_rows.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row1" />
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row2" />
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row3" />
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-xlarge/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.xml
index fb2034fb7..0bdcd21f4 100644
--- a/java/res/xml-xlarge/kbd_qwerty_rows_scandinavia.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.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.
@@ -24,16 +24,14 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="7.520%p"
+ latin:keyWidth="8.0%p"
+ latin:rowEdgeFlags="top"
>
<Key
- latin:keyStyle="tabKeyStyle"
- latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
- latin:keyEdgeFlags="left" />
- <Key
latin:keyLabel="q"
- latin:popupCharacters="@string/alternates_for_q" />
+ latin:popupCharacters="@string/alternates_for_q"
+ latin:keyXPos="2.15%p"
+ latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="w"
latin:popupCharacters="@string/alternates_for_w" />
@@ -65,20 +63,17 @@
latin:keyLabel="å" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="7.520%p"
+ latin:keyWidth="8.0%p"
>
<Key
- latin:keyStyle="toSymbolKeyStyle"
- latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
- latin:keyEdgeFlags="left" />
- <Key
latin:keyLabel="a"
- latin:popupCharacters="@string/alternates_for_a" />
+ latin:popupCharacters="@string/alternates_for_a"
+ latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="s"
latin:popupCharacters="@string/alternates_for_s" />
@@ -108,7 +103,8 @@
latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-14.6%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<include
diff --git a/java/res/xml-sw600dp/kbd_qwertz_rows.xml b/java/res/xml-sw600dp/kbd_qwertz_rows.xml
new file mode 100644
index 000000000..9e717c804
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_qwertz_rows.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <Row
+ latin:keyWidth="9.0%p"
+ latin:rowEdgeFlags="top"
+ >
+ <Key
+ latin:keyLabel="q"
+ latin:popupCharacters="@string/alternates_for_q"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="w"
+ latin:popupCharacters="@string/alternates_for_w" />
+ <Key
+ latin:keyLabel="e"
+ latin:popupCharacters="@string/alternates_for_e" />
+ <Key
+ latin:keyLabel="r"
+ latin:popupCharacters="@string/alternates_for_r" />
+ <Key
+ latin:keyLabel="t"
+ latin:popupCharacters="@string/alternates_for_t" />
+ <Key
+ latin:keyLabel="z"
+ latin:popupCharacters="@string/alternates_for_z" />
+ <Key
+ latin:keyLabel="u"
+ latin:popupCharacters="@string/alternates_for_u" />
+ <Key
+ latin:keyLabel="i"
+ latin:popupCharacters="@string/alternates_for_i" />
+ <Key
+ latin:keyLabel="o"
+ latin:popupCharacters="@string/alternates_for_o" />
+ <Key
+ latin:keyLabel="p"
+ latin:popupCharacters="@string/alternates_for_p" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row2" />
+ <Row
+ latin:keyWidth="8.9%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.0%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="y"
+ latin:popupCharacters="@string/alternates_for_y" />
+ <Key
+ latin:keyLabel="x" />
+ <Key
+ latin:keyLabel="c"
+ latin:popupCharacters="@string/alternates_for_c" />
+ <Key
+ latin:keyLabel="v"
+ latin:popupCharacters="@string/alternates_for_v" />
+ <Key
+ latin:keyLabel="b" />
+ <Key
+ latin:keyLabel="n"
+ latin:popupCharacters="@string/alternates_for_n" />
+ <Key
+ latin:keyLabel="m" />
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel=","
+ latin:manualTemporaryUpperCaseCode="33"
+ latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:popupCharacters="!" />
+ <Key
+ latin:keyLabel="."
+ latin:manualTemporaryUpperCaseCode="63"
+ latin:keyHintIcon="@drawable/key_hint_question_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:popupCharacters="\?" />
+ </default>
+ </switch>
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_row3_right.xml b/java/res/xml-sw600dp/kbd_row3_right.xml
new file mode 100644
index 000000000..6f7d40bda
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_row3_right.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="\@"
+ latin:keyXPos="-8.9%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </case>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel="-"
+ latin:manualTemporaryUpperCaseCode="95"
+ latin:keyHintIcon="@drawable/key_hint_underline_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+ latin:popupCharacters="_"
+ latin:keyXPos="-8.9%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </case>
+ <case
+ latin:imeAction="actionSearch"
+ >
+ <Key
+ latin:keyLabel=":"
+ latin:manualTemporaryUpperCaseCode="43"
+ latin:keyHintIcon="@drawable/key_hint_plus_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
+ latin:popupCharacters="+"
+ latin:keyXPos="-8.9%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </case>
+ <default>
+ <Key
+ latin:keyStyle="smileyKeyStyle"
+ latin:keyXPos="-8.9%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml-xlarge/kbd_ru_rows.xml b/java/res/xml-sw600dp/kbd_ru_rows.xml
index c5cd04371..714d1a8d2 100644
--- a/java/res/xml-xlarge/kbd_ru_rows.xml
+++ b/java/res/xml-sw600dp/kbd_ru_rows.xml
@@ -23,63 +23,48 @@
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
- <!-- This row is intentionally not marked as a top row -->
<Row
- latin:keyWidth="7.520%p"
+ latin:keyWidth="8.0%p"
+ latin:rowEdgeFlags="top"
>
<Key
- latin:keyStyle="tabKeyStyle"
- latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
- latin:keyEdgeFlags="left" />
- <Key
latin:keyLabel="й"
- latin:popupCharacters="1" />
+ latin:keyXPos="2.15%p"
+ latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="ц"
- latin:popupCharacters="2" />
+ latin:keyLabel="ц" />
<Key
- latin:keyLabel="у"
- latin:popupCharacters="3" />
+ latin:keyLabel="у" />
<Key
- latin:keyLabel="к"
- latin:popupCharacters="4" />
+ latin:keyLabel="к" />
<Key
latin:keyLabel="е"
latin:popupCharacters="@string/alternates_for_cyrillic_e" />
<Key
- latin:keyLabel="н"
- latin:popupCharacters="6" />
+ latin:keyLabel="н" />
<Key
- latin:keyLabel="г"
- latin:popupCharacters="7" />
+ latin:keyLabel="г" />
<Key
- latin:keyLabel="ш"
- latin:popupCharacters="8" />
+ latin:keyLabel="ш" />
<Key
- latin:keyLabel="щ"
- latin:popupCharacters="9" />
+ latin:keyLabel="щ" />
<Key
- latin:keyLabel="з"
- latin:popupCharacters="0" />
+ latin:keyLabel="з" />
<Key
latin:keyLabel="х" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="7.520%p"
+ latin:keyWidth="8.0%p"
>
<Key
- latin:keyStyle="toSymbolKeyStyle"
- latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
+ latin:keyLabel="ф"
latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="ф" />
- <Key
latin:keyLabel="ы" />
<Key
latin:keyLabel="в" />
@@ -101,15 +86,16 @@
latin:keyLabel="э" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-14.6%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="7.520%p"
+ latin:keyWidth="8.0%p"
>
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="12.400%p"
+ latin:keyWidth="10.0%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="я" />
@@ -136,10 +122,8 @@
latin:keyHintIcon="@drawable/key_hint_comma_holo"
latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_comma_large_holo"
latin:popupCharacters="," />
- <Key
- latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="12.400%p"
- latin:keyEdgeFlags="right" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right" />
</Row>
<include
latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_sr_rows.xml b/java/res/xml-sw600dp/kbd_sr_rows.xml
new file mode 100644
index 000000000..62c3b71d0
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_sr_rows.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <Row
+ latin:keyWidth="8.0%p"
+ latin:rowEdgeFlags="top"
+ >
+ <Key
+ latin:keyLabel="љ"
+ latin:keyXPos="2.15%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="њ" />
+ <Key
+ latin:keyLabel="е" />
+ <Key
+ latin:keyLabel="р" />
+ <Key
+ latin:keyLabel="т" />
+ <Key
+ latin:keyLabel="з" />
+ <Key
+ latin:keyLabel="у" />
+ <Key
+ latin:keyLabel="и" />
+ <Key
+ latin:keyLabel="о" />
+ <Key
+ latin:keyLabel="п" />
+ <Key
+ latin:keyLabel="ш" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="7.9%p"
+ >
+ <Key
+ latin:keyLabel="а"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="с" />
+ <Key
+ latin:keyLabel="д" />
+ <Key
+ latin:keyLabel="ф" />
+ <Key
+ latin:keyLabel="г" />
+ <Key
+ latin:keyLabel="х" />
+ <Key
+ latin:keyLabel="ј" />
+ <Key
+ latin:keyLabel="к" />
+ <Key
+ latin:keyLabel="л" />
+ <Key
+ latin:keyLabel="ч" />
+ <Key
+ latin:keyLabel="ћ" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-14.6%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="7.5%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="8.0%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="ѕ" />
+ <Key
+ latin:keyLabel="џ" />
+ <Key
+ latin:keyLabel="ц" />
+ <Key
+ latin:keyLabel="в" />
+ <Key
+ latin:keyLabel="б" />
+ <Key
+ latin:keyLabel="н" />
+ <Key
+ latin:keyLabel="м" />
+ <Key
+ latin:keyLabel="ђ" />
+ <Key
+ latin:keyLabel="ж" />
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel=","
+ latin:manualTemporaryUpperCaseCode="33"
+ latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:popupCharacters="!" />
+ <Key
+ latin:keyLabel="."
+ latin:manualTemporaryUpperCaseCode="63"
+ latin:keyHintIcon="@drawable/key_hint_question_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:popupCharacters="\?" />
+ </default>
+ </switch>
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index f1deae0f9..3593c7788 100644
--- a/java/res/xml-xlarge/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.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.
@@ -34,14 +34,9 @@
latin:keyboardLayout="@xml/kbd_currency_key_styles" />
<!-- This row is intentionally not marked as a top row -->
<Row
- latin:keyWidth="8.272%p"
+ latin:keyWidth="9.0%p"
>
<Key
- latin:keyStyle="tabKeyStyle"
- latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
- latin:keyEdgeFlags="left" />
- <Key
latin:keyLabel="1"
latin:popupCharacters="¹,½,⅓,¼,⅛" />
<Key
@@ -70,19 +65,16 @@
latin:popupCharacters="ⁿ,∅" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.157%p"
+ latin:keyWidth="9.0%p"
>
<Key
- latin:keyStyle="toAlphaKeyStyle"
- latin:keyLabelOption="alignLeft"
- latin:keyWidth="11.167%p"
- latin:keyEdgeFlags="left" />
- <Key
- latin:keyLabel="#" />
+ latin:keyLabel="#"
+ latin:keyXPos="4.5%p" />
<Key
latin:keyStyle="currencyKeyStyle" />
<Key
@@ -107,15 +99,16 @@
latin:popupCharacters="],},&gt;" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="15.750%p"
+ latin:keyXPos="-14.6%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.042%p"
+ latin:keyWidth="8.9%p"
>
<Key
latin:keyStyle="moreKeyStyle"
- latin:keyWidth="15.192%p"
+ latin:keyWidth="10.0%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="&lt;"
@@ -137,7 +130,8 @@
latin:mode="url"
>
<Key
- latin:keyLabel="\'" />
+ latin:keyLabel="\'"
+ latin:popupCharacters="‘,’,‚,‛" />
</case>
<default>
<Key
@@ -151,10 +145,14 @@
latin:languageCode="ru"
>
<Key
- latin:keyLabel="\'" />
+ latin:keyLabel="\'"
+ latin:popupCharacters="‘,’,‚,‛" />
+ <!-- Note: DroidSans doesn't have double-high-reversed-quotation
+ '\u201f' glyph. -->
+ <!-- latin:popupCharacters="“,”,„,‟,«,»" -->
<Key
latin:keyLabel="&quot;"
- latin:popupCharacters="“,”,«,»,˝" />
+ latin:popupCharacters="“,”,«,»" />
<Key
latin:keyLabel="." />
<Key
@@ -174,58 +172,54 @@
</default>
</switch>
<Key
- latin:keyStyle="moreKeyStyle"
- latin:keyWidth="12.530%p"
- latin:keyEdgeFlags="right" />
+ latin:keyLabel="/"
+ latin:keyWidth="fillRight" />
</Row>
<!-- This row is intentionally not marked as a bottom row -->
<Row
- latin:keyWidth="8.042%p"
+ latin:keyWidth="8.9%p"
>
- <Spacer
- latin:horizontalGap="8.362%p" />
- <switch>
- <case latin:hasSettingsKey="true">
- <Key
- latin:keyStyle="settingsKeyStyle" />
- </case>
- <default>
- <Spacer
- latin:horizontalGap="8.042%p" />
- </default>
- </switch>
<Key
- latin:keyLabel="/" />
+ latin:keyStyle="toAlphaKeyStyle"
+ latin:keyLabelOption="alignLeft"
+ latin:keyWidth="13.0%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="tabKeyStyle" />
<Key
latin:keyLabel="\@" />
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="37.454%p" />
+ latin:keyXPos="30.750%p"
+ latin:keyWidth="39.750%p" />
<switch>
<case
latin:languageCode="ru"
>
<Key
- latin:keyLabel="_" />
+ latin:keyLabel="_"
+ latin:keyWidth="9.750%p" />
<Key
- latin:keyLabel="-" />
+ latin:keyLabel="-"
+ latin:keyWidth="9.750%p" />
</case>
<default>
- <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. -->
+ <!-- Note: DroidSans doesn't have double-high-reversed-quotation
+ '\u201f' glyph. -->
+ <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" -->
<Key
latin:keyLabel="&quot;"
- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" />
+ latin:popupCharacters="“,”,«,»,‘,’,‚,‛"
+ latin:keyWidth="9.750%p" />
<Key
- latin:keyLabel="_" />
+ latin:keyLabel="_"
+ latin:keyWidth="9.750%p" />
</default>
</switch>
- <switch>
- <case
- latin:voiceKeyEnabled="true"
- >
- <Key
- latin:keyStyle="micKeyStyle" />
- </case>
- </switch>
+ <Key
+ latin:keyStyle="micOrSettingsKeyStyle"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
</Row>
</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_symbols_shift.xml
new file mode 100644
index 000000000..4cef3a78f
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_symbols_shift.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyboardHeight="@dimen/keyboardHeight"
+ latin:maxKeyboardHeight="50%p"
+ latin:rowHeight="25%p"
+ latin:horizontalGap="@dimen/key_horizontal_gap"
+ latin:verticalGap="@dimen/key_bottom_gap"
+ latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+ latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <!-- This row is intentionally not marked as a top row -->
+ <Row
+ latin:keyWidth="9.0%p"
+ >
+ <Key
+ latin:keyLabel="~" />
+ <Key
+ latin:keyLabel="`" />
+ <Key
+ latin:keyLabel="|" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="•"
+ latin:popupCharacters="♪,♥,♠,♦,♣" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="√" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="π"
+ latin:popupCharacters="Π" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="÷" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="×" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="§"
+ latin:popupCharacters="¶" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="Δ" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="9.0%p"
+ >
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="£"
+ latin:keyXPos="4.5%p" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="¢" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="€" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="¥" />
+ <Key
+ latin:keyLabel="^"
+ latin:popupCharacters="↑,↓,←,→" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="°"
+ latin:popupCharacters="′,″" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="±"
+ latin:popupCharacters="∞" />
+ <Key
+ latin:keyLabel="{" />
+ <Key
+ latin:keyLabel="}" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-14.6%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="8.9%p"
+ >
+ <Key
+ latin:keyStyle="moreKeyStyle"
+ latin:keyWidth="10.0%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="\\" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="©" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="®" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="™" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="℅" />
+ <Key
+ latin:keyLabel="[" />
+ <Key
+ latin:keyLabel="]" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="¡" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="¿" />
+ </Row>
+ <!-- This row is intentionally not marked as a bottom row -->
+ <Row
+ latin:keyWidth="8.9%p"
+ >
+ <Key
+ latin:keyStyle="toAlphaKeyStyle"
+ latin:keyLabelOption="alignLeft"
+ latin:keyWidth="13.0%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="tabKeyStyle" />
+ <Key
+ latin:keyStyle="spaceKeyStyle"
+ latin:keyXPos="30.750%p"
+ latin:keyWidth="39.750%p" />
+ <Key
+ latin:keyStyle="micOrSettingsKeyStyle"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+</Keyboard>
diff --git a/java/res/xml-xlarge-land/kbd_popup_template.xml b/java/res/xml-sw768dp-land/kbd_popup_template.xml
index 3caae1a60..3caae1a60 100644
--- a/java/res/xml-xlarge-land/kbd_popup_template.xml
+++ b/java/res/xml-sw768dp-land/kbd_popup_template.xml
diff --git a/java/res/xml-xlarge/kbd_ar_rows.xml b/java/res/xml-sw768dp/kbd_ar_rows.xml
index e84aae6b5..c1810026b 100644
--- a/java/res/xml-xlarge/kbd_ar_rows.xml
+++ b/java/res/xml-sw768dp/kbd_ar_rows.xml
@@ -27,12 +27,12 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="7.49%p"
+ latin:keyWidth="7.375%p"
>
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
+ latin:keyWidth="7.500%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ض" />
@@ -61,16 +61,17 @@
latin:popupCharacters="ج,چ" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-11.500%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="7.49%p"
+ latin:keyWidth="7.375%p"
>
<Key
latin:keyStyle="toSymbolKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
+ latin:keyWidth="9.375%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ش" />
@@ -100,16 +101,20 @@
latin:keyLabel="ط" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="8.593%p"
+ latin:keyXPos="-9.375%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.042%p"
+ latin:keyWidth="7.375%p"
>
<Key
- latin:keyLabel="ئ"
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="12.750%p"
latin:keyEdgeFlags="left" />
<Key
+ latin:keyLabel="ئ" />
+ <Key
latin:keyLabel="ء" />
<Key
latin:keyLabel="ؤ" />
@@ -130,10 +135,6 @@
latin:keyLabel="ظ" />
<Key
latin:keyLabel="د" />
- <Key
- latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="11.736%p"
- latin:keyEdgeFlags="right" />
</Row>
<include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml-xlarge/kbd_azerty_rows.xml b/java/res/xml-sw768dp/kbd_azerty_rows.xml
index 564f77629..5288ccf91 100644
--- a/java/res/xml-xlarge/kbd_azerty_rows.xml
+++ b/java/res/xml-sw768dp/kbd_azerty_rows.xml
@@ -24,12 +24,12 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="8.272%p"
+ latin:keyWidth="8.282%p"
>
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
+ latin:keyWidth="7.969%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="a"
@@ -63,11 +63,12 @@
latin:popupCharacters="@string/alternates_for_p" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-9.219%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.157%p"
+ latin:keyWidth="8.125%p"
>
<Key
latin:keyStyle="toSymbolKeyStyle"
@@ -103,15 +104,16 @@
latin:keyEdgeFlags="right" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="8.593%p"
+ latin:keyXPos="-15.704%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.042%p"
+ latin:keyWidth="8.047%p"
>
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="15.192%p"
+ latin:keyWidth="13.829%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="w"
@@ -161,7 +163,8 @@
</switch>
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="12.530%p"
+ latin:keyXPos="-13.750%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<include
diff --git a/java/res/xml-xlarge/kbd_iw_rows.xml b/java/res/xml-sw768dp/kbd_iw_rows.xml
index a3a239dbf..5275a1f15 100644
--- a/java/res/xml-xlarge/kbd_iw_rows.xml
+++ b/java/res/xml-sw768dp/kbd_iw_rows.xml
@@ -24,12 +24,11 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="8.272%p"
+ latin:keyWidth="8.000%p"
>
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="," />
@@ -53,16 +52,17 @@
latin:keyLabel="פ" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-12.000%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.157%p"
+ latin:keyWidth="8.000%p"
>
<Key
latin:keyStyle="toSymbolKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="10.167%p"
+ latin:keyWidth="9.600%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ש" />
@@ -89,15 +89,16 @@
latin:keyLabel="ף" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="8.593%p"
+ latin:keyXPos="-10.400%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.042%p"
+ latin:keyWidth="8.000%p"
>
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="15.192%p"
+ latin:keyWidth="13.200%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ז"
@@ -121,10 +122,6 @@
<Key
latin:keyLabel="ץ"
latin:popupCharacters="ץ,ץ׳" />
- <Key
- latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="12.530%p"
- latin:keyEdgeFlags="right" />
</Row>
<include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml-xlarge/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index 57eaccbae..57eaccbae 100644
--- a/java/res/xml-xlarge/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
diff --git a/java/res/xml-xlarge/kbd_number.xml b/java/res/xml-sw768dp/kbd_number.xml
index 012b75115..faab38ade 100644
--- a/java/res/xml-xlarge/kbd_number.xml
+++ b/java/res/xml-sw768dp/kbd_number.xml
@@ -21,9 +21,10 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="11.949%p"
+ latin:keyWidth="13.250%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -39,42 +40,42 @@
>
<!-- This row is intentionally not marked as a top row -->
<Row>
- <Spacer
- latin:horizontalGap="32.076%p" />
<Key
- latin:keyStyle="num1KeyStyle" />
+ latin:keyStyle="tabKeyStyle"
+ latin:keyLabelOption="alignLeft"
+ latin:keyWidth="11.172%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="num1KeyStyle"
+ latin:keyXPos="32.076%p" />
<Key
latin:keyStyle="num2KeyStyle" />
<Key
latin:keyStyle="num3KeyStyle" />
- <Spacer
- latin:horizontalGap="22.272%p" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.804%p"
+ latin:keyXPos="-11.172%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
- <Spacer
- latin:horizontalGap="32.076%p" />
<Key
- latin:keyStyle="num4KeyStyle" />
+ latin:keyStyle="num4KeyStyle"
+ latin:keyXPos="32.076%p" />
<Key
latin:keyStyle="num5KeyStyle" />
<Key
latin:keyStyle="num6KeyStyle" />
- <Spacer
- latin:horizontalGap="17.371%p" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="14.706%p"
+ latin:keyXPos="-11.172%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
- <Spacer
- latin:horizontalGap="32.076%p" />
<Key
- latin:keyStyle="num7KeyStyle" />
+ latin:keyStyle="num7KeyStyle"
+ latin:keyXPos="32.076%p" />
<Key
latin:keyStyle="num8KeyStyle" />
<Key
@@ -86,7 +87,7 @@
<!-- This row is intentionally not marked as a bottom row -->
<Row>
<Spacer
- latin:horizontalGap="44.026%p" />
+ latin:keyXPos="32.076%p" />
<Key
latin:keyStyle="num0KeyStyle" />
<!-- There is an empty area below the "Enter" key and right of the "#" key. To
@@ -101,79 +102,72 @@
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
+ latin:keyWidth="11.172%p"
latin:keyEdgeFlags="left" />
- <Spacer
- latin:horizontalGap="4.458%p" />
<Key
latin:keyLabel="-"
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="13.829%p"
+ latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="+"
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="."
- latin:keyWidth="8.042%p" />
- <Spacer
- latin:horizontalGap="4.458%p" />
+ latin:keyWidth="8.047%p" />
<Key
- latin:keyLabel="1" />
+ latin:keyLabel="1"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyLabel="2" />
<Key
latin:keyLabel="3" />
- <Spacer
- latin:horizontalGap="9.360%p" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.804%p"
+ latin:keyXPos="-11.172%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
- <Spacer
- latin:horizontalGap="16.406%p" />
<Key
latin:keyLabel="*"
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="13.829%p"
+ latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="/"
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
<Key
latin:keyLabel=","
- latin:keyWidth="8.042%p" />
- <Spacer
- latin:horizontalGap="4.458%p" />
+ latin:keyWidth="8.047%p" />
<Key
- latin:keyLabel="4" />
+ latin:keyLabel="4"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyLabel="5" />
<Key
latin:keyLabel="6" />
- <Spacer
- latin:horizontalGap="4.458%p" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="14.706%p"
+ latin:keyXPos="-11.172%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
<!-- There is an empty area below the "More" key and left of the "(" key. To
ignore the touch event on the area, "(" is intentionally not marked as a left
edge key. -->
- <Spacer
- latin:horizontalGap="16.406%p" />
<Key
latin:keyLabel="("
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="13.829%p"
+ latin:keyWidth="8.047%p" />
<Key
latin:keyLabel=")"
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
<Key
latin:keyLabel="="
- latin:keyWidth="8.042%p" />
- <Spacer
- latin:horizontalGap="4.458%p" />
+ latin:keyWidth="8.047%p" />
<Key
- latin:keyLabel="7" />
+ latin:keyLabel="7"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyLabel="8" />
<Key
@@ -184,29 +178,20 @@
</Row>
<!-- This row is intentionally not marked as a bottom row -->
<Row>
- <!-- There is an empty area below the "More" key and left of the "space" key. To
- ignore the touch event on the area, "space" is intentionally not marked as a
- left edge key. -->
- <Spacer
- latin:horizontalGap="8.362%p" />
<switch>
<case latin:hasSettingsKey="true">
<Key
latin:keyStyle="settingsKeyStyle"
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
</case>
- <default>
- <Spacer
- latin:horizontalGap="8.042%p" />
- </default>
</switch>
<Key
latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
- latin:keyWidth="24.127%p" />
- <Spacer
- latin:horizontalGap="4.458%p" />
+ latin:keyXPos="13.829%p"
+ latin:keyWidth="24.140%p" />
<Key
- latin:keyLabel="*" />
+ latin:keyLabel="*"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyLabel="0" />
<Key
@@ -217,12 +202,10 @@
>
<Key
latin:keyStyle="micKeyStyle"
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="-8.047%p"
+ latin:keyWidth="fillRight" />
</case>
</switch>
- <!-- There is an empty area below the "Enter" key and right of the "#" key. To
- ignore the touch event on the area, "#" is intentionally not marked as a right
- edge key. -->
</Row>
</default>
</switch>
diff --git a/java/res/xml-xlarge/kbd_numkey_styles.xml b/java/res/xml-sw768dp/kbd_numkey_styles.xml
index e27db94c7..e27db94c7 100644
--- a/java/res/xml-xlarge/kbd_numkey_styles.xml
+++ b/java/res/xml-sw768dp/kbd_numkey_styles.xml
diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index 9122176a9..51627aa6a 100644
--- a/java/res/xml-xlarge/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -21,9 +21,10 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="11.949%p"
+ latin:keyWidth="13.250%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -38,115 +39,101 @@
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
+ latin:keyWidth="11.172%p"
latin:keyEdgeFlags="left" />
<!-- To match one character label size with "Tab", I placed spaces around the char '-'
and '+'. -->
- <Spacer
- latin:horizontalGap="8.470%p" />
<Key
latin:code="45"
latin:keyLabel=" - "
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="20.400%p"
+ latin:keyWidth="8.047%p" />
<Key
latin:code="43"
latin:keyLabel=" + "
- latin:keyWidth="8.042%p" />
- <Spacer
- latin:horizontalGap="8.479%p" />
+ latin:keyWidth="8.047%p" />
<Key
- latin:keyStyle="num1KeyStyle" />
+ latin:keyStyle="num1KeyStyle"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyStyle="num2KeyStyle" />
<Key
latin:keyStyle="num3KeyStyle" />
- <Spacer
- latin:horizontalGap="9.360%p" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.804%p"
+ latin:keyXPos="-11.172%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
<Key
latin:keyStyle="moreKeyStyle"
+ latin:keyWidth="11.172%p"
latin:keyEdgeFlags="left" />
<!-- To match one character label size with "More", I placed spaces around the char ','
and '.'. -->
- <Spacer
- latin:horizontalGap="8.470%p" />
<Key
latin:code="44"
latin:keyLabel=" , "
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="20.400%p"
+ latin:keyWidth="8.047%p" />
<Key
latin:code="46"
latin:keyLabel=" . "
- latin:keyWidth="8.042%p" />
- <Spacer
- latin:horizontalGap="8.479%p" />
+ latin:keyWidth="8.047%p" />
<Key
- latin:keyStyle="num4KeyStyle" />
+ latin:keyStyle="num4KeyStyle"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyStyle="num5KeyStyle" />
<Key
latin:keyStyle="num6KeyStyle" />
- <Spacer
- latin:horizontalGap="4.458%p" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="14.706%p"
+ latin:keyXPos="-11.172%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
<!-- To match one character label size with "More", I placed spaces around the char '('
and ')'. -->
- <!-- There is an empty area bellow the "More" key and left of the "(" key. To ignore
+ <!-- There is an empty area below the "More" key and left of the "(" key. To ignore
the touch event on the area, "(" is intentionally not marked as a left edge key. -->
- <Spacer
- latin:horizontalGap="20.427%p" />
<Key
latin:code="40"
latin:keyLabel=" ( "
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="20.400%p"
+ latin:keyWidth="8.047%p" />
<Key
latin:code="41"
latin:keyLabel=" ) "
- latin:keyWidth="8.042%p" />
- <Spacer
- latin:horizontalGap="8.479%p" />
+ latin:keyWidth="8.047%p" />
<Key
- latin:keyStyle="num7KeyStyle" />
+ latin:keyStyle="num7KeyStyle"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyStyle="num8KeyStyle" />
<Key
latin:keyStyle="num9KeyStyle" />
- <!-- There is an empty area bellow the "Enter" key and right of the "9" key. To ignore
+ <!-- There is an empty area below the "Enter" key and right of the "9" key. To ignore
the touch event on the area, "9" is intentionally not marked as a right edge key. -->
</Row>
<!-- This row is intentionally not marked as a bottom row -->
<Row>
- <!-- There is an empty area bellow the "More" key and left of the "space" key. To ignore
- the touch event on the area, "space" is intentionally not marked as a left edge key. -->
- <Spacer
- latin:horizontalGap="12.340%p" />
<switch>
<case latin:hasSettingsKey="true">
<Key
latin:keyStyle="settingsKeyStyle"
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
</case>
- <default>
- <Spacer
- latin:horizontalGap="8.042%p" />
- </default>
</switch>
<Key
latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
+ latin:keyXPos="20.400%p"
latin:keyWidth="16.084%p" />
- <Spacer
- latin:horizontalGap="8.479%p" />
<Key
- latin:keyStyle="numStarKeyStyle" />
+ latin:keyStyle="numStarKeyStyle"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyStyle="num0KeyStyle" />
<Key
@@ -157,10 +144,9 @@
>
<Key
latin:keyStyle="micKeyStyle"
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="-8.047%p"
+ latin:keyWidth="fillRight" />
</case>
</switch>
- <!-- There is an empty area bellow the "Enter" key and right of the "#" key. To ignore
- the touch event on the area, "#" is intentionally not marked as a right edge key. -->
</Row>
</Keyboard>
diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-sw768dp/kbd_phone_symbols.xml
index 055c14867..b086b4137 100644
--- a/java/res/xml-xlarge/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -21,9 +21,10 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="11.949%p"
+ latin:keyWidth="13.250%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -38,127 +39,113 @@
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
+ latin:keyWidth="11.172%p"
latin:keyEdgeFlags="left" />
- <Spacer
- latin:horizontalGap="4.458%p" />
<Key
latin:code="45"
latin:keyLabel=" - "
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="13.829%p"
+ latin:keyWidth="8.047%p" />
<Key
latin:code="43"
latin:keyLabel=" + "
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
<Key
latin:code="44"
latin:keyLabel="@string/label_pause_key"
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
<!-- To match one character label size with "Tab" and "Pause, I placed spaces around the
char '-' and '+'. -->
- <Spacer
- latin:horizontalGap="4.458%p" />
<Key
- latin:keyStyle="num1KeyStyle" />
+ latin:keyStyle="num1KeyStyle"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyStyle="num2KeyStyle" />
<Key
latin:keyStyle="num3KeyStyle" />
- <Spacer
- latin:horizontalGap="9.360%p" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.804%p"
+ latin:keyXPos="-11.172%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
<Key
latin:keyStyle="moreKeyStyle"
+ latin:keyWidth="11.172%p"
latin:keyEdgeFlags="left" />
- <Spacer
- latin:horizontalGap="4.458%p" />
<Key
latin:code="44"
latin:keyLabel=" , "
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="13.829%p"
+ latin:keyWidth="8.047%p" />
<Key
latin:code="46"
latin:keyLabel=" . "
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
<Key
latin:code="59"
latin:keyLabel="@string/label_wait_key"
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
<!-- To match one character label size with "More" and "Wait", I placed spaces around the
char ',' and '.'. -->
- <Spacer
- latin:horizontalGap="4.458%p" />
<Key
- latin:keyStyle="num4KeyStyle" />
+ latin:keyStyle="num4KeyStyle"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyStyle="num5KeyStyle" />
<Key
latin:keyStyle="num6KeyStyle" />
- <Spacer
- latin:horizontalGap="4.458%p" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="14.706%p"
+ latin:keyXPos="-11.172%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
<!-- To match one character label size with "More" and etc., I placed spaces around the
char 'N', '(' and ')'. -->
- <!-- There is an empty area bellow the "More" key and left of the "(" key. To ignore
+ <!-- There is an empty area below the "More" key and left of the "(" key. To ignore
the touch event on the area, "(" is intentionally not marked as a left edge key. -->
- <Spacer
- latin:horizontalGap="16.406%p" />
<Key
latin:code="40"
latin:keyLabel=" ( "
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="13.829%p"
+ latin:keyWidth="8.047%p" />
<Key
latin:code="41"
latin:keyLabel=" ) "
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
<Key
latin:code="78"
latin:keyLabel=" N "
- latin:keyWidth="8.042%p" />
- <Spacer
- latin:horizontalGap="4.458%p" />
+ latin:keyWidth="8.047%p" />
<Key
- latin:keyStyle="num7KeyStyle" />
+ latin:keyStyle="num7KeyStyle"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyStyle="num8KeyStyle" />
<Key
latin:keyStyle="num9KeyStyle" />
- <!-- There is an empty area bellow the "Enter" key and right of the "9" key. To ignore
+ <!-- There is an empty area below the "Enter" key and right of the "9" key. To ignore
the touch event on the area, "9" is intentionally not marked as a right edge key. -->
</Row>
<!-- This row is intentionally not marked as a bottom row -->
<Row>
- <!-- There is an empty area bellow the "More" key and left of the "space" key. To ignore
- the touch event on the area, "space" is intentionally not marked as a left edge key. -->
- <Spacer
- latin:horizontalGap="8.362%p" />
<switch>
<case latin:hasSettingsKey="true">
<Key
latin:keyStyle="settingsKeyStyle"
- latin:keyWidth="8.042%p" />
+ latin:keyWidth="8.047%p" />
</case>
- <default>
- <Spacer
- latin:horizontalGap="8.042%p" />
- </default>
</switch>
<Key
latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
- latin:keyWidth="24.127%p" />
- <Spacer
- latin:horizontalGap="4.458%p" />
+ latin:keyXPos="13.829%p"
+ latin:keyWidth="24.140%p" />
<Key
- latin:keyStyle="numStarKeyStyle" />
+ latin:keyStyle="numStarKeyStyle"
+ latin:keyXPos="43.125%p" />
<Key
latin:keyStyle="num0KeyStyle" />
<Key
@@ -169,10 +156,9 @@
>
<Key
latin:keyStyle="micKeyStyle"
- latin:keyWidth="8.042%p" />
+ latin:keyXPos="-8.047%p"
+ latin:keyWidth="fillRight" />
</case>
</switch>
- <!-- There is an empty area bellow the "Enter" key and right of the "#" key. To ignore
- the touch event on the area, "#" is intentionally not marked as a right edge key. -->
</Row>
</Keyboard>
diff --git a/java/res/xml-xlarge/kbd_popup_template.xml b/java/res/xml-sw768dp/kbd_popup_template.xml
index 7d39d1a3a..7d39d1a3a 100644
--- a/java/res/xml-xlarge/kbd_popup_template.xml
+++ b/java/res/xml-sw768dp/kbd_popup_template.xml
diff --git a/java/res/xml-xlarge/kbd_qwerty_row1.xml b/java/res/xml-sw768dp/kbd_qwerty_row1.xml
index f5135591c..3727cf34e 100644
--- a/java/res/xml-xlarge/kbd_qwerty_row1.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row1.xml
@@ -23,12 +23,12 @@
>
<!-- This row is intentionally not marked as a top row -->
<Row
- latin:keyWidth="8.272%p"
+ latin:keyWidth="8.282%p"
>
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
+ latin:keyWidth="7.969%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="q"
@@ -62,7 +62,8 @@
latin:popupCharacters="@string/alternates_for_p" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-9.219%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
</merge>
diff --git a/java/res/xml-xlarge/kbd_qwerty_row2.xml b/java/res/xml-sw768dp/kbd_qwerty_row2.xml
index 02bd0a6c9..45af120e2 100644
--- a/java/res/xml-xlarge/kbd_qwerty_row2.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row2.xml
@@ -22,12 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<Row
- latin:keyWidth="8.157%p"
+ latin:keyWidth="8.125%p"
>
<Key
latin:keyStyle="toSymbolKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="11.167%p"
+ latin:keyWidth="11.172%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="a"
@@ -55,7 +55,8 @@
latin:popupCharacters="@string/alternates_for_l" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="15.750%p"
+ latin:keyXPos="-15.704%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
</merge>
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row3.xml b/java/res/xml-sw768dp/kbd_qwerty_row3.xml
new file mode 100644
index 000000000..7297ea512
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_qwerty_row3.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <Row
+ latin:keyWidth="8.047%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="13.829%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="z"
+ latin:popupCharacters="@string/alternates_for_z" />
+ <Key
+ latin:keyLabel="x" />
+ <Key
+ latin:keyLabel="c"
+ latin:popupCharacters="@string/alternates_for_c" />
+ <Key
+ latin:keyLabel="v"
+ latin:popupCharacters="@string/alternates_for_v" />
+ <Key
+ latin:keyLabel="b" />
+ <Key
+ latin:keyLabel="n"
+ latin:popupCharacters="@string/alternates_for_n" />
+ <Key
+ latin:keyLabel="m" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right2" />
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyXPos="-13.750%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+</merge>
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
new file mode 100644
index 000000000..0e71cbfd4
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <!-- This row is intentionally not marked as a bottom row -->
+ <Row
+ latin:keyWidth="8.047%p"
+ >
+ <switch>
+ <case
+ latin:hasSettingsKey="true"
+ >
+ <Key
+ latin:keyStyle="settingsKeyStyle"
+ latin:keyWidth="8.047%p" />
+ </case>
+ </switch>
+ <Spacer
+ latin:keyXPos="15.157%p"
+ latin:keyWidth="fillRight" />
+ <switch>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyStyle="comKeyStyle"
+ latin:keyWidth="16.084%p" />
+ </case>
+ <default>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyStyle="comKeyStyle" />
+ </case>
+ <case
+ latin:imeAction="actionSearch"
+ >
+ <Key
+ latin:keyLabel=":"
+ latin:manualTemporaryUpperCaseCode="43"
+ latin:keyHintIcon="@drawable/key_hint_plus_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
+ latin:popupCharacters="+" />
+ </case>
+ <default>
+ <Key
+ latin:keyStyle="smileyKeyStyle" />
+ </default>
+ </switch>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="\@" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="/"
+ latin:manualTemporaryUpperCaseCode="64"
+ latin:keyHintIcon="@drawable/key_hint_at_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
+ latin:popupCharacters="\@" />
+ </default>
+ </switch>
+ </default>
+ </switch>
+ <Key
+ latin:keyStyle="spaceKeyStyle"
+ latin:keyXPos="31.250%p"
+ latin:keyWidth="37.500%p" />
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="-" />
+ </case>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel="/"
+ latin:manualTemporaryUpperCaseCode="58"
+ latin:keyHintIcon="@drawable/key_hint_colon_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+ latin:popupCharacters=":" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="\'"
+ latin:manualTemporaryUpperCaseCode="34"
+ latin:keyHintIcon="@drawable/key_hint_quote_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+ latin:popupCharacters="&quot;" />
+ </default>
+ </switch>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="_" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="-"
+ latin:manualTemporaryUpperCaseCode="95"
+ latin:keyHintIcon="@drawable/key_hint_underline_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+ latin:popupCharacters="_" />
+ </default>
+ </switch>
+ <switch>
+ <case
+ latin:voiceKeyEnabled="true"
+ >
+ <Key
+ latin:keyStyle="micKeyStyle"
+ latin:keyXPos="-8.047%p"
+ latin:keyWidth="fillRight" />
+ </case>
+ </switch>
+ </Row>
+</merge>
diff --git a/java/res/xml-xlarge/kbd_qwerty_rows.xml b/java/res/xml-sw768dp/kbd_qwerty_rows.xml
index 6237712f6..6237712f6 100644
--- a/java/res/xml-xlarge/kbd_qwerty_rows.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_rows.xml
diff --git a/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml
new file mode 100644
index 000000000..7e9f604f5
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <Row
+ latin:keyWidth="7.375%p"
+ >
+ <Key
+ latin:keyStyle="tabKeyStyle"
+ latin:keyLabelOption="alignLeft"
+ latin:keyWidth="7.500%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="q"
+ latin:popupCharacters="@string/alternates_for_q" />
+ <Key
+ latin:keyLabel="w"
+ latin:popupCharacters="@string/alternates_for_w" />
+ <Key
+ latin:keyLabel="e"
+ latin:popupCharacters="@string/alternates_for_e" />
+ <Key
+ latin:keyLabel="r"
+ latin:popupCharacters="@string/alternates_for_r" />
+ <Key
+ latin:keyLabel="t"
+ latin:popupCharacters="@string/alternates_for_t" />
+ <Key
+ latin:keyLabel="y"
+ latin:popupCharacters="@string/alternates_for_y" />
+ <Key
+ latin:keyLabel="u"
+ latin:popupCharacters="@string/alternates_for_u" />
+ <Key
+ latin:keyLabel="i"
+ latin:popupCharacters="@string/alternates_for_i" />
+ <Key
+ latin:keyLabel="o"
+ latin:popupCharacters="@string/alternates_for_o" />
+ <Key
+ latin:keyLabel="p"
+ latin:popupCharacters="@string/alternates_for_p" />
+ <Key
+ latin:keyLabel="å" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-11.500%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="7.375%p"
+ >
+ <Key
+ latin:keyStyle="toSymbolKeyStyle"
+ latin:keyLabelOption="alignLeft"
+ latin:keyWidth="9.375%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="a"
+ latin:popupCharacters="@string/alternates_for_a" />
+ <Key
+ latin:keyLabel="s"
+ latin:popupCharacters="@string/alternates_for_s" />
+ <Key
+ latin:keyLabel="d"
+ latin:popupCharacters="@string/alternates_for_d" />
+ <Key
+ latin:keyLabel="f" />
+ <Key
+ latin:keyLabel="g"
+ latin:popupCharacters="@string/alternates_for_g" />
+ <Key
+ latin:keyLabel="h" />
+ <Key
+ latin:keyLabel="j" />
+ <Key
+ latin:keyLabel="k"
+ latin:popupCharacters="@string/alternates_for_k" />
+ <Key
+ latin:keyLabel="l"
+ latin:popupCharacters="@string/alternates_for_l" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_scandinavia_row2_10"
+ latin:popupCharacters="@string/alternates_for_scandinavia_row2_10" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_scandinavia_row2_11"
+ latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-9.375%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="7.375%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="12.750%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="z"
+ latin:popupCharacters="@string/alternates_for_z" />
+ <Key
+ latin:keyLabel="x" />
+ <Key
+ latin:keyLabel="c"
+ latin:popupCharacters="@string/alternates_for_c" />
+ <Key
+ latin:keyLabel="v"
+ latin:popupCharacters="@string/alternates_for_v" />
+ <Key
+ latin:keyLabel="b" />
+ <Key
+ latin:keyLabel="n"
+ latin:popupCharacters="@string/alternates_for_n" />
+ <Key
+ latin:keyLabel="m" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right2" />
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyXPos="-12.750%p"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-xlarge/kbd_qwertz_rows.xml b/java/res/xml-sw768dp/kbd_qwertz_rows.xml
index 3e99f0511..4e937acda 100644
--- a/java/res/xml-xlarge/kbd_qwertz_rows.xml
+++ b/java/res/xml-sw768dp/kbd_qwertz_rows.xml
@@ -24,12 +24,12 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="8.272%p"
+ latin:keyWidth="8.282%p"
>
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
+ latin:keyWidth="7.969%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="q"
@@ -63,17 +63,18 @@
latin:popupCharacters="@string/alternates_for_p" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-9.219%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<include
latin:keyboardLayout="@xml/kbd_qwerty_row2" />
<Row
- latin:keyWidth="8.042%p"
+ latin:keyWidth="8.047%p"
>
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="15.192%p"
+ latin:keyWidth="13.829%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="y"
@@ -119,7 +120,8 @@
</switch>
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="12.530%p"
+ latin:keyXPos="-13.750%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<include
diff --git a/java/res/xml-sw768dp/kbd_row3_right2.xml b/java/res/xml-sw768dp/kbd_row3_right2.xml
new file mode 100644
index 000000000..1759ea192
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_row3_right2.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel=","
+ latin:manualTemporaryUpperCaseCode="33"
+ latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:popupCharacters="!" />
+ <Key
+ latin:keyLabel="."
+ latin:manualTemporaryUpperCaseCode="63"
+ latin:keyHintIcon="@drawable/key_hint_question_holo"
+ latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:popupCharacters="\?" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml-xlarge/kbd_sr_rows.xml b/java/res/xml-sw768dp/kbd_ru_rows.xml
index be0058505..ee91481c1 100644
--- a/java/res/xml-xlarge/kbd_sr_rows.xml
+++ b/java/res/xml-sw768dp/kbd_ru_rows.xml
@@ -25,125 +25,108 @@
latin:keyboardLayout="@xml/kbd_key_styles" />
<!-- This row is intentionally not marked as a top row -->
<Row
- latin:keyWidth="7.520%p"
+ latin:keyWidth="7.125%p"
>
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="8.640%p"
latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="љ"
- latin:popupCharacters="1" />
+ latin:keyLabel="й" />
<Key
- latin:keyLabel="њ"
- latin:popupCharacters="2" />
+ latin:keyLabel="ц" />
<Key
- latin:keyLabel="е"
- latin:popupCharacters="3" />
+ latin:keyLabel="у" />
<Key
- latin:keyLabel="р"
- latin:popupCharacters="4" />
+ latin:keyLabel="к" />
+ <Key
+ latin:keyLabel="е"
+ latin:popupCharacters="@string/alternates_for_cyrillic_e" />
<Key
- latin:keyLabel="т"
- latin:popupCharacters="5" />
+ latin:keyLabel="н" />
<Key
- latin:keyLabel="з"
- latin:popupCharacters="6" />
+ latin:keyLabel="г" />
<Key
- latin:keyLabel="у"
- latin:popupCharacters="7" />
+ latin:keyLabel="ш" />
<Key
- latin:keyLabel="и"
- latin:popupCharacters="8" />
+ latin:keyLabel="щ" />
<Key
- latin:keyLabel="о"
- latin:popupCharacters="9" />
+ latin:keyLabel="з" />
<Key
- latin:keyLabel="п"
- latin:popupCharacters="0" />
+ latin:keyLabel="х" />
<Key
- latin:keyLabel="ш" />
+ latin:keyLabel="ъ" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="8.640%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="7.520%p"
+ latin:keyWidth="7.125%p"
>
<Key
latin:keyStyle="toSymbolKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="8.640%p"
+ latin:keyWidth="9.375%p"
latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="а" />
+ latin:keyLabel="ф" />
<Key
- latin:keyLabel="с" />
+ latin:keyLabel="ы" />
<Key
- latin:keyLabel="д" />
+ latin:keyLabel="в" />
<Key
- latin:keyLabel="ф" />
+ latin:keyLabel="а" />
<Key
- latin:keyLabel="г" />
+ latin:keyLabel="п" />
<Key
- latin:keyLabel="х" />
+ latin:keyLabel="р" />
<Key
- latin:keyLabel="ј" />
- <Key
- latin:keyLabel="к" />
+ latin:keyLabel="о" />
<Key
latin:keyLabel="л" />
<Key
- latin:keyLabel="ч" />
+ latin:keyLabel="д" />
<Key
- latin:keyLabel="ћ" />
+ latin:keyLabel="ж" />
+ <Key
+ latin:keyLabel="э" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="8.640%p"
+ latin:keyXPos="-9.375%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="7.520%p"
+ latin:keyWidth="7.125%p"
>
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="8.640%p"
+ latin:keyWidth="12.750%p"
latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="ѕ" />
- <Key
- latin:keyLabel="џ" />
- <Key
- latin:keyLabel="ц" />
- <Key
- latin:keyLabel="в" />
+ latin:keyLabel="я" />
<Key
- latin:keyLabel="б" />
+ latin:keyLabel="ч" />
<Key
- latin:keyLabel="н" />
+ latin:keyLabel="с" />
<Key
latin:keyLabel="м" />
<Key
- latin:keyLabel="ђ" />
+ latin:keyLabel="и" />
<Key
- latin:keyLabel="ж" />
+ latin:keyLabel="т" />
<Key
- latin:keyLabel=","
- latin:manualTemporaryUpperCaseCode="33"
- latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
- latin:popupCharacters="!" />
+ latin:keyLabel="ь" />
+ <Key
+ latin:keyLabel="б" />
<Key
- latin:keyLabel="."
- latin:manualTemporaryUpperCaseCode="63"
- latin:keyHintIcon="@drawable/key_hint_question_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
- latin:popupCharacters="\?" />
+ latin:keyLabel="ю" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right2" />
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="8.640%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<include
diff --git a/java/res/xml-sw768dp/kbd_sr_rows.xml b/java/res/xml-sw768dp/kbd_sr_rows.xml
new file mode 100644
index 000000000..4997dabb9
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_sr_rows.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** 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.
+** 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <!-- This row is intentionally not marked as a top row -->
+ <Row
+ latin:keyWidth="7.125%p"
+ >
+ <Key
+ latin:keyStyle="tabKeyStyle"
+ latin:keyLabelOption="alignLeft"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="љ" />
+ <Key
+ latin:keyLabel="њ" />
+ <Key
+ latin:keyLabel="е" />
+ <Key
+ latin:keyLabel="р" />
+ <Key
+ latin:keyLabel="т" />
+ <Key
+ latin:keyLabel="з" />
+ <Key
+ latin:keyLabel="у" />
+ <Key
+ latin:keyLabel="и" />
+ <Key
+ latin:keyLabel="о" />
+ <Key
+ latin:keyLabel="п" />
+ <Key
+ latin:keyLabel="ш" />
+ <Key
+ latin:keyLabel="ђ" />
+ <Key
+ latin:keyLabel="ж"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right"/>
+ </Row>
+ <Row
+ latin:keyWidth="7.250%p"
+ >
+ <Key
+ latin:keyStyle="toSymbolKeyStyle"
+ latin:keyLabelOption="alignLeft"
+ latin:keyWidth="11.172%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="а" />
+ <Key
+ latin:keyLabel="с" />
+ <Key
+ latin:keyLabel="д" />
+ <Key
+ latin:keyLabel="ф" />
+ <Key
+ latin:keyLabel="г" />
+ <Key
+ latin:keyLabel="х" />
+ <Key
+ latin:keyLabel="ј" />
+ <Key
+ latin:keyLabel="к" />
+ <Key
+ latin:keyLabel="л" />
+ <Key
+ latin:keyLabel="ч" />
+ <Key
+ latin:keyLabel="ћ" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-9.219%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="7.250%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="13.829%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="ѕ" />
+ <Key
+ latin:keyLabel="џ" />
+ <Key
+ latin:keyLabel="ц" />
+ <Key
+ latin:keyLabel="в" />
+ <Key
+ latin:keyLabel="б" />
+ <Key
+ latin:keyLabel="н" />
+ <Key
+ latin:keyLabel="м" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right2" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-13.750%p"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_symbols.xml
new file mode 100644
index 000000000..5b359bfbf
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_symbols.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyboardHeight="@dimen/keyboardHeight"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
+ latin:rowHeight="25%p"
+ latin:horizontalGap="@dimen/key_horizontal_gap"
+ latin:verticalGap="@dimen/key_bottom_gap"
+ latin:popupKeyboardTemplate="@xml/kbd_popup_template"
+ latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <include
+ latin:keyboardLayout="@xml/kbd_currency_key_styles" />
+ <!-- This row is intentionally not marked as a top row -->
+ <Row
+ latin:keyWidth="8.282%p"
+ >
+ <Key
+ latin:keyStyle="tabKeyStyle"
+ latin:keyLabelOption="alignLeft"
+ latin:keyWidth="7.969%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="1"
+ latin:popupCharacters="¹,½,⅓,¼,⅛" />
+ <Key
+ latin:keyLabel="2"
+ latin:popupCharacters="²,⅔" />
+ <Key
+ latin:keyLabel="3"
+ latin:popupCharacters="³,¾,⅜" />
+ <Key
+ latin:keyLabel="4"
+ latin:popupCharacters="⁴" />
+ <Key
+ latin:keyLabel="5"
+ latin:popupCharacters="⅝" />
+ <Key
+ latin:keyLabel="6" />
+ <Key
+ latin:keyLabel="7"
+ latin:popupCharacters="⅞" />
+ <Key
+ latin:keyLabel="8" />
+ <Key
+ latin:keyLabel="9" />
+ <Key
+ latin:keyLabel="0"
+ latin:popupCharacters="ⁿ,∅" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-9.219%p"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="8.125%p"
+ >
+ <Key
+ latin:keyStyle="toAlphaKeyStyle"
+ latin:keyLabelOption="alignLeft"
+ latin:keyWidth="11.172%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="#" />
+ <Key
+ latin:keyStyle="currencyKeyStyle" />
+ <Key
+ latin:keyLabel="%"
+ latin:popupCharacters="‰" />
+ <Key
+ latin:keyLabel="&amp;" />
+ <Key
+ latin:keyLabel="*"
+ latin:popupCharacters="†,‡,★" />
+ <Key
+ latin:keyLabel="-"
+ latin:popupCharacters="_,–,—" />
+ <Key
+ latin:keyLabel="+"
+ latin:popupCharacters="±" />
+ <Key
+ latin:keyLabel="("
+ latin:popupCharacters="[,{,&lt;" />
+ <Key
+ latin:keyLabel=")"
+ latin:popupCharacters="],},&gt;" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-15.704%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="8.047%p"
+ >
+ <Key
+ latin:keyStyle="moreKeyStyle"
+ latin:keyWidth="13.829%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="&lt;"
+ latin:popupCharacters="≤,«,‹" />
+ <Key
+ latin:keyLabel="&gt;"
+ latin:popupCharacters="≥,»,›" />
+ <Key
+ latin:keyLabel="="
+ latin:popupCharacters="≠,≈" />
+ <switch>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel="\'"
+ latin:popupCharacters="‘,’,‚,‛" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel=":" />
+ </default>
+ </switch>
+ <Key
+ latin:keyLabel=";" />
+ <Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ <Key
+ latin:keyLabel="!"
+ latin:popupCharacters="¡" />
+ <Key
+ latin:keyLabel="\?"
+ latin:popupCharacters="¿" />
+ <Key
+ latin:keyStyle="moreKeyStyle"
+ latin:keyXPos="-13.750%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <!-- This row is intentionally not marked as a bottom row -->
+ <Row
+ latin:keyWidth="8.047%p"
+ >
+ <switch>
+ <case
+ latin:hasSettingsKey="true"
+ >
+ <Key
+ latin:keyStyle="settingsKeyStyle"
+ latin:keyWidth="8.047%p" />
+ </case>
+ </switch>
+ <Key
+ latin:keyLabel="/"
+ latin:keyXPos="15.157%p" />
+ <Key
+ latin:keyLabel="\@" />
+ <Key
+ latin:keyStyle="spaceKeyStyle"
+ latin:keyXPos="31.250%p"
+ latin:keyWidth="37.500%p" />
+ <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. -->
+ <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" -->
+ <Key
+ latin:keyLabel="&quot;"
+ latin:popupCharacters="“,”,«,»,‘,’,‚,‛" />
+ <Key
+ latin:keyLabel="_" />
+ <switch>
+ <case
+ latin:voiceKeyEnabled="true"
+ >
+ <Key
+ latin:keyStyle="micKeyStyle"
+ latin:keyXPos="-8.047%p"
+ latin:keyWidth="fillRight" />
+ </case>
+ </switch>
+ </Row>
+</Keyboard>
diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-sw768dp/kbd_symbols_shift.xml
index cc23358a5..94bd761ba 100644
--- a/java/res/xml-xlarge/kbd_symbols_shift.xml
+++ b/java/res/xml-sw768dp/kbd_symbols_shift.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
@@ -32,12 +33,12 @@
latin:keyboardLayout="@xml/kbd_key_styles" />
<!-- This row is intentionally not marked as a top row -->
<Row
- latin:keyWidth="8.272%p"
+ latin:keyWidth="8.282%p"
>
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="7.949%p"
+ latin:keyWidth="7.969%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="~" />
@@ -71,16 +72,17 @@
latin:keyLabel="Δ" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="9.331%p"
+ latin:keyXPos="-9.219%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.157%p"
+ latin:keyWidth="8.125%p"
>
<Key
latin:keyStyle="toAlphaKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="11.167%p"
+ latin:keyWidth="11.172%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyStyle="nonPasswordSymbolKeyStyle"
@@ -111,15 +113,16 @@
latin:keyLabel="}" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="15.750%p"
+ latin:keyXPos="-15.704%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.042%p"
+ latin:keyWidth="8.047%p"
>
<Key
latin:keyStyle="moreKeyStyle"
- latin:keyWidth="15.192%p"
+ latin:keyWidth="13.829%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="\\" />
@@ -147,34 +150,33 @@
latin:keyLabel="¿" />
<Key
latin:keyStyle="moreKeyStyle"
- latin:keyWidth="12.530%p"
+ latin:keyXPos="-13.750%p"
+ latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<!-- This row is intentionally not marked as a bottom row -->
<Row
- latin:keyWidth="8.042%p"
+ latin:keyWidth="8.047%p"
>
- <Spacer
- latin:horizontalGap="24.446%p" />
<switch>
<case latin:hasSettingsKey="true">
<Key
- latin:keyStyle="settingsKeyStyle" />
+ latin:keyStyle="settingsKeyStyle"
+ latin:keyWidth="8.047%p" />
</case>
- <default>
- <Spacer
- latin:horizontalGap="8.042%p" />
- </default>
</switch>
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="37.454%p" />
+ latin:keyXPos="31.250%p"
+ latin:keyWidth="37.500%p" />
<switch>
<case
latin:voiceKeyEnabled="true"
>
<Key
- latin:keyStyle="micKeyStyle" />
+ latin:keyStyle="micKeyStyle"
+ latin:keyXPos="-8.047%p"
+ latin:keyWidth="fillRight" />
</case>
</switch>
</Row>
diff --git a/java/res/xml-xlarge/kbd_qwerty_row4.xml b/java/res/xml-xlarge/kbd_qwerty_row4.xml
deleted file mode 100644
index f36b61fc7..000000000
--- a/java/res/xml-xlarge/kbd_qwerty_row4.xml
+++ /dev/null
@@ -1,258 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, 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.
-*/
--->
-
-<merge
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
- <!-- This row is intentionally not marked as a bottom row -->
- <Row
- latin:keyWidth="8.042%p"
- >
- <Spacer
- latin:horizontalGap="8.362%p" />
- <switch>
- <case latin:hasSettingsKey="true">
- <Key
- latin:keyStyle="settingsKeyStyle" />
- </case>
- <default>
- <Spacer
- latin:horizontalGap="8.042%p" />
- </default>
- </switch>
- <switch>
- <case
- latin:languageCode="ru"
- >
- <switch>
- <!-- TODO: implement logical OR for <case> attribute -->
- <case
- latin:mode="email"
- >
- <Key
- latin:keyStyle="comKeyStyle" />
- </case>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyStyle="comKeyStyle" />
- </case>
- <case
- latin:imeAction="actionSearch"
- >
- <Key
- latin:keyLabel=":"
- latin:manualTemporaryUpperCaseCode="43"
- latin:keyHintIcon="@drawable/key_hint_plus_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
- latin:popupCharacters="+" />
- </case>
- <default>
- <Key
- latin:keyStyle="smileyKeyStyle" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="\@" />
- </case>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyLabel="-"
- latin:manualTemporaryUpperCaseCode="95"
- latin:keyHintIcon="@drawable/key_hint_underline_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
- latin:popupCharacters="_" />
- </case>
- <default>
- <Key
- latin:keyLabel="/"
- latin:manualTemporaryUpperCaseCode="64"
- latin:keyHintIcon="@drawable/key_hint_at_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
- latin:popupCharacters="\@" />
- </default>
- </switch>
- </case>
- <!-- not languageCode="ru" -->
- <default>
- <switch>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyStyle="comKeyStyle"
- latin:keyWidth="16.084%p" />
- </case>
- <default>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyStyle="comKeyStyle" />
- </case>
- <case
- latin:imeAction="actionSearch"
- >
- <Key
- latin:keyLabel=":"
- latin:manualTemporaryUpperCaseCode="43"
- latin:keyHintIcon="@drawable/key_hint_plus_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
- latin:popupCharacters="+" />
- </case>
- <default>
- <Key
- latin:keyStyle="smileyKeyStyle" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="\@" />
- </case>
- <default>
- <Key
- latin:keyLabel="/"
- latin:manualTemporaryUpperCaseCode="64"
- latin:keyHintIcon="@drawable/key_hint_at_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
- latin:popupCharacters="\@" />
- </default>
- </switch>
- </default>
- </switch>
- </default>
- </switch>
- <Key
- latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="37.454%p" />
- <switch>
- <case
- latin:languageCode="ru"
- >
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="-" />
- </case>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyLabel="/"
- latin:manualTemporaryUpperCaseCode="58"
- latin:keyHintIcon="@drawable/key_hint_colon_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
- latin:popupCharacters=":" />
- </case>
- <default>
- <Key
- latin:keyLabel="\?"
- latin:manualTemporaryUpperCaseCode="95"
- latin:keyHintIcon="@drawable/key_hint_underline_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
- latin:popupCharacters="_" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="_" />
- </case>
- <default>
- <Key
- latin:keyLabel="!"
- latin:manualTemporaryUpperCaseCode="39"
- latin:keyHintIcon="@drawable/key_hint_quote_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
- latin:popupCharacters="\'" />
- </default>
- </switch>
- </case>
- <!-- not languageCode="ru" -->
- <default>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="-" />
- </case>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyLabel="/"
- latin:manualTemporaryUpperCaseCode="58"
- latin:keyHintIcon="@drawable/key_hint_colon_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
- latin:popupCharacters=":" />
- </case>
- <default>
- <Key
- latin:keyLabel="\'"
- latin:manualTemporaryUpperCaseCode="34"
- latin:keyHintIcon="@drawable/key_hint_quote_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
- latin:popupCharacters="&quot;" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="_" />
- </case>
- <default>
- <Key
- latin:keyLabel="-"
- latin:manualTemporaryUpperCaseCode="95"
- latin:keyHintIcon="@drawable/key_hint_underline_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
- latin:popupCharacters="_" />
- </default>
- </switch>
- </default>
- </switch>
- <switch>
- <case
- latin:voiceKeyEnabled="true"
- >
- <Key
- latin:keyStyle="micKeyStyle" />
- </case>
- </switch>
- </Row>
-</merge>
diff --git a/java/res/xml/kbd_ar_rows.xml b/java/res/xml/kbd_ar_rows.xml
index b2ea45701..a548775a4 100644
--- a/java/res/xml/kbd_ar_rows.xml
+++ b/java/res/xml/kbd_ar_rows.xml
@@ -53,6 +53,7 @@
<Key
latin:keyLabel="ج"
latin:popupCharacters="چ"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -84,6 +85,7 @@
<Key
latin:keyLabel="ك"
latin:popupCharacters="گ"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -112,7 +114,8 @@
latin:keyLabel="ث" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="12%p"
+ latin:keyWidth="fillRight"
+ latin:visualInsetsLeft="1%p"
latin:keyEdgeFlags="right" />
</Row>
<include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml/kbd_azerty_rows.xml b/java/res/xml/kbd_azerty_rows.xml
index ab3e1a097..9c81aad71 100644
--- a/java/res/xml/kbd_azerty_rows.xml
+++ b/java/res/xml/kbd_azerty_rows.xml
@@ -29,45 +29,46 @@
>
<Key
latin:keyLabel="a"
- latin:keyHintIcon="@drawable/keyboard_hint_1"
+ latin:keyHintIcon="@drawable/key_hint_num1"
latin:popupCharacters="@string/alternates_for_a"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="z"
- latin:keyHintIcon="@drawable/keyboard_hint_2"
+ latin:keyHintIcon="@drawable/key_hint_num2"
latin:popupCharacters="@string/alternates_for_z" />
<Key
latin:keyLabel="e"
- latin:keyHintIcon="@drawable/keyboard_hint_3"
+ latin:keyHintIcon="@drawable/key_hint_num3"
latin:popupCharacters="@string/alternates_for_e" />
<Key
latin:keyLabel="r"
- latin:keyHintIcon="@drawable/keyboard_hint_4"
+ latin:keyHintIcon="@drawable/key_hint_num4"
latin:popupCharacters="@string/alternates_for_r" />
<Key
latin:keyLabel="t"
- latin:keyHintIcon="@drawable/keyboard_hint_5"
+ latin:keyHintIcon="@drawable/key_hint_num5"
latin:popupCharacters="@string/alternates_for_t" />
<Key
latin:keyLabel="y"
- latin:keyHintIcon="@drawable/keyboard_hint_6"
+ latin:keyHintIcon="@drawable/key_hint_num6"
latin:popupCharacters="@string/alternates_for_y" />
<Key
latin:keyLabel="u"
- latin:keyHintIcon="@drawable/keyboard_hint_7"
+ latin:keyHintIcon="@drawable/key_hint_num7"
latin:popupCharacters="@string/alternates_for_u" />
<Key
latin:keyLabel="i"
- latin:keyHintIcon="@drawable/keyboard_hint_8"
+ latin:keyHintIcon="@drawable/key_hint_num8"
latin:popupCharacters="@string/alternates_for_i" />
<Key
latin:keyLabel="o"
- latin:keyHintIcon="@drawable/keyboard_hint_9"
+ latin:keyHintIcon="@drawable/key_hint_num9"
latin:popupCharacters="@string/alternates_for_o" />
<Key
latin:keyLabel="p"
- latin:keyHintIcon="@drawable/keyboard_hint_0"
+ latin:keyHintIcon="@drawable/key_hint_num0"
latin:popupCharacters="@string/alternates_for_p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -100,6 +101,7 @@
latin:popupCharacters="@string/alternates_for_l" />
<Key
latin:keyLabel="m"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -128,10 +130,11 @@
latin:keyLabel="n"
latin:popupCharacters="@string/alternates_for_n" />
<Key
- latin:keyLabel="\'" />
+ latin:keyLabel="\'"
+ latin:popupCharacters="‘,’,‚,‛" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="15%p"
+ latin:keyWidth="fillRight"
latin:visualInsetsLeft="1%p"
latin:keyEdgeFlags="right" />
</Row>
diff --git a/java/res/xml/kbd_currency_key_styles.xml b/java/res/xml/kbd_currency_key_styles.xml
index b30dd6451..9d3bb4725 100644
--- a/java/res/xml/kbd_currency_key_styles.xml
+++ b/java/res/xml/kbd_currency_key_styles.xml
@@ -27,229 +27,59 @@
>
<key-style
latin:styleName="currencyKeyStyle"
- latin:keyLabel="$"
- latin:popupCharacters="@string/alternates_for_currency_dollar" />
+ latin:keyLabel="$" />
</case>
<!-- Countries using Euro currency, 23 countries as for January 2011. -->
- <!-- 1. Andorra (ca_AD, ca_ES) -->
- <case
- latin:languageCode="ca"
- latin:countryCode=""
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 2. Austria (de_AT) -->
-<!-- <case-->
-<!-- latin:countryCode="AT"-->
-<!-- >-->
-<!-- <key-style-->
-<!-- latin:styleName="currencyKeyStyle"-->
-<!-- latin:keyLabel="€"-->
-<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!-- </case>-->
- <!-- 3. Belgium (nl_BE, fr_BE, de_BE) -->
-<!-- <case-->
-<!-- latin:countryCode="BE"-->
-<!-- >-->
-<!-- <key-style-->
-<!-- latin:styleName="currencyKeyStyle"-->
-<!-- latin:keyLabel="€"-->
-<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!-- </case>-->
- <!-- 4. Cyprus (el_CY, tr_CY) -->
- <case
- latin:countryCode="CY"
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 5. Estonia (et_EE) -->
-<!-- <case-->
-<!-- latin:languageCode="et"-->
-<!-- latin:countryCode=""-->
-<!-- >-->
-<!-- <key-style-->
-<!-- latin:styleName="currencyKeyStyle"-->
-<!-- latin:keyLabel="€"-->
-<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!-- </case>-->
- <!-- 6. Finland (fi_FI, sv_FI) -->
- <case
- latin:languageCode="fi"
- latin:countryCode=""
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 7. France (fr_FR) -->
- <case
- latin:languageCode="fr"
- latin:countryCode=""
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 8. Germany (de_DE) -->
- <case
- latin:languageCode="de"
- latin:countryCode=""
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 9. Greece (el_GR) -->
- <case
- latin:languageCode="el"
- latin:countryCode=""
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 10. Ireland (ga_IE, en_IE) -->
- <case
- latin:countryCode="IE"
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 11. Italy (it_IT) -->
- <case
- latin:languageCode="it"
- latin:countryCode=""
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 12. Kosovo -->
-<!-- <case-->
-<!-- latin:countryCode="XK"-->
-<!-- >-->
-<!-- <key-style-->
-<!-- latin:styleName="currencyKeyStyle"-->
-<!-- latin:keyLabel="€"-->
-<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!-- </case>-->
- <!-- 13. Luxembourg (lb_LU, fr_LU, de_LU) -->
- <case
- latin:countryCode="LU"
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 14. Malta (mt_MT, en_MT) -->
- <case
- latin:countryCode="MT"
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 15. Monaco (fr_MO) -->
-<!-- <case-->
-<!-- latin:countryCode="MO"-->
-<!-- >-->
-<!-- <key-style-->
-<!-- latin:styleName="currencyKeyStyle"-->
-<!-- latin:keyLabel="€"-->
-<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!-- </case>-->
- <!-- 16. Montenegro (sla_ME) -->
- <case
- latin:countryCode="ME"
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 17. Netherlands (nl_NL) -->
- <case
- latin:languageCode="nl"
- latin:countryCode=""
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 18. Portugal (pt_PT) -->
- <case
- latin:languageCode="pt"
- latin:countryCode=""
- >
- <key-style
- latin:styleName="currencyKeyStyle"
- latin:keyLabel="€"
- latin:popupCharacters="@string/alternates_for_currency_euro" />
- </case>
- <!-- 19. San Marino (it_SM) -->
-<!-- <case-->
-<!-- latin:countryCode="SM"-->
-<!-- >-->
-<!-- <key-style-->
-<!-- latin:styleName="currencyKeyStyle"-->
-<!-- latin:keyLabel="€"-->
-<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!-- </case>-->
- <!-- 20. Slovakia (sk_SK) -->
+ 1. Andorra (ca_AD, ca_ES)
+ 2. Austria (de_AT)
+ 3. Belgium (nl_BE, fr_BE, de_BE)
+ 4. Cyprus (el_CY, tr_CY)
+ 5. Estonia (et_EE)
+ 6. Finland (fi_FI, sv_FI)
+ 7. France (fr_FR)
+ 8. Germany (de_DE)
+ 9. Greece (el_GR)
+ 10. Ireland (ga_IE, en_IE)
+ 11. Italy (it_IT)
+ 12. Kosovo (??_XK) ??
+ 13. Luxembourg (lb_LU, fr_LU, de_LU)
+ 14. Malta (mt_MT, en_MT)
+ 15. Monaco (fr_MO)
+ 16. Montenegro (sla_ME)
+ 17. Netherlands (nl_NL)
+ 18. Portugal (pt_PT)
+ 19. San Marino (it_SM)
+ 20. Slovakia (sk_SK)
+ 21. Slovenia (sl_SI)
+ 22. Spain (es_ES, ca_ES)
+ 23. Vatican City (it_VA)
+ -->
+ <!-- Note: Some locales may not have country code, and it it supposed to indicate the
+ country where the language originally/mainly spoken. -->
<case
- latin:languageCode="sk"
- latin:countryCode=""
+ latin:localeCode="de|es|el|fi|fr|it|nl|sk|sl|pt_PT"
>
<key-style
latin:styleName="currencyKeyStyle"
latin:keyLabel="€"
latin:popupCharacters="@string/alternates_for_currency_euro" />
</case>
- <!-- 21. Slovenia (sl_SI) -->
<case
- latin:languageCode="sl"
- latin:countryCode=""
+ latin:languageCode="ca|et|lb|mt|sla"
>
<key-style
latin:styleName="currencyKeyStyle"
latin:keyLabel="€"
latin:popupCharacters="@string/alternates_for_currency_euro" />
</case>
- <!-- 22. Spain (es_ES, ca_ES) -->
<case
- latin:languageCode="es"
- latin:countryCode=""
+ latin:countryCode="AD|AT|BE|CY|EE|FI|FR|DE|GR|IE|IT|XK|LU|MT|MO|ME|NL|PT|SM|SK|SI|ES|VA"
>
<key-style
latin:styleName="currencyKeyStyle"
latin:keyLabel="€"
latin:popupCharacters="@string/alternates_for_currency_euro" />
</case>
- <!-- 23. Vatican City (it_VA) -->
-<!-- <case-->
-<!-- latin:countryCode="VA"-->
-<!-- >-->
-<!-- <key-style-->
-<!-- latin:styleName="currencyKeyStyle"-->
-<!-- latin:keyLabel="€"-->
-<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />-->
-<!-- </case>-->
<!-- United Kingdom -->
<case
latin:countryCode="GB"
@@ -266,4 +96,4 @@
latin:popupCharacters="@string/alternates_for_currency_dollar" />
</default>
</switch>
-</merge> \ No newline at end of file
+</merge>
diff --git a/java/res/xml/kbd_iw_rows.xml b/java/res/xml/kbd_iw_rows.xml
index fb0c2a915..c3c8f7d3e 100644
--- a/java/res/xml/kbd_iw_rows.xml
+++ b/java/res/xml/kbd_iw_rows.xml
@@ -27,12 +27,12 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
+ latin:keyWidth="10%p"
latin:rowEdgeFlags="top"
>
- <Spacer
- latin:horizontalGap="5%p" />
<Key
latin:keyLabel="ק"
+ latin:keyXPos="5%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ר" />
@@ -50,11 +50,13 @@
latin:keyLabel="פ" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="15%p"
+ latin:keyWidth="fillRight"
latin:visualInsetsLeft="1%p"
latin:keyEdgeFlags="right" />
</Row>
- <Row>
+ <Row
+ latin:keyWidth="10%p"
+ >
<Key
latin:keyLabel="ש"
latin:keyEdgeFlags="left" />
@@ -76,13 +78,15 @@
latin:keyLabel="ך" />
<Key
latin:keyLabel="ף"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
- <Row>
- <Spacer
- latin:horizontalGap="5%p" />
+ <Row
+ latin:keyWidth="10%p"
+ >
<Key
latin:keyLabel="ז"
+ latin:keyXPos="5%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ס" />
@@ -101,6 +105,7 @@
<Key
latin:keyLabel="ץ"
latin:keyEdgeFlags="right" />
+ <!-- Here is 5%p space -->
</Row>
<include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index d4d25d4a2..f888b231e 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -51,7 +51,7 @@
<key-style
latin:styleName="settingsPopupStyle"
latin:keyHintIcon="@drawable/hint_popup"
- latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
+ latin:popupCharacters="\@drawable/sym_keyboard_settings_holo|\@integer/key_settings"
latin:parentStyle="functionalKeyStyle" />
</default>
</switch>
@@ -101,20 +101,20 @@
<key-style
latin:styleName="settingsKeyStyle"
latin:code="@integer/key_settings"
- latin:keyIcon="@drawable/sym_keyboard_settings"
- latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
+ latin:keyIcon="@drawable/sym_keyboard_settings_holo"
+ latin:iconPreview="@drawable/sym_keyboard_settings_holo"
latin:parentStyle="functionalKeyStyle" />
<key-style
latin:styleName="spaceKeyStyle"
latin:code="@integer/key_space"
latin:keyIcon="@drawable/sym_keyboard_space"
- latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+ latin:iconPreview="@drawable/sym_keyboard_space"
latin:parentStyle="functionalKeyStyle" />
<key-style
latin:styleName="tabKeyStyle"
latin:code="@integer/key_tab"
latin:keyIcon="@drawable/sym_keyboard_tab"
- latin:iconPreview="@drawable/sym_keyboard_feedback_tab"
+ latin:iconPreview="@drawable/sym_keyboard_tab"
latin:parentStyle="functionalKeyStyle" />
<key-style
latin:styleName="micKeyStyle"
@@ -128,7 +128,7 @@
latin:styleName="nonSpecialBackgroundTabKeyStyle"
latin:code="@integer/key_tab"
latin:keyIcon="@drawable/sym_keyboard_tab"
- latin:iconPreview="@drawable/sym_keyboard_feedback_tab" />
+ latin:iconPreview="@drawable/sym_keyboard_tab" />
</case>
<case
latin:colorScheme="black"
@@ -277,7 +277,7 @@
latin:styleName="returnKeyStyle"
latin:code="@integer/key_return"
latin:keyIcon="@drawable/sym_keyboard_return"
- latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+ latin:iconPreview="@drawable/sym_keyboard_return"
latin:parentStyle="functionalKeyStyle" />
</case>
<case
diff --git a/java/res/xml/kbd_number.xml b/java/res/xml/kbd_number.xml
index 7bd679bce..23b88a5bd 100644
--- a/java/res/xml/kbd_number.xml
+++ b/java/res/xml/kbd_number.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:keyWidth="26.67%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
@@ -31,83 +32,118 @@
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
- <!-- TODO: Should add number password layout just like the xlarge layout does. -->
+ <include
+ latin:keyboardLayout="@xml/kbd_numkey_styles" />
<switch>
<case
- latin:colorScheme="white"
- >
- <key-style
- latin:styleName="numSpaceKeyStyle"
- latin:code="@integer/key_space"
- latin:keyIcon="@drawable/sym_keyboard_space"
- latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
- </case>
- <case
- latin:colorScheme="black"
+ latin:passwordInput="true"
>
- <key-style
- latin:styleName="numSpaceKeyStyle"
- latin:code="@integer/key_space"
- latin:keyIcon="@drawable/sym_bkeyboard_space"
- latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+ <Row
+ latin:rowEdgeFlags="top"
+ >
+ <Key
+ latin:keyStyle="num1KeyStyle"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="num2KeyStyle" />
+ <Key
+ latin:keyStyle="num3KeyStyle" />
+ </Row>
+ <Row>
+ <Key
+ latin:keyStyle="num4KeyStyle"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="num5KeyStyle" />
+ <Key
+ latin:keyStyle="num6KeyStyle" />
+ </Row>
+ <Row>
+ <Key
+ latin:keyStyle="num7KeyStyle"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="num8KeyStyle" />
+ <Key
+ latin:keyStyle="num9KeyStyle" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:rowEdgeFlags="bottom"
+ >
+ <Spacer />
+ <Key
+ latin:keyStyle="num0KeyStyle" />
+ <Spacer />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
</case>
+ <!-- latin:passwordInput="false" -->
+ <default>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
+ <Key
+ latin:keyLabel="1"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="2" />
+ <Key
+ latin:keyLabel="3" />
+ <Key
+ latin:keyLabel="-"
+ latin:keyStyle="functionalKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row>
+ <Key
+ latin:keyLabel="4"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="5" />
+ <Key
+ latin:keyLabel="6" />
+ <Key
+ latin:keyLabel=","
+ latin:keyStyle="functionalKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row>
+ <Key
+ latin:keyLabel="7"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="8" />
+ <Key
+ latin:keyLabel="9" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:rowEdgeFlags="bottom"
+ >
+ <Key
+ latin:keyStyle="numSpaceKeyStyle"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="0" />
+ <Key
+ latin:keyLabel="." />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ </default>
</switch>
- <Row
- latin:rowEdgeFlags="top"
- >
- <Key
- latin:keyLabel="1"
- latin:keyEdgeFlags="left" />
- <Key
- latin:keyLabel="2" />
- <Key
- latin:keyLabel="3" />
- <Key
- latin:keyLabel="-"
- latin:keyStyle="functionalKeyStyle"
- latin:keyWidth="20%p"
- latin:keyEdgeFlags="right" />
- </Row>
- <Row>
- <Key
- latin:keyLabel="4"
- latin:keyEdgeFlags="left" />
- <Key
- latin:keyLabel="5" />
- <Key
- latin:keyLabel="6" />
- <Key
- latin:keyLabel=","
- latin:keyStyle="functionalKeyStyle"
- latin:keyWidth="20%p"
- latin:keyEdgeFlags="right" />
- </Row>
- <Row>
- <Key
- latin:keyLabel="7"
- latin:keyEdgeFlags="left" />
- <Key
- latin:keyLabel="8" />
- <Key
- latin:keyLabel="9" />
- <Key
- latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="20%p"
- latin:keyEdgeFlags="right" />
- </Row>
- <Row
- latin:rowEdgeFlags="bottom"
- >
- <Key
- latin:keyStyle="numSpaceKeyStyle"
- latin:keyEdgeFlags="left" />
- <Key
- latin:keyLabel="0" />
- <Key
- latin:keyLabel="." />
- <Key
- latin:keyStyle="returnKeyStyle"
- latin:keyWidth="20%p"
- latin:keyEdgeFlags="right" />
- </Row>
</Keyboard>
diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml
index 62fbdeeec..e1d1ee8d0 100644
--- a/java/res/xml/kbd_phone.xml
+++ b/java/res/xml/kbd_phone.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:keyWidth="26.67%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
@@ -46,7 +47,7 @@
<Key
latin:keyLabel="-"
latin:keyStyle="functionalKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
@@ -60,7 +61,7 @@
<Key
latin:keyLabel="."
latin:keyStyle="functionalKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
@@ -73,7 +74,7 @@
latin:keyStyle="num9KeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -88,7 +89,7 @@
latin:keyStyle="numSpaceKeyStyle" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
</Keyboard>
diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index 67cd330e7..2af218cfe 100644
--- a/java/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:keyWidth="26.67%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
@@ -46,7 +47,7 @@
<Key
latin:keyLabel="-"
latin:keyStyle="functionalKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
@@ -63,7 +64,7 @@
<Key
latin:keyLabel="."
latin:keyStyle="functionalKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
@@ -78,7 +79,7 @@
latin:keyStyle="numPoundKeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -94,7 +95,7 @@
latin:keyStyle="numSpaceKeyStyle" />
<Key
latin:keyStyle="returnKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
</Keyboard>
diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index a4251c0bd..f0c1fa7fc 100644
--- a/java/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -21,9 +21,9 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
- latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
diff --git a/java/res/xml/kbd_qwerty_f1.xml b/java/res/xml/kbd_qwerty_f1.xml
index d0e2884e1..e89d02d91 100644
--- a/java/res/xml/kbd_qwerty_f1.xml
+++ b/java/res/xml/kbd_qwerty_f1.xml
@@ -46,7 +46,7 @@
</case>
<!-- latin:hasVoiceKey="false" -->
<case
- latin:mode="web"
+ latin:webInput="true"
>
<Key
latin:keyLabel="."
diff --git a/java/res/xml/kbd_qwerty_row1.xml b/java/res/xml/kbd_qwerty_row1.xml
index d9249657e..ba804d321 100644
--- a/java/res/xml/kbd_qwerty_row1.xml
+++ b/java/res/xml/kbd_qwerty_row1.xml
@@ -27,45 +27,46 @@
>
<Key
latin:keyLabel="q"
- latin:keyHintIcon="@drawable/keyboard_hint_1"
+ latin:keyHintIcon="@drawable/key_hint_num1"
latin:popupCharacters="@string/alternates_for_q"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="w"
- latin:keyHintIcon="@drawable/keyboard_hint_2"
+ latin:keyHintIcon="@drawable/key_hint_num2"
latin:popupCharacters="@string/alternates_for_w" />
<Key
latin:keyLabel="e"
- latin:keyHintIcon="@drawable/keyboard_hint_3"
+ latin:keyHintIcon="@drawable/key_hint_num3"
latin:popupCharacters="@string/alternates_for_e" />
<Key
latin:keyLabel="r"
- latin:keyHintIcon="@drawable/keyboard_hint_4"
+ latin:keyHintIcon="@drawable/key_hint_num4"
latin:popupCharacters="@string/alternates_for_r" />
<Key
latin:keyLabel="t"
- latin:keyHintIcon="@drawable/keyboard_hint_5"
+ latin:keyHintIcon="@drawable/key_hint_num5"
latin:popupCharacters="@string/alternates_for_t" />
<Key
latin:keyLabel="y"
- latin:keyHintIcon="@drawable/keyboard_hint_6"
+ latin:keyHintIcon="@drawable/key_hint_num6"
latin:popupCharacters="@string/alternates_for_y" />
<Key
latin:keyLabel="u"
- latin:keyHintIcon="@drawable/keyboard_hint_7"
+ latin:keyHintIcon="@drawable/key_hint_num7"
latin:popupCharacters="@string/alternates_for_u" />
<Key
latin:keyLabel="i"
- latin:keyHintIcon="@drawable/keyboard_hint_8"
+ latin:keyHintIcon="@drawable/key_hint_num8"
latin:popupCharacters="@string/alternates_for_i" />
<Key
latin:keyLabel="o"
- latin:keyHintIcon="@drawable/keyboard_hint_9"
+ latin:keyHintIcon="@drawable/key_hint_num9"
latin:popupCharacters="@string/alternates_for_o" />
<Key
latin:keyLabel="p"
- latin:keyHintIcon="@drawable/keyboard_hint_0"
+ latin:keyHintIcon="@drawable/key_hint_num0"
latin:popupCharacters="@string/alternates_for_p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
</merge>
diff --git a/java/res/xml/kbd_qwerty_row2.xml b/java/res/xml/kbd_qwerty_row2.xml
index 9ed4553c4..57bbad75a 100644
--- a/java/res/xml/kbd_qwerty_row2.xml
+++ b/java/res/xml/kbd_qwerty_row2.xml
@@ -24,11 +24,10 @@
<Row
latin:keyWidth="10%p"
>
- <Spacer
- latin:horizontalGap="5%p" />
<Key
latin:keyLabel="a"
latin:popupCharacters="@string/alternates_for_a"
+ latin:keyXPos="5%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="s"
@@ -52,5 +51,6 @@
latin:keyLabel="l"
latin:popupCharacters="@string/alternates_for_l"
latin:keyEdgeFlags="right" />
+ <!-- Here is 5%p space -->
</Row>
</merge>
diff --git a/java/res/xml/kbd_qwerty_row3.xml b/java/res/xml/kbd_qwerty_row3.xml
index 3d106e615..98f0404c0 100644
--- a/java/res/xml/kbd_qwerty_row3.xml
+++ b/java/res/xml/kbd_qwerty_row3.xml
@@ -49,7 +49,7 @@
latin:keyLabel="m" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="15%p"
+ latin:keyWidth="fillBoth"
latin:visualInsetsLeft="1%p"
latin:keyEdgeFlags="right" />
</Row>
diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml
index 82f5a4a92..21d80eb0b 100644
--- a/java/res/xml/kbd_qwerty_row4.xml
+++ b/java/res/xml/kbd_qwerty_row4.xml
@@ -27,103 +27,67 @@
>
<switch>
<case
- latin:hasSettingsKey="false"
+ latin:hasSettingsKey="true"
>
<Key
latin:keyStyle="toSymbolKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="15%p"
latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="settingsKeyStyle" />
<include
latin:keyboardLayout="@xml/kbd_qwerty_f1" />
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="40%p" />
- <switch>
- <case
- latin:mode="web"
- >
- <Key
- latin:keyHintIcon="@drawable/hint_popup"
- latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
- latin:maxPopupKeyboardColumn="8"
- latin:keyStyle="tabKeyStyle" />
- </case>
- <default>
- <Key
- latin:keyLabel="."
- latin:keyHintIcon="@drawable/hint_popup"
- latin:popupCharacters="@string/alternates_for_punctuation"
- latin:maxPopupKeyboardColumn="7"
- latin:keyStyle="functionalKeyStyle" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="im"
- >
- <Key
- latin:keyStyle="smileyKeyStyle"
- latin:keyWidth="20%p"
- latin:keyEdgeFlags="right" />
- </case>
- <default>
- <Key
- latin:keyStyle="returnKeyStyle"
- latin:keyWidth="20%p"
- latin:keyEdgeFlags="right" />
- </default>
- </switch>
+ latin:keyWidth="30%p" />
</case>
- <case
- latin:hasSettingsKey="true"
- >
+ <!-- latin:hasSettingsKey="false" -->
+ <default>
<Key
latin:keyStyle="toSymbolKeyStyle"
- latin:keyWidth="15%p"
+ latin:keyWidth="20%p"
latin:keyEdgeFlags="left" />
- <Key
- latin:keyStyle="settingsKeyStyle" />
<include
latin:keyboardLayout="@xml/kbd_qwerty_f1" />
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="30%p" />
- <switch>
- <case
- latin:mode="web"
- >
- <Key
- latin:keyHintIcon="@drawable/hint_popup"
- latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
- latin:maxPopupKeyboardColumn="8"
- latin:keyStyle="tabKeyStyle" />
- </case>
- <default>
- <Key
- latin:keyLabel="."
- latin:keyHintIcon="@drawable/hint_popup"
- latin:popupCharacters="@string/alternates_for_punctuation"
- latin:maxPopupKeyboardColumn="7"
- latin:keyStyle="functionalKeyStyle" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="im"
- >
- <Key
- latin:keyStyle="smileyKeyStyle"
- latin:keyWidth="25%p"
- latin:keyEdgeFlags="right" />
- </case>
- <default>
- <Key
- latin:keyStyle="returnKeyStyle"
- latin:keyWidth="25%p"
- latin:keyEdgeFlags="right" />
- </default>
- </switch>
+ latin:keyWidth="40%p" />
+ </default>
+ </switch>
+ <switch>
+ <case
+ latin:webInput="true"
+ >
+ <Key
+ latin:keyHintIcon="@drawable/hint_popup"
+ latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
+ latin:maxPopupKeyboardColumn="8"
+ latin:keyStyle="tabKeyStyle" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="."
+ latin:keyHintIcon="@drawable/hint_popup"
+ latin:popupCharacters="@string/alternates_for_punctuation"
+ latin:maxPopupKeyboardColumn="7"
+ latin:keyStyle="functionalKeyStyle" />
+ </default>
+ </switch>
+ <switch>
+ <case
+ latin:mode="im"
+ >
+ <Key
+ latin:keyStyle="smileyKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
</case>
+ <default>
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </default>
</switch>
</Row>
</merge>
diff --git a/java/res/xml/kbd_qwerty_rows_scandinavia.xml b/java/res/xml/kbd_qwerty_rows_scandinavia.xml
index 1aae5a0a8..8cb0640e5 100644
--- a/java/res/xml/kbd_qwerty_rows_scandinavia.xml
+++ b/java/res/xml/kbd_qwerty_rows_scandinavia.xml
@@ -29,49 +29,49 @@
>
<Key
latin:keyLabel="q"
- latin:keyHintIcon="@drawable/keyboard_hint_1"
+ latin:keyHintIcon="@drawable/key_hint_num1"
latin:popupCharacters="@string/alternates_for_q"
latin:keyWidth="8.75%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="w"
- latin:keyHintIcon="@drawable/keyboard_hint_2"
+ latin:keyHintIcon="@drawable/key_hint_num2"
latin:popupCharacters="@string/alternates_for_w" />
<Key
latin:keyLabel="e"
- latin:keyHintIcon="@drawable/keyboard_hint_3"
+ latin:keyHintIcon="@drawable/key_hint_num3"
latin:popupCharacters="@string/alternates_for_e" />
<Key
latin:keyLabel="r"
- latin:keyHintIcon="@drawable/keyboard_hint_4"
+ latin:keyHintIcon="@drawable/key_hint_num4"
latin:popupCharacters="@string/alternates_for_r" />
<Key
latin:keyLabel="t"
- latin:keyHintIcon="@drawable/keyboard_hint_5"
+ latin:keyHintIcon="@drawable/key_hint_num5"
latin:popupCharacters="@string/alternates_for_t" />
<Key
latin:keyLabel="y"
- latin:keyHintIcon="@drawable/keyboard_hint_6"
+ latin:keyHintIcon="@drawable/key_hint_num6"
latin:popupCharacters="@string/alternates_for_y" />
<Key
latin:keyLabel="u"
- latin:keyHintIcon="@drawable/keyboard_hint_7"
+ latin:keyHintIcon="@drawable/key_hint_num7"
latin:popupCharacters="@string/alternates_for_u" />
<Key
latin:keyLabel="i"
- latin:keyHintIcon="@drawable/keyboard_hint_8"
+ latin:keyHintIcon="@drawable/key_hint_num8"
latin:popupCharacters="@string/alternates_for_i" />
<Key
latin:keyLabel="o"
- latin:keyHintIcon="@drawable/keyboard_hint_9"
+ latin:keyHintIcon="@drawable/key_hint_num9"
latin:popupCharacters="@string/alternates_for_o" />
<Key
latin:keyLabel="p"
- latin:keyHintIcon="@drawable/keyboard_hint_0"
+ latin:keyHintIcon="@drawable/key_hint_num0"
latin:popupCharacters="@string/alternates_for_p" />
<Key
latin:keyLabel="å"
- latin:keyWidth="8.75%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -109,7 +109,7 @@
<Key
latin:keyLabel="@string/keylabel_for_scandinavia_row2_11"
latin:popupCharacters="@string/alternates_for_scandinavia_row2_11"
- latin:keyWidth="8.75%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<include
diff --git a/java/res/xml/kbd_qwertz_rows.xml b/java/res/xml/kbd_qwertz_rows.xml
index bb41f067a..603cf351c 100644
--- a/java/res/xml/kbd_qwertz_rows.xml
+++ b/java/res/xml/kbd_qwertz_rows.xml
@@ -29,45 +29,46 @@
>
<Key
latin:keyLabel="q"
- latin:keyHintIcon="@drawable/keyboard_hint_1"
+ latin:keyHintIcon="@drawable/key_hint_num1"
latin:popupCharacters="@string/alternates_for_q"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="w"
- latin:keyHintIcon="@drawable/keyboard_hint_2"
+ latin:keyHintIcon="@drawable/key_hint_num2"
latin:popupCharacters="@string/alternates_for_w" />
<Key
latin:keyLabel="e"
- latin:keyHintIcon="@drawable/keyboard_hint_3"
+ latin:keyHintIcon="@drawable/key_hint_num3"
latin:popupCharacters="@string/alternates_for_e" />
<Key
latin:keyLabel="r"
- latin:keyHintIcon="@drawable/keyboard_hint_4"
+ latin:keyHintIcon="@drawable/key_hint_num4"
latin:popupCharacters="@string/alternates_for_r" />
<Key
latin:keyLabel="t"
- latin:keyHintIcon="@drawable/keyboard_hint_5"
+ latin:keyHintIcon="@drawable/key_hint_num5"
latin:popupCharacters="@string/alternates_for_t" />
<Key
latin:keyLabel="z"
- latin:keyHintIcon="@drawable/keyboard_hint_6"
+ latin:keyHintIcon="@drawable/key_hint_num6"
latin:popupCharacters="@string/alternates_for_z" />
<Key
latin:keyLabel="u"
- latin:keyHintIcon="@drawable/keyboard_hint_7"
+ latin:keyHintIcon="@drawable/key_hint_num7"
latin:popupCharacters="@string/alternates_for_u" />
<Key
latin:keyLabel="i"
- latin:keyHintIcon="@drawable/keyboard_hint_8"
+ latin:keyHintIcon="@drawable/key_hint_num8"
latin:popupCharacters="@string/alternates_for_i" />
<Key
latin:keyLabel="o"
- latin:keyHintIcon="@drawable/keyboard_hint_9"
+ latin:keyHintIcon="@drawable/key_hint_num9"
latin:popupCharacters="@string/alternates_for_o" />
<Key
latin:keyLabel="p"
- latin:keyHintIcon="@drawable/keyboard_hint_0"
+ latin:keyHintIcon="@drawable/key_hint_num0"
latin:popupCharacters="@string/alternates_for_p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<include
@@ -100,7 +101,7 @@
latin:keyLabel="m" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="15%p"
+ latin:keyWidth="fillRight"
latin:visualInsetsLeft="1%p"
latin:keyEdgeFlags="right" />
</Row>
diff --git a/java/res/xml/kbd_ru_rows.xml b/java/res/xml/kbd_ru_rows.xml
index fa2af3be0..76250a303 100644
--- a/java/res/xml/kbd_ru_rows.xml
+++ b/java/res/xml/kbd_ru_rows.xml
@@ -29,49 +29,49 @@
>
<Key
latin:keyLabel="й"
- latin:keyHintIcon="@drawable/keyboard_hint_1"
+ latin:keyHintIcon="@drawable/key_hint_num1"
latin:popupCharacters="1"
latin:keyWidth="8.75%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ц"
- latin:keyHintIcon="@drawable/keyboard_hint_2"
+ latin:keyHintIcon="@drawable/key_hint_num2"
latin:popupCharacters="2" />
<Key
latin:keyLabel="у"
- latin:keyHintIcon="@drawable/keyboard_hint_3"
+ latin:keyHintIcon="@drawable/key_hint_num3"
latin:popupCharacters="3" />
<Key
latin:keyLabel="к"
- latin:keyHintIcon="@drawable/keyboard_hint_4"
+ latin:keyHintIcon="@drawable/key_hint_num4"
latin:popupCharacters="4" />
<Key
latin:keyLabel="е"
- latin:keyHintIcon="@drawable/keyboard_hint_5"
+ latin:keyHintIcon="@drawable/key_hint_num5"
latin:popupCharacters="@string/alternates_for_cyrillic_e" />
<Key
latin:keyLabel="н"
- latin:keyHintIcon="@drawable/keyboard_hint_6"
+ latin:keyHintIcon="@drawable/key_hint_num6"
latin:popupCharacters="6" />
<Key
latin:keyLabel="г"
- latin:keyHintIcon="@drawable/keyboard_hint_7"
+ latin:keyHintIcon="@drawable/key_hint_num7"
latin:popupCharacters="7" />
<Key
latin:keyLabel="ш"
- latin:keyHintIcon="@drawable/keyboard_hint_8"
+ latin:keyHintIcon="@drawable/key_hint_num8"
latin:popupCharacters="8" />
<Key
latin:keyLabel="щ"
- latin:keyHintIcon="@drawable/keyboard_hint_9"
+ latin:keyHintIcon="@drawable/key_hint_num9"
latin:popupCharacters="9" />
<Key
latin:keyLabel="з"
- latin:keyHintIcon="@drawable/keyboard_hint_0"
+ latin:keyHintIcon="@drawable/key_hint_num0"
latin:popupCharacters="0" />
<Key
latin:keyLabel="х"
- latin:keyWidth="8.75%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -101,7 +101,7 @@
latin:keyLabel="ж" />
<Key
latin:keyLabel="э"
- latin:keyWidth="8.75%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -132,7 +132,7 @@
latin:keyLabel="ю" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="11.75%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<include
diff --git a/java/res/xml/kbd_sr_rows.xml b/java/res/xml/kbd_sr_rows.xml
index 8d6b070b2..139af80f5 100644
--- a/java/res/xml/kbd_sr_rows.xml
+++ b/java/res/xml/kbd_sr_rows.xml
@@ -29,47 +29,48 @@
>
<Key
latin:keyLabel="љ"
- latin:keyHintIcon="@drawable/keyboard_hint_1"
+ latin:keyHintIcon="@drawable/key_hint_num1"
latin:popupCharacters="1"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="њ"
- latin:keyHintIcon="@drawable/keyboard_hint_2"
+ latin:keyHintIcon="@drawable/key_hint_num2"
latin:popupCharacters="2" />
<Key
latin:keyLabel="е"
- latin:keyHintIcon="@drawable/keyboard_hint_3"
+ latin:keyHintIcon="@drawable/key_hint_num3"
latin:popupCharacters="3" />
<Key
latin:keyLabel="р"
- latin:keyHintIcon="@drawable/keyboard_hint_4"
+ latin:keyHintIcon="@drawable/key_hint_num4"
latin:popupCharacters="4" />
<Key
latin:keyLabel="т"
- latin:keyHintIcon="@drawable/keyboard_hint_5"
+ latin:keyHintIcon="@drawable/key_hint_num5"
latin:popupCharacters="5" />
<Key
latin:keyLabel="з"
- latin:keyHintIcon="@drawable/keyboard_hint_6"
+ latin:keyHintIcon="@drawable/key_hint_num6"
latin:popupCharacters="6" />
<Key
latin:keyLabel="у"
- latin:keyHintIcon="@drawable/keyboard_hint_7"
+ latin:keyHintIcon="@drawable/key_hint_num7"
latin:popupCharacters="7" />
<Key
latin:keyLabel="и"
- latin:keyHintIcon="@drawable/keyboard_hint_8"
+ latin:keyHintIcon="@drawable/key_hint_num8"
latin:popupCharacters="8" />
<Key
latin:keyLabel="о"
- latin:keyHintIcon="@drawable/keyboard_hint_9"
+ latin:keyHintIcon="@drawable/key_hint_num9"
latin:popupCharacters="9" />
<Key
latin:keyLabel="п"
- latin:keyHintIcon="@drawable/keyboard_hint_0"
+ latin:keyHintIcon="@drawable/key_hint_num0"
latin:popupCharacters="0" />
<Key
latin:keyLabel="ш"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -98,6 +99,7 @@
latin:keyLabel="ч" />
<Key
latin:keyLabel="ћ"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row
@@ -126,7 +128,7 @@
latin:keyLabel="ж" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="11.00%p"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<include
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index 9748bce8b..a58a51874 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
@@ -64,6 +65,7 @@
<Key
latin:keyLabel="0"
latin:popupCharacters="ⁿ,∅"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
@@ -94,6 +96,7 @@
<Key
latin:keyLabel=")"
latin:popupCharacters="],},&gt;"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
@@ -106,13 +109,14 @@
latin:keyLabel="!"
latin:popupCharacters="¡" />
<!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. -->
+ <!-- latin:popupCharacters="“,”,„,‟,«,»" -->
<Key
latin:keyLabel="&quot;"
- latin:popupCharacters="“,”,„,‟,«,»"
+ latin:popupCharacters="“,”,«,»"
latin:maxPopupKeyboardColumn="6" />
<Key
latin:keyLabel="\'"
- latin:popupCharacters="‘,’,‚,‛,´" />
+ latin:popupCharacters="‘,’,‚,‛" />
<Key
latin:keyLabel=":" />
<Key
@@ -124,7 +128,7 @@
latin:popupCharacters="¿" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="15%p"
+ latin:keyWidth="fillRight"
latin:visualInsetsLeft="1%p"
latin:keyEdgeFlags="right" />
</Row>
diff --git a/java/res/xml/kbd_symbols_row4.xml b/java/res/xml/kbd_symbols_row4.xml
index b330095af..726f7c37a 100644
--- a/java/res/xml/kbd_symbols_row4.xml
+++ b/java/res/xml/kbd_symbols_row4.xml
@@ -22,81 +22,59 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<Row
+ latin:keyWidth="10%p"
latin:rowEdgeFlags="bottom"
>
<switch>
<case
- latin:hasSettingsKey="false"
+ latin:hasSettingsKey="true"
>
<Key
latin:keyStyle="toAlphaKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="15%p"
latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyStyle="settingsKeyStyle" />
<include
- latin:keyboardLayout="@xml/kbd_symbols_f1" />
+ latin:keyboardLayout="@xml/kbd_qwerty_f1" />
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="40%p" />
- <Key
- latin:keyLabel="."
- latin:keyHintIcon="@drawable/hint_popup"
- latin:popupCharacters="@string/alternates_for_punctuation"
- latin:maxPopupKeyboardColumn="7"
- latin:keyStyle="functionalKeyStyle" />
- <switch>
- <case
- latin:mode="im"
- >
- <Key
- latin:keyStyle="smileyKeyStyle"
- latin:keyWidth="20%p"
- latin:keyEdgeFlags="right" />
- </case>
- <default>
- <Key
- latin:keyStyle="returnKeyStyle"
- latin:keyWidth="20%p"
- latin:keyEdgeFlags="right" />
- </default>
- </switch>
+ latin:keyWidth="30%p" />
</case>
- <case
- latin:hasSettingsKey="true"
- >
+ <!-- latin:hasSettingsKey="false" -->
+ <default>
<Key
latin:keyStyle="toAlphaKeyStyle"
- latin:keyWidth="15%p"
+ latin:keyWidth="20%p"
latin:keyEdgeFlags="left" />
- <Key
- latin:keyStyle="settingsKeyStyle" />
<include
latin:keyboardLayout="@xml/kbd_symbols_f1" />
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="30%p" />
+ latin:keyWidth="40%p" />
+ </default>
+ </switch>
+ <Key
+ latin:keyLabel="."
+ latin:keyHintIcon="@drawable/hint_popup"
+ latin:popupCharacters="@string/alternates_for_punctuation"
+ latin:maxPopupKeyboardColumn="7"
+ latin:keyStyle="functionalKeyStyle" />
+ <switch>
+ <case
+ latin:mode="im"
+ >
<Key
- latin:keyLabel="."
- latin:keyHintIcon="@drawable/hint_popup"
- latin:popupCharacters="@string/alternates_for_punctuation"
- latin:maxPopupKeyboardColumn="7"
- latin:keyStyle="functionalKeyStyle" />
- <switch>
- <case
- latin:mode="im"
- >
- <Key
- latin:keyStyle="smileyKeyStyle"
- latin:keyWidth="25%p"
- latin:keyEdgeFlags="right" />
- </case>
- <default>
- <Key
- latin:keyStyle="returnKeyStyle"
- latin:keyWidth="25%p"
- latin:keyEdgeFlags="right" />
- </default>
- </switch>
+ latin:keyStyle="smileyKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
</case>
+ <default>
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </default>
</switch>
</Row>
</merge>
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index 3978f1776..96e741bbc 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -21,7 +21,8 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
+ latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
+ latin:minKeyboardHeight="@fraction/minKeyboardHeight"
latin:rowHeight="25%p"
latin:keyWidth="10%p"
latin:horizontalGap="@dimen/key_horizontal_gap"
@@ -62,6 +63,7 @@
latin:keyLabel="{" />
<Key
latin:keyLabel="}"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
@@ -93,6 +95,7 @@
latin:keyLabel="[" />
<Key
latin:keyLabel="]"
+ latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
<Row>
@@ -124,7 +127,7 @@
latin:popupCharacters="≥,»,›" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="15%p"
+ latin:keyWidth="fillRight"
latin:visualInsetsLeft="1%p"
latin:keyEdgeFlags="right" />
</Row>
diff --git a/java/res/xml/kbd_symbols_shift_row4.xml b/java/res/xml/kbd_symbols_shift_row4.xml
index 4f8567d58..9eb9b1d5a 100644
--- a/java/res/xml/kbd_symbols_shift_row4.xml
+++ b/java/res/xml/kbd_symbols_shift_row4.xml
@@ -22,79 +22,60 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<Row
+ latin:keyWidth="10%p"
latin:rowEdgeFlags="bottom"
>
<switch>
<case
- latin:hasSettingsKey="false"
+ latin:hasSettingsKey="true"
>
<Key
latin:keyStyle="toAlphaKeyStyle"
- latin:keyWidth="20%p"
+ latin:keyWidth="15%p"
latin:keyEdgeFlags="left" />
<Key
+ latin:keyStyle="settingsKeyStyle" />
+ <Key
latin:keyLabel="„"
latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛"
latin:keyStyle="nonPasswordFunctionalKeyStyle" />
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="40%p" />
- <Key
- latin:keyLabel="…"
- latin:keyStyle="nonPasswordFunctionalKeyStyle" />
- <switch>
- <case
- latin:mode="im"
- >
- <Key
- latin:keyStyle="smileyKeyStyle"
- latin:keyWidth="20%p"
- latin:keyEdgeFlags="right" />
- </case>
- <default>
- <Key
- latin:keyStyle="returnKeyStyle"
- latin:keyWidth="20%p"
- latin:keyEdgeFlags="right" />
- </default>
- </switch>
+ latin:keyWidth="30%p" />
</case>
- <case
- latin:hasSettingsKey="true"
- >
+ <!-- latin:hasSettingsKey="false" -->
+ <default>
<Key
latin:keyStyle="toAlphaKeyStyle"
- latin:keyWidth="15%p"
+ latin:keyWidth="20%p"
latin:keyEdgeFlags="left" />
<Key
- latin:keyStyle="settingsKeyStyle" />
- <Key
latin:keyLabel="„"
latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛"
latin:keyStyle="nonPasswordFunctionalKeyStyle" />
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="30%p" />
+ latin:keyWidth="40%p" />
+ </default>
+ </switch>
+ <Key
+ latin:keyLabel="…"
+ latin:keyStyle="nonPasswordFunctionalKeyStyle" />
+ <switch>
+ <case
+ latin:mode="im"
+ >
<Key
- latin:keyLabel="…"
- latin:keyStyle="nonPasswordFunctionalKeyStyle" />
- <switch>
- <case
- latin:mode="im"
- >
- <Key
- latin:keyStyle="smileyKeyStyle"
- latin:keyWidth="25%p"
- latin:keyEdgeFlags="right" />
- </case>
- <default>
- <Key
- latin:keyStyle="returnKeyStyle"
- latin:keyWidth="25%p"
- latin:keyEdgeFlags="right" />
- </default>
- </switch>
+ latin:keyStyle="smileyKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
</case>
+ <default>
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:keyEdgeFlags="right" />
+ </default>
</switch>
</Row>
</merge>
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index df43701d3..aba6974a8 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -151,6 +151,11 @@
android:imeSubtypeMode="keyboard"
/>
<subtype android:icon="@drawable/ic_subtype_keyboard"
+ android:label="@string/subtype_mode_pt_keyboard"
+ android:imeSubtypeLocale="pt"
+ android:imeSubtypeMode="keyboard"
+ />
+ <subtype android:icon="@drawable/ic_subtype_keyboard"
android:label="@string/subtype_mode_ru_keyboard"
android:imeSubtypeLocale="ru"
android:imeSubtypeMode="keyboard"
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index 24a1d45a5..b0497a51c 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -130,6 +130,15 @@
android:entries="@array/keyboard_layout_modes"
android:defaultValue="@string/config_default_keyboard_theme_id" />
</PreferenceCategory>
+ <PreferenceScreen
+ android:key="pref_advanced_settings"
+ android:title="@string/advanced_settings"
+ android:summary="@string/advanced_settings_summary">
+ <!-- Values for popup dismiss delay are added programatically -->
+ <ListPreference
+ android:key="pref_key_preview_popup_dismiss_delay"
+ android:title="@string/key_preview_popup_dismiss_delay" />
+ </PreferenceScreen>
<!-- <Preference
android:title="Debug Settings"
android:key="debug_settings">
diff --git a/java/src/com/android/inputmethod/compat/CompatUtils.java b/java/src/com/android/inputmethod/compat/CompatUtils.java
index 0b532f7f0..6e14bfa8b 100644
--- a/java/src/com/android/inputmethod/compat/CompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/CompatUtils.java
@@ -22,7 +22,6 @@ import android.util.Log;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -74,23 +73,22 @@ public class CompatUtils {
return targetClass.getMethod(name, parameterTypes);
} catch (SecurityException e) {
// ignore
- return null;
} catch (NoSuchMethodException e) {
// ignore
- return null;
}
+ return null;
}
public static Field getField(Class<?> targetClass, String name) {
+ if (targetClass == null || TextUtils.isEmpty(name)) return null;
try {
return targetClass.getField(name);
} catch (SecurityException e) {
// ignore
- return null;
} catch (NoSuchFieldException e) {
// ignore
- return null;
}
+ return null;
}
public static Constructor<?> getConstructor(Class<?> targetClass, Class<?>[] types) {
@@ -99,51 +97,49 @@ public class CompatUtils {
return targetClass.getConstructor(types);
} catch (SecurityException e) {
// ignore
- return null;
} catch (NoSuchMethodException e) {
// ignore
- return null;
}
+ return null;
+ }
+
+ public static Object newInstance(Constructor<?> constructor, Object[] args) {
+ if (constructor == null) return null;
+ try {
+ return constructor.newInstance(args);
+ } catch (Exception e) {
+ Log.e(TAG, "Exception in newInstance: " + e.getClass().getSimpleName());
+ }
+ return null;
}
public static Object invoke(
Object receiver, Object defaultValue, Method method, Object... args) {
- if (receiver == null || method == null) return defaultValue;
+ if (method == null) return defaultValue;
try {
return method.invoke(receiver, args);
- } catch (IllegalArgumentException e) {
- Log.e(TAG, "Exception in invoke: IllegalArgumentException");
- return defaultValue;
- } catch (IllegalAccessException e) {
- Log.e(TAG, "Exception in invoke: IllegalAccessException");
- return defaultValue;
- } catch (InvocationTargetException e) {
- Log.e(TAG, "Exception in invoke: IllegalTargetException");
- return defaultValue;
+ } catch (Exception e) {
+ Log.e(TAG, "Exception in invoke: " + e.getClass().getSimpleName());
}
+ return defaultValue;
}
public static Object getFieldValue(Object receiver, Object defaultValue, Field field) {
- if (receiver == null || field == null) return defaultValue;
+ if (field == null) return defaultValue;
try {
return field.get(receiver);
- } catch (IllegalArgumentException e) {
- Log.e(TAG, "Exception in getFieldValue: IllegalArgumentException");
- return defaultValue;
- } catch (IllegalAccessException e) {
- Log.e(TAG, "Exception in getFieldValue: IllegalAccessException");
- return defaultValue;
+ } catch (Exception e) {
+ Log.e(TAG, "Exception in getFieldValue: " + e.getClass().getSimpleName());
}
+ return defaultValue;
}
public static void setFieldValue(Object receiver, Field field, Object value) {
- if (receiver == null || field == null) return;
+ if (field == null) return;
try {
field.set(receiver, value);
- } catch (IllegalArgumentException e) {
- Log.e(TAG, "Exception in setFieldValue: IllegalArgumentException");
- } catch (IllegalAccessException e) {
- Log.e(TAG, "Exception in setFieldValue: IllegalAccessException");
+ } catch (Exception e) {
+ Log.e(TAG, "Exception in setFieldValue: " + e.getClass().getSimpleName());
}
}
diff --git a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
index f6f4f7a59..2789bcb39 100644
--- a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
@@ -78,6 +78,9 @@ public class EditorInfoCompatUtils {
case EditorInfo.IME_ACTION_SEND:
action = "actionSend";
break;
+ case EditorInfo.IME_ACTION_NEXT:
+ action = "actionNext";
+ break;
case EditorInfo.IME_ACTION_DONE:
action = "actionDone";
break;
diff --git a/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java b/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java
index c926be06f..7d00b6007 100644
--- a/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java
@@ -18,15 +18,12 @@ package com.android.inputmethod.compat;
import com.android.inputmethod.latin.EditingUtils.SelectedWord;
-import android.util.Log;
import android.view.inputmethod.InputConnection;
import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class InputConnectionCompatUtils {
- private static final String TAG = InputConnectionCompatUtils.class.getSimpleName();
private static final Class<?> CLASS_CorrectionInfo = CompatUtils
.getClass("android.view.inputmethod.CorrectionInfo");
private static final Class<?>[] INPUT_TYPE_CorrectionInfo = new Class<?>[] { int.class,
@@ -53,18 +50,10 @@ public class InputConnectionCompatUtils {
return;
}
Object[] args = { offset, oldText, newText };
- try {
- Object correctionInfo = CONSTRUCTOR_CorrectionInfo.newInstance(args);
+ Object correctionInfo = CompatUtils.newInstance(CONSTRUCTOR_CorrectionInfo, args);
+ if (correctionInfo != null) {
CompatUtils.invoke(ic, null, METHOD_InputConnection_commitCorrection,
correctionInfo);
- } catch (IllegalArgumentException e) {
- Log.e(TAG, "Error in commitCorrection: IllegalArgumentException");
- } catch (InstantiationException e) {
- Log.e(TAG, "Error in commitCorrection: InstantiationException");
- } catch (IllegalAccessException e) {
- Log.e(TAG, "Error in commitCorrection: IllegalAccessException");
- } catch (InvocationTargetException e) {
- Log.e(TAG, "Error in commitCorrection: InvocationTargetException");
}
}
diff --git a/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java b/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java
index 806c355a9..667d86c42 100644
--- a/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java
+++ b/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java
@@ -48,6 +48,8 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper
CompatUtils.getMethod(CLASS_InputMethodSubtype, "containsExtraValueKey", String.class);
private static final Method METHOD_getExtraValueOf =
CompatUtils.getMethod(CLASS_InputMethodSubtype, "getExtraValueOf", String.class);
+ private static final Method METHOD_isAuxiliary =
+ CompatUtils.getMethod(CLASS_InputMethodSubtype, "isAuxiliary");
private final int mDummyNameResId;
private final int mDummyIconResId;
@@ -116,6 +118,10 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper
return (String)CompatUtils.invoke(mObj, null, METHOD_getExtraValueOf, key);
}
+ public boolean isAuxiliary() {
+ return (Boolean)CompatUtils.invoke(mObj, false, METHOD_isAuxiliary);
+ }
+
public boolean isDummy() {
return !hasOriginalObject();
}
diff --git a/java/src/com/android/inputmethod/compat/InputTypeCompatUtils.java b/java/src/com/android/inputmethod/compat/InputTypeCompatUtils.java
index d85174188..6c2f0f799 100644
--- a/java/src/com/android/inputmethod/compat/InputTypeCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/InputTypeCompatUtils.java
@@ -37,6 +37,7 @@ public class InputTypeCompatUtils {
(Integer) CompatUtils.getFieldValue(null, null,
FIELD_InputType_TYPE_NUMBER_VARIATION_PASSWORD);
private static final int WEB_TEXT_PASSWORD_INPUT_TYPE;
+ private static final int WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE;
private static final int NUMBER_PASSWORD_INPUT_TYPE;
private static final int TEXT_PASSWORD_INPUT_TYPE =
InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD;
@@ -45,20 +46,35 @@ public class InputTypeCompatUtils {
static {
WEB_TEXT_PASSWORD_INPUT_TYPE =
- OBJ_InputType_TYPE_TEXT_VARIATION_WEB_PASSWORD != null
- ? InputType.TYPE_CLASS_TEXT | OBJ_InputType_TYPE_TEXT_VARIATION_WEB_PASSWORD
- : 0;
+ OBJ_InputType_TYPE_TEXT_VARIATION_WEB_PASSWORD != null
+ ? InputType.TYPE_CLASS_TEXT | OBJ_InputType_TYPE_TEXT_VARIATION_WEB_PASSWORD
+ : 0;
+ WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE =
+ OBJ_InputType_TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS != null
+ ? InputType.TYPE_CLASS_TEXT
+ | OBJ_InputType_TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS
+ : 0;
NUMBER_PASSWORD_INPUT_TYPE =
OBJ_InputType_TYPE_NUMBER_VARIATION_PASSWORD != null
? InputType.TYPE_CLASS_NUMBER | OBJ_InputType_TYPE_NUMBER_VARIATION_PASSWORD
: 0;
}
+ private static boolean isWebEditTextInputType(int inputType) {
+ return inputType == (InputType.TYPE_CLASS_TEXT
+ | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT);
+ }
+
private static boolean isWebPasswordInputType(int inputType) {
return WEB_TEXT_PASSWORD_INPUT_TYPE != 0
&& inputType == WEB_TEXT_PASSWORD_INPUT_TYPE;
}
+ private static boolean isWebEmailAddressInputType(int inputType) {
+ return WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE != 0
+ && inputType == WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE;
+ }
+
private static boolean isNumberPasswordInputType(int inputType) {
return NUMBER_PASSWORD_INPUT_TYPE != 0
&& inputType == NUMBER_PASSWORD_INPUT_TYPE;
@@ -78,6 +94,13 @@ public class InputTypeCompatUtils {
|| isWebEmailAddressVariation(variation);
}
+ public static boolean isWebInputType(int inputType) {
+ final int maskedInputType =
+ inputType & (InputType.TYPE_MASK_CLASS | InputType.TYPE_MASK_VARIATION);
+ return isWebEditTextInputType(maskedInputType) || isWebPasswordInputType(maskedInputType)
+ || isWebEmailAddressInputType(maskedInputType);
+ }
+
// Please refer to TextView.isPasswordInputType
public static boolean isPasswordInputType(int inputType) {
final int maskedInputType =
diff --git a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
new file mode 100644
index 000000000..5b02de36e
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
@@ -0,0 +1,78 @@
+/*
+ * 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 com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.SuggestionSpanPickedNotificationReceiver;
+
+import android.content.Context;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.Spanned;
+
+import java.lang.reflect.Constructor;
+import java.util.Locale;
+
+public class SuggestionSpanUtils {
+ public static final String ACTION_SUGGESTION_PICKED =
+ "android.text.style.SUGGESTION_PICKED";
+ public static final String SUGGESTION_SPAN_PICKED_AFTER = "after";
+ public static final String SUGGESTION_SPAN_PICKED_BEFORE = "before";
+ public static final String SUGGESTION_SPAN_PICKED_HASHCODE = "hashcode";
+
+ private static final Class<?> CLASS_SuggestionSpan = CompatUtils
+ .getClass("android.text.style.SuggestionSpan");
+ private static final Class<?>[] INPUT_TYPE_SuggestionSpan = new Class<?>[] {
+ Context.class, Locale.class, String[].class, int.class, Class.class };
+ private static final Constructor<?> CONSTRUCTOR_SuggestionSpan = CompatUtils
+ .getConstructor(CLASS_SuggestionSpan, INPUT_TYPE_SuggestionSpan);
+ public static final boolean SUGGESTION_SPAN_IS_SUPPORTED;
+ static {
+ SUGGESTION_SPAN_IS_SUPPORTED =
+ CLASS_SuggestionSpan != null && CONSTRUCTOR_SuggestionSpan != null;
+ }
+
+ public static CharSequence getTextWithSuggestionSpan(Context context,
+ CharSequence suggestion, SuggestedWords suggestedWords) {
+ if (CONSTRUCTOR_SuggestionSpan == null || suggestedWords == null
+ || suggestedWords.size() == 0) {
+ return suggestion;
+ }
+
+ final Spannable spannable;
+ if (suggestion instanceof Spannable) {
+ spannable = (Spannable) suggestion;
+ } else {
+ spannable = new SpannableString(suggestion);
+ }
+ // TODO: Use SUGGESTIONS_MAX_SIZE instead of 5.
+ final int N = Math.min(5, suggestedWords.size());
+ final String[] suggestionsArray = new String[N];
+ for (int i = 0; i < N; ++i) {
+ suggestionsArray[i] = suggestedWords.getWord(i).toString();
+ }
+ final Object[] args =
+ { context, null, suggestionsArray, 0,
+ (Class<?>) SuggestionSpanPickedNotificationReceiver.class };
+ final Object ss = CompatUtils.newInstance(CONSTRUCTOR_SuggestionSpan, args);
+ if (ss == null) {
+ return suggestion;
+ }
+ spannable.setSpan(ss, 0, suggestion.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ return spannable;
+ }
+}
diff --git a/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java b/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java
index e14a49c49..290e6b554 100644
--- a/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java
+++ b/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 Google Inc.
+ * 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
diff --git a/java/src/com/android/inputmethod/deprecated/VoiceProxy.java b/java/src/com/android/inputmethod/deprecated/VoiceProxy.java
index 753dceead..85993ea4d 100644
--- a/java/src/com/android/inputmethod/deprecated/VoiceProxy.java
+++ b/java/src/com/android/inputmethod/deprecated/VoiceProxy.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -137,8 +137,8 @@ public class VoiceProxy implements VoiceInput.UiListener {
@Override
public void showHint(int viewResource) {
View view = LayoutInflater.from(mService).inflate(viewResource, null);
- mService.setCandidatesView(view);
- mService.setCandidatesViewShown(true);
+// mService.setCandidatesView(view);
+// mService.setCandidatesViewShown(true);
mIsShowingHint = true;
}
});
@@ -441,7 +441,7 @@ public class VoiceProxy implements VoiceInput.UiListener {
}
builder.setTypedWordValid(true).setHasMinimalSuggestion(true);
mService.setSuggestions(builder.build());
- mService.setCandidatesViewShown(true);
+// mService.setCandidatesViewShown(true);
return true;
}
return false;
@@ -526,7 +526,7 @@ public class VoiceProxy implements VoiceInput.UiListener {
mHandler.post(new Runnable() {
@Override
public void run() {
- mService.setCandidatesViewShown(false);
+// mService.setCandidatesViewShown(false);
mRecognizing = true;
mVoiceInput.newView();
View v = mVoiceInput.getView();
@@ -536,7 +536,7 @@ public class VoiceProxy implements VoiceInput.UiListener {
((ViewGroup) p).removeView(v);
}
- View keyboardView = KeyboardSwitcher.getInstance().getInputView();
+ View keyboardView = KeyboardSwitcher.getInstance().getKeyboardView();
// The full height of the keyboard is difficult to calculate
// as the dimension is expressed in "mm" and not in "pixel"
@@ -691,7 +691,7 @@ public class VoiceProxy implements VoiceInput.UiListener {
if (mSubtypeSwitcher.isVoiceMode() && windowToken != null) {
// Close keyboard view if it is been shown.
if (KeyboardSwitcher.getInstance().isInputViewShown())
- KeyboardSwitcher.getInstance().getInputView().purgeKeyboardAndClosing();
+ KeyboardSwitcher.getInstance().getKeyboardView().purgeKeyboardAndClosing();
startListening(false, windowToken);
}
// If we have no token, onAttachedToWindow will take care of showing dialog and start
diff --git a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
index a1b49b475..fe70eef96 100644
--- a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
+++ b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008-2009 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
@@ -43,6 +43,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Locale;
+import java.util.Map.Entry;
+import java.util.TreeMap;
public class InputLanguageSelection extends PreferenceActivity {
@@ -51,21 +53,17 @@ public class InputLanguageSelection extends PreferenceActivity {
private HashMap<CheckBoxPreference, Locale> mLocaleMap =
new HashMap<CheckBoxPreference, Locale>();
- private static class Loc implements Comparable<Object> {
+ private static class LocaleEntry implements Comparable<Object> {
private static Collator sCollator = Collator.getInstance();
private String mLabel;
public final Locale mLocale;
- public Loc(String label, Locale locale) {
+ public LocaleEntry(String label, Locale locale) {
this.mLabel = label;
this.mLocale = locale;
}
- public void setLabel(String label) {
- this.mLabel = label;
- }
-
@Override
public String toString() {
return this.mLabel;
@@ -73,7 +71,7 @@ public class InputLanguageSelection extends PreferenceActivity {
@Override
public int compareTo(Object o) {
- return sCollator.compare(this.mLabel, ((Loc) o).mLabel);
+ return sCollator.compare(this.mLabel, ((LocaleEntry) o).mLabel);
}
}
@@ -85,21 +83,58 @@ public class InputLanguageSelection extends PreferenceActivity {
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
mSelectedLanguages = mPrefs.getString(Settings.PREF_SELECTED_LANGUAGES, "");
String[] languageList = mSelectedLanguages.split(",");
- ArrayList<Loc> availableLanguages = getUniqueLocales();
+ ArrayList<LocaleEntry> availableLanguages = getUniqueLocales();
PreferenceGroup parent = getPreferenceScreen();
+ final HashMap<Long, LocaleEntry> dictionaryIdLocaleMap = new HashMap<Long, LocaleEntry>();
+ final TreeMap<LocaleEntry, Boolean> localeHasDictionaryMap =
+ new TreeMap<LocaleEntry, Boolean>();
for (int i = 0; i < availableLanguages.size(); i++) {
- Locale locale = availableLanguages.get(i).mLocale;
- final Pair<Boolean, Boolean> hasDictionaryOrLayout = hasDictionaryOrLayout(locale);
- final boolean hasDictionary = hasDictionaryOrLayout.first;
+ LocaleEntry loc = availableLanguages.get(i);
+ Locale locale = loc.mLocale;
+ final Pair<Long, Boolean> hasDictionaryOrLayout = hasDictionaryOrLayout(locale);
+ final Long dictionaryId = hasDictionaryOrLayout.first;
final boolean hasLayout = hasDictionaryOrLayout.second;
+ final boolean hasDictionary = dictionaryId != null;
// Add this locale to the supported list if:
- // 1) this locale has a layout/ 2) this locale has a dictionary and the length
- // of the locale is equal to or larger than 5.
- if (!hasLayout && !(hasDictionary && locale.toString().length() >= 5)) {
+ // 1) this locale has a layout/ 2) this locale has a dictionary
+ // If some locales have no layout but have a same dictionary, the shortest locale
+ // will be added to the supported list.
+ if (!hasLayout && !hasDictionary) {
continue;
}
+ if (hasLayout) {
+ localeHasDictionaryMap.put(loc, hasDictionary);
+ }
+ if (!hasDictionary) {
+ continue;
+ }
+ if (dictionaryIdLocaleMap.containsKey(dictionaryId)) {
+ final String newLocale = locale.toString();
+ final String oldLocale =
+ dictionaryIdLocaleMap.get(dictionaryId).mLocale.toString();
+ // Check if this locale is more appropriate to be the candidate of the input locale.
+ if (oldLocale.length() <= newLocale.length() && !hasLayout) {
+ // Don't add this new locale to the map<dictionary id, locale> if:
+ // 1) the new locale's name is longer than the existing one, and
+ // 2) the new locale doesn't have its layout
+ continue;
+ }
+ }
+ dictionaryIdLocaleMap.put(dictionaryId, loc);
+ }
+
+ for (LocaleEntry localeEntry : dictionaryIdLocaleMap.values()) {
+ if (!localeHasDictionaryMap.containsKey(localeEntry)) {
+ localeHasDictionaryMap.put(localeEntry, true);
+ }
+ }
+
+ for (Entry<LocaleEntry, Boolean> entry : localeHasDictionaryMap.entrySet()) {
+ final LocaleEntry localeEntry = entry.getKey();
+ final Locale locale = localeEntry.mLocale;
+ final Boolean hasDictionary = entry.getValue();
CheckBoxPreference pref = new CheckBoxPreference(this);
- pref.setTitle(SubtypeSwitcher.getFullDisplayName(locale, true));
+ pref.setTitle(localeEntry.mLabel);
boolean checked = isLocaleIn(locale, languageList);
pref.setChecked(checked);
if (hasDictionary) {
@@ -118,11 +153,11 @@ public class InputLanguageSelection extends PreferenceActivity {
return false;
}
- private Pair<Boolean, Boolean> hasDictionaryOrLayout(Locale locale) {
- if (locale == null) return new Pair<Boolean, Boolean>(false, false);
+ private Pair<Long, Boolean> hasDictionaryOrLayout(Locale locale) {
+ if (locale == null) return new Pair<Long, Boolean>(null, false);
final Resources res = getResources();
final Locale saveLocale = Utils.setSystemLocale(res, locale);
- final boolean hasDictionary = DictionaryFactory.isDictionaryAvailable(this, locale);
+ final Long dictionaryId = DictionaryFactory.getDictionaryId(this, locale);
boolean hasLayout = false;
try {
@@ -141,7 +176,7 @@ public class InputLanguageSelection extends PreferenceActivity {
} catch (IOException e) {
}
Utils.setSystemLocale(res, saveLocale);
- return new Pair<Boolean, Boolean>(hasDictionary, hasLayout);
+ return new Pair<Long, Boolean>(dictionaryId, hasLayout);
}
private String get5Code(Locale locale) {
@@ -174,13 +209,13 @@ public class InputLanguageSelection extends PreferenceActivity {
SharedPreferencesCompat.apply(editor);
}
- public ArrayList<Loc> getUniqueLocales() {
+ public ArrayList<LocaleEntry> getUniqueLocales() {
String[] locales = getAssets().getLocales();
Arrays.sort(locales);
- ArrayList<Loc> uniqueLocales = new ArrayList<Loc>();
+ ArrayList<LocaleEntry> uniqueLocales = new ArrayList<LocaleEntry>();
final int origSize = locales.length;
- Loc[] preprocess = new Loc[origSize];
+ LocaleEntry[] preprocess = new LocaleEntry[origSize];
int finalSize = 0;
for (int i = 0 ; i < origSize; i++ ) {
String s = locales[i];
@@ -202,26 +237,13 @@ public class InputLanguageSelection extends PreferenceActivity {
if (finalSize == 0) {
preprocess[finalSize++] =
- new Loc(SubtypeSwitcher.getFullDisplayName(l, true), l);
+ new LocaleEntry(SubtypeSwitcher.getFullDisplayName(l, false), l);
} else {
- // check previous entry:
- // same lang and a country -> upgrade to full name and
- // insert ours with full name
- // diff lang -> insert ours with lang-only name
- if (preprocess[finalSize-1].mLocale.getLanguage().equals(
- language)) {
- preprocess[finalSize-1].setLabel(SubtypeSwitcher.getFullDisplayName(
- preprocess[finalSize-1].mLocale, false));
- preprocess[finalSize++] =
- new Loc(SubtypeSwitcher.getFullDisplayName(l, false), l);
+ if (s.equals("zz_ZZ")) {
+ // ignore this locale
} else {
- String displayName;
- if (s.equals("zz_ZZ")) {
- // ignore this locale
- } else {
- displayName = SubtypeSwitcher.getFullDisplayName(l, true);
- preprocess[finalSize++] = new Loc(displayName, l);
- }
+ final String displayName = SubtypeSwitcher.getFullDisplayName(l, false);
+ preprocess[finalSize++] = new LocaleEntry(displayName, l);
}
}
}
diff --git a/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java b/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java
index 5ef236e31..1eedb5ee1 100644
--- a/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java
+++ b/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -20,6 +20,7 @@ import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.Settings;
import com.android.inputmethod.latin.SharedPreferencesCompat;
+import com.android.inputmethod.latin.Utils;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
@@ -125,8 +126,7 @@ public class LanguageSwitcher {
private void constructLocales() {
mLocales.clear();
for (final String lang : mSelectedLanguageArray) {
- final Locale locale = new Locale(lang.substring(0, 2),
- lang.length() > 4 ? lang.substring(3, 5) : "");
+ final Locale locale = Utils.constructLocaleFromString(lang);
mLocales.add(locale);
}
}
diff --git a/java/src/com/android/inputmethod/latin/Recorrection.java b/java/src/com/android/inputmethod/deprecated/recorrection/Recorrection.java
index 3fa6292ba..d40728d25 100644
--- a/java/src/com/android/inputmethod/latin/Recorrection.java
+++ b/java/src/com/android/inputmethod/deprecated/recorrection/Recorrection.java
@@ -14,11 +14,22 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.deprecated.recorrection;
import com.android.inputmethod.compat.InputConnectionCompatUtils;
+import com.android.inputmethod.compat.SuggestionSpanUtils;
import com.android.inputmethod.deprecated.VoiceProxy;
import com.android.inputmethod.keyboard.KeyboardSwitcher;
+import com.android.inputmethod.latin.AutoCorrection;
+import com.android.inputmethod.latin.CandidateView;
+import com.android.inputmethod.latin.EditingUtils;
+import com.android.inputmethod.latin.LatinIME;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.Settings;
+import com.android.inputmethod.latin.Suggest;
+import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.TextEntryState;
+import com.android.inputmethod.latin.WordComposer;
import android.content.SharedPreferences;
import android.content.res.Resources;
@@ -32,12 +43,13 @@ import java.util.ArrayList;
/**
* Manager of re-correction functionalities
*/
-public class Recorrection {
+public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeListener {
private static final Recorrection sInstance = new Recorrection();
private LatinIME mService;
private boolean mRecorrectionEnabled = false;
- private final ArrayList<WordAlternatives> mWordHistory = new ArrayList<WordAlternatives>();
+ private final ArrayList<RecorrectionSuggestionEntries> mRecorrectionSuggestionsList =
+ new ArrayList<RecorrectionSuggestionEntries>();
public static Recorrection getInstance() {
return sInstance;
@@ -58,20 +70,17 @@ public class Recorrection {
}
private void initInternal(LatinIME context, SharedPreferences prefs) {
- final Resources res = context.getResources();
- // If the option should not be shown, do not read the re-correction preference
- // but always use the default setting defined in the resources.
- if (res.getBoolean(R.bool.config_enable_show_recorrection_option)) {
- mRecorrectionEnabled = prefs.getBoolean(Settings.PREF_RECORRECTION_ENABLED,
- res.getBoolean(R.bool.config_default_recorrection_enabled));
- } else {
- mRecorrectionEnabled = res.getBoolean(R.bool.config_default_recorrection_enabled);
+ if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED) {
+ mRecorrectionEnabled = false;
+ return;
}
+ updateRecorrectionEnabled(context.getResources(), prefs);
mService = context;
+ prefs.registerOnSharedPreferenceChangeListener(this);
}
public void checkRecorrectionOnStart() {
- if (!mRecorrectionEnabled) return;
+ if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED || !mRecorrectionEnabled) return;
final InputConnection ic = mService.getCurrentInputConnection();
if (ic == null) return;
@@ -98,42 +107,42 @@ public class Recorrection {
}
public void updateRecorrectionSelection(KeyboardSwitcher keyboardSwitcher,
- CandidateView candidateView, int candidatesStart, int candidatesEnd, int newSelStart,
- int newSelEnd, int oldSelStart, int lastSelectionStart,
+ CandidateView candidateView, int candidatesStart, int candidatesEnd,
+ int newSelStart, int newSelEnd, int oldSelStart, int lastSelectionStart,
int lastSelectionEnd, boolean hasUncommittedTypedChars) {
- if (mRecorrectionEnabled && mService.isShowingSuggestionsStrip()) {
- // Don't look for corrections if the keyboard is not visible
- if (keyboardSwitcher.isInputViewShown()) {
- // Check if we should go in or out of correction mode.
- if (mService.isSuggestionsRequested()
- && (candidatesStart == candidatesEnd || newSelStart != oldSelStart
- || TextEntryState.isRecorrecting())
- && (newSelStart < newSelEnd - 1 || !hasUncommittedTypedChars)) {
- if (mService.isCursorTouchingWord() || lastSelectionStart < lastSelectionEnd) {
- mService.mHandler.cancelUpdateBigramPredictions();
- mService.mHandler.postUpdateOldSuggestions();
- } else {
- abortRecorrection(false);
- // If showing the "touch again to save" hint, do not replace it. Else,
- // show the bigrams if we are at the end of the text, punctuation otherwise.
- if (candidateView != null
- && !candidateView.isShowingAddToDictionaryHint()) {
- InputConnection ic = mService.getCurrentInputConnection();
- if (null == ic || !TextUtils.isEmpty(ic.getTextAfterCursor(1, 0))) {
- if (!mService.isShowingPunctuationList()) {
- mService.setPunctuationSuggestions();
- }
- } else {
- mService.mHandler.postUpdateBigramPredictions();
- }
+ if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED || !mRecorrectionEnabled) return;
+ if (!mService.isShowingSuggestionsStrip()) return;
+ if (!keyboardSwitcher.isInputViewShown()) return;
+ if (!mService.isSuggestionsRequested()) return;
+ // Don't look for corrections if the keyboard is not visible
+ // Check if we should go in or out of correction mode.
+ if ((candidatesStart == candidatesEnd || newSelStart != oldSelStart || TextEntryState
+ .isRecorrecting())
+ && (newSelStart < newSelEnd - 1 || !hasUncommittedTypedChars)) {
+ if (mService.isCursorTouchingWord() || lastSelectionStart < lastSelectionEnd) {
+ mService.mHandler.cancelUpdateBigramPredictions();
+ mService.mHandler.postUpdateOldSuggestions();
+ } else {
+ abortRecorrection(false);
+ // If showing the "touch again to save" hint, do not replace it. Else,
+ // show the bigrams if we are at the end of the text, punctuation
+ // otherwise.
+ if (candidateView != null && !candidateView.isShowingAddToDictionaryHint()) {
+ InputConnection ic = mService.getCurrentInputConnection();
+ if (null == ic || !TextUtils.isEmpty(ic.getTextAfterCursor(1, 0))) {
+ if (!mService.isShowingPunctuationList()) {
+ mService.setPunctuationSuggestions();
}
+ } else {
+ mService.mHandler.postUpdateBigramPredictions();
}
}
}
}
}
- public void saveWordInHistory(WordComposer word, CharSequence result) {
+ public void saveRecorrectionSuggestion(WordComposer word, CharSequence result) {
+ if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED || !mRecorrectionEnabled) return;
if (word.size() <= 1) {
return;
}
@@ -144,12 +153,13 @@ public class Recorrection {
// Make a copy of the CharSequence, since it is/could be a mutable CharSequence
final String resultCopy = result.toString();
- WordAlternatives entry = new WordAlternatives(resultCopy, new WordComposer(word));
- mWordHistory.add(entry);
+ RecorrectionSuggestionEntries entry = new RecorrectionSuggestionEntries(
+ resultCopy, new WordComposer(word));
+ mRecorrectionSuggestionsList.add(entry);
}
public void clearWordsInHistory() {
- mWordHistory.clear();
+ mRecorrectionSuggestionsList.clear();
}
/**
@@ -160,11 +170,12 @@ public class Recorrection {
*/
public boolean applyTypedAlternatives(WordComposer word, Suggest suggest,
KeyboardSwitcher keyboardSwitcher, EditingUtils.SelectedWord touching) {
+ if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED || !mRecorrectionEnabled) return false;
// If we didn't find a match, search for result in typed word history
WordComposer foundWord = null;
- WordAlternatives alternatives = null;
+ RecorrectionSuggestionEntries alternatives = null;
// Search old suggestions to suggest re-corrected suggestions.
- for (WordAlternatives entry : mWordHistory) {
+ for (RecorrectionSuggestionEntries entry : mRecorrectionSuggestionsList) {
if (TextUtils.equals(entry.getChosenWord(), touching.mWord)) {
foundWord = entry.mWordComposer;
alternatives = entry;
@@ -186,7 +197,7 @@ public class Recorrection {
// Found a match, show suggestions
if (foundWord != null || alternatives != null) {
if (alternatives == null) {
- alternatives = new WordAlternatives(touching.mWord, foundWord);
+ alternatives = new RecorrectionSuggestionEntries(touching.mWord, foundWord);
}
showRecorrections(suggest, keyboardSwitcher, alternatives);
if (foundWord != null) {
@@ -201,17 +212,18 @@ public class Recorrection {
private void showRecorrections(Suggest suggest, KeyboardSwitcher keyboardSwitcher,
- WordAlternatives alternatives) {
- SuggestedWords.Builder builder = alternatives.getAlternatives(suggest, keyboardSwitcher);
+ RecorrectionSuggestionEntries entries) {
+ SuggestedWords.Builder builder = entries.getAlternatives(suggest, keyboardSwitcher);
builder.setTypedWordValid(false).setHasMinimalSuggestion(false);
- mService.showSuggestions(builder.build(), alternatives.getOriginalWord());
+ mService.showSuggestions(builder.build(), entries.getOriginalWord());
}
- public void setRecorrectionSuggestions(VoiceProxy voiceProxy, CandidateView candidateView,
- Suggest suggest, KeyboardSwitcher keyboardSwitcher, WordComposer word,
- boolean hasUncommittedTypedChars, int lastSelectionStart, int lastSelectionEnd,
- String wordSeparators) {
+ public void fetchAndDisplayRecorrectionSuggestions(VoiceProxy voiceProxy,
+ CandidateView candidateView, Suggest suggest, KeyboardSwitcher keyboardSwitcher,
+ WordComposer word, boolean hasUncommittedTypedChars, int lastSelectionStart,
+ int lastSelectionEnd, String wordSeparators) {
if (!InputConnectionCompatUtils.RECORRECTION_SUPPORTED) return;
+ if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED || !mRecorrectionEnabled) return;
voiceProxy.setShowingVoiceSuggestions(false);
if (candidateView != null && candidateView.isShowingAddToDictionaryHint()) {
return;
@@ -237,7 +249,7 @@ public class Recorrection {
ic.endBatchEdit();
} else {
abortRecorrection(true);
- mService.setPunctuationSuggestions(); // Show the punctuation suggestions list
+ mService.updateBigramPredictions();
}
} else {
abortRecorrection(true);
@@ -245,6 +257,7 @@ public class Recorrection {
}
public void abortRecorrection(boolean force) {
+ if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED) return;
if (force || TextEntryState.isRecorrecting()) {
TextEntryState.onAbortRecorrection();
mService.setCandidatesViewShown(mService.isCandidateStripVisible());
@@ -252,4 +265,23 @@ public class Recorrection {
mService.clearSuggestions();
}
}
+
+ public void updateRecorrectionEnabled(Resources res, SharedPreferences prefs) {
+ // If the option should not be shown, do not read the re-correction preference
+ // but always use the default setting defined in the resources.
+ if (res.getBoolean(R.bool.config_enable_show_recorrection_option)) {
+ mRecorrectionEnabled = prefs.getBoolean(Settings.PREF_RECORRECTION_ENABLED,
+ res.getBoolean(R.bool.config_default_recorrection_enabled));
+ } else {
+ mRecorrectionEnabled = res.getBoolean(R.bool.config_default_recorrection_enabled);
+ }
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+ if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED) return;
+ if (key.equals(Settings.PREF_RECORRECTION_ENABLED)) {
+ updateRecorrectionEnabled(mService.getResources(), prefs);
+ }
+ }
}
diff --git a/java/src/com/android/inputmethod/latin/WordAlternatives.java b/java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java
index 0e9914400..5e6c87044 100644
--- a/java/src/com/android/inputmethod/latin/WordAlternatives.java
+++ b/java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java
@@ -14,17 +14,20 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.deprecated.recorrection;
import com.android.inputmethod.keyboard.KeyboardSwitcher;
+import com.android.inputmethod.latin.Suggest;
+import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.WordComposer;
import android.text.TextUtils;
-public class WordAlternatives {
+public class RecorrectionSuggestionEntries {
public final CharSequence mChosenWord;
public final WordComposer mWordComposer;
- public WordAlternatives(CharSequence chosenWord, WordComposer wordComposer) {
+ public RecorrectionSuggestionEntries(CharSequence chosenWord, WordComposer wordComposer) {
mChosenWord = chosenWord;
mWordComposer = wordComposer;
}
@@ -54,6 +57,6 @@ public class WordAlternatives {
private static SuggestedWords.Builder getTypedSuggestions(
Suggest suggest, KeyboardSwitcher keyboardSwitcher, WordComposer word) {
- return suggest.getSuggestedWordBuilder(keyboardSwitcher.getInputView(), word, null);
+ return suggest.getSuggestedWordBuilder(keyboardSwitcher.getKeyboardView(), word, null);
}
-} \ No newline at end of file
+}
diff --git a/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java b/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java
index 0ef73d2d7..3c79cc218 100644
--- a/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java
+++ b/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 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
diff --git a/java/src/com/android/inputmethod/deprecated/voice/Hints.java b/java/src/com/android/inputmethod/deprecated/voice/Hints.java
index 52a4f4e58..06b234381 100644
--- a/java/src/com/android/inputmethod/deprecated/voice/Hints.java
+++ b/java/src/com/android/inputmethod/deprecated/voice/Hints.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 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
diff --git a/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java b/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java
index b57c16f40..dcb826e8f 100644
--- a/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java
+++ b/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 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
diff --git a/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java b/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java
index 7721fe268..855a09a1d 100644
--- a/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java
+++ b/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 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
diff --git a/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java b/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java
index 8cc79de1e..25b314085 100644
--- a/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java
+++ b/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 Google Inc.
+ * 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
diff --git a/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java b/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java
index 7ee0de9c9..2dba01432 100644
--- a/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java
+++ b/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 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
diff --git a/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java b/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java
index 87b943426..22e8207bf 100644
--- a/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java
+++ b/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Google Inc.
+ * Copyright (C) 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
diff --git a/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java b/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java
index a3025f252..8ed279f42 100644
--- a/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java
+++ b/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Google Inc.
+ * Copyright (C) 2008-2009 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
diff --git a/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java b/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java
index 310689cb2..6c5f52ae2 100644
--- a/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java
+++ b/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 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
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 5c59d4441..cb529461a 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -101,6 +101,10 @@ public class Key {
/** Key is enabled and responds on press */
public boolean mEnabled = true;
+ // keyWidth constants
+ private static final int KEYWIDTH_FILL_RIGHT = 0;
+ private static final int KEYWIDTH_FILL_BOTH = -1;
+
private final static int[] KEY_STATE_NORMAL_ON = {
android.R.attr.state_checkable,
android.R.attr.state_checked
@@ -140,12 +144,12 @@ public class Key {
};
/**
- * This constructor is being used only for key in mini popup keyboard.
+ * This constructor is being used only for key in popup mini keyboard.
*/
public Key(Resources res, Keyboard keyboard, CharSequence popupCharacter, int x, int y,
- int width, int edgeFlags) {
+ int width, int height, int edgeFlags) {
mKeyboard = keyboard;
- mHeight = keyboard.getRowHeight() - keyboard.getVerticalGap();
+ mHeight = height - keyboard.getVerticalGap();
mGap = keyboard.getHorizontalGap();
mVisualInsetsLeft = mVisualInsetsRight = 0;
mWidth = width - mGap;
@@ -178,6 +182,7 @@ public class Key {
* @param x the x coordinate of the top-left
* @param y the y coordinate of the top-left
* @param parser the XML parser containing the attributes for this key
+ * @param keyStyles active key styles set
*/
public Key(Resources res, Row row, int x, int y, XmlResourceParser parser,
KeyStyles keyStyles) {
@@ -185,6 +190,7 @@ public class Key {
final TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard);
+ int keyWidth;
try {
mHeight = KeyboardParser.getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_rowHeight,
@@ -192,17 +198,13 @@ public class Key {
mGap = KeyboardParser.getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_horizontalGap,
mKeyboard.getDisplayWidth(), row.mDefaultHorizontalGap);
- mWidth = KeyboardParser.getDimensionOrFraction(keyboardAttr,
+ keyWidth = KeyboardParser.getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_keyWidth,
- mKeyboard.getDisplayWidth(), row.mDefaultWidth) - mGap;
+ mKeyboard.getDisplayWidth(), row.mDefaultWidth);
} finally {
keyboardAttr.recycle();
}
- // Horizontal gap is divided equally to both sides of the key.
- mX = x + mGap / 2;
- mY = y;
-
final TypedArray keyAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard_Key);
try {
@@ -216,6 +218,35 @@ public class Key {
style = keyStyles.getEmptyKeyStyle();
}
+ final int keyboardWidth = mKeyboard.getDisplayWidth();
+ int keyXPos = KeyboardParser.getDimensionOrFraction(keyAttr,
+ R.styleable.Keyboard_Key_keyXPos, keyboardWidth, x);
+ if (keyXPos < 0) {
+ // If keyXPos is negative, the actual x-coordinate will be k + keyXPos.
+ keyXPos += keyboardWidth;
+ if (keyXPos < x) {
+ // keyXPos shouldn't be less than x because drawable area for this key starts
+ // at x. Or, this key will overlaps the adjacent key on its left hand side.
+ keyXPos = x;
+ }
+ }
+ if (keyWidth == KEYWIDTH_FILL_RIGHT) {
+ // If keyWidth is zero, the actual key width will be determined to fill out the
+ // area up to the right edge of the keyboard.
+ keyWidth = keyboardWidth - keyXPos;
+ } else if (keyWidth <= KEYWIDTH_FILL_BOTH) {
+ // If keyWidth is negative, the actual key width will be determined to fill out the
+ // area between the nearest key on the left hand side and the right edge of the
+ // keyboard.
+ keyXPos = x;
+ keyWidth = keyboardWidth - keyXPos;
+ }
+
+ // Horizontal gap is divided equally to both sides of the key.
+ mX = keyXPos + mGap / 2;
+ mY = y;
+ mWidth = keyWidth - mGap;
+
final CharSequence[] popupCharacters = style.getTextArray(keyAttr,
R.styleable.Keyboard_Key_popupCharacters);
if (res.getBoolean(R.bool.config_digit_popup_characters_enabled)) {
@@ -275,7 +306,7 @@ public class Key {
}
private static boolean isDigitPopupCharacter(CharSequence label) {
- return label.length() == 1 && Character.isDigit(label.charAt(0));
+ return label != null && label.length() == 1 && Character.isDigit(label.charAt(0));
}
private static CharSequence[] filterOutDigitPopupCharacters(CharSequence[] popupCharacters) {
diff --git a/java/src/com/android/inputmethod/keyboard/KeyDetector.java b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
index 0b13afecb..7add43a6d 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/KeyStyles.java
index d464c2029..d53df788f 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyStyles.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyStyles.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 492883caf..267abccb3 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -151,16 +151,11 @@ public class Keyboard {
* @param context the application or service context
* @param xmlLayoutResId the resource file that contains the keyboard layout and keys.
* @param id keyboard identifier
+ * @param width keyboard width
*/
- public Keyboard(Context context, int xmlLayoutResId, KeyboardId id) {
- this(context, xmlLayoutResId, id,
- context.getResources().getDisplayMetrics().widthPixels,
- context.getResources().getDisplayMetrics().heightPixels);
- }
- private Keyboard(Context context, int xmlLayoutResId, KeyboardId id, int width,
- int height) {
- Resources res = context.getResources();
+ public Keyboard(Context context, int xmlLayoutResId, KeyboardId id, int width) {
+ final Resources res = context.getResources();
GRID_WIDTH = res.getInteger(R.integer.config_keyboard_grid_width);
GRID_HEIGHT = res.getInteger(R.integer.config_keyboard_grid_height);
GRID_SIZE = GRID_WIDTH * GRID_HEIGHT;
@@ -168,7 +163,8 @@ public class Keyboard {
final int horizontalEdgesPadding = (int)res.getDimension(
R.dimen.keyboard_horizontal_edges_padding);
mDisplayWidth = width - horizontalEdgesPadding * 2;
- mDisplayHeight = height;
+ // TODO: Adjust the height by referring to the height of area available for drawing as well.
+ mDisplayHeight = res.getDisplayMetrics().heightPixels;
mDefaultHorizontalGap = 0;
setKeyWidth(mDisplayWidth / 10);
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
index 098af214e..7e67d6f6b 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index f68b68f1d..7c03ec71e 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -34,35 +34,40 @@ public class KeyboardId {
public static final int MODE_URL = 1;
public static final int MODE_EMAIL = 2;
public static final int MODE_IM = 3;
- public static final int MODE_WEB = 4;
- public static final int MODE_PHONE = 5;
- public static final int MODE_NUMBER = 6;
+ public static final int MODE_PHONE = 4;
+ public static final int MODE_NUMBER = 5;
public final Locale mLocale;
public final int mOrientation;
+ public final int mWidth;
public final int mMode;
public final int mXmlId;
public final int mColorScheme;
+ public final boolean mWebInput;
public final boolean mPasswordInput;
public final boolean mHasSettingsKey;
public final boolean mVoiceKeyEnabled;
public final boolean mHasVoiceKey;
public final int mImeAction;
public final boolean mEnableShiftLock;
+
public final String mXmlName;
+ public final EditorInfo mAttribute;
private final int mHashCode;
public KeyboardId(String xmlName, int xmlId, int colorScheme, Locale locale, int orientation,
- int mode, EditorInfo attribute, boolean hasSettingsKey, boolean voiceKeyEnabled,
- boolean hasVoiceKey, boolean enableShiftLock) {
+ 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;
this.mOrientation = orientation;
+ this.mWidth = width;
this.mMode = mode;
this.mXmlId = xmlId;
this.mColorScheme = colorScheme;
+ this.mWebInput = InputTypeCompatUtils.isWebInputType(inputType);
this.mPasswordInput = InputTypeCompatUtils.isPasswordInputType(inputType)
|| InputTypeCompatUtils.isVisiblePasswordInputType(inputType);
this.mHasSettingsKey = hasSettingsKey;
@@ -73,14 +78,18 @@ public class KeyboardId {
this.mImeAction = imeOptions & (
EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION);
this.mEnableShiftLock = enableShiftLock;
+
this.mXmlName = xmlName;
+ this.mAttribute = attribute;
this.mHashCode = Arrays.hashCode(new Object[] {
locale,
orientation,
+ width,
mode,
xmlId,
colorScheme,
+ mWebInput,
mPasswordInput,
hasSettingsKey,
voiceKeyEnabled,
@@ -90,6 +99,18 @@ 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);
+ }
+
+ 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);
+ }
+
public int getXmlId() {
return mXmlId;
}
@@ -118,9 +139,11 @@ public class KeyboardId {
boolean equals(KeyboardId other) {
return other.mLocale.equals(this.mLocale)
&& other.mOrientation == this.mOrientation
+ && other.mWidth == this.mWidth
&& other.mMode == this.mMode
&& other.mXmlId == this.mXmlId
&& other.mColorScheme == this.mColorScheme
+ && other.mWebInput == this.mWebInput
&& other.mPasswordInput == this.mPasswordInput
&& other.mHasSettingsKey == this.mHasSettingsKey
&& other.mVoiceKeyEnabled == this.mVoiceKeyEnabled
@@ -136,18 +159,19 @@ public class KeyboardId {
@Override
public String toString() {
- return String.format("[%s.xml %s %s %s imeAction=%s %s%s%s%s%s%s]",
+ return String.format("[%s.xml %s %s%d %s %s %s%s%s%s%s%s%s]",
mXmlName,
mLocale,
- (mOrientation == 1 ? "port" : "land"),
+ (mOrientation == 1 ? "port" : "land"), mWidth,
modeName(mMode),
EditorInfoCompatUtils.imeOptionsName(mImeAction),
+ colorSchemeName(mColorScheme),
+ (mWebInput ? " webInput" : ""),
(mPasswordInput ? " passwordInput" : ""),
(mHasSettingsKey ? " hasSettingsKey" : ""),
(mVoiceKeyEnabled ? " voiceKeyEnabled" : ""),
(mHasVoiceKey ? " hasVoiceKey" : ""),
- (mEnableShiftLock ? " enableShiftLock" : ""),
- colorSchemeName(mColorScheme)
+ (mEnableShiftLock ? " enableShiftLock" : "")
);
}
@@ -157,7 +181,6 @@ public class KeyboardId {
case MODE_URL: return "url";
case MODE_EMAIL: return "email";
case MODE_IM: return "im";
- case MODE_WEB: return "web";
case MODE_PHONE: return "phone";
case MODE_NUMBER: return "number";
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
index 69ae7886a..c2db62a1c 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -196,9 +196,20 @@ public class KeyboardParser {
final int keyboardHeight = (int)keyboardAttr.getDimension(
R.styleable.Keyboard_keyboardHeight, displayHeight / 2);
final int maxKeyboardHeight = getDimensionOrFraction(keyboardAttr,
- R.styleable.Keyboard_maxKeyboardHeight, displayHeight, displayHeight / 2);
- // Keyboard height will not exceed maxKeyboardHeight.
- final int height = Math.min(keyboardHeight, maxKeyboardHeight);
+ R.styleable.Keyboard_maxKeyboardHeight, displayHeight, displayHeight / 2);
+ int minKeyboardHeight = getDimensionOrFraction(keyboardAttr,
+ R.styleable.Keyboard_minKeyboardHeight, displayHeight, displayHeight / 2);
+ if (minKeyboardHeight < 0) {
+ // Specified fraction was negative, so it should be calculated against display
+ // width.
+ final int displayWidth = keyboard.getDisplayWidth();
+ minKeyboardHeight = -getDimensionOrFraction(keyboardAttr,
+ R.styleable.Keyboard_minKeyboardHeight, displayWidth, displayWidth / 2);
+ }
+ // Keyboard height will not exceed maxKeyboardHeight and will not be less than
+ // minKeyboardHeight.
+ final int height = Math.max(
+ Math.min(keyboardHeight, maxKeyboardHeight), minKeyboardHeight);
final int width = keyboard.getDisplayWidth();
keyboard.setKeyboardHeight(height);
@@ -269,7 +280,7 @@ public class KeyboardParser {
if (TAG_KEY.equals(tag)) {
parseKey(parser, row, keys);
} else if (TAG_SPACER.equals(tag)) {
- parseSpacer(parser, keys);
+ parseSpacer(parser, row, keys);
} else if (TAG_INCLUDE.equals(tag)) {
parseIncludeRowContent(parser, row, keys);
} else if (TAG_SWITCH.equals(tag)) {
@@ -316,19 +327,32 @@ public class KeyboardParser {
}
}
- private void parseSpacer(XmlResourceParser parser, List<Key> keys)
+ private void parseSpacer(XmlResourceParser parser, Row row, List<Key> keys)
throws XmlPullParserException, IOException {
if (keys == null) {
checkEndTag(TAG_SPACER, parser);
} else {
if (DEBUG) Log.d(TAG, String.format("<%s />", TAG_SPACER));
- final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser),
+ final TypedArray keyboardAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard);
- final int gap = getDimensionOrFraction(a, R.styleable.Keyboard_horizontalGap,
- mKeyboard.getDisplayWidth(), 0);
- a.recycle();
+ if (keyboardAttr.hasValue(R.styleable.Keyboard_horizontalGap))
+ throw new IllegalAttribute(parser, "horizontalGap");
+ final int defaultWidth = (row != null) ? row.mDefaultWidth : 0;
+ final int keyWidth = getDimensionOrFraction(keyboardAttr, R.styleable.Keyboard_keyWidth,
+ mKeyboard.getDisplayWidth(), defaultWidth);
+ keyboardAttr.recycle();
+
+ final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
+ R.styleable.Keyboard_Key);
+ int keyXPos = KeyboardParser.getDimensionOrFraction(keyAttr,
+ R.styleable.Keyboard_Key_keyXPos, mKeyboard.getDisplayWidth(), mCurrentX);
+ if (keyXPos < 0) {
+ // If keyXPos is negative, the actual x-coordinate will be display_width + keyXPos.
+ keyXPos += mKeyboard.getDisplayWidth();
+ }
+
checkEndTag(TAG_SPACER, parser);
- setSpacer(gap);
+ setSpacer(keyXPos, keyWidth);
}
}
@@ -443,8 +467,10 @@ public class KeyboardParser {
final TypedArray viewAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.KeyboardView);
try {
- final boolean modeMatched = matchInteger(a,
- R.styleable.Keyboard_Case_mode, id.mMode);
+ final boolean modeMatched = matchTypedValue(a,
+ R.styleable.Keyboard_Case_mode, id.mMode, KeyboardId.modeName(id.mMode));
+ final boolean webInputMatched = matchBoolean(a,
+ R.styleable.Keyboard_Case_webInput, id.mWebInput);
final boolean passwordInputMatched = matchBoolean(a,
R.styleable.Keyboard_Case_passwordInput, id.mPasswordInput);
final boolean settingsKeyMatched = matchBoolean(a,
@@ -461,26 +487,30 @@ public class KeyboardParser {
// this attribute with id.mImeOptions as integer value is enough for our purpose.
final boolean imeActionMatched = matchInteger(a,
R.styleable.Keyboard_Case_imeAction, id.mImeAction);
+ final boolean localeCodeMatched = matchString(a,
+ R.styleable.Keyboard_Case_localeCode, id.mLocale.toString());
final boolean languageCodeMatched = matchString(a,
R.styleable.Keyboard_Case_languageCode, id.mLocale.getLanguage());
final boolean countryCodeMatched = matchString(a,
R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry());
- final boolean selected = modeMatched && passwordInputMatched && settingsKeyMatched
- && voiceEnabledMatched && voiceKeyMatched && colorSchemeMatched
- && imeActionMatched && languageCodeMatched && countryCodeMatched;
+ final boolean selected = modeMatched && webInputMatched && passwordInputMatched
+ && settingsKeyMatched && voiceEnabledMatched && voiceKeyMatched
+ && colorSchemeMatched && imeActionMatched && localeCodeMatched
+ && languageCodeMatched && countryCodeMatched;
- if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s%s%s%s> %s", TAG_CASE,
- textAttr(KeyboardId.modeName(
- a.getInt(R.styleable.Keyboard_Case_mode, -1)), "mode"),
+ if (DEBUG) Log.d(TAG, String.format("<%s%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)), "colorSchemeName"),
+ R.styleable.KeyboardView_colorScheme, -1)), "colorScheme"),
+ booleanAttr(a, R.styleable.Keyboard_Case_webInput, "webInput"),
booleanAttr(a, R.styleable.Keyboard_Case_passwordInput, "passwordInput"),
booleanAttr(a, R.styleable.Keyboard_Case_hasSettingsKey, "hasSettingsKey"),
booleanAttr(a, R.styleable.Keyboard_Case_voiceKeyEnabled, "voiceKeyEnabled"),
booleanAttr(a, R.styleable.Keyboard_Case_hasVoiceKey, "hasVoiceKey"),
textAttr(EditorInfoCompatUtils.imeOptionsName(
a.getInt(R.styleable.Keyboard_Case_imeAction, -1)), "imeAction"),
+ textAttr(a.getString(R.styleable.Keyboard_Case_localeCode), "localeCode"),
textAttr(a.getString(R.styleable.Keyboard_Case_languageCode), "languageCode"),
textAttr(a.getString(R.styleable.Keyboard_Case_countryCode), "countryCode"),
Boolean.toString(selected)));
@@ -507,7 +537,30 @@ public class KeyboardParser {
private static boolean matchString(TypedArray a, int index, String value) {
// If <case> does not have "index" attribute, that means this <case> is wild-card for the
// attribute.
- return !a.hasValue(index) || a.getString(index).equals(value);
+ return !a.hasValue(index) || stringArrayContains(a.getString(index).split("\\|"), value);
+ }
+
+ private static boolean matchTypedValue(TypedArray a, int index, int intValue, String strValue) {
+ // If <case> does not have "index" attribute, that means this <case> is wild-card for the
+ // attribute.
+ final TypedValue v = a.peekValue(index);
+ if (v == null)
+ return true;
+
+ if (isIntegerValue(v)) {
+ return intValue == a.getInt(index, 0);
+ } else if (isStringValue(v)) {
+ return stringArrayContains(a.getString(index).split("\\|"), strValue);
+ }
+ return false;
+ }
+
+ private static boolean stringArrayContains(String[] array, String value) {
+ for (final String elem : array) {
+ if (elem.equals(value))
+ return true;
+ }
+ return false;
}
private boolean parseDefault(XmlResourceParser parser, Row row, List<Key> keys)
@@ -551,14 +604,14 @@ public class KeyboardParser {
private void startRow(Row row) {
mCurrentX = 0;
- setSpacer(mHorizontalEdgesPadding);
+ setSpacer(mCurrentX, mHorizontalEdgesPadding);
mCurrentRow = row;
}
private void endRow() {
if (mCurrentRow == null)
throw new InflateException("orphant end row tag");
- setSpacer(mHorizontalEdgesPadding);
+ setSpacer(mCurrentX, mHorizontalEdgesPadding);
if (mCurrentX > mMaxRowWidth)
mMaxRowWidth = mCurrentX;
mCurrentY += mCurrentRow.mDefaultHeight;
@@ -566,7 +619,7 @@ public class KeyboardParser {
}
private void endKey(Key key) {
- mCurrentX += key.mGap + key.mWidth;
+ mCurrentX = key.mX - key.mGap / 2 + key.mWidth + key.mGap;
}
private void endKeyboard(int defaultVerticalGap) {
@@ -574,23 +627,42 @@ public class KeyboardParser {
mTotalHeight = mCurrentY - defaultVerticalGap;
}
- private void setSpacer(int gap) {
- mCurrentX += gap;
+ private void setSpacer(int keyXPos, int width) {
+ mCurrentX = keyXPos + width;
}
public static int getDimensionOrFraction(TypedArray a, int index, int base, int defValue) {
final TypedValue value = a.peekValue(index);
if (value == null)
return defValue;
- if (value.type == TypedValue.TYPE_DIMENSION) {
- return a.getDimensionPixelOffset(index, defValue);
- } else if (value.type == TypedValue.TYPE_FRACTION) {
+ if (isFractionValue(value)) {
// Round it to avoid values like 47.9999 from getting truncated
return Math.round(a.getFraction(index, base, base, defValue));
+ } else if (isDimensionValue(value)) {
+ return a.getDimensionPixelOffset(index, defValue);
+ } else if (isIntegerValue(value)) {
+ // For enum value.
+ return a.getInt(index, defValue);
}
return defValue;
}
+ private static boolean isFractionValue(TypedValue v) {
+ return v.type == TypedValue.TYPE_FRACTION;
+ }
+
+ private static boolean isDimensionValue(TypedValue v) {
+ return v.type == TypedValue.TYPE_DIMENSION;
+ }
+
+ private static boolean isIntegerValue(TypedValue v) {
+ return v.type >= TypedValue.TYPE_FIRST_INT && v.type <= TypedValue.TYPE_LAST_INT;
+ }
+
+ private static boolean isStringValue(TypedValue v) {
+ return v.type == TypedValue.TYPE_STRING;
+ }
+
@SuppressWarnings("serial")
public static class ParseException extends InflateException {
public ParseException(String msg, XmlResourceParser parser) {
@@ -613,6 +685,13 @@ public class KeyboardParser {
}
@SuppressWarnings("serial")
+ private static class IllegalAttribute extends ParseException {
+ public IllegalAttribute(XmlResourceParser parser, String attribute) {
+ super("Tag " + parser.getName() + " has illegal attribute " + attribute, parser);
+ }
+ }
+
+ @SuppressWarnings("serial")
private static class NonEmptyTag extends ParseException {
public NonEmptyTag(String tag, XmlResourceParser parser) {
super(tag + " must be empty tag", parser);
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java b/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java
index d5412791d..e015b5158 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 333fbc779..2512118d4 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -16,6 +16,16 @@
package com.android.inputmethod.keyboard;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.util.Log;
+import android.view.ContextThemeWrapper;
+import android.view.InflateException;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+
import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.LatinImeLogger;
@@ -24,37 +34,30 @@ import com.android.inputmethod.latin.Settings;
import com.android.inputmethod.latin.SubtypeSwitcher;
import com.android.inputmethod.latin.Utils;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.res.Resources;
-import android.util.Log;
-import android.view.InflateException;
-import android.view.inputmethod.EditorInfo;
-
import java.lang.ref.SoftReference;
import java.util.HashMap;
import java.util.Locale;
public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceChangeListener {
- private static final String TAG = "KeyboardSwitcher";
- private static final boolean DEBUG = false;
+ private static final String TAG = KeyboardSwitcher.class.getSimpleName();
+ private static final boolean DEBUG_CACHE = LatinImeLogger.sDBG;
public static final boolean DEBUG_STATE = false;
private static String sConfigDefaultKeyboardThemeId;
public static final String PREF_KEYBOARD_LAYOUT = "pref_keyboard_layout_20100902";
private static final int[] KEYBOARD_THEMES = {
- R.layout.input_basic,
- R.layout.input_basic_highcontrast,
- R.layout.input_stone_normal,
- R.layout.input_stone_bold,
- R.layout.input_gingerbread,
- R.layout.input_honeycomb,
+ R.style.KeyboardTheme,
+ R.style.KeyboardTheme_HighContrast,
+ R.style.KeyboardTheme_Stone,
+ R.style.KeyboardTheme_Stone_Bold,
+ R.style.KeyboardTheme_Gingerbread,
+ R.style.KeyboardTheme_Honeycomb,
};
private SubtypeSwitcher mSubtypeSwitcher;
private SharedPreferences mPrefs;
- private LatinKeyboardView mInputView;
+ private LatinKeyboardView mKeyboardView;
private LatinIME mInputMethodService;
// TODO: Combine these key state objects with auto mode switch state.
@@ -98,7 +101,8 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
// Default is SETTINGS_KEY_MODE_AUTO.
private static final int DEFAULT_SETTINGS_KEY_MODE = SETTINGS_KEY_MODE_AUTO;
- private int mLayoutId;
+ private int mThemeIndex;
+ private int mKeyboardWidth;
private static final KeyboardSwitcher sInstance = new KeyboardSwitcher();
@@ -118,11 +122,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
try {
sConfigDefaultKeyboardThemeId = ims.getString(
R.string.config_default_keyboard_theme_id);
- sInstance.mLayoutId = Integer.valueOf(
+ sInstance.mThemeIndex = Integer.valueOf(
prefs.getString(PREF_KEYBOARD_LAYOUT, sConfigDefaultKeyboardThemeId));
} catch (NumberFormatException e) {
sConfigDefaultKeyboardThemeId = "0";
- sInstance.mLayoutId = 0;
+ sInstance.mThemeIndex = 0;
}
prefs.registerOnSharedPreferenceChangeListener(sInstance);
}
@@ -142,7 +146,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
private void loadKeyboardInternal(EditorInfo attribute, boolean voiceButtonEnabled,
boolean voiceButtonOnPrimary, boolean isSymbols) {
- if (mInputView == null) return;
+ if (mKeyboardView == null) return;
mAttribute = attribute;
mVoiceKeyEnabled = voiceButtonEnabled;
@@ -151,15 +155,39 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
// Update the settings key state because number of enabled IMEs could have been changed
mSettingsKeyEnabledInSettings = getSettingsKeyMode(mPrefs, mInputMethodService);
final KeyboardId id = getKeyboardId(attribute, isSymbols);
- makeSymbolsKeyboardIds(id.mMode, attribute);
- mCurrentId = id;
- mInputView.setKeyPreviewEnabled(mInputMethodService.getPopupOn());
+
+ // Note: This comment is only applied for phone number keyboard layout.
+ // On non-xlarge device, "@integer/key_switch_alpha_symbol" key code is used to switch
+ // between "phone keyboard" and "phone symbols keyboard". But on xlarge device,
+ // "@integer/key_shift" key code is used for that purpose in order to properly display
+ // "more" and "locked more" key labels. To achieve these behavior, we should initialize
+ // mSymbolsId and mSymbolsShiftedId to "phone keyboard" and "phone symbols keyboard"
+ // respectively here for xlarge device's layout switching.
+ mSymbolsId = makeSiblingKeyboardId(id, R.xml.kbd_symbols, R.xml.kbd_phone);
+ mSymbolsShiftedId = makeSiblingKeyboardId(
+ id, R.xml.kbd_symbols_shift, R.xml.kbd_phone_symbols);
+
setKeyboard(getKeyboard(id));
}
+ public void onSizeChanged() {
+ final int width = mInputMethodService.getWindow().getWindow().getDecorView().getWidth();
+ if (width == 0)
+ return;
+ mKeyboardWidth = width;
+ // Set keyboard with new width.
+ final KeyboardId newId = mCurrentId.cloneWithNewGeometry(width);
+ setKeyboard(getKeyboard(newId));
+ }
+
private void setKeyboard(final Keyboard newKeyboard) {
- final Keyboard oldKeyboard = mInputView.getKeyboard();
- mInputView.setKeyboard(newKeyboard);
+ final Keyboard oldKeyboard = mKeyboardView.getKeyboard();
+ mKeyboardView.setKeyboard(newKeyboard);
+ mCurrentId = newKeyboard.mId;
+ final Resources res = mInputMethodService.getResources();
+ mKeyboardView.setKeyPreviewPopupEnabled(
+ Settings.Values.isKeyPreviewPopupEnabled(mPrefs, res),
+ Settings.Values.getKeyPreviewPopupDismissDelay(mPrefs, res));
final boolean localeChanged = (oldKeyboard == null)
|| !newKeyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale);
mInputMethodService.mHandler.startDisplayLanguageOnSpacebar(localeChanged);
@@ -173,19 +201,19 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
final Locale savedLocale = Utils.setSystemLocale(res,
mSubtypeSwitcher.getInputLocale());
- keyboard = new LatinKeyboard(mInputMethodService, id);
+ keyboard = new LatinKeyboard(mInputMethodService, id, id.mWidth);
if (id.mEnableShiftLock) {
keyboard.enableShiftLock();
}
mKeyboardCache.put(id, new SoftReference<LatinKeyboard>(keyboard));
- if (DEBUG)
+ if (DEBUG_CACHE)
Log.d(TAG, "keyboard cache size=" + mKeyboardCache.size() + ": "
+ ((ref == null) ? "LOAD" : "GCed") + " id=" + id);
Utils.setSystemLocale(res, savedLocale);
- } else if (DEBUG) {
+ } else if (DEBUG_CACHE) {
Log.d(TAG, "keyboard cache size=" + mKeyboardCache.size() + ": HIT id=" + id);
}
@@ -242,33 +270,19 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
final boolean hasSettingsKey = hasSettingsKey(attribute);
final Resources res = mInputMethodService.getResources();
final int orientation = res.getConfiguration().orientation;
+ if (mKeyboardWidth == 0)
+ mKeyboardWidth = res.getDisplayMetrics().widthPixels;
final Locale locale = mSubtypeSwitcher.getInputLocale();
return new KeyboardId(
- res.getResourceEntryName(xmlId), xmlId, charColorId, locale, orientation, mode,
- attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, enableShiftLock);
+ res.getResourceEntryName(xmlId), xmlId, charColorId, locale, orientation,
+ mKeyboardWidth, mode, attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey,
+ enableShiftLock);
}
- private void makeSymbolsKeyboardIds(final int mode, EditorInfo attribute) {
- final Locale locale = mSubtypeSwitcher.getInputLocale();
- final Resources res = mInputMethodService.getResources();
- final int orientation = res.getConfiguration().orientation;
- final int colorScheme = getColorScheme();
- final boolean hasVoiceKey = mVoiceKeyEnabled && !mVoiceButtonOnPrimary;
- final boolean hasSettingsKey = hasSettingsKey(attribute);
- // Note: This comment is only applied for phone number keyboard layout.
- // On non-xlarge device, "@integer/key_switch_alpha_symbol" key code is used to switch
- // between "phone keyboard" and "phone symbols keyboard". But on xlarge device,
- // "@integer/key_shift" key code is used for that purpose in order to properly display
- // "more" and "locked more" key labels. To achieve these behavior, we should initialize
- // mSymbolsId and mSymbolsShiftedId to "phone keyboard" and "phone symbols keyboard"
- // respectively here for xlarge device's layout switching.
- int xmlId = mode == KeyboardId.MODE_PHONE ? R.xml.kbd_phone : R.xml.kbd_symbols;
- final String xmlName = res.getResourceEntryName(xmlId);
- mSymbolsId = new KeyboardId(xmlName, xmlId, colorScheme, locale, orientation, mode,
- attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, false);
- xmlId = mode == KeyboardId.MODE_PHONE ? R.xml.kbd_phone_symbols : R.xml.kbd_symbols_shift;
- mSymbolsShiftedId = new KeyboardId(xmlName, xmlId, colorScheme, locale, orientation, mode,
- attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, false);
+ private KeyboardId makeSiblingKeyboardId(KeyboardId base, int alphabet, int phone) {
+ final int xmlId = base.mMode == KeyboardId.MODE_PHONE ? phone : alphabet;
+ final String xmlName = mInputMethodService.getResources().getResourceEntryName(xmlId);
+ return base.cloneWithNewLayout(xmlName, xmlId);
}
public int getKeyboardMode() {
@@ -280,18 +294,18 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
}
public boolean isInputViewShown() {
- return mInputView != null && mInputView.isShown();
+ return mKeyboardView != null && mKeyboardView.isShown();
}
public boolean isKeyboardAvailable() {
- if (mInputView != null)
- return mInputView.getKeyboard() != null;
+ if (mKeyboardView != null)
+ return mKeyboardView.getKeyboard() != null;
return false;
}
public LatinKeyboard getLatinKeyboard() {
- if (mInputView != null) {
- final Keyboard keyboard = mInputView.getKeyboard();
+ if (mKeyboardView != null) {
+ final Keyboard keyboard = mKeyboardView.getKeyboard();
if (keyboard instanceof LatinKeyboard)
return (LatinKeyboard)keyboard;
}
@@ -344,7 +358,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
latinKeyboard.setShiftLocked(false);
}
if (latinKeyboard.setShifted(shifted)) {
- mInputView.invalidateAllKeys();
+ mKeyboardView.invalidateAllKeys();
}
}
}
@@ -352,7 +366,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
private void setShiftLocked(boolean shiftLocked) {
LatinKeyboard latinKeyboard = getLatinKeyboard();
if (latinKeyboard != null && latinKeyboard.setShiftLocked(shiftLocked)) {
- mInputView.invalidateAllKeys();
+ mKeyboardView.invalidateAllKeys();
}
}
@@ -394,7 +408,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
LatinKeyboard latinKeyboard = getLatinKeyboard();
if (latinKeyboard != null) {
latinKeyboard.setAutomaticTemporaryUpperCase();
- mInputView.invalidateAllKeys();
+ mKeyboardView.invalidateAllKeys();
}
}
@@ -489,7 +503,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
// To be able to turn off caps lock by "double tap" on shift key, we should ignore
// the second tap of the "double tap" from now for a while because we just have
// already turned off caps lock above.
- mInputView.startIgnoringDoubleTap();
+ mKeyboardView.startIgnoringDoubleTap();
} else if (isShiftedOrShiftLocked() && shiftKeyState.isPressingOnShifted()
&& !withSliding) {
// Shift has been pressed without chording while shifted state.
@@ -559,14 +573,12 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
return;
final LatinKeyboard keyboard;
if (mCurrentId.equals(mSymbolsId) || !mCurrentId.equals(mSymbolsShiftedId)) {
- mCurrentId = mSymbolsShiftedId;
- keyboard = getKeyboard(mCurrentId);
+ keyboard = getKeyboard(mSymbolsShiftedId);
// Symbol shifted keyboard has an ALT key that has a caps lock style indicator. To
// enable the indicator, we need to call setShiftLocked(true).
keyboard.setShiftLocked(true);
} else {
- mCurrentId = mSymbolsId;
- keyboard = getKeyboard(mCurrentId);
+ keyboard = getKeyboard(mSymbolsId);
// Symbol keyboard has an ALT key that has a caps lock style indicator. To disable the
// indicator, we need to call setShiftLocked(false).
keyboard.setShiftLocked(false);
@@ -580,11 +592,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
}
public boolean isVibrateAndSoundFeedbackRequired() {
- return mInputView == null || !mInputView.isInSlidingKeyInput();
+ return mKeyboardView == null || !mKeyboardView.isInSlidingKeyInput();
}
private int getPointerCount() {
- return mInputView == null ? 0 : mInputView.getPointerCount();
+ return mKeyboardView == null ? 0 : mKeyboardView.getPointerCount();
}
private void toggleKeyboardMode() {
@@ -597,7 +609,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
}
public boolean hasDistinctMultitouch() {
- return mInputView != null && mInputView.hasDistinctMultitouch();
+ return mKeyboardView != null && mKeyboardView.hasDistinctMultitouch();
}
private static boolean isSpaceCharacter(int c) {
@@ -694,53 +706,58 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
}
}
- public LatinKeyboardView getInputView() {
- return mInputView;
+ public LatinKeyboardView getKeyboardView() {
+ return mKeyboardView;
}
- public LatinKeyboardView onCreateInputView() {
- createInputViewInternal(mLayoutId, true);
- return mInputView;
+ public View onCreateInputView() {
+ return createInputView(mThemeIndex, true);
}
- private void createInputViewInternal(int newLayout, boolean forceReset) {
- int layoutId = newLayout;
- if (mLayoutId != layoutId || mInputView == null || forceReset) {
- if (mInputView != null) {
- mInputView.closing();
- }
- if (KEYBOARD_THEMES.length <= layoutId) {
- layoutId = Integer.valueOf(sConfigDefaultKeyboardThemeId);
- }
+ // Instance variable only for {@link #createInputView(int, boolean)}.
+ private View mCurrentInputView;
- Utils.GCUtils.getInstance().reset();
- boolean tryGC = true;
- for (int i = 0; i < Utils.GCUtils.GC_TRY_LOOP_MAX && tryGC; ++i) {
- try {
- mInputView = (LatinKeyboardView) mInputMethodService.getLayoutInflater(
- ).inflate(KEYBOARD_THEMES[layoutId], null);
- tryGC = false;
- } catch (OutOfMemoryError e) {
- Log.w(TAG, "load keyboard failed: " + e);
- tryGC = Utils.GCUtils.getInstance().tryGCOrWait(
- mLayoutId + "," + layoutId, e);
- } catch (InflateException e) {
- Log.w(TAG, "load keyboard failed: " + e);
- tryGC = Utils.GCUtils.getInstance().tryGCOrWait(
- mLayoutId + "," + layoutId, e);
- }
+ private View createInputView(final int newThemeIndex, final boolean forceRecreate) {
+ if (mCurrentInputView != null && mThemeIndex == newThemeIndex && !forceRecreate)
+ return mCurrentInputView;
+
+ if (mKeyboardView != null) {
+ mKeyboardView.closing();
+ }
+ final int themeIndex = (newThemeIndex < KEYBOARD_THEMES.length) ? newThemeIndex
+ : Integer.valueOf(sConfigDefaultKeyboardThemeId);
+
+ Utils.GCUtils.getInstance().reset();
+ boolean tryGC = true;
+ for (int i = 0; i < Utils.GCUtils.GC_TRY_LOOP_MAX && tryGC; ++i) {
+ try {
+ final Context themeContext = new ContextThemeWrapper(mInputMethodService,
+ KEYBOARD_THEMES[themeIndex]);
+ mCurrentInputView = LayoutInflater.from(themeContext).inflate(
+ R.layout.input_view, null);
+ tryGC = false;
+ } catch (OutOfMemoryError e) {
+ Log.w(TAG, "load keyboard failed: " + e);
+ tryGC = Utils.GCUtils.getInstance().tryGCOrWait(mThemeIndex + "," + themeIndex, e);
+ } catch (InflateException e) {
+ Log.w(TAG, "load keyboard failed: " + e);
+ tryGC = Utils.GCUtils.getInstance().tryGCOrWait(mThemeIndex + "," + themeIndex, e);
}
- mInputView.setOnKeyboardActionListener(mInputMethodService);
- mLayoutId = layoutId;
}
+
+ mKeyboardView = (LatinKeyboardView) mCurrentInputView.findViewById(
+ R.id.latin_keyboard_view);
+ mKeyboardView.setOnKeyboardActionListener(mInputMethodService);
+ mThemeIndex = themeIndex;
+ return mCurrentInputView;
}
- private void postSetInputView() {
+ private void postSetInputView(final View newInputView) {
mInputMethodService.mHandler.post(new Runnable() {
@Override
public void run() {
- if (mInputView != null) {
- mInputMethodService.setInputView(mInputView);
+ if (newInputView != null) {
+ mInputMethodService.setInputView(newInputView);
}
mInputMethodService.updateInputViewShown();
}
@@ -752,24 +769,22 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
if (PREF_KEYBOARD_LAYOUT.equals(key)) {
final int layoutId = Integer.valueOf(
sharedPreferences.getString(key, sConfigDefaultKeyboardThemeId));
- createInputViewInternal(layoutId, false);
- postSetInputView();
+ postSetInputView(createInputView(layoutId, false));
} else if (Settings.PREF_SETTINGS_KEY.equals(key)) {
mSettingsKeyEnabledInSettings = getSettingsKeyMode(sharedPreferences,
mInputMethodService);
- createInputViewInternal(mLayoutId, true);
- postSetInputView();
+ postSetInputView(createInputView(mThemeIndex, true));
}
}
private int getColorScheme() {
- return (mInputView != null)
- ? mInputView.getColorScheme() : KeyboardView.COLOR_SCHEME_WHITE;
+ return (mKeyboardView != null)
+ ? mKeyboardView.getColorScheme() : KeyboardView.COLOR_SCHEME_WHITE;
}
public void onAutoCorrectionStateChanged(boolean isAutoCorrection) {
if (isAutoCorrection != mIsAutoCorrectionActive) {
- LatinKeyboardView keyboardView = getInputView();
+ LatinKeyboardView keyboardView = getKeyboardView();
mIsAutoCorrectionActive = isAutoCorrection;
keyboardView.invalidateKey(((LatinKeyboard) keyboardView.getKeyboard())
.onAutoCorrectionStateChanged(isAutoCorrection));
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index c551ed49f..f8bce40b1 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -58,14 +58,22 @@ import java.util.WeakHashMap;
* A view that renders a virtual {@link Keyboard}. It handles rendering of keys and detecting key
* 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
+ * @attr ref R.styleable#KeyboardView_keyLetterStyle
* @attr ref R.styleable#KeyboardView_keyPreviewLayout
* @attr ref R.styleable#KeyboardView_keyPreviewOffset
- * @attr ref R.styleable#KeyboardView_labelTextSize
- * @attr ref R.styleable#KeyboardView_keyTextSize
+ * @attr ref R.styleable#KeyboardView_keyPreviewHeight
* @attr ref R.styleable#KeyboardView_keyTextColor
+ * @attr ref R.styleable#KeyboardView_keyTextColorDisabled
+ * @attr ref R.styleable#KeyboardView_labelTextRatio
* @attr ref R.styleable#KeyboardView_verticalCorrection
* @attr ref R.styleable#KeyboardView_popupLayout
+ * @attr ref R.styleable#KeyboardView_shadowColor
+ * @attr ref R.styleable#KeyboardView_shadowRadius
*/
public class KeyboardView extends View implements PointerTracker.UIProxy {
private static final String TAG = KeyboardView.class.getSimpleName();
@@ -86,33 +94,36 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
private static final int HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL = -1;
// XML attribute
- private int mKeyLetterSize;
- private int mKeyTextColor;
- private int mKeyTextColorDisabled;
- private Typeface mKeyLetterStyle = Typeface.DEFAULT;
- private int mLabelTextSize;
- private int mColorScheme = COLOR_SCHEME_WHITE;
- private int mShadowColor;
- private float mShadowRadius;
- private Drawable mKeyBackground;
- private float mBackgroundDimAmount;
- private float mKeyHysteresisDistance;
- private float mVerticalCorrection;
- private int mPreviewOffset;
- private int mPreviewHeight;
- private int mPopupLayout;
+ private final float mKeyLetterRatio;
+ private final int mKeyTextColor;
+ private final int mKeyTextColorDisabled;
+ private final Typeface mKeyLetterStyle;
+ private final float mLabelTextRatio;
+ private final int mColorScheme;
+ private final int mShadowColor;
+ private final float mShadowRadius;
+ private final Drawable mKeyBackground;
+ private final float mBackgroundDimAmount;
+ private final float mKeyHysteresisDistance;
+ private final float mVerticalCorrection;
+ private final int mPreviewOffset;
+ private final int mPreviewHeight;
+ private final int mPopupLayout;
// Main keyboard
private Keyboard mKeyboard;
+ private int mKeyLetterSize;
+ private int mLabelTextSize;
// Key preview
private boolean mInForeground;
private TextView mPreviewText;
- private int mPreviewTextSizeLarge;
- private boolean mShowKeyPreview = true;
- private int mKeyPreviewDisplayedY;
+ private float mPreviewTextRatio;
+ private int mPreviewTextSize;
+ private boolean mShowKeyPreviewPopup = true;
+ private int mKeyPreviewPopupDisplayedY = -1;
private final int mDelayBeforePreview;
- private final int mDelayAfterPreview;
+ private int mDelayAfterPreview;
private ViewGroup mPreviewPlacer;
private final int[] mCoordinates = new int[2];
@@ -300,74 +311,36 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
final TypedArray a = context.obtainStyledAttributes(
attrs, R.styleable.KeyboardView, defStyle, R.style.KeyboardView);
- int previewLayout = 0;
- int keyTextSize = 0;
- int n = a.getIndexCount();
-
- for (int i = 0; i < n; i++) {
- int attr = a.getIndex(i);
-
- switch (attr) {
- case R.styleable.KeyboardView_keyBackground:
- mKeyBackground = a.getDrawable(attr);
- break;
- case R.styleable.KeyboardView_keyHysteresisDistance:
- mKeyHysteresisDistance = a.getDimensionPixelOffset(attr, 0);
- break;
- case R.styleable.KeyboardView_verticalCorrection:
- mVerticalCorrection = a.getDimensionPixelOffset(attr, 0);
- break;
- case R.styleable.KeyboardView_keyPreviewLayout:
- previewLayout = a.getResourceId(attr, 0);
- break;
- case R.styleable.KeyboardView_keyPreviewOffset:
- mPreviewOffset = a.getDimensionPixelOffset(attr, 0);
- break;
- case R.styleable.KeyboardView_keyPreviewHeight:
- mPreviewHeight = a.getDimensionPixelSize(attr, 80);
- break;
- case R.styleable.KeyboardView_keyLetterSize:
- mKeyLetterSize = a.getDimensionPixelSize(attr, 18);
- break;
- case R.styleable.KeyboardView_keyTextColor:
- mKeyTextColor = a.getColor(attr, 0xFF000000);
- break;
- case R.styleable.KeyboardView_keyTextColorDisabled:
- mKeyTextColorDisabled = a.getColor(attr, 0xFF000000);
- break;
- case R.styleable.KeyboardView_labelTextSize:
- mLabelTextSize = a.getDimensionPixelSize(attr, 14);
- break;
- case R.styleable.KeyboardView_popupLayout:
- mPopupLayout = a.getResourceId(attr, 0);
- break;
- case R.styleable.KeyboardView_shadowColor:
- mShadowColor = a.getColor(attr, 0);
- break;
- case R.styleable.KeyboardView_shadowRadius:
- mShadowRadius = a.getFloat(attr, 0f);
- break;
- // TODO: Use Theme (android.R.styleable.Theme_backgroundDimAmount)
- case R.styleable.KeyboardView_backgroundDimAmount:
- mBackgroundDimAmount = a.getFloat(attr, 0.5f);
- break;
- case R.styleable.KeyboardView_keyLetterStyle:
- mKeyLetterStyle = Typeface.defaultFromStyle(a.getInt(attr, Typeface.NORMAL));
- break;
- case R.styleable.KeyboardView_colorScheme:
- mColorScheme = a.getInt(attr, COLOR_SCHEME_WHITE);
- break;
- }
- }
+ mKeyBackground = a.getDrawable(R.styleable.KeyboardView_keyBackground);
+ mKeyHysteresisDistance = a.getDimensionPixelOffset(
+ R.styleable.KeyboardView_keyHysteresisDistance, 0);
+ mVerticalCorrection = a.getDimensionPixelOffset(
+ R.styleable.KeyboardView_verticalCorrection, 0);
+ final int previewLayout = a.getResourceId(R.styleable.KeyboardView_keyPreviewLayout, 0);
+ mPreviewOffset = a.getDimensionPixelOffset(R.styleable.KeyboardView_keyPreviewOffset, 0);
+ mPreviewHeight = a.getDimensionPixelSize(R.styleable.KeyboardView_keyPreviewHeight, 80);
+ mKeyLetterRatio = getRatio(a, R.styleable.KeyboardView_keyLetterRatio);
+ mKeyTextColor = a.getColor(R.styleable.KeyboardView_keyTextColor, 0xFF000000);
+ mKeyTextColorDisabled = a.getColor(
+ R.styleable.KeyboardView_keyTextColorDisabled, 0xFF000000);
+ mLabelTextRatio = getRatio(a, R.styleable.KeyboardView_labelTextRatio);
+ mPopupLayout = a.getResourceId(R.styleable.KeyboardView_popupLayout, 0);
+ mShadowColor = a.getColor(R.styleable.KeyboardView_shadowColor, 0);
+ 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);
+ mKeyLetterStyle = Typeface.defaultFromStyle(
+ a.getInt(R.styleable.KeyboardView_keyLetterStyle, Typeface.NORMAL));
+ mColorScheme = a.getInt(R.styleable.KeyboardView_colorScheme, COLOR_SCHEME_WHITE);
final Resources res = getResources();
if (previewLayout != 0) {
mPreviewText = (TextView) LayoutInflater.from(context).inflate(previewLayout, null);
- mPreviewTextSizeLarge = (int) res.getDimension(R.dimen.key_preview_text_size_large);
+ mPreviewTextRatio = getRatio(res, R.fraction.key_preview_text_ratio);
} else {
- mShowKeyPreview = false;
+ mShowKeyPreviewPopup = false;
}
mDelayBeforePreview = res.getInteger(R.integer.config_delay_before_preview);
mDelayAfterPreview = res.getInteger(R.integer.config_delay_after_preview);
@@ -376,7 +349,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
mPaint = new Paint();
mPaint.setAntiAlias(true);
- mPaint.setTextSize(keyTextSize);
mPaint.setTextAlign(Align.CENTER);
mPaint.setAlpha(255);
@@ -460,6 +432,16 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
mKeyRepeatInterval = res.getInteger(R.integer.config_key_repeat_interval);
}
+ // Read fraction value in TypedArray as float.
+ private static float getRatio(TypedArray a, int index) {
+ return a.getFraction(index, 1000, 1000, 1) / 1000.0f;
+ }
+
+ // Read fraction value in resource as float.
+ private static float getRatio(Resources res, int id) {
+ return res.getFraction(id, 1000, 1000) / 1000.0f;
+ }
+
public void startIgnoringDoubleTap() {
if (ENABLE_CAPSLOCK_BY_DOUBLETAP)
mHandler.startIgnoringDoubleTap();
@@ -480,6 +462,12 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
return mKeyboardActionListener;
}
+ @Override
+ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ // TODO: Should notify InputMethodService instead?
+ KeyboardSwitcher.getInstance().onSizeChanged();
+ }
+
/**
* Attaches a keyboard to this view. The keyboard can be switched at any time and the
* view will re-layout itself to accommodate the keyboard.
@@ -506,6 +494,10 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
invalidateAllKeys();
mKeyDetector.setProximityThreshold(keyboard.getMostCommonKeyWidth());
mPopupPanelCache.clear();
+ final int keyHeight = keyboard.getRowHeight() - keyboard.getVerticalGap();
+ mKeyLetterSize = (int)(keyHeight * mKeyLetterRatio);
+ mLabelTextSize = (int)(keyHeight * mLabelTextRatio);
+ mPreviewTextSize = (int)(keyHeight * mPreviewTextRatio);
}
/**
@@ -530,19 +522,21 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
* Enables or disables the key feedback popup. This is a popup that shows a magnified
* version of the depressed key. By default the preview is enabled.
* @param previewEnabled whether or not to enable the key feedback preview
- * @see #isKeyPreviewEnabled()
+ * @param delay the delay after which the preview is dismissed
+ * @see #isKeyPreviewPopupEnabled()
*/
- public void setKeyPreviewEnabled(boolean previewEnabled) {
- mShowKeyPreview = previewEnabled;
+ public void setKeyPreviewPopupEnabled(boolean previewEnabled, int delay) {
+ mShowKeyPreviewPopup = previewEnabled;
+ mDelayAfterPreview = delay;
}
/**
* Returns the enabled state of the key feedback preview
* @return whether or not the key feedback preview is enabled
- * @see #setKeyPreviewEnabled(boolean)
+ * @see #setKeyPreviewPopupEnabled(boolean, int)
*/
- public boolean isKeyPreviewEnabled() {
- return mShowKeyPreview;
+ public boolean isKeyPreviewPopupEnabled() {
+ return mShowKeyPreviewPopup;
}
public int getColorScheme() {
@@ -865,7 +859,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
@Override
public void showKeyPreview(int keyIndex, PointerTracker tracker) {
- if (mShowKeyPreview) {
+ if (mShowKeyPreviewPopup) {
mHandler.showKeyPreview(mDelayBeforePreview, keyIndex, tracker);
} else if (mKeyboard.needSpacebarPreview(keyIndex)) {
// Show key preview (in this case, slide language switcher) without any delay.
@@ -875,13 +869,15 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
@Override
public void dismissKeyPreview(PointerTracker tracker) {
- if (mShowKeyPreview) {
+ if (mShowKeyPreviewPopup) {
mHandler.cancelShowKeyPreview(tracker);
mHandler.dismissKeyPreview(mDelayAfterPreview, tracker);
} else if (mKeyboard.needSpacebarPreview(KeyDetector.NOT_A_KEY)) {
// Dismiss key preview (in this case, slide language switcher) without any delay.
mPreviewText.setVisibility(View.INVISIBLE);
}
+ // Clear key preview display position.
+ mKeyPreviewPopupDisplayedY = -1;
}
private void addKeyPreview(TextView keyPreview) {
@@ -938,7 +934,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mKeyLetterSize);
previewText.setTypeface(Typeface.DEFAULT_BOLD);
} else {
- previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSizeLarge);
+ previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSize);
previewText.setTypeface(mKeyLetterStyle);
}
} else {
@@ -960,7 +956,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
final int previewX = keyDrawX - (previewWidth - keyDrawWidth) / 2 + mCoordinates[0];
final int previewY = key.mY - previewHeight + mCoordinates[1] + mPreviewOffset;
// Record key preview position to display mini-keyboard later at the same position
- mKeyPreviewDisplayedY = previewY;
+ mKeyPreviewPopupDisplayedY = previewY;
// Place the key preview.
// TODO: Adjust position of key previews which touch screen edges
@@ -1078,7 +1074,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
});
final Keyboard keyboard = new MiniKeyboardBuilder(this, mKeyboard.getPopupKeyboardResId(),
- parentKey).build();
+ parentKey, mKeyboard).build();
miniKeyboardView.setKeyboard(keyboard);
container.measure(MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST),
@@ -1111,7 +1107,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
mPopupWindow.setClippingEnabled(false);
}
mPopupMiniKeyboardPanel = popupPanel;
- popupPanel.showPanel(this, parentKey, tracker, mKeyPreviewDisplayedY, mPopupWindow);
+ popupPanel.showPanel(this, parentKey, tracker, mKeyPreviewPopupDisplayedY, mPopupWindow);
invalidateAllKeys();
return true;
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index c279769f6..fe27ab412 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -78,7 +78,7 @@ public class LatinKeyboard extends Keyboard {
// of the most common key width of this keyboard).
private static final int SPACEBAR_DRAG_WIDTH = 3;
// Minimum width of space key preview (proportional to keyboard width).
- private static final float SPACEBAR_POPUP_MIN_RATIO = 0.4f;
+ private static final float SPACEBAR_POPUP_MIN_RATIO = 0.5f;
// Height in space key the language name will be drawn. (proportional to space key height)
public static final float SPACEBAR_LANGUAGE_BASELINE = 0.6f;
// If the full language name needs to be smaller than this value to be drawn on space key,
@@ -88,8 +88,8 @@ public class LatinKeyboard extends Keyboard {
private static final String SMALL_TEXT_SIZE_OF_LANGUAGE_ON_SPACEBAR = "small";
private static final String MEDIUM_TEXT_SIZE_OF_LANGUAGE_ON_SPACEBAR = "medium";
- public LatinKeyboard(Context context, KeyboardId id) {
- super(context, id.getXmlId(), id);
+ public LatinKeyboard(Context context, KeyboardId id, int width) {
+ super(context, id.getXmlId(), id, width);
final Resources res = context.getResources();
mContext = context;
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
index c98076f35..185f1f8f7 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
@@ -16,10 +16,6 @@
package com.android.inputmethod.keyboard;
-import com.android.inputmethod.deprecated.VoiceProxy;
-import com.android.inputmethod.latin.LatinImeLogger;
-import com.android.inputmethod.latin.Utils;
-
import android.content.Context;
import android.graphics.Canvas;
import android.text.TextUtils;
@@ -27,6 +23,10 @@ import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
+import com.android.inputmethod.deprecated.VoiceProxy;
+import com.android.inputmethod.latin.LatinImeLogger;
+import com.android.inputmethod.latin.Utils;
+
// TODO: We should remove this class
public class LatinKeyboardView extends KeyboardView {
private static final String TAG = LatinKeyboardView.class.getSimpleName();
@@ -47,7 +47,7 @@ public class LatinKeyboardView extends KeyboardView {
private int mLastY;
public LatinKeyboardView(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
+ super(context, attrs);
}
public LatinKeyboardView(Context context, AttributeSet attrs, int defStyle) {
@@ -55,14 +55,14 @@ public class LatinKeyboardView extends KeyboardView {
}
@Override
- public void setKeyPreviewEnabled(boolean previewEnabled) {
+ public void setKeyPreviewPopupEnabled(boolean previewEnabled, int delay) {
LatinKeyboard latinKeyboard = getLatinKeyboard();
if (latinKeyboard != null
&& (latinKeyboard.isPhoneKeyboard() || latinKeyboard.isNumberKeyboard())) {
// Phone and number keyboard never shows popup preview (except language switch).
- super.setKeyPreviewEnabled(false);
+ super.setKeyPreviewPopupEnabled(false, delay);
} else {
- super.setKeyPreviewEnabled(previewEnabled);
+ super.setKeyPreviewPopupEnabled(previewEnabled, delay);
}
}
@@ -173,7 +173,8 @@ public class LatinKeyboardView extends KeyboardView {
if (!mDroppingEvents) {
mDroppingEvents = true;
// Send an up event
- MotionEvent translated = MotionEvent.obtain(me.getEventTime(), me.getEventTime(),
+ MotionEvent translated = MotionEvent.obtain(
+ me.getEventTime(), me.getEventTime(),
MotionEvent.ACTION_UP,
mLastX, mLastY, me.getMetaState());
super.onTouchEvent(translated);
diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
index 5dde15e94..2d6766f2d 100644
--- a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 Google Inc.
+ * 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
@@ -23,8 +23,8 @@ import java.util.List;
public class MiniKeyboard extends Keyboard {
private int mDefaultKeyCoordX;
- public MiniKeyboard(Context context, int xmlLayoutResId, KeyboardId id) {
- super(context, xmlLayoutResId, id);
+ public MiniKeyboard(Context context, int xmlLayoutResId, Keyboard parentKeyboard) {
+ super(context, xmlLayoutResId, null, parentKeyboard.getMinWidth());
}
public void setDefaultCoordX(int pos) {
diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java
index e540fa106..6e939123d 100644
--- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java
+++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -181,22 +181,25 @@ public class MiniKeyboardBuilder {
}
}
- public MiniKeyboardBuilder(KeyboardView view, int layoutTemplateResId, Key parentKey) {
+ public MiniKeyboardBuilder(KeyboardView view, int layoutTemplateResId, Key parentKey,
+ Keyboard parentKeyboard) {
final Context context = view.getContext();
mRes = context.getResources();
- final MiniKeyboard keyboard = new MiniKeyboard(context, layoutTemplateResId, null);
+ final MiniKeyboard keyboard = new MiniKeyboard(
+ context, layoutTemplateResId, parentKeyboard);
mKeyboard = keyboard;
mPopupCharacters = parentKey.mPopupCharacters;
final int keyWidth = getMaxKeyWidth(view, mPopupCharacters, keyboard.getKeyWidth());
final MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(
mPopupCharacters.length, parentKey.mMaxPopupColumn,
- keyWidth, keyboard.getRowHeight(),
+ keyWidth, parentKeyboard.getRowHeight(),
parentKey.mX + (parentKey.mWidth + parentKey.mGap) / 2 - keyWidth / 2,
view.getMeasuredWidth());
mParams = params;
- keyboard.setHeight(params.mNumRows * params.mRowHeight - keyboard.getVerticalGap());
+ keyboard.setRowHeight(params.mRowHeight);
+ keyboard.setHeight(params.mNumRows * params.mRowHeight);
keyboard.setMinWidth(params.mNumColumns * params.mKeyWidth);
keyboard.setDefaultCoordX(params.getDefaultKeyCoordX() + params.mKeyWidth / 2);
}
@@ -235,7 +238,7 @@ public class MiniKeyboardBuilder {
final CharSequence label = mPopupCharacters[n];
final int row = n / params.mNumColumns;
final Key key = new Key(mRes, keyboard, label, params.getX(n, row), params.getY(row),
- params.mKeyWidth, params.getRowFlags(row));
+ params.mKeyWidth, params.mRowHeight, params.getRowFlags(row));
keys.add(key);
}
return keyboard;
diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java
index c4459f616..cc5c3bbfe 100644
--- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/ModifierKeyState.java b/java/src/com/android/inputmethod/keyboard/ModifierKeyState.java
index f215db876..ebbc79a9e 100644
--- a/java/src/com/android/inputmethod/keyboard/ModifierKeyState.java
+++ b/java/src/com/android/inputmethod/keyboard/ModifierKeyState.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 953d487dc..6b4e9469f 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -633,8 +633,6 @@ public class PointerTracker {
private void startLongPressTimer(int keyIndex) {
Key key = getKey(keyIndex);
- if (!key.mEnabled)
- return;
if (key.mCode == Keyboard.CODE_SHIFT) {
mHandler.startLongPressShiftTimer(mLongPressShiftKeyTimeout, keyIndex, this);
} else if (key.mManualTemporaryUpperCaseCode != Keyboard.CODE_DUMMY
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java b/java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java
index b3ed1e26f..eecbb26f3 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java b/java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java
index 68de8df8a..9e287c67d 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java b/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java
index 32c25801d..ff78ee5c9 100644
--- a/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java
+++ b/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
index 12031f1ea..60d87f789 100644
--- a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
@@ -16,8 +16,6 @@
package com.android.inputmethod.keyboard;
-import com.android.inputmethod.latin.R;
-
import android.content.Context;
import android.content.res.Resources;
import android.os.SystemClock;
@@ -27,6 +25,8 @@ import android.view.MotionEvent;
import android.view.View;
import android.widget.PopupWindow;
+import com.android.inputmethod.latin.R;
+
/**
* A view that renders a virtual {@link MiniKeyboard}. It handles rendering of keys and detecting
* key presses and touch movements.
@@ -41,7 +41,7 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel {
private long mDownTime;
public PopupMiniKeyboardView(Context context, AttributeSet attrs) {
- this(context, attrs, R.attr.keyboardViewStyle);
+ this(context, attrs, R.attr.popupMiniKeyboardViewStyle);
}
public PopupMiniKeyboardView(Context context, AttributeSet attrs, int defStyle) {
@@ -55,13 +55,14 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel {
R.dimen.mini_keyboard_slide_allowance));
// Remove gesture detector on mini-keyboard
mGestureDetector = null;
- setKeyPreviewEnabled(false);
+ setKeyPreviewPopupEnabled(false, 0);
}
@Override
- public void setKeyPreviewEnabled(boolean previewEnabled) {
- // Mini keyboard needs no pop-up key preview displayed.
- super.setKeyPreviewEnabled(false);
+ public void setKeyPreviewPopupEnabled(boolean previewEnabled, int delay) {
+ // Mini keyboard needs no pop-up key preview displayed, so we pass always false with a
+ // delay of 0. The delay does not matter actually since the popup is not shown anyway.
+ super.setKeyPreviewPopupEnabled(false, 0);
}
@Override
@@ -75,15 +76,17 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel {
final int pointX = (mConfigShowMiniKeyboardAtTouchedPoint) ? tracker.getLastX()
: parentKey.mX + parentKey.mWidth / 2;
final int pointY = parentKey.mY;
- final int miniKeyboardX = pointX - miniKeyboard.getDefaultCoordX()
- - container.getPaddingLeft()
- + parentKeyboardView.getPaddingLeft() + mCoordinates[0];
+ final int miniKeyboardLeft = pointX - miniKeyboard.getDefaultCoordX()
+ + parentKeyboardView.getPaddingLeft();
+ final int miniKeyboardX = Math.max(0, Math.min(miniKeyboardLeft,
+ parentKeyboardView.getWidth() - miniKeyboard.getMinWidth()))
+ - container.getPaddingLeft() + mCoordinates[0];
final int miniKeyboardY = pointY - parentKeyboard.getVerticalGap()
- (container.getMeasuredHeight() - container.getPaddingBottom())
+ parentKeyboardView.getPaddingTop() + mCoordinates[1];
final int x = miniKeyboardX;
- final int y = parentKeyboardView.isKeyPreviewEnabled() && miniKeyboard.isOneRowKeyboard()
- ? keyPreviewY : miniKeyboardY;
+ 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/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
index 80d6de952..33acc6907 100644
--- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
+++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 Google Inc.
+ * 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
diff --git a/java/src/com/android/inputmethod/keyboard/Row.java b/java/src/com/android/inputmethod/keyboard/Row.java
index 3618c0448..40d7e1472 100644
--- a/java/src/com/android/inputmethod/keyboard/Row.java
+++ b/java/src/com/android/inputmethod/keyboard/Row.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/ShiftKeyState.java b/java/src/com/android/inputmethod/keyboard/ShiftKeyState.java
index 9229208a9..ba15624f0 100644
--- a/java/src/com/android/inputmethod/keyboard/ShiftKeyState.java
+++ b/java/src/com/android/inputmethod/keyboard/ShiftKeyState.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java b/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java
index b279c1c7e..5cf31cb14 100644
--- a/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java
+++ b/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -38,7 +38,7 @@ import android.view.ViewConfiguration;
* movement on the spacebar.
*/
public class SlidingLocaleDrawable extends Drawable {
-
+ private static final int SLIDE_SPEED_MULTIPLIER_RATIO = 150;
private final Context mContext;
private final Resources mRes;
private final int mWidth;
@@ -90,7 +90,7 @@ public class SlidingLocaleDrawable extends Drawable {
mCurrentLanguage = null;
return;
}
- mDiff = diff;
+ mDiff = Math.max(diff, diff * SLIDE_SPEED_MULTIPLIER_RATIO / 100);
if (mDiff > mWidth) mDiff = mWidth;
if (mDiff < -mWidth) mDiff = -mWidth;
if (Math.abs(mDiff) > mThreshold) mHitThreshold = true;
diff --git a/java/src/com/android/inputmethod/keyboard/SwipeTracker.java b/java/src/com/android/inputmethod/keyboard/SwipeTracker.java
index 730cdc390..975b13b50 100644
--- a/java/src/com/android/inputmethod/keyboard/SwipeTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/SwipeTracker.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
diff --git a/java/src/com/android/inputmethod/latin/AutoDictionary.java b/java/src/com/android/inputmethod/latin/AutoDictionary.java
index 307b81d43..460930f16 100644
--- a/java/src/com/android/inputmethod/latin/AutoDictionary.java
+++ b/java/src/com/android/inputmethod/latin/AutoDictionary.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -41,13 +41,8 @@ public class AutoDictionary extends ExpandableDictionary {
static final int FREQUENCY_FOR_PICKED = 3;
// Weight added to a user typing a new word that doesn't get corrected (or is reverted)
static final int FREQUENCY_FOR_TYPED = 1;
- // A word that is frequently typed and gets promoted to the user dictionary, uses this
- // frequency.
- static final int FREQUENCY_FOR_AUTO_ADD = 250;
// If the user touches a typed word 2 times or more, it will become valid.
private static final int VALIDITY_THRESHOLD = 2 * FREQUENCY_FOR_PICKED;
- // If the user touches a typed word 4 times or more, it will be added to the user dict.
- private static final int PROMOTION_THRESHOLD = 4 * FREQUENCY_FOR_PICKED;
private LatinIME mIme;
// Locale for which this auto dictionary is storing words
@@ -151,11 +146,6 @@ public class AutoDictionary extends ExpandableDictionary {
freq = freq < 0 ? addFrequency : freq + addFrequency;
super.addWord(word, freq);
- if (freq >= PROMOTION_THRESHOLD) {
- mIme.promoteToUserDictionary(word, FREQUENCY_FOR_AUTO_ADD);
- freq = 0;
- }
-
synchronized (mPendingWritesLock) {
// Write a null frequency if it is to be deleted from the db
mPendingWrites.put(word, freq == 0 ? null : new Integer(freq));
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index d95fb9638..9748d6006 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -196,8 +196,9 @@ public class BinaryDictionary extends Dictionary {
Arrays.fill(outputChars, (char) 0);
Arrays.fill(scores, 0);
+ final int proximityInfo = keyboard == null ? 0 : keyboard.getProximityInfo();
return getSuggestionsNative(
- mNativeDict, keyboard.getProximityInfo(),
+ mNativeDict, proximityInfo,
codes.getXCoordinates(), codes.getYCoordinates(), mInputCodes, codesSize,
mFlags, outputChars, scores);
}
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
index 562580d41..7ce92920d 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
@@ -78,16 +78,20 @@ class BinaryDictionaryGetter {
} else {
try {
// If that was no-go, try to find a publicly exported dictionary.
- return BinaryDictionaryFileDumper.getDictSetFromContentProvider(locale, context);
+ List<AssetFileAddress> listFromContentProvider =
+ BinaryDictionaryFileDumper.getDictSetFromContentProvider(locale, context);
+ if (null != listFromContentProvider) {
+ return listFromContentProvider;
+ }
+ // If the list is null, fall through and return the fallback
} catch (FileNotFoundException e) {
Log.e(TAG, "Unable to create dictionary file from provider for locale "
+ locale.toString() + ": falling back to internal dictionary");
- return Arrays.asList(loadFallbackResource(context, fallbackResId));
} catch (IOException e) {
Log.e(TAG, "Unable to read source data for locale "
+ locale.toString() + ": falling back to internal dictionary");
- return Arrays.asList(loadFallbackResource(context, fallbackResId));
}
+ return Arrays.asList(loadFallbackResource(context, fallbackResId));
}
}
}
diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index abdf30e6b..fe3c72f4c 100644
--- a/java/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -16,8 +16,6 @@
package com.android.inputmethod.latin;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
@@ -40,11 +38,12 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
-import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+
import java.util.ArrayList;
import java.util.List;
@@ -57,6 +56,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
private static final boolean DBG = LatinImeLogger.sDBG;
private final ArrayList<View> mWords = new ArrayList<View>();
+ private final ArrayList<View> mDividers = new ArrayList<View>();
private final boolean mConfigCandidateHighlightFontColorEnabled;
private final CharacterStyle mInvertedForegroundColorSpan;
private final CharacterStyle mInvertedBackgroundColorSpan;
@@ -148,10 +148,11 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
tv.setOnClickListener(this);
if (i == 0)
tv.setOnLongClickListener(this);
- ImageView divider = (ImageView)v.findViewById(R.id.candidate_divider);
- // Do not display divider of first candidate.
- divider.setVisibility(i == 0 ? INVISIBLE : VISIBLE);
mWords.add(v);
+ if (i > 0) {
+ View divider = inflater.inflate(R.layout.candidate_divider, null);
+ mDividers.add(divider);
+ }
}
scrollTo(0, getScrollY());
@@ -237,6 +238,8 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
} else {
dv.setVisibility(GONE);
}
+ if (i > 0)
+ addView(mDividers.get(i - 1));
addView(v);
}
@@ -275,7 +278,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
setSuggestions(builder.build());
mShowingAddToDictionary = true;
// Disable R.string.hint_add_to_dictionary button
- TextView tv = (TextView)getChildAt(1).findViewById(R.id.candidate_word);
+ TextView tv = (TextView)mWords.get(1).findViewById(R.id.candidate_word);
tv.setClickable(false);
}
@@ -308,7 +311,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
previewText.setText(word);
previewText.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
- View v = getChildAt(index);
+ View v = mWords.get(index);
final int[] offsetInWindow = new int[2];
v.getLocationInWindow(offsetInWindow);
final int posX = offsetInWindow[0];
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFactory.java b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
index 605676d70..bba331868 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFactory.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
@@ -142,6 +142,25 @@ public class DictionaryFactory {
return hasDictionary;
}
+ // TODO: Do not use the size of the dictionary as an unique dictionary ID.
+ public static Long getDictionaryId(Context context, Locale locale) {
+ final Resources res = context.getResources();
+ final Locale saveLocale = Utils.setSystemLocale(res, locale);
+
+ final int resourceId = Utils.getMainDictionaryResourceId(res);
+ final AssetFileDescriptor afd = res.openRawResourceFd(resourceId);
+ final Long size = (afd != null && afd.getLength() > PLACEHOLDER_LENGTH)
+ ? afd.getLength()
+ : null;
+ try {
+ if (null != afd) afd.close();
+ } catch (java.io.IOException e) {
+ }
+
+ Utils.setSystemLocale(res, saveLocale);
+ return size;
+ }
+
// TODO: Find the Right Way to find out whether the resource is a placeholder or not.
// Suggestion : strip the locale, open the placeholder file and store its offset.
// Upon opening the file, if it's the same offset, then it's the placeholder.
diff --git a/java/src/com/android/inputmethod/latin/EditingUtils.java b/java/src/com/android/inputmethod/latin/EditingUtils.java
index 39e7e402f..e56aa695d 100644
--- a/java/src/com/android/inputmethod/latin/EditingUtils.java
+++ b/java/src/com/android/inputmethod/latin/EditingUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 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
diff --git a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
index 26391fe46..97a4a1816 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
@@ -229,6 +229,7 @@ public class ExpandableDictionary extends Dictionary {
* Returns the word's frequency or -1 if not found
*/
protected int getWordFrequency(CharSequence word) {
+ // Case-sensitive search
Node node = searchNode(mRoots, word, 0, word.length());
return (node == null) ? -1 : node.mFrequency;
}
@@ -366,12 +367,16 @@ public class ExpandableDictionary extends Dictionary {
/**
* Adds bigrams to the in-memory trie structure that is being used to retrieve any word
- * @param frequency frequency for this bigrams
- * @param addFrequency if true, it adds to current frequency
+ * @param frequency frequency for this bigram
+ * @param addFrequency if true, it adds to current frequency, else it overwrites the old value
* @return returns the final frequency
*/
private int addOrSetBigram(String word1, String word2, int frequency, boolean addFrequency) {
- Node firstWord = searchWord(mRoots, word1, 0, null);
+ // We don't want results to be different according to case of the looked up left hand side
+ // word. We do want however to return the correct case for the right hand side.
+ // So we want to squash the case of the left hand side, and preserve that of the right
+ // hand side word.
+ Node firstWord = searchWord(mRoots, word1.toLowerCase(), 0, null);
Node secondWord = searchWord(mRoots, word2, 0, null);
LinkedList<NextWord> bigram = firstWord.mNGrams;
if (bigram == null || bigram.size() == 0) {
@@ -437,8 +442,12 @@ public class ExpandableDictionary extends Dictionary {
}
}
- private void runReverseLookUp(final CharSequence previousWord, final WordCallback callback) {
- Node prevWord = searchNode(mRoots, previousWord, 0, previousWord.length());
+ private void runBigramReverseLookUp(final CharSequence previousWord,
+ final WordCallback callback) {
+ // Search for the lowercase version of the word only, because that's where bigrams
+ // store their sons.
+ Node prevWord = searchNode(mRoots, previousWord.toString().toLowerCase(), 0,
+ previousWord.length());
if (prevWord != null && prevWord.mNGrams != null) {
reverseLookUp(prevWord.mNGrams, callback);
}
@@ -448,7 +457,7 @@ public class ExpandableDictionary extends Dictionary {
public void getBigrams(final WordComposer codes, final CharSequence previousWord,
final WordCallback callback) {
if (!reloadDictionaryIfRequired()) {
- runReverseLookUp(previousWord, callback);
+ runBigramReverseLookUp(previousWord, callback);
}
}
@@ -494,14 +503,20 @@ public class ExpandableDictionary extends Dictionary {
}
/**
- * Search for the terminal node of the word
+ * Recursively search for the terminal node of the word.
+ *
+ * One iteration takes the full word to search for and the current index of the recursion.
+ *
+ * @param children the node of the trie to search under.
+ * @param word the word to search for. Only read [offset..length] so there may be trailing chars
+ * @param offset the index in {@code word} this recursion should operate on.
+ * @param length the length of the input word.
* @return Returns the terminal node of the word if the word exists
*/
private Node searchNode(final NodeArray children, final CharSequence word, final int offset,
final int length) {
- // TODO Consider combining with addWordRec
final int count = children.mLength;
- char currentChar = word.charAt(offset);
+ final char currentChar = word.charAt(offset);
for (int j = 0; j < count; j++) {
final Node node = children.mData[j];
if (node.mCode == currentChar) {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 8b130aecd..a4a04ffb1 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -16,21 +16,6 @@
package com.android.inputmethod.latin;
-import com.android.inputmethod.compat.CompatUtils;
-import com.android.inputmethod.compat.EditorInfoCompatUtils;
-import com.android.inputmethod.compat.InputConnectionCompatUtils;
-import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
-import com.android.inputmethod.compat.InputMethodServiceCompatWrapper;
-import com.android.inputmethod.compat.InputTypeCompatUtils;
-import com.android.inputmethod.deprecated.LanguageSwitcherProxy;
-import com.android.inputmethod.deprecated.VoiceProxy;
-import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.KeyboardActionListener;
-import com.android.inputmethod.keyboard.KeyboardSwitcher;
-import com.android.inputmethod.keyboard.KeyboardView;
-import com.android.inputmethod.keyboard.LatinKeyboard;
-import com.android.inputmethod.keyboard.LatinKeyboardView;
-
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -58,7 +43,6 @@ import android.util.PrintWriterPrinter;
import android.util.Printer;
import android.view.HapticFeedbackConstants;
import android.view.KeyEvent;
-import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
@@ -68,7 +52,23 @@ import android.view.inputmethod.CompletionInfo;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.InputConnection;
-import android.widget.LinearLayout;
+
+import com.android.inputmethod.compat.CompatUtils;
+import com.android.inputmethod.compat.EditorInfoCompatUtils;
+import com.android.inputmethod.compat.InputConnectionCompatUtils;
+import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
+import com.android.inputmethod.compat.InputMethodServiceCompatWrapper;
+import com.android.inputmethod.compat.InputTypeCompatUtils;
+import com.android.inputmethod.compat.SuggestionSpanUtils;
+import com.android.inputmethod.deprecated.LanguageSwitcherProxy;
+import com.android.inputmethod.deprecated.VoiceProxy;
+import com.android.inputmethod.deprecated.recorrection.Recorrection;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardActionListener;
+import com.android.inputmethod.keyboard.KeyboardSwitcher;
+import com.android.inputmethod.keyboard.KeyboardView;
+import com.android.inputmethod.keyboard.LatinKeyboard;
+import com.android.inputmethod.keyboard.LatinKeyboardView;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -81,7 +81,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
private static final String TAG = LatinIME.class.getSimpleName();
private static final boolean PERF_DEBUG = false;
private static final boolean TRACE = false;
- private static boolean DEBUG = LatinImeLogger.sDBG;
+ private static boolean DEBUG;
/**
* The private IME option used to indicate that no microphone should be
@@ -216,15 +216,15 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
@Override
public void handleMessage(Message msg) {
final KeyboardSwitcher switcher = mKeyboardSwitcher;
- final LatinKeyboardView inputView = switcher.getInputView();
+ final LatinKeyboardView inputView = switcher.getKeyboardView();
switch (msg.what) {
case MSG_UPDATE_SUGGESTIONS:
updateSuggestions();
break;
case MSG_UPDATE_OLD_SUGGESTIONS:
- mRecorrection.setRecorrectionSuggestions(mVoiceProxy, mCandidateView, mSuggest,
- mKeyboardSwitcher, mWord, mHasUncommittedTypedChars, mLastSelectionStart,
- mLastSelectionEnd, mSettingsValues.mWordSeparators);
+ mRecorrection.fetchAndDisplayRecorrectionSuggestions(mVoiceProxy, mCandidateView,
+ mSuggest, mKeyboardSwitcher, mWord, mHasUncommittedTypedChars,
+ mLastSelectionStart, mLastSelectionEnd, mSettingsValues.mWordSeparators);
break;
case MSG_UPDATE_SHIFT_STATE:
switcher.updateShiftState();
@@ -306,7 +306,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
public void startDisplayLanguageOnSpacebar(boolean localeChanged) {
removeMessages(MSG_FADEOUT_LANGUAGE_ON_SPACEBAR);
removeMessages(MSG_DISMISS_LANGUAGE_ON_SPACEBAR);
- final LatinKeyboardView inputView = mKeyboardSwitcher.getInputView();
+ final LatinKeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
if (inputView != null) {
final LatinKeyboard keyboard = mKeyboardSwitcher.getLatinKeyboard();
// The language is always displayed when the delay is negative.
@@ -357,6 +357,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
mSubtypeSwitcher = SubtypeSwitcher.getInstance();
mKeyboardSwitcher = KeyboardSwitcher.getInstance();
mRecorrection = Recorrection.getInstance();
+ DEBUG = LatinImeLogger.sDBG;
loadSettings();
@@ -405,7 +406,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
private void initSuggest() {
final String localeStr = mSubtypeSwitcher.getInputLocaleStr();
- final Locale keyboardLocale = new Locale(localeStr);
+ final Locale keyboardLocale = Utils.constructLocaleFromString(localeStr);
final Resources res = mResources;
final Locale savedLocale = Utils.setSystemLocale(res, keyboardLocale);
@@ -439,7 +440,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
/* package private */ void resetSuggestMainDict() {
final String localeStr = mSubtypeSwitcher.getInputLocaleStr();
- final Locale keyboardLocale = new Locale(localeStr);
+ final Locale keyboardLocale = Utils.constructLocaleFromString(localeStr);
int mainDicResId = Utils.getMainDictionaryResourceId(mResources);
mSuggest.resetMainDict(this, mainDicResId, keyboardLocale);
}
@@ -486,24 +487,28 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
@Override
- public View onCreateCandidatesView() {
- LayoutInflater inflater = getLayoutInflater();
- LinearLayout container = (LinearLayout)inflater.inflate(R.layout.candidates, null);
- mCandidateViewContainer = container;
- mCandidateStripHeight = (int)mResources.getDimension(R.dimen.candidate_strip_height);
- mCandidateView = (CandidateView) container.findViewById(R.id.candidates);
+ public void setInputView(View view) {
+ super.setInputView(view);
+ mCandidateViewContainer = view.findViewById(R.id.candidates_container);
+ mCandidateView = (CandidateView) view.findViewById(R.id.candidates);
mCandidateView.setService(this);
- setCandidatesViewShown(true);
- return container;
+ mCandidateStripHeight = (int)mResources.getDimension(R.dimen.candidate_strip_height);
+ }
+
+ @Override
+ public void setCandidatesView(View view) {
+ // To ensure that CandidatesView will never be set.
+ return;
}
@Override
public void onStartInputView(EditorInfo attribute, boolean restarting) {
final KeyboardSwitcher switcher = mKeyboardSwitcher;
- LatinKeyboardView inputView = switcher.getInputView();
+ LatinKeyboardView inputView = switcher.getKeyboardView();
if (DEBUG) {
- Log.d(TAG, "onStartInputView: " + inputView);
+ Log.d(TAG, "onStartInputView: inputType=" + ((attribute == null) ? "none"
+ : String.format("0x%08x", attribute.inputType)));
}
// In landscape mode, this method gets called without the input view being created.
if (inputView == null) {
@@ -549,13 +554,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
switcher.updateShiftState();
}
- setCandidatesViewShownInternal(isCandidateStripVisible(), false /* needsInputViewShown */ );
+ setSuggestionStripShownInternal(isCandidateStripVisible(), /* needsInputViewShown */ false);
// Delay updating suggestions because keyboard input view may not be shown at this point.
mHandler.postUpdateSuggestions();
updateCorrectionMode();
- inputView.setKeyPreviewEnabled(mSettingsValues.mPopupOn);
+ inputView.setKeyPreviewPopupEnabled(mSettingsValues.mKeyPreviewPopupOn,
+ mSettingsValues.mKeyPreviewPopupDismissDelay);
inputView.setProximityCorrectionEnabled(true);
// If we just entered a text field, maybe it has some old text that requires correction
mRecorrection.checkRecorrectionOnStart();
@@ -622,6 +628,13 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
@Override
+ public void onWindowHidden() {
+ super.onWindowHidden();
+ KeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
+ if (inputView != null) inputView.closing();
+ }
+
+ @Override
public void onFinishInput() {
super.onFinishInput();
@@ -630,7 +643,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
mVoiceProxy.flushVoiceInputLogs(mConfigurationChanging);
- KeyboardView inputView = mKeyboardSwitcher.getInputView();
+ KeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
if (inputView != null) inputView.closing();
if (mAutoDictionary != null) mAutoDictionary.flushPendingWrites();
if (mUserBigramDictionary != null) mUserBigramDictionary.flushPendingWrites();
@@ -639,7 +652,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
@Override
public void onFinishInputView(boolean finishingInput) {
super.onFinishInputView(finishingInput);
- KeyboardView inputView = mKeyboardSwitcher.getInputView();
+ KeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
if (inputView != null) inputView.setForeground(false);
// Remove pending messages related to update suggestions
mHandler.cancelUpdateSuggestions();
@@ -684,7 +697,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// If the composing span has been cleared, save the typed word in the history for
// recorrection before we reset the candidate strip. Then, we'll be able to show
// suggestions for recorrection right away.
- mRecorrection.saveWordInHistory(mWord, mComposing);
+ mRecorrection.saveRecorrectionSuggestion(mWord, mComposing);
}
mComposing.setLength(0);
mHasUncommittedTypedChars = false;
@@ -795,11 +808,11 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// When in fullscreen mode, show completions generated by the application
setSuggestions(builder.build());
mBestWord = null;
- setCandidatesViewShown(true);
+ setSuggestionStripShown(true);
}
}
- private void setCandidatesViewShownInternal(boolean shown, boolean needsInputViewShown) {
+ private void setSuggestionStripShownInternal(boolean shown, boolean needsInputViewShown) {
// TODO: Modify this if we support candidates with hard keyboard
if (onEvaluateInputViewShown()) {
final boolean shouldShowCandidates = shown
@@ -807,26 +820,25 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (isExtractViewShown()) {
// No need to have extra space to show the key preview.
mCandidateViewContainer.setMinimumHeight(0);
- super.setCandidatesViewShown(shown);
+ mCandidateViewContainer.setVisibility(
+ shouldShowCandidates ? View.VISIBLE : View.GONE);
} else {
// We must control the visibility of the suggestion strip in order to avoid clipped
// key previews, even when we don't show the suggestion strip.
mCandidateViewContainer.setVisibility(
shouldShowCandidates ? View.VISIBLE : View.INVISIBLE);
- super.setCandidatesViewShown(true);
}
}
}
- @Override
- public void setCandidatesViewShown(boolean shown) {
- setCandidatesViewShownInternal(shown, true /* needsInputViewShown */ );
+ private void setSuggestionStripShown(boolean shown) {
+ setSuggestionStripShownInternal(shown, /* needsInputViewShown */true);
}
@Override
public void onComputeInsets(InputMethodService.Insets outInsets) {
super.onComputeInsets(outInsets);
- final KeyboardView inputView = mKeyboardSwitcher.getInputView();
+ final KeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
if (inputView == null)
return;
final int containerHeight = mCandidateViewContainer.getHeight();
@@ -868,8 +880,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
- if (event.getRepeatCount() == 0 && mKeyboardSwitcher.getInputView() != null) {
- if (mKeyboardSwitcher.getInputView().handleBack()) {
+ if (event.getRepeatCount() == 0 && mKeyboardSwitcher.getKeyboardView() != null) {
+ if (mKeyboardSwitcher.getKeyboardView().handleBack()) {
return true;
}
}
@@ -1005,14 +1017,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
private void onSettingsKeyPressed() {
- if (!isShowingOptionDialog()) {
- if (!mSettingsValues.mEnableShowSubtypeSettings) {
- showSubtypeSelectorAndSettings();
- } else if (Utils.hasMultipleEnabledIMEsOrSubtypes(mImm)) {
- showOptionsMenu();
- } else {
- launchSettings();
- }
+ if (isShowingOptionDialog())
+ return;
+ if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) {
+ showSubtypeSelectorAndSettings();
+ } else if (Utils.hasMultipleEnabledIMEsOrSubtypes(mImm)) {
+ showOptionsMenu();
+ } else {
+ launchSettings();
}
}
@@ -1221,7 +1233,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (!mHasUncommittedTypedChars) {
mHasUncommittedTypedChars = true;
mComposing.setLength(0);
- mRecorrection.saveWordInHistory(mWord, mBestWord);
+ mRecorrection.saveRecorrectionSuggestion(mWord, mBestWord);
mWord.reset();
clearSuggestions();
}
@@ -1356,7 +1368,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
commitTyped(getCurrentInputConnection());
mVoiceProxy.handleClose();
requestHideSelf(0);
- LatinKeyboardView inputView = mKeyboardSwitcher.getInputView();
+ LatinKeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
if (inputView != null)
inputView.closing();
}
@@ -1392,7 +1404,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (DEBUG) {
Log.d(TAG, "Switch to keyboard view.");
}
- View v = mKeyboardSwitcher.getInputView();
+ View v = mKeyboardSwitcher.getKeyboardView();
if (v != null) {
// Confirms that the keyboard view doesn't have parent view.
ViewParent p = v.getParent();
@@ -1401,7 +1413,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
setInputView(v);
}
- setCandidatesViewShown(isCandidateStripVisible());
+ setSuggestionStripShown(isCandidateStripVisible());
updateInputViewShown();
mHandler.postUpdateSuggestions();
}
@@ -1411,9 +1423,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
public void setSuggestions(SuggestedWords words) {
- if (mVoiceProxy.getAndResetIsShowingHint()) {
- setCandidatesView(mCandidateViewContainer);
- }
+// if (mVoiceProxy.getAndResetIsShowingHint()) {
+// setCandidatesView(mCandidateViewContainer);
+// }
if (mCandidateView != null) {
mCandidateView.setSuggestions(words);
@@ -1443,7 +1455,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
CharSequence prevWord = EditingUtils.getPreviousWord(getCurrentInputConnection(),
mSettingsValues.mWordSeparators);
SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder(
- mKeyboardSwitcher.getInputView(), word, prevWord);
+ mKeyboardSwitcher.getKeyboardView(), word, prevWord);
boolean correctionAvailable = !mInputTypeNoAutoCorrect && mSuggest.hasAutoCorrection();
final CharSequence typedWord = word.getTypedWord();
@@ -1464,14 +1476,17 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// in most cases, suggestion count is 1 when typed word's length is 1, but we do always
// need to clear the previous state when the user starts typing a word (i.e. typed word's
// length == 1).
- if (builder.size() > 1 || typedWord.length() == 1 || typedWordValid
- || mCandidateView.isShowingAddToDictionaryHint()) {
- builder.setTypedWordValid(typedWordValid).setHasMinimalSuggestion(correctionAvailable);
- } else {
- final SuggestedWords previousSuggestions = mCandidateView.getSuggestions();
- if (previousSuggestions == mSettingsValues.mSuggestPuncList)
- return;
- builder.addTypedWordAndPreviousSuggestions(typedWord, previousSuggestions);
+ if (typedWord != null) {
+ if (builder.size() > 1 || typedWord.length() == 1 || typedWordValid
+ || mCandidateView.isShowingAddToDictionaryHint()) {
+ builder.setTypedWordValid(typedWordValid).setHasMinimalSuggestion(
+ correctionAvailable);
+ } else {
+ final SuggestedWords previousSuggestions = mCandidateView.getSuggestions();
+ if (previousSuggestions == mSettingsValues.mSuggestPuncList)
+ return;
+ builder.addTypedWordAndPreviousSuggestions(typedWord, previousSuggestions);
+ }
}
showSuggestions(builder.build(), typedWord);
}
@@ -1489,7 +1504,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
} else {
mBestWord = null;
}
- setCandidatesViewShown(isCandidateStripVisible());
+ setSuggestionStripShown(isCandidateStripVisible());
}
private boolean pickDefaultSuggestion(int separatorCode) {
@@ -1501,7 +1516,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (mBestWord != null && mBestWord.length() > 0) {
TextEntryState.acceptedDefault(mWord.getTypedWord(), mBestWord, separatorCode);
mJustAccepted = true;
- pickSuggestion(mBestWord);
+ commitBestWord(mBestWord);
// Add the word to the auto dictionary if it's not a known word
addToAutoAndUserBigramDictionaries(mBestWord, AutoDictionary.FREQUENCY_FOR_TYPED);
return true;
@@ -1548,7 +1563,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// a magic space even if it was a normal space. This is meant to help in case the user
// pressed space on purpose of displaying the suggestion strip punctuation.
final char primaryCode = suggestion.charAt(0);
- final int toLeft = (ic == null) ? 0 : ic.getTextBeforeCursor(1, 0).charAt(0);
+ final CharSequence beforeText = ic != null ? ic.getTextBeforeCursor(1, 0) : "";
+ final int toLeft = (ic == null || TextUtils.isEmpty(beforeText))
+ ? 0 : beforeText.charAt(0);
final boolean oldMagicSpace = mJustAddedMagicSpace;
if (Keyboard.CODE_SPACE == toLeft) mJustAddedMagicSpace = true;
onCodeInput(primaryCode, new int[] { primaryCode },
@@ -1566,7 +1583,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
mWord.reset();
}
mJustAccepted = true;
- pickSuggestion(suggestion);
+ commitBestWord(suggestion);
// Add the word to the auto dictionary if it's not a known word
if (index == 0) {
addToAutoAndUserBigramDictionaries(suggestion, AutoDictionary.FREQUENCY_FOR_PICKED);
@@ -1602,12 +1619,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// TextEntryState.State.PICKED_SUGGESTION state.
TextEntryState.typedCharacter((char) Keyboard.CODE_SPACE, true,
WordComposer.NOT_A_COORDINATE, WordComposer.NOT_A_COORDINATE);
- // From there on onUpdateSelection() will fire so suggestions will be updated
- } else if (!showingAddToDictionaryHint) {
+ }
+ if (!showingAddToDictionaryHint) {
// If we're not showing the "Touch again to save", then show corrections again.
// In case the cursor position doesn't change, make sure we show the suggestions again.
- clearSuggestions();
- mHandler.postUpdateOldSuggestions();
+ updateBigramPredictions();
+ // Updating the predictions right away may be slow and feel unresponsive on slower
+ // terminals. On the other hand if we just postUpdateBigramPredictions() it will
+ // take a noticeable delay to update them which may feel uneasy.
}
if (showingAddToDictionaryHint) {
mCandidateView.showAddToDictionaryHint(suggestion);
@@ -1620,25 +1639,25 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
/**
* Commits the chosen word to the text field and saves it for later
* retrieval.
- * @param suggestion the suggestion picked by the user to be committed to
- * the text field
*/
- private void pickSuggestion(CharSequence suggestion) {
+ private void commitBestWord(CharSequence bestWord) {
KeyboardSwitcher switcher = mKeyboardSwitcher;
if (!switcher.isKeyboardAvailable())
return;
InputConnection ic = getCurrentInputConnection();
if (ic != null) {
- mVoiceProxy.rememberReplacedWord(suggestion, mSettingsValues.mWordSeparators);
- ic.commitText(suggestion, 1);
+ mVoiceProxy.rememberReplacedWord(bestWord, mSettingsValues.mWordSeparators);
+ SuggestedWords suggestedWords = mCandidateView.getSuggestions();
+ ic.commitText(SuggestionSpanUtils.getTextWithSuggestionSpan(
+ this, bestWord, suggestedWords), 1);
}
- mRecorrection.saveWordInHistory(mWord, suggestion);
+ mRecorrection.saveRecorrectionSuggestion(mWord, bestWord);
mHasUncommittedTypedChars = false;
- mCommittedLength = suggestion.length();
+ mCommittedLength = bestWord.length();
}
private static final WordComposer sEmptyWordComposer = new WordComposer();
- private void updateBigramPredictions() {
+ public void updateBigramPredictions() {
if (mSuggest == null || !isSuggestionsRequested())
return;
@@ -1650,7 +1669,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
final CharSequence prevWord = EditingUtils.getThisWord(getCurrentInputConnection(),
mSettingsValues.mWordSeparators);
SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder(
- mKeyboardSwitcher.getInputView(), sEmptyWordComposer, prevWord);
+ mKeyboardSwitcher.getKeyboardView(), sEmptyWordComposer, prevWord);
if (builder.size() > 0) {
// Explicitly supply an empty typed word (the no-second-arg version of
@@ -1663,7 +1682,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
public void setPunctuationSuggestions() {
setSuggestions(mSettingsValues.mSuggestPuncList);
- setCandidatesViewShown(isCandidateStripVisible());
+ setSuggestionStripShown(isCandidateStripVisible());
}
private void addToAutoAndUserBigramDictionaries(CharSequence suggestion, int frequencyDelta) {
@@ -1872,7 +1891,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// if mAudioManager is null, we don't have the ringer state yet
// mAudioManager will be set by updateRingerMode
if (mAudioManager == null) {
- if (mKeyboardSwitcher.getInputView() != null) {
+ if (mKeyboardSwitcher.getKeyboardView() != null) {
updateRingerMode();
}
}
@@ -1899,7 +1918,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (!mSettingsValues.mVibrateOn) {
return;
}
- LatinKeyboardView inputView = mKeyboardSwitcher.getInputView();
+ LatinKeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
if (inputView != null) {
inputView.performHapticFeedback(
HapticFeedbackConstants.KEYBOARD_TAP,
@@ -1907,18 +1926,10 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
}
- public void promoteToUserDictionary(String word, int frequency) {
- if (mUserDictionary.isValidWord(word)) return;
- mUserDictionary.addWord(word, frequency);
- }
-
public WordComposer getCurrentWord() {
return mWord;
}
- public boolean getPopupOn() {
- return mSettingsValues.mPopupOn;
- }
boolean isSoundOn() {
return mSettingsValues.mSoundOn && !mSilentModeOn;
}
@@ -2026,7 +2037,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
private void showOptionsMenuInternal(CharSequence title, CharSequence[] items,
DialogInterface.OnClickListener listener) {
- final IBinder windowToken = mKeyboardSwitcher.getInputView().getWindowToken();
+ final IBinder windowToken = mKeyboardSwitcher.getKeyboardView().getWindowToken();
if (windowToken == null) return;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
@@ -2062,7 +2073,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
p.println(" TextEntryState.state=" + TextEntryState.getState());
p.println(" mSoundOn=" + mSettingsValues.mSoundOn);
p.println(" mVibrateOn=" + mSettingsValues.mVibrateOn);
- p.println(" mPopupOn=" + mSettingsValues.mPopupOn);
+ p.println(" mKeyPreviewPopupOn=" + mSettingsValues.mKeyPreviewPopupOn);
}
// Characters per second measurement
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java
index 5eb365774..956c51e06 100644
--- a/java/src/com/android/inputmethod/latin/Settings.java
+++ b/java/src/com/android/inputmethod/latin/Settings.java
@@ -56,7 +56,7 @@ public class Settings extends PreferenceActivity
public static final String PREF_GENERAL_SETTINGS_KEY = "general_settings";
public static final String PREF_VIBRATE_ON = "vibrate_on";
public static final String PREF_SOUND_ON = "sound_on";
- public static final String PREF_POPUP_ON = "popup_on";
+ public static final String PREF_KEY_PREVIEW_POPUP_ON = "popup_on";
public static final String PREF_RECORRECTION_ENABLED = "recorrection_enabled";
public static final String PREF_AUTO_CAP = "auto_cap";
public static final String PREF_SETTINGS_KEY = "settings_key";
@@ -77,6 +77,9 @@ public class Settings extends PreferenceActivity
public static final String PREF_MISC_SETTINGS_KEY = "misc_settings";
+ public static final String PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY =
+ "pref_key_preview_popup_dismiss_delay";
+
public static final String PREF_USABILITY_STUDY_MODE = "usability_study_mode";
// Dialog ids
@@ -84,7 +87,6 @@ public class Settings extends PreferenceActivity
public static class Values {
// From resources:
- public final boolean mEnableShowSubtypeSettings;
public final boolean mSwipeDownDismissKeyboardEnabled;
public final int mDelayBeforeFadeoutLanguageOnSpacebar;
public final int mDelayUpdateSuggestions;
@@ -102,7 +104,8 @@ public class Settings extends PreferenceActivity
// From preferences:
public final boolean mSoundOn; // Sound setting private to Latin IME (see mSilentModeOn)
public final boolean mVibrateOn;
- public final boolean mPopupOn; // Warning : this escapes through LatinIME#isPopupOn
+ public final boolean mKeyPreviewPopupOn;
+ public final int mKeyPreviewPopupDismissDelay;
public final boolean mAutoCap;
public final boolean mQuickFixes;
public final boolean mAutoCorrectEnabled;
@@ -117,15 +120,13 @@ public class Settings extends PreferenceActivity
final Resources res = context.getResources();
final Locale savedLocale;
if (null != localeStr) {
- final Locale keyboardLocale = new Locale(localeStr);
+ final Locale keyboardLocale = Utils.constructLocaleFromString(localeStr);
savedLocale = Utils.setSystemLocale(res, keyboardLocale);
} else {
savedLocale = null;
}
// Get the resources
- mEnableShowSubtypeSettings = res.getBoolean(
- R.bool.config_enable_show_subtype_settings);
mSwipeDownDismissKeyboardEnabled = res.getBoolean(
R.bool.config_swipe_down_dismiss_keyboard_enabled);
mDelayBeforeFadeoutLanguageOnSpacebar = res.getInteger(
@@ -161,7 +162,8 @@ public class Settings extends PreferenceActivity
mSoundOn = prefs.getBoolean(Settings.PREF_SOUND_ON,
res.getBoolean(R.bool.config_default_sound_enabled));
- mPopupOn = isPopupEnabled(prefs, res);
+ mKeyPreviewPopupOn = isKeyPreviewPopupEnabled(prefs, res);
+ mKeyPreviewPopupDismissDelay = getKeyPreviewPopupDismissDelay(prefs, res);
mAutoCap = prefs.getBoolean(Settings.PREF_AUTO_CAP, true);
mQuickFixes = isQuickFixesEnabled(prefs, res);
@@ -172,6 +174,8 @@ public class Settings extends PreferenceActivity
&& isBigramPredictionEnabled(prefs, res);
mAutoCorrectionThreshold = getAutoCorrectionThreshold(prefs, res);
+
+ Utils.setSystemLocale(res, savedLocale);
}
public boolean isSuggestedPunctuation(int code) {
@@ -200,6 +204,7 @@ public class Settings extends PreferenceActivity
return sp.getBoolean(Settings.PREF_QUICK_FIXES, resources.getBoolean(
R.bool.config_default_quick_fixes));
}
+
private static boolean isAutoCorrectEnabled(SharedPreferences sp, Resources resources) {
final String currentAutoCorrectionSetting = sp.getString(
Settings.PREF_AUTO_CORRECTION_THRESHOLD,
@@ -208,13 +213,24 @@ public class Settings extends PreferenceActivity
R.string.auto_correction_threshold_mode_index_off);
return !currentAutoCorrectionSetting.equals(autoCorrectionOff);
}
- private static boolean isPopupEnabled(SharedPreferences sp, Resources resources) {
+
+ // Public to access from KeyboardSwitcher. Should it have access to some
+ // process-global instance instead?
+ public static boolean isKeyPreviewPopupEnabled(SharedPreferences sp, Resources resources) {
final boolean showPopupOption = resources.getBoolean(
R.bool.config_enable_show_popup_on_keypress_option);
if (!showPopupOption) return resources.getBoolean(R.bool.config_default_popup_preview);
- return sp.getBoolean(Settings.PREF_POPUP_ON,
+ return sp.getBoolean(Settings.PREF_KEY_PREVIEW_POPUP_ON,
resources.getBoolean(R.bool.config_default_popup_preview));
}
+
+ // Likewise
+ public static int getKeyPreviewPopupDismissDelay(SharedPreferences sp,
+ Resources resources) {
+ return Integer.parseInt(sp.getString(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY,
+ Integer.toString(resources.getInteger(R.integer.config_delay_after_preview))));
+ }
+
private static boolean isBigramSuggestionEnabled(SharedPreferences sp, Resources resources,
boolean autoCorrectEnabled) {
final boolean showBigramSuggestionsOption = resources.getBoolean(
@@ -225,11 +241,13 @@ public class Settings extends PreferenceActivity
return sp.getBoolean(Settings.PREF_BIGRAM_SUGGESTIONS, resources.getBoolean(
R.bool.config_default_bigram_suggestions));
}
+
private static boolean isBigramPredictionEnabled(SharedPreferences sp,
Resources resources) {
return sp.getBoolean(Settings.PREF_BIGRAM_PREDICTIONS, resources.getBoolean(
R.bool.config_default_bigram_prediction));
}
+
private static double getAutoCorrectionThreshold(SharedPreferences sp,
Resources resources) {
final String currentAutoCorrectionSetting = sp.getString(
@@ -255,6 +273,7 @@ public class Settings extends PreferenceActivity
}
return autoCorrectionThreshold;
}
+
private static SuggestedWords createSuggestPuncList(final String puncs) {
SuggestedWords.Builder builder = new SuggestedWords.Builder();
if (puncs != null) {
@@ -272,6 +291,7 @@ public class Settings extends PreferenceActivity
private ListPreference mSettingsKeyPreference;
private ListPreference mShowCorrectionSuggestionsPreference;
private ListPreference mAutoCorrectionThreshold;
+ private ListPreference mKeyPreviewPopupDismissDelay;
// Suggestion: use bigrams to adjust scores of suggestions obtained from unigram dictionary
private CheckBoxPreference mBigramSuggestion;
// Prediction: use bigrams to predict the next word when there is no input for it yet
@@ -297,6 +317,8 @@ public class Settings extends PreferenceActivity
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
+ final Resources res = getResources();
+
addPreferencesFromResource(R.xml.prefs);
mInputLanguageSelection = (PreferenceScreen) findPreference(PREF_SUBTYPES);
mInputLanguageSelection.setOnPreferenceClickListener(this);
@@ -329,16 +351,14 @@ public class Settings extends PreferenceActivity
(PreferenceGroup) findPreference(PREF_GENERAL_SETTINGS_KEY);
final PreferenceGroup textCorrectionGroup =
(PreferenceGroup) findPreference(PREF_CORRECTION_SETTINGS_KEY);
- final PreferenceGroup bigramGroup =
- (PreferenceGroup) findPreference(PREF_NGRAM_SETTINGS_KEY);
- final boolean showSettingsKeyOption = getResources().getBoolean(
+ final boolean showSettingsKeyOption = res.getBoolean(
R.bool.config_enable_show_settings_key_option);
if (!showSettingsKeyOption) {
generalSettings.removePreference(mSettingsKeyPreference);
}
- final boolean showVoiceKeyOption = getResources().getBoolean(
+ final boolean showVoiceKeyOption = res.getBoolean(
R.bool.config_enable_show_voice_key_option);
if (!showVoiceKeyOption) {
generalSettings.removePreference(mVoicePreference);
@@ -348,43 +368,57 @@ public class Settings extends PreferenceActivity
generalSettings.removePreference(findPreference(PREF_VIBRATE_ON));
}
- final boolean showSubtypeSettings = getResources().getBoolean(
- R.bool.config_enable_show_subtype_settings);
- if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED
- && !showSubtypeSettings) {
+ if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) {
generalSettings.removePreference(findPreference(PREF_SUBTYPES));
}
- final boolean showPopupOption = getResources().getBoolean(
+ final boolean showPopupOption = res.getBoolean(
R.bool.config_enable_show_popup_on_keypress_option);
if (!showPopupOption) {
- generalSettings.removePreference(findPreference(PREF_POPUP_ON));
+ generalSettings.removePreference(findPreference(PREF_KEY_PREVIEW_POPUP_ON));
}
- final boolean showRecorrectionOption = getResources().getBoolean(
+ final boolean showRecorrectionOption = res.getBoolean(
R.bool.config_enable_show_recorrection_option);
if (!showRecorrectionOption) {
generalSettings.removePreference(findPreference(PREF_RECORRECTION_ENABLED));
}
- final boolean showQuickFixesOption = getResources().getBoolean(
+ final boolean showQuickFixesOption = res.getBoolean(
R.bool.config_enable_quick_fixes_option);
if (!showQuickFixesOption) {
textCorrectionGroup.removePreference(findPreference(PREF_QUICK_FIXES));
}
- final boolean showBigramSuggestionsOption = getResources().getBoolean(
+ final boolean showBigramSuggestionsOption = res.getBoolean(
R.bool.config_enable_bigram_suggestions_option);
if (!showBigramSuggestionsOption) {
textCorrectionGroup.removePreference(findPreference(PREF_BIGRAM_SUGGESTIONS));
textCorrectionGroup.removePreference(findPreference(PREF_BIGRAM_PREDICTIONS));
}
- final boolean showUsabilityModeStudyOption = getResources().getBoolean(
+ final boolean showUsabilityModeStudyOption = res.getBoolean(
R.bool.config_enable_usability_study_mode_option);
if (!showUsabilityModeStudyOption) {
getPreferenceScreen().removePreference(findPreference(PREF_USABILITY_STUDY_MODE));
}
+
+ mKeyPreviewPopupDismissDelay =
+ (ListPreference)findPreference(PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY);
+ final String[] entries = new String[] {
+ res.getString(R.string.key_preview_popup_dismiss_no_delay),
+ res.getString(R.string.key_preview_popup_dismiss_default_delay),
+ };
+ final String popupDismissDelayDefaultValue = Integer.toString(res.getInteger(
+ R.integer.config_delay_after_preview));
+ mKeyPreviewPopupDismissDelay.setEntries(entries);
+ mKeyPreviewPopupDismissDelay.setEntryValues(
+ new String[] { "0", popupDismissDelayDefaultValue });
+ if (null == mKeyPreviewPopupDismissDelay.getValue()) {
+ mKeyPreviewPopupDismissDelay.setValue(popupDismissDelayDefaultValue);
+ }
+ mKeyPreviewPopupDismissDelay.setEnabled(
+ Settings.Values.isKeyPreviewPopupEnabled(prefs, res));
}
@Override
@@ -403,6 +437,7 @@ public class Settings extends PreferenceActivity
}
updateSettingsKeySummary();
updateShowCorrectionSuggestionsSummary();
+ updateKeyPreviewPopupDelaySummary();
}
@Override
@@ -421,6 +456,12 @@ public class Settings extends PreferenceActivity
.equals(mVoiceModeOff)) {
showVoiceConfirmation();
}
+ } else if (key.equals(PREF_KEY_PREVIEW_POPUP_ON)) {
+ final ListPreference popupDismissDelay =
+ (ListPreference)findPreference(PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY);
+ if (null != popupDismissDelay) {
+ popupDismissDelay.setEnabled(prefs.getBoolean(PREF_KEY_PREVIEW_POPUP_ON, true));
+ }
}
ensureConsistencyOfAutoCorrectionSettings();
mVoiceOn = !(prefs.getString(PREF_VOICE_SETTINGS_KEY, mVoiceModeOff)
@@ -428,6 +469,7 @@ public class Settings extends PreferenceActivity
updateVoiceModeSummary();
updateSettingsKeySummary();
updateShowCorrectionSuggestionsSummary();
+ updateKeyPreviewPopupDelaySummary();
}
@Override
@@ -454,6 +496,11 @@ public class Settings extends PreferenceActivity
[mSettingsKeyPreference.findIndexOfValue(mSettingsKeyPreference.getValue())]);
}
+ private void updateKeyPreviewPopupDelaySummary() {
+ final ListPreference lp = mKeyPreviewPopupDismissDelay;
+ lp.setSummary(lp.getEntries()[lp.findIndexOfValue(lp.getValue())]);
+ }
+
private void showVoiceConfirmation() {
mOkClicked = false;
showDialog(VOICE_INPUT_CONFIRM_DIALOG);
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index d8012087b..8b51af880 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -92,10 +92,9 @@ public class SubtypeSwitcher {
}
public static void init(LatinIME service, SharedPreferences prefs) {
+ SubtypeLocale.init(service);
sInstance.initialize(service, prefs);
sInstance.updateAllParameters();
-
- SubtypeLocale.init(service);
}
private SubtypeSwitcher() {
@@ -281,14 +280,8 @@ public class SubtypeSwitcher {
// "en_US" --> language: en & country: US
// "en" --> language: en
// "" --> the system locale
- mLocaleSplitter.setString(inputLocaleStr);
- if (mLocaleSplitter.hasNext()) {
- String language = mLocaleSplitter.next();
- if (mLocaleSplitter.hasNext()) {
- mInputLocale = new Locale(language, mLocaleSplitter.next());
- } else {
- mInputLocale = new Locale(language);
- }
+ if (!TextUtils.isEmpty(inputLocaleStr)) {
+ mInputLocale = Utils.constructLocaleFromString(inputLocaleStr);
mInputLocaleStr = inputLocaleStr;
} else {
mInputLocale = mSystemLocale;
@@ -420,7 +413,7 @@ public class SubtypeSwitcher {
final KeyboardSwitcher switcher = KeyboardSwitcher.getInstance();
final LatinKeyboard keyboard = switcher.getLatinKeyboard();
if (keyboard != null) {
- keyboard.updateShortcutKey(isShortcutImeReady(), switcher.getInputView());
+ keyboard.updateShortcutKey(isShortcutImeReady(), switcher.getKeyboardView());
}
}
@@ -510,7 +503,7 @@ public class SubtypeSwitcher {
private void triggerVoiceIME() {
if (!mService.isInputViewShown()) return;
VoiceProxy.getInstance().startListening(false,
- KeyboardSwitcher.getInstance().getInputView().getWindowToken());
+ KeyboardSwitcher.getInstance().getKeyboardView().getWindowToken());
}
//////////////////////////////////////
@@ -549,12 +542,12 @@ public class SubtypeSwitcher {
|| mEnabledKeyboardSubtypesOfCurrentInputMethod.size() == 0) return;
mCurrentKeyboardSubtypeIndex = getCurrentIndex();
mNextKeyboardSubtype = getNextKeyboardSubtypeInternal(mCurrentKeyboardSubtypeIndex);
- Locale locale = new Locale(mNextKeyboardSubtype.getLocale());
- mNextLanguage = getDisplayLanguage(locale);
+ Locale locale = Utils.constructLocaleFromString(mNextKeyboardSubtype.getLocale());
+ mNextLanguage = getFullDisplayName(locale, true);
mPreviousKeyboardSubtype = getPreviousKeyboardSubtypeInternal(
mCurrentKeyboardSubtypeIndex);
- locale = new Locale(mPreviousKeyboardSubtype.getLocale());
- mPreviousLanguage = getDisplayLanguage(locale);
+ locale = Utils.constructLocaleFromString(mPreviousKeyboardSubtype.getLocale());
+ mPreviousLanguage = getFullDisplayName(locale, true);
}
private int normalize(int index) {
@@ -591,11 +584,12 @@ public class SubtypeSwitcher {
}
public static String getDisplayLanguage(Locale locale) {
- return toTitleCase(locale.getDisplayLanguage(locale));
+ return toTitleCase(SubtypeLocale.getFullDisplayName(locale));
}
public static String getMiddleDisplayLanguage(Locale locale) {
- return toTitleCase((new Locale(locale.getLanguage()).getDisplayLanguage(locale)));
+ return toTitleCase((Utils.constructLocaleFromString(
+ locale.getLanguage()).getDisplayLanguage(locale)));
}
public static String getShortDisplayLanguage(Locale locale) {
diff --git a/java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java b/java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java
new file mode 100644
index 000000000..4a3f42d5d
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java
@@ -0,0 +1,43 @@
+/*
+ * 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.latin;
+
+import com.android.inputmethod.compat.SuggestionSpanUtils;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+public class SuggestionSpanPickedNotificationReceiver extends BroadcastReceiver {
+ private static final boolean DBG = LatinImeLogger.sDBG;
+ private static final String TAG =
+ SuggestionSpanPickedNotificationReceiver.class.getSimpleName();
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (SuggestionSpanUtils.ACTION_SUGGESTION_PICKED.equals(intent.getAction())) {
+ if (DBG) {
+ final String before = intent.getStringExtra(
+ SuggestionSpanUtils.SUGGESTION_SPAN_PICKED_BEFORE);
+ final String after = intent.getStringExtra(
+ SuggestionSpanUtils.SUGGESTION_SPAN_PICKED_AFTER);
+ Log.d(TAG, "Received notification picked: " + before + "," + after);
+ }
+ }
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/UserBigramDictionary.java b/java/src/com/android/inputmethod/latin/UserBigramDictionary.java
index a32a6461a..5b615ca29 100644
--- a/java/src/com/android/inputmethod/latin/UserBigramDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserBigramDictionary.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 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
@@ -158,7 +158,7 @@ public class UserBigramDictionary extends ExpandableDictionary {
* Pair will be added to the userbigram database.
*/
public int addBigrams(String word1, String word2) {
- // remove caps
+ // remove caps if second word is autocapitalized
if (mIme != null && mIme.getCurrentWord().isAutoCapitalized()) {
word2 = Character.toLowerCase(word2.charAt(0)) + word2.substring(1);
}
diff --git a/java/src/com/android/inputmethod/latin/Utils.java b/java/src/com/android/inputmethod/latin/Utils.java
index d165de32d..6bdc0a857 100644
--- a/java/src/com/android/inputmethod/latin/Utils.java
+++ b/java/src/com/android/inputmethod/latin/Utils.java
@@ -18,6 +18,7 @@ package com.android.inputmethod.latin;
import com.android.inputmethod.compat.InputMethodInfoCompatWrapper;
import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
+import com.android.inputmethod.compat.InputMethodSubtypeCompatWrapper;
import com.android.inputmethod.compat.InputTypeCompatUtils;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardId;
@@ -43,7 +44,10 @@ import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
import java.util.Locale;
public class Utils {
@@ -108,7 +112,34 @@ public class Utils {
}
public static boolean hasMultipleEnabledIMEsOrSubtypes(InputMethodManagerCompatWrapper imm) {
- return imm.getEnabledInputMethodList().size() > 1
+ final List<InputMethodInfoCompatWrapper> enabledImis = imm.getEnabledInputMethodList();
+
+ // Filters out IMEs that have auxiliary subtypes only (including either implicitly or
+ // explicitly enabled ones).
+ final ArrayList<InputMethodInfoCompatWrapper> filteredImis =
+ new ArrayList<InputMethodInfoCompatWrapper>();
+
+ outerloop:
+ for (InputMethodInfoCompatWrapper imi : enabledImis) {
+ // We can return true immediately after we find two or more filtered IMEs.
+ if (filteredImis.size() > 1) return true;
+ final List<InputMethodSubtypeCompatWrapper> subtypes =
+ imm.getEnabledInputMethodSubtypeList(imi, true);
+ // IMEs that have no subtypes should be included.
+ if (subtypes.isEmpty()) {
+ filteredImis.add(imi);
+ continue;
+ }
+ // IMEs that have one or more non-auxiliary subtypes should be included.
+ for (InputMethodSubtypeCompatWrapper subtype : subtypes) {
+ if (!subtype.isAuxiliary()) {
+ filteredImis.add(imi);
+ continue outerloop;
+ }
+ }
+ }
+
+ return filteredImis.size() > 1
// imm.getEnabledInputMethodSubtypeList(null, false) will return the current IME's enabled
// input method subtype (The current IME should be LatinIME.)
|| imm.getEnabledInputMethodSubtypeList(null, false).size() > 1;
@@ -537,8 +568,6 @@ public class Utils {
return KeyboardId.MODE_IM;
} else if (variation == InputType.TYPE_TEXT_VARIATION_FILTER) {
return KeyboardId.MODE_TEXT;
- } else if (variation == InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT) {
- return KeyboardId.MODE_WEB;
} else {
return KeyboardId.MODE_TEXT;
}
@@ -662,4 +691,28 @@ public class Utils {
res.updateConfiguration(conf, res.getDisplayMetrics());
return saveLocale;
}
+
+ private static final HashMap<String, Locale> sLocaleCache = new HashMap<String, Locale>();
+
+ public static Locale constructLocaleFromString(String localeStr) {
+ if (localeStr == null)
+ return null;
+ synchronized (sLocaleCache) {
+ if (sLocaleCache.containsKey(localeStr))
+ return sLocaleCache.get(localeStr);
+ Locale retval = null;
+ String[] localeParams = localeStr.split("_", 3);
+ if (localeParams.length == 1) {
+ retval = new Locale(localeParams[0]);
+ } else if (localeParams.length == 2) {
+ retval = new Locale(localeParams[0], localeParams[1]);
+ } else if (localeParams.length == 3) {
+ retval = new Locale(localeParams[0], localeParams[1], localeParams[2]);
+ }
+ if (retval != null) {
+ sLocaleCache.put(localeStr, retval);
+ }
+ return retval;
+ }
+ }
}
diff --git a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java
index 2389d4e3c..4377373d2 100644
--- a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java
+++ b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java
@@ -39,6 +39,7 @@ public class WhitelistDictionary extends Dictionary {
public static WhitelistDictionary init(Context context) {
synchronized (sInstance) {
if (context != null) {
+ // Wordlist is initialized by the proper language in Suggestion.java#init
sInstance.initWordlist(
context.getResources().getStringArray(R.array.wordlist_whitelist));
} else {
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index cf0592920..af5e4b179 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -62,7 +62,7 @@ public class WordComposer {
mYCoordinates = new int[N];
}
- WordComposer(WordComposer source) {
+ public WordComposer(WordComposer source) {
init(source);
}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SpellChecker.java b/java/src/com/android/inputmethod/latin/spellcheck/SpellChecker.java
new file mode 100644
index 000000000..e3407a269
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SpellChecker.java
@@ -0,0 +1,114 @@
+/*
+ * 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.latin.spellcheck;
+
+import android.content.Context;
+import android.content.res.Resources;
+
+import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.Dictionary.DataType;
+import com.android.inputmethod.latin.Dictionary.WordCallback;
+import com.android.inputmethod.latin.DictionaryFactory;
+import com.android.inputmethod.latin.Utils;
+import com.android.inputmethod.latin.WordComposer;
+
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Implements spell checking methods.
+ */
+public class SpellChecker {
+
+ public final Dictionary mDictionary;
+
+ public SpellChecker(final Context context, final Locale locale) {
+ final Resources resources = context.getResources();
+ final int fallbackResourceId = Utils.getMainDictionaryResourceId(resources);
+ mDictionary = DictionaryFactory.createDictionaryFromManager(context, locale,
+ fallbackResourceId);
+ }
+
+ // Note : this must be reentrant
+ /**
+ * Finds out whether a word is in the dictionary or not.
+ *
+ * @param text the sequence containing the word to check for.
+ * @param start the index of the first character of the word in text.
+ * @param end the index of the next-to-last character in text.
+ * @return true if the word is in the dictionary, false otherwise.
+ */
+ public boolean isCorrect(final CharSequence text, final int start, final int end) {
+ return mDictionary.isValidWord(text.subSequence(start, end));
+ }
+
+ private static class SuggestionsGatherer implements WordCallback {
+ private final int DEFAULT_SUGGESTION_LENGTH = 16;
+ private final List<String> mSuggestions = new LinkedList<String>();
+ private int[] mScores = new int[DEFAULT_SUGGESTION_LENGTH];
+ private int mLength = 0;
+
+ synchronized public boolean addWord(char[] word, int wordOffset, int wordLength, int score,
+ int dicTypeId, DataType dataType) {
+ if (mLength >= mScores.length) {
+ final int newLength = mScores.length * 2;
+ mScores = new int[newLength];
+ }
+ final int positionIndex = Arrays.binarySearch(mScores, 0, mLength, score);
+ // binarySearch returns the index if the element exists, and -<insertion index> - 1
+ // if it doesn't. See documentation for binarySearch.
+ final int insertionIndex = positionIndex >= 0 ? positionIndex : -positionIndex - 1;
+ System.arraycopy(mScores, insertionIndex, mScores, insertionIndex + 1,
+ mLength - insertionIndex);
+ mLength += 1;
+ mScores[insertionIndex] = score;
+ mSuggestions.add(insertionIndex, new String(word, wordOffset, wordLength));
+ return true;
+ }
+
+ public List<String> getGatheredSuggestions() {
+ return mSuggestions;
+ }
+ }
+
+ // Note : this must be reentrant
+ /**
+ * Gets a list of suggestions for a specific string.
+ *
+ * This returns a list of possible corrections for the text passed as an
+ * arguments. It may split or group words, and even perform grammatical
+ * analysis.
+ *
+ * @param text the sequence containing the word to check for.
+ * @param start the index of the first character of the word in text.
+ * @param end the index of the next-to-last character in text.
+ * @return a list of possible suggestions to replace the text.
+ */
+ public List<String> getSuggestions(final CharSequence text, final int start, final int end) {
+ final SuggestionsGatherer suggestionsGatherer = new SuggestionsGatherer();
+ final WordComposer composer = new WordComposer();
+ for (int i = start; i < end; ++i) {
+ int character = text.charAt(i);
+ composer.add(character, new int[] { character },
+ WordComposer.NOT_A_COORDINATE, WordComposer.NOT_A_COORDINATE);
+ }
+ mDictionary.getWords(composer, suggestionsGatherer);
+ return suggestionsGatherer.getGatheredSuggestions();
+ }
+}
diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
index 555a522eb..4b61c1414 100644
--- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
+++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
@@ -131,7 +131,6 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jobject object,
Dictionary *dictionary = (Dictionary*)dict;
if (!dictionary) return 0;
ProximityInfo *pInfo = (ProximityInfo*)proximityInfo;
- if (!pInfo) return 0;
int *xCoordinates = env->GetIntArrayElements(xCoordinatesArray, NULL);
int *yCoordinates = env->GetIntArrayElements(yCoordinatesArray, NULL);
diff --git a/native/src/defines.h b/native/src/defines.h
index bdab19ff7..0a3240507 100644
--- a/native/src/defines.h
+++ b/native/src/defines.h
@@ -140,7 +140,7 @@ static void prof_out(void) {
// The following "rate"s are used as a multiplier before dividing by 100, so they are in percent.
#define WORDS_WITH_MISSING_CHARACTER_DEMOTION_RATE 80
#define WORDS_WITH_MISSING_CHARACTER_DEMOTION_START_POS_10X 12
-#define WORDS_WITH_MISSING_SPACE_CHARACTER_DEMOTION_RATE 80
+#define WORDS_WITH_MISSING_SPACE_CHARACTER_DEMOTION_RATE 67
#define WORDS_WITH_EXCESSIVE_CHARACTER_DEMOTION_RATE 75
#define WORDS_WITH_EXCESSIVE_CHARACTER_OUT_OF_PROXIMITY_DEMOTION_RATE 75
#define WORDS_WITH_TRANSPOSED_CHARACTERS_DEMOTION_RATE 60
diff --git a/native/src/dictionary.cpp b/native/src/dictionary.cpp
index d69cb2a53..d9ef8f3b7 100644
--- a/native/src/dictionary.cpp
+++ b/native/src/dictionary.cpp
@@ -53,7 +53,7 @@ bool Dictionary::hasBigram() {
return ((mDict[1] & 0xFF) == 1);
}
-// TODO: use uint16_t instead of unsigned short
+// TODO: use uint32_t instead of unsigned short
bool Dictionary::isValidWord(unsigned short *word, int length) {
if (IS_LATEST_DICT_VERSION) {
return (isValidWordRec(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index 20a185219..e49e95b81 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -233,7 +233,7 @@ void UnigramDictionary::getWordSuggestions(const ProximityInfo *proximityInfo,
PROF_END(5);
PROF_START(6);
- if (SUGGEST_WORDS_WITH_SPACE_PROXIMITY) {
+ if (SUGGEST_WORDS_WITH_SPACE_PROXIMITY && proximityInfo) {
// The first and last "mistyped spaces" are taken care of by excessive character handling
for (int i = 1; i < codesSize - 1; ++i) {
if (DEBUG_DICT) {
@@ -451,8 +451,8 @@ inline static void multiplyRate(const int rate, int *freq) {
}
inline static int calcFreqForSplitTwoWords(
- const int typedLetterMultiplier, const int firstWordLength,
- const int secondWordLength, const int firstFreq, const int secondFreq) {
+ const int typedLetterMultiplier, const int firstWordLength, const int secondWordLength,
+ const int firstFreq, const int secondFreq, const bool isSpaceProximity) {
if (firstWordLength == 0 || secondWordLength == 0) {
return 0;
}
@@ -492,13 +492,22 @@ inline static int calcFreqForSplitTwoWords(
const int normalizedScoreDemotionRateOffset = (100 + 100 / totalLength);
multiplyRate(normalizedScoreDemotionRateOffset, &totalFreq);
+ if (isSpaceProximity) {
+ // A word pair with one space proximity correction
+ if (DEBUG_DICT) {
+ LOGI("Found a word pair with space proximity correction.");
+ }
+ multiplyIntCapped(typedLetterMultiplier, &totalFreq);
+ multiplyRate(WORDS_WITH_PROXIMITY_CHARACTER_DEMOTION_RATE, &totalFreq);
+ }
+
multiplyRate(WORDS_WITH_MISSING_SPACE_CHARACTER_DEMOTION_RATE, &totalFreq);
return totalFreq;
}
bool UnigramDictionary::getSplitTwoWordsSuggestion(const int inputLength,
const int firstWordStartPos, const int firstWordLength, const int secondWordStartPos,
- const int secondWordLength) {
+ const int secondWordLength, const bool isSpaceProximity) {
if (inputLength >= MAX_WORD_LENGTH) return false;
if (0 >= firstWordLength || 0 >= secondWordLength || firstWordStartPos >= secondWordStartPos
|| firstWordStartPos < 0 || secondWordStartPos + secondWordLength > inputLength)
@@ -527,8 +536,8 @@ bool UnigramDictionary::getSplitTwoWordsSuggestion(const int inputLength,
word[i] = mWord[i - firstWordLength - 1];
}
- int pairFreq = calcFreqForSplitTwoWords(
- TYPED_LETTER_MULTIPLIER, firstWordLength, secondWordLength, firstFreq, secondFreq);
+ int pairFreq = calcFreqForSplitTwoWords(TYPED_LETTER_MULTIPLIER, firstWordLength,
+ secondWordLength, firstFreq, secondFreq, isSpaceProximity);
if (DEBUG_DICT) {
LOGI("Split two words: %d, %d, %d, %d, %d", firstFreq, secondFreq, pairFreq, inputLength,
TYPED_LETTER_MULTIPLIER);
@@ -539,13 +548,13 @@ bool UnigramDictionary::getSplitTwoWordsSuggestion(const int inputLength,
bool UnigramDictionary::getMissingSpaceWords(const int inputLength, const int missingSpacePos) {
return getSplitTwoWordsSuggestion(
- inputLength, 0, missingSpacePos, missingSpacePos, inputLength - missingSpacePos);
+ inputLength, 0, missingSpacePos, missingSpacePos, inputLength - missingSpacePos, false);
}
bool UnigramDictionary::getMistypedSpaceWords(const int inputLength, const int spaceProximityPos) {
return getSplitTwoWordsSuggestion(
inputLength, 0, spaceProximityPos, spaceProximityPos + 1,
- inputLength - spaceProximityPos - 1);
+ inputLength - spaceProximityPos - 1, true);
}
// Keep this for comparing spec to new getWords
diff --git a/native/src/unigram_dictionary.h b/native/src/unigram_dictionary.h
index 3d3007ce0..dd1b89042 100644
--- a/native/src/unigram_dictionary.h
+++ b/native/src/unigram_dictionary.h
@@ -66,7 +66,7 @@ private:
const int nextLettersSize);
bool getSplitTwoWordsSuggestion(const int inputLength,
const int firstWordStartPos, const int firstWordLength,
- const int secondWordStartPos, const int secondWordLength);
+ const int secondWordStartPos, const int secondWordLength, const bool isSpaceProximity);
bool getMissingSpaceWords(const int inputLength, const int missingSpacePos);
bool getMistypedSpaceWords(const int inputLength, const int spaceProximityPos);
// Keep getWordsOld for comparing performance between getWords and getWordsOld
diff --git a/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java b/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java
index d128cb3fa..d102aa4d1 100644
--- a/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java
+++ b/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java
@@ -16,6 +16,8 @@
package com.android.inputmethod.latin;
+import com.android.inputmethod.latin.Utils;
+
import android.content.Context;
import android.content.res.Resources;
import android.test.AndroidTestCase;
@@ -75,7 +77,7 @@ public class SubtypeLocaleTests extends AndroidTestCase {
int failedCount = 0;
for (final InputMethodSubtype subtype : mKeyboardSubtypes) {
final String localeCode = subtype.getLocale();
- final Locale locale = new Locale(localeCode);
+ final Locale locale = Utils.constructLocaleFromString(localeCode);
// The locale name which will be displayed on spacebar. For example 'English (US)' or
// 'Francais (Canada)'. (c=\u008d)
final String displayName = SubtypeLocale.getFullDisplayName(locale);
diff --git a/tests/src/com/android/inputmethod/latin/SuggestHelper.java b/tests/src/com/android/inputmethod/latin/SuggestHelper.java
index 8a11ff955..87ea011fa 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestHelper.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestHelper.java
@@ -36,7 +36,7 @@ public class SuggestHelper {
// Use null as the locale for Suggest so as to force it to use the internal dictionary
// (and not try to find a dictionary provider for a specified locale)
mSuggest = new Suggest(context, dictionaryId, null);
- mKeyboard = new LatinKeyboard(context, keyboardId);
+ mKeyboard = new LatinKeyboard(context, keyboardId, keyboardId.mWidth);
mKeyDetector = new KeyDetector();
init();
}
@@ -44,7 +44,7 @@ public class SuggestHelper {
protected SuggestHelper(Context context, File dictionaryPath, long startOffset, long length,
KeyboardId keyboardId) {
mSuggest = new Suggest(context, dictionaryPath, startOffset, length, null);
- mKeyboard = new LatinKeyboard(context, keyboardId);
+ mKeyboard = new LatinKeyboard(context, keyboardId, keyboardId.mWidth);
mKeyDetector = new KeyDetector();
init();
}
diff --git a/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java b/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
index 64f26743e..28766c21f 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java
@@ -38,10 +38,11 @@ public class SuggestTestsBase extends AndroidTestCase {
mTestPackageFile = new File(getTestContext().getApplicationInfo().sourceDir);
}
- protected static KeyboardId createKeyboardId(Locale locale) {
+ 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, KeyboardId.MODE_TEXT,
+ locale, Configuration.ORIENTATION_LANDSCAPE, displayWidth, KeyboardId.MODE_TEXT,
new EditorInfo(), false, false, false, false);
}