aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/res/drawable-hdpi/btn_close_candidates_pane.9.pngbin0 -> 1110 bytes
-rw-r--r--java/res/drawable-hdpi/btn_expand_candidates_pane.9.pngbin0 -> 1123 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_at_holo.9.pngbin973 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_at_large_holo.9.pngbin1013 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_colon_holo.9.pngbin515 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_colon_large_holo.9.pngbin503 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_comma_holo.9.pngbin371 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_comma_large_holo.9.pngbin394 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_exclamation_holo.9.pngbin518 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.pngbin540 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num0.9.pngbin379 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num1.9.pngbin301 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num2.9.pngbin404 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num3.9.pngbin413 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num4.9.pngbin341 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num5.9.pngbin388 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num6.9.pngbin413 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num7.9.pngbin367 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num8.9.pngbin417 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_num9.9.pngbin417 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_plus_holo.9.pngbin501 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_plus_large_holo.9.pngbin540 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_question_holo.9.pngbin679 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_question_large_holo.9.pngbin712 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_quote_holo.9.pngbin404 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_quote_large_holo.9.pngbin423 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_underline_holo.9.pngbin337 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/key_hint_underline_large_holo.9.pngbin350 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_at_holo.9.pngbin973 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_at_large_holo.9.pngbin1013 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_colon_holo.9.pngbin515 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.pngbin503 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_comma_holo.9.pngbin371 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.pngbin394 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.pngbin518 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.pngbin540 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_plus_holo.9.pngbin501 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.pngbin540 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_question_holo.9.pngbin679 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_question_large_holo.9.pngbin712 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_quote_holo.9.pngbin404 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.pngbin423 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_underline_holo.9.pngbin337 -> 0 bytes
-rw-r--r--java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.pngbin350 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_at_holo.9.pngbin481 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_at_large_holo.9.pngbin497 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_colon_holo.9.pngbin266 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.pngbin285 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_comma_holo.9.pngbin246 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.pngbin248 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.pngbin305 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.pngbin312 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_plus_holo.9.pngbin277 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.pngbin303 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_question_holo.9.pngbin368 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_question_large_holo.9.pngbin383 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_quote_holo.9.pngbin264 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.pngbin268 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_underline_holo.9.pngbin196 -> 0 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.pngbin199 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_at_holo.9.pngbin1048 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_at_large_holo.9.pngbin1101 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_colon_holo.9.pngbin586 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_colon_large_holo.9.pngbin573 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_comma_holo.9.pngbin411 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_comma_large_holo.9.pngbin430 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_exclamation_holo.9.pngbin559 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_exclamation_large_holo.9.pngbin588 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_plus_holo.9.pngbin595 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_plus_large_holo.9.pngbin630 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_question_holo.9.pngbin739 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_question_large_holo.9.pngbin776 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_quote_holo.9.pngbin438 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_quote_large_holo.9.pngbin459 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_underline_holo.9.pngbin368 -> 0 bytes
-rw-r--r--java/res/drawable-land-xhdpi/key_hint_underline_large_holo.9.pngbin389 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/btn_close_candidates_pane.9.pngbin0 -> 713 bytes
-rw-r--r--java/res/drawable-mdpi/btn_expand_candidates_pane.9.pngbin0 -> 681 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_at_holo.9.pngbin481 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_at_large_holo.9.pngbin497 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_colon_holo.9.pngbin266 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_colon_large_holo.9.pngbin285 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_comma_holo.9.pngbin246 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_comma_large_holo.9.pngbin248 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_exclamation_holo.9.pngbin305 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.pngbin312 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num0.9.pngbin307 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num1.9.pngbin302 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num2.9.pngbin334 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num3.9.pngbin327 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num4.9.pngbin329 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num5.9.pngbin334 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num6.9.pngbin329 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num7.9.pngbin334 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num8.9.pngbin332 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_num9.9.pngbin339 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_plus_holo.9.pngbin277 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_plus_large_holo.9.pngbin303 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_question_holo.9.pngbin368 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_question_large_holo.9.pngbin383 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_quote_holo.9.pngbin264 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_quote_large_holo.9.pngbin268 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_underline_holo.9.pngbin196 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_underline_large_holo.9.pngbin199 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_at_holo.9.pngbin481 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_at_large_holo.9.pngbin497 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_colon_holo.9.pngbin266 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_colon_large_holo.9.pngbin285 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_comma_holo.9.pngbin246 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_comma_large_holo.9.pngbin248 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_exclamation_holo.9.pngbin305 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_exclamation_large_holo.9.pngbin312 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_plus_holo.9.pngbin277 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_plus_large_holo.9.pngbin303 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_question_holo.9.pngbin368 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_question_large_holo.9.pngbin383 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_quote_holo.9.pngbin264 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_quote_large_holo.9.pngbin268 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_underline_holo.9.pngbin196 -> 0 bytes
-rw-r--r--java/res/drawable-sw600dp-mdpi/key_hint_underline_large_holo.9.pngbin199 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_at_holo.9.pngbin1621 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_at_large_holo.9.pngbin1651 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_colon_holo.9.pngbin1279 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_colon_large_holo.9.pngbin1318 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_comma_holo.9.pngbin1216 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_comma_large_holo.9.pngbin1226 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_holo.9.pngbin1317 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_large_holo.9.pngbin1338 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_plus_holo.9.pngbin1275 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_plus_large_holo.9.pngbin1328 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_question_holo.9.pngbin1433 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_question_large_holo.9.pngbin1473 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_quote_holo.9.pngbin1238 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_quote_large_holo.9.pngbin1249 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_underline_holo.9.pngbin1140 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-land-mdpi/key_hint_underline_large_holo.9.pngbin1154 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_at_holo.9.pngbin481 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_at_large_holo.9.pngbin497 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_colon_holo.9.pngbin266 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_colon_large_holo.9.pngbin285 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_comma_holo.9.pngbin246 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_comma_large_holo.9.pngbin248 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_exclamation_holo.9.pngbin305 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_exclamation_large_holo.9.pngbin312 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_plus_holo.9.pngbin277 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_plus_large_holo.9.pngbin303 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_question_holo.9.pngbin368 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_question_large_holo.9.pngbin383 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_quote_holo.9.pngbin264 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_quote_large_holo.9.pngbin268 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_underline_holo.9.pngbin196 -> 0 bytes
-rw-r--r--java/res/drawable-sw768dp-mdpi/key_hint_underline_large_holo.9.pngbin199 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_at_holo.9.pngbin1048 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_at_large_holo.9.pngbin1101 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_colon_holo.9.pngbin586 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_colon_large_holo.9.pngbin573 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_comma_holo.9.pngbin411 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_comma_large_holo.9.pngbin430 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_exclamation_holo.9.pngbin559 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_exclamation_large_holo.9.pngbin588 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_plus_holo.9.pngbin595 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_plus_large_holo.9.pngbin630 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_question_holo.9.pngbin739 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_question_large_holo.9.pngbin776 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_quote_holo.9.pngbin438 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_quote_large_holo.9.pngbin459 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_underline_holo.9.pngbin368 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/key_hint_underline_large_holo.9.pngbin389 -> 0 bytes
-rw-r--r--java/res/layout/candidates_strip.xml59
-rw-r--r--java/res/layout/input_view.xml44
-rw-r--r--java/res/values-land/dimens.xml4
-rw-r--r--java/res/values-sw600dp-land/dimens.xml7
-rw-r--r--java/res/values-sw600dp/config.xml1
-rw-r--r--java/res/values-sw600dp/dimens.xml8
-rw-r--r--java/res/values-sw768dp-land/dimens.xml6
-rw-r--r--java/res/values-sw768dp/config.xml1
-rw-r--r--java/res/values-sw768dp/dimens.xml7
-rw-r--r--java/res/values/attrs.xml86
-rw-r--r--java/res/values/colors.xml3
-rw-r--r--java/res/values/config.xml1
-rw-r--r--java/res/values/dimens.xml4
-rw-r--r--java/res/values/styles.xml78
-rw-r--r--java/res/values/themes.xml22
-rw-r--r--java/res/xml-ar/kbd_qwerty.xml10
-rw-r--r--java/res/xml-cs/kbd_qwerty.xml10
-rw-r--r--java/res/xml-da/kbd_qwerty.xml10
-rw-r--r--java/res/xml-de/kbd_qwerty.xml10
-rw-r--r--java/res/xml-en/kbd_qwerty.xml37
-rw-r--r--java/res/xml-es/kbd_qwerty.xml10
-rw-r--r--java/res/xml-fi/kbd_qwerty.xml10
-rw-r--r--java/res/xml-fr-rCA/kbd_qwerty.xml10
-rw-r--r--java/res/xml-fr-rCH/kbd_qwerty.xml10
-rw-r--r--java/res/xml-fr/kbd_qwerty.xml10
-rw-r--r--java/res/xml-hu/kbd_qwerty.xml10
-rw-r--r--java/res/xml-iw/kbd_qwerty.xml10
-rw-r--r--java/res/xml-nb/kbd_qwerty.xml10
-rw-r--r--java/res/xml-pl/kbd_qwerty.xml10
-rw-r--r--java/res/xml-pt/kbd_qwerty.xml10
-rw-r--r--java/res/xml-ru/kbd_qwerty.xml10
-rw-r--r--java/res/xml-sr/kbd_qwerty.xml10
-rw-r--r--java/res/xml-sv/kbd_qwerty.xml10
-rw-r--r--java/res/xml-sw600dp/kbd_key_styles.xml11
-rw-r--r--java/res/xml-sw600dp/kbd_number.xml7
-rw-r--r--java/res/xml-sw600dp/kbd_phone.xml25
-rw-r--r--java/res/xml-sw600dp/kbd_phone_symbols.xml28
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty.xml34
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty_row3.xml10
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty_row4.xml35
-rw-r--r--java/res/xml-sw600dp/kbd_row3_right.xml10
-rw-r--r--java/res/xml-sw600dp/kbd_rows_arabic.xml134
-rw-r--r--java/res/xml-sw600dp/kbd_rows_azerty.xml (renamed from java/res/xml-sw600dp/kbd_azerty_rows.xml)17
-rw-r--r--java/res/xml-sw600dp/kbd_rows_hebrew.xml122
-rw-r--r--java/res/xml-sw600dp/kbd_rows_qwerty.xml (renamed from java/res/xml-sw600dp/kbd_qwerty_rows.xml)0
-rw-r--r--java/res/xml-sw600dp/kbd_rows_qwertz.xml (renamed from java/res/xml-sw600dp/kbd_qwertz_rows.xml)10
-rw-r--r--java/res/xml-sw600dp/kbd_rows_russian.xml (renamed from java/res/xml-sw600dp/kbd_ru_rows.xml)5
-rw-r--r--java/res/xml-sw600dp/kbd_rows_scandinavian.xml (renamed from java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.xml)62
-rw-r--r--java/res/xml-sw600dp/kbd_rows_serbian.xml (renamed from java/res/xml-sw600dp/kbd_sr_rows.xml)10
-rw-r--r--java/res/xml-sw600dp/kbd_symbols.xml7
-rw-r--r--java/res/xml-sw600dp/kbd_symbols_shift.xml7
-rw-r--r--java/res/xml-sw768dp/kbd_key_styles.xml7
-rw-r--r--java/res/xml-sw768dp/kbd_number.xml8
-rw-r--r--java/res/xml-sw768dp/kbd_phone.xml32
-rw-r--r--java/res/xml-sw768dp/kbd_phone_symbols.xml35
-rw-r--r--java/res/xml-sw768dp/kbd_qwerty_row4.xml25
-rw-r--r--java/res/xml-sw768dp/kbd_row3_right2.xml10
-rw-r--r--java/res/xml-sw768dp/kbd_rows_arabic.xml (renamed from java/res/xml-sw768dp/kbd_ar_rows.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_rows_azerty.xml (renamed from java/res/xml-sw768dp/kbd_azerty_rows.xml)15
-rw-r--r--java/res/xml-sw768dp/kbd_rows_hebrew.xml (renamed from java/res/xml-sw768dp/kbd_iw_rows.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_rows_qwerty.xml (renamed from java/res/xml-sw768dp/kbd_qwerty_rows.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_rows_qwertz.xml (renamed from java/res/xml-sw768dp/kbd_qwertz_rows.xml)10
-rw-r--r--java/res/xml-sw768dp/kbd_rows_russian.xml (renamed from java/res/xml-sw768dp/kbd_ru_rows.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_rows_scandinavian.xml (renamed from java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_rows_serbian.xml (renamed from java/res/xml-sw768dp/kbd_sr_rows.xml)0
-rw-r--r--java/res/xml-sw768dp/kbd_symbols.xml8
-rw-r--r--java/res/xml-sw768dp/kbd_symbols_shift.xml8
-rw-r--r--java/res/xml/kbd_key_styles.xml4
-rw-r--r--java/res/xml/kbd_number.xml8
-rw-r--r--java/res/xml/kbd_phone.xml8
-rw-r--r--java/res/xml/kbd_phone_symbols.xml8
-rw-r--r--java/res/xml/kbd_qwerty.xml10
-rw-r--r--java/res/xml/kbd_qwerty_f1.xml2
-rw-r--r--java/res/xml/kbd_qwerty_row1.xml20
-rw-r--r--java/res/xml/kbd_qwerty_row4.xml10
-rw-r--r--java/res/xml/kbd_rows_arabic.xml (renamed from java/res/xml/kbd_ar_rows.xml)0
-rw-r--r--java/res/xml/kbd_rows_azerty.xml (renamed from java/res/xml/kbd_azerty_rows.xml)20
-rw-r--r--java/res/xml/kbd_rows_hebrew.xml (renamed from java/res/xml/kbd_iw_rows.xml)0
-rw-r--r--java/res/xml/kbd_rows_qwerty.xml (renamed from java/res/xml/kbd_qwerty_rows.xml)0
-rw-r--r--java/res/xml/kbd_rows_qwertz.xml (renamed from java/res/xml/kbd_qwertz_rows.xml)20
-rw-r--r--java/res/xml/kbd_rows_russian.xml (renamed from java/res/xml/kbd_ru_rows.xml)20
-rw-r--r--java/res/xml/kbd_rows_scandinavian.xml (renamed from java/res/xml/kbd_qwerty_rows_scandinavia.xml)20
-rw-r--r--java/res/xml/kbd_rows_serbian.xml (renamed from java/res/xml/kbd_sr_rows.xml)20
-rw-r--r--java/res/xml/kbd_symbols.xml8
-rw-r--r--java/res/xml/kbd_symbols_row4.xml2
-rw-r--r--java/res/xml/kbd_symbols_shift.xml8
-rw-r--r--java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java37
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyStyles.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java12
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardId.java12
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardParser.java30
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java10
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java145
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboard.java54
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java16
-rw-r--r--java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java22
-rw-r--r--java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java39
-rw-r--r--java/src/com/android/inputmethod/latin/CandidateView.java232
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryCollection.java4
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java4
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java2
-rw-r--r--native/src/bigram_dictionary.cpp3
-rw-r--r--native/src/dictionary.cpp41
-rw-r--r--native/src/dictionary.h4
-rw-r--r--native/src/unigram_dictionary.cpp97
-rw-r--r--native/src/unigram_dictionary.h20
275 files changed, 1269 insertions, 937 deletions
diff --git a/java/res/drawable-hdpi/btn_close_candidates_pane.9.png b/java/res/drawable-hdpi/btn_close_candidates_pane.9.png
new file mode 100644
index 000000000..6df00f229
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_close_candidates_pane.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_expand_candidates_pane.9.png b/java/res/drawable-hdpi/btn_expand_candidates_pane.9.png
new file mode 100644
index 000000000..63015ec5b
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_expand_candidates_pane.9.png
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
deleted file mode 100644
index b93c2d3cf..000000000
--- a/java/res/drawable-hdpi/key_hint_at_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 2b9295158..000000000
--- a/java/res/drawable-hdpi/key_hint_at_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 8fa17e583..000000000
--- a/java/res/drawable-hdpi/key_hint_colon_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1271341e6..000000000
--- a/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 44220ec96..000000000
--- a/java/res/drawable-hdpi/key_hint_comma_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 444b4d029..000000000
--- a/java/res/drawable-hdpi/key_hint_comma_large_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
deleted file mode 100644
index d5e688400..000000000
--- a/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 5dab2f646..000000000
--- a/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num0.9.png b/java/res/drawable-hdpi/key_hint_num0.9.png
deleted file mode 100644
index 271264e92..000000000
--- a/java/res/drawable-hdpi/key_hint_num0.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num1.9.png b/java/res/drawable-hdpi/key_hint_num1.9.png
deleted file mode 100644
index eaf374262..000000000
--- a/java/res/drawable-hdpi/key_hint_num1.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num2.9.png b/java/res/drawable-hdpi/key_hint_num2.9.png
deleted file mode 100644
index 8a1657117..000000000
--- a/java/res/drawable-hdpi/key_hint_num2.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num3.9.png b/java/res/drawable-hdpi/key_hint_num3.9.png
deleted file mode 100644
index 34b501109..000000000
--- a/java/res/drawable-hdpi/key_hint_num3.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num4.9.png b/java/res/drawable-hdpi/key_hint_num4.9.png
deleted file mode 100644
index d4cc250dd..000000000
--- a/java/res/drawable-hdpi/key_hint_num4.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num5.9.png b/java/res/drawable-hdpi/key_hint_num5.9.png
deleted file mode 100644
index 6a054b42f..000000000
--- a/java/res/drawable-hdpi/key_hint_num5.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num6.9.png b/java/res/drawable-hdpi/key_hint_num6.9.png
deleted file mode 100644
index 66e91400a..000000000
--- a/java/res/drawable-hdpi/key_hint_num6.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num7.9.png b/java/res/drawable-hdpi/key_hint_num7.9.png
deleted file mode 100644
index 5eae24f4f..000000000
--- a/java/res/drawable-hdpi/key_hint_num7.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num8.9.png b/java/res/drawable-hdpi/key_hint_num8.9.png
deleted file mode 100644
index ea7f512fd..000000000
--- a/java/res/drawable-hdpi/key_hint_num8.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/key_hint_num9.9.png b/java/res/drawable-hdpi/key_hint_num9.9.png
deleted file mode 100644
index 0bf85de93..000000000
--- a/java/res/drawable-hdpi/key_hint_num9.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
deleted file mode 100644
index a11b4ac07..000000000
--- a/java/res/drawable-hdpi/key_hint_plus_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 3c87c1f7e..000000000
--- a/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 670b4b902..000000000
--- a/java/res/drawable-hdpi/key_hint_question_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 692f4a68b..000000000
--- a/java/res/drawable-hdpi/key_hint_question_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 9cc86156e..000000000
--- a/java/res/drawable-hdpi/key_hint_quote_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 664467b3e..000000000
--- a/java/res/drawable-hdpi/key_hint_quote_large_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
deleted file mode 100644
index 2cb4077a7..000000000
--- a/java/res/drawable-hdpi/key_hint_underline_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 6b9a49170..000000000
--- a/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index b93c2d3cf..000000000
--- a/java/res/drawable-land-hdpi/key_hint_at_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 2b9295158..000000000
--- a/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 8fa17e583..000000000
--- a/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1271341e6..000000000
--- a/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 44220ec96..000000000
--- a/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 444b4d029..000000000
--- a/java/res/drawable-land-hdpi/key_hint_comma_large_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
deleted file mode 100644
index d5e688400..000000000
--- a/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 5dab2f646..000000000
--- a/java/res/drawable-land-hdpi/key_hint_exclamation_large_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
deleted file mode 100644
index a11b4ac07..000000000
--- a/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 3c87c1f7e..000000000
--- a/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 670b4b902..000000000
--- a/java/res/drawable-land-hdpi/key_hint_question_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 692f4a68b..000000000
--- a/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 9cc86156e..000000000
--- a/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 664467b3e..000000000
--- a/java/res/drawable-land-hdpi/key_hint_quote_large_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
deleted file mode 100644
index 2cb4077a7..000000000
--- a/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 6b9a49170..000000000
--- a/java/res/drawable-land-hdpi/key_hint_underline_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
deleted file mode 100644
index 8c84654c9..000000000
--- a/java/res/drawable-land-mdpi/key_hint_at_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index b9e095b99..000000000
--- a/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 3cd0e3c4b..000000000
--- a/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 01b47b25f..000000000
--- a/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index b70f71b55..000000000
--- a/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1ae82d404..000000000
--- a/java/res/drawable-land-mdpi/key_hint_comma_large_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
deleted file mode 100644
index 3409535fb..000000000
--- a/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 8dd2f27c4..000000000
--- a/java/res/drawable-land-mdpi/key_hint_exclamation_large_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
deleted file mode 100644
index 51e86ba11..000000000
--- a/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index bf30f92d8..000000000
--- a/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 38b5d6102..000000000
--- a/java/res/drawable-land-mdpi/key_hint_question_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 448a02700..000000000
--- a/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 92fe8eaf8..000000000
--- a/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index a777d0187..000000000
--- a/java/res/drawable-land-mdpi/key_hint_quote_large_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
deleted file mode 100644
index 7a452c5e2..000000000
--- a/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index f738b0202..000000000
--- a/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1d257cba2..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_at_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 53de283da..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_at_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 73394b57b..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_colon_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index a4a6acbe1..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index d4dbdf4bf..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_comma_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index aea5c8ed5..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 078d1d8f7..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index ddd6b13cb..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index d0ce9c948..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_plus_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 9cf20e8b1..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1e886d897..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_question_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 826228796..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_question_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index fd8bbad83..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_quote_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 51d5b498c..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 37d2fa58e..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_underline_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 4249a8edf..000000000
--- a/java/res/drawable-land-xhdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_close_candidates_pane.9.png b/java/res/drawable-mdpi/btn_close_candidates_pane.9.png
new file mode 100644
index 000000000..5ea56925d
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_close_candidates_pane.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_expand_candidates_pane.9.png b/java/res/drawable-mdpi/btn_expand_candidates_pane.9.png
new file mode 100644
index 000000000..83cb65305
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_expand_candidates_pane.9.png
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
deleted file mode 100644
index 8c84654c9..000000000
--- a/java/res/drawable-mdpi/key_hint_at_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index b9e095b99..000000000
--- a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 3cd0e3c4b..000000000
--- a/java/res/drawable-mdpi/key_hint_colon_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 01b47b25f..000000000
--- a/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index b70f71b55..000000000
--- a/java/res/drawable-mdpi/key_hint_comma_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1ae82d404..000000000
--- a/java/res/drawable-mdpi/key_hint_comma_large_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
deleted file mode 100644
index 3409535fb..000000000
--- a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 8dd2f27c4..000000000
--- a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num0.9.png b/java/res/drawable-mdpi/key_hint_num0.9.png
deleted file mode 100644
index 61ad1b50a..000000000
--- a/java/res/drawable-mdpi/key_hint_num0.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num1.9.png b/java/res/drawable-mdpi/key_hint_num1.9.png
deleted file mode 100644
index cd7772e71..000000000
--- a/java/res/drawable-mdpi/key_hint_num1.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num2.9.png b/java/res/drawable-mdpi/key_hint_num2.9.png
deleted file mode 100644
index fa5f8b79c..000000000
--- a/java/res/drawable-mdpi/key_hint_num2.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num3.9.png b/java/res/drawable-mdpi/key_hint_num3.9.png
deleted file mode 100644
index 0c7336cb7..000000000
--- a/java/res/drawable-mdpi/key_hint_num3.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num4.9.png b/java/res/drawable-mdpi/key_hint_num4.9.png
deleted file mode 100644
index 73ef06c0e..000000000
--- a/java/res/drawable-mdpi/key_hint_num4.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num5.9.png b/java/res/drawable-mdpi/key_hint_num5.9.png
deleted file mode 100644
index aea460e1c..000000000
--- a/java/res/drawable-mdpi/key_hint_num5.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num6.9.png b/java/res/drawable-mdpi/key_hint_num6.9.png
deleted file mode 100644
index 16a9237e3..000000000
--- a/java/res/drawable-mdpi/key_hint_num6.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num7.9.png b/java/res/drawable-mdpi/key_hint_num7.9.png
deleted file mode 100644
index 6747a19c0..000000000
--- a/java/res/drawable-mdpi/key_hint_num7.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num8.9.png b/java/res/drawable-mdpi/key_hint_num8.9.png
deleted file mode 100644
index 28be2fb86..000000000
--- a/java/res/drawable-mdpi/key_hint_num8.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_num9.9.png b/java/res/drawable-mdpi/key_hint_num9.9.png
deleted file mode 100644
index 731d63b1b..000000000
--- a/java/res/drawable-mdpi/key_hint_num9.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
deleted file mode 100644
index 51e86ba11..000000000
--- a/java/res/drawable-mdpi/key_hint_plus_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index bf30f92d8..000000000
--- a/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 38b5d6102..000000000
--- a/java/res/drawable-mdpi/key_hint_question_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 448a02700..000000000
--- a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 92fe8eaf8..000000000
--- a/java/res/drawable-mdpi/key_hint_quote_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index a777d0187..000000000
--- a/java/res/drawable-mdpi/key_hint_quote_large_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
deleted file mode 100644
index 7a452c5e2..000000000
--- a/java/res/drawable-mdpi/key_hint_underline_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index f738b0202..000000000
--- a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 8c84654c9..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_at_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index b9e095b99..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_at_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 3cd0e3c4b..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_colon_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 01b47b25f..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index b70f71b55..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_comma_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1ae82d404..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 3409535fb..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 8dd2f27c4..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 51e86ba11..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_plus_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index bf30f92d8..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 38b5d6102..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_question_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 448a02700..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_question_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 92fe8eaf8..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_quote_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index a777d0187..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 7a452c5e2..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_underline_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index f738b0202..000000000
--- a/java/res/drawable-sw600dp-mdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 5b946ff9b..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_at_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 852f899ed..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_at_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1d9346e6f..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 17e9091b4..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_holo.9.png
deleted file mode 100644
index c2a913c04..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_large_holo.9.png
deleted file mode 100644
index 846f213f1..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index ce8e8de43..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 035dcf85d..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 931390b45..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index e6f9f8a9c..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 6cbeb5993..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_question_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index bfd58de09..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_question_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_holo.9.png
deleted file mode 100644
index 3b361b71c..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 2a08aa12e..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_holo.9.png
deleted file mode 100644
index 06f3efb7e..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_large_holo.9.png
deleted file mode 100644
index 50f99a191..000000000
--- a/java/res/drawable-sw768dp-land-mdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 8c84654c9..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_at_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index b9e095b99..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_at_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 3cd0e3c4b..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_colon_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 01b47b25f..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index b70f71b55..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_comma_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1ae82d404..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 3409535fb..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 8dd2f27c4..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 51e86ba11..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_plus_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index bf30f92d8..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 38b5d6102..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_question_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 448a02700..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_question_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 92fe8eaf8..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_quote_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index a777d0187..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 7a452c5e2..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_underline_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index f738b0202..000000000
--- a/java/res/drawable-sw768dp-mdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1d257cba2..000000000
--- a/java/res/drawable-xhdpi/key_hint_at_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 53de283da..000000000
--- a/java/res/drawable-xhdpi/key_hint_at_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 73394b57b..000000000
--- a/java/res/drawable-xhdpi/key_hint_colon_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index a4a6acbe1..000000000
--- a/java/res/drawable-xhdpi/key_hint_colon_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index d4dbdf4bf..000000000
--- a/java/res/drawable-xhdpi/key_hint_comma_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index aea5c8ed5..000000000
--- a/java/res/drawable-xhdpi/key_hint_comma_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 078d1d8f7..000000000
--- a/java/res/drawable-xhdpi/key_hint_exclamation_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index ddd6b13cb..000000000
--- a/java/res/drawable-xhdpi/key_hint_exclamation_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index d0ce9c948..000000000
--- a/java/res/drawable-xhdpi/key_hint_plus_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 9cf20e8b1..000000000
--- a/java/res/drawable-xhdpi/key_hint_plus_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 1e886d897..000000000
--- a/java/res/drawable-xhdpi/key_hint_question_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 826228796..000000000
--- a/java/res/drawable-xhdpi/key_hint_question_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index fd8bbad83..000000000
--- a/java/res/drawable-xhdpi/key_hint_quote_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 51d5b498c..000000000
--- a/java/res/drawable-xhdpi/key_hint_quote_large_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 37d2fa58e..000000000
--- a/java/res/drawable-xhdpi/key_hint_underline_holo.9.png
+++ /dev/null
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
deleted file mode 100644
index 4249a8edf..000000000
--- a/java/res/drawable-xhdpi/key_hint_underline_large_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/layout/candidates_strip.xml b/java/res/layout/candidates_strip.xml
new file mode 100644
index 000000000..88f4c3830
--- /dev/null
+++ b/java/res/layout/candidates_strip.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:android="http://schemas.android.com/apk/res/android"
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ android:id="@+id/candidate_left"
+ layout="@layout/candidate" />
+ <include
+ layout="@layout/candidate_divider" />
+ <include
+ android:id="@+id/candidate_center"
+ layout="@layout/candidate" />
+ <include
+ layout="@layout/candidate_divider" />
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_weight="1.0"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical"
+ >
+ <include
+ android:id="@+id/candidate_right"
+ layout="@layout/candidate" />
+ <!-- Image drawables are set in CandidateView constructor -->
+ <ImageButton
+ android:id="@+id/expand_candidates_pane"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ style="?attr/suggestionsStripBackgroundStyle" />
+ <ImageButton
+ android:id="@+id/close_candidates_pane"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ style="?attr/suggestionsStripBackgroundStyle" />
+ </LinearLayout>
+</merge>
diff --git a/java/res/layout/input_view.xml b/java/res/layout/input_view.xml
index 5da1a4826..f0a8ef956 100644
--- a/java/res/layout/input_view.xml
+++ b/java/res/layout/input_view.xml
@@ -32,32 +32,46 @@
android:id="@+id/candidates_container"
android:orientation="horizontal"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- style="?attr/suggestionsStripBackgroundStyle"
+ android:layout_height="@dimen/candidate_strip_minimum_height"
+ android:gravity="bottom"
>
<View
android:layout_width="@dimen/candidate_strip_padding"
android:layout_height="@dimen/candidate_strip_height"
style="?attr/suggestionsStripBackgroundStyle" />
- <HorizontalScrollView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:fadingEdge="horizontal"
- android:fadingEdgeLength="@dimen/candidate_strip_fading_edge_length"
- android:scrollbars="none"
- >
- <com.android.inputmethod.latin.CandidateView
- android:id="@+id/candidates"
- android:layout_width="match_parent"
- android:layout_height="@dimen/candidate_strip_height"
- android:gravity="center_vertical" />
- </HorizontalScrollView>
+ <com.android.inputmethod.latin.CandidateView
+ android:id="@+id/candidates"
+ android:layout_weight="1.0"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/candidate_strip_height"
+ android:gravity="center_vertical" />
<View
android:layout_width="@dimen/candidate_strip_padding"
android:layout_height="@dimen/candidate_strip_height"
style="?attr/suggestionsStripBackgroundStyle" />
</LinearLayout>
+ <LinearLayout
+ android:id="@+id/candidates_pane_container"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ style="?attr/suggestionsStripBackgroundStyle"
+ >
+ <View
+ android:layout_width="@dimen/candidate_strip_padding"
+ android:layout_height="@dimen/candidate_strip_height" />
+ <FrameLayout
+ android:id="@+id/candidates_pane"
+ android:layout_weight="1.0"
+ android:layout_width="0dp"
+ android:layout_height="match_parent" />
+ <View
+ android:layout_width="@dimen/candidate_strip_padding"
+ android:layout_height="@dimen/candidate_strip_height" />
+ </LinearLayout>
+
<com.android.inputmethod.keyboard.LatinKeyboardView
android:id="@+id/keyboard_view"
android:layout_alignParentBottom="true"
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index 6b52ad4e1..7fc1571b2 100644
--- a/java/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
@@ -30,7 +30,9 @@
<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>
+ <fraction name="key_label_ratio">35%</fraction>
+ <fraction name="key_hint_letter_ratio">28%</fraction>
+ <fraction name="key_uppercase_letter_ratio">40%</fraction>
<dimen name="key_preview_offset">0.08in</dimen>
<fraction name="key_preview_text_ratio">90%</fraction>
<dimen name="candidate_strip_height">38dip</dimen>
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index 618b7f44c..a7167af76 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -21,6 +21,7 @@
<resources>
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
<dimen name="keyboardHeight">45.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">1.3mm</dimen>
@@ -31,8 +32,10 @@
<!-- 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>
+ <fraction name="key_letter_ratio">45%</fraction>
+ <fraction name="key_label_ratio">32%</fraction>
+ <fraction name="key_hint_letter_ratio">23%</fraction>
+ <fraction name="key_uppercase_letter_ratio">29%</fraction>
<!-- left or right padding of label alignment -->
<dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
<dimen name="candidate_strip_padding">40.0mm</dimen>
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml
index c3d34456e..6125270a3 100644
--- a/java/res/values-sw600dp/config.xml
+++ b/java/res/values-sw600dp/config.xml
@@ -26,7 +26,6 @@
<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>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 7cdf72726..8ecf542eb 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -22,7 +22,7 @@
<!-- 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>
+ <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">1.0mm</dimen>
@@ -39,8 +39,10 @@
<!-- 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_letter_ratio">37%</fraction>
+ <fraction name="key_label_ratio">22%</fraction>
+ <fraction name="key_hint_letter_ratio">23%</fraction>
+ <fraction name="key_uppercase_letter_ratio">25%</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>
diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index ce3614516..73885c2af 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -31,8 +31,10 @@
<dimen name="keyboard_bottom_padding">0.0mm</dimen>
<dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
- <fraction name="key_letter_ratio">30.7%</fraction>
- <fraction name="key_label_text_ratio">21.9%</fraction>
+ <fraction name="key_letter_ratio">38%</fraction>
+ <fraction name="key_label_ratio">26%</fraction>
+ <fraction name="key_hint_letter_ratio">23%</fraction>
+ <fraction name="key_uppercase_letter_ratio">24%</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-sw768dp/config.xml b/java/res/values-sw768dp/config.xml
index 663332fe1..95d5e7e63 100644
--- a/java/res/values-sw768dp/config.xml
+++ b/java/res/values-sw768dp/config.xml
@@ -26,7 +26,6 @@
<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>
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index cb380fbe4..d8d133264 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -21,6 +21,7 @@
<resources>
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=12mm -->
<dimen name="keyboardHeight">48.0mm</dimen>
+ <fraction name="maxKeyboardHeight">50%p</fraction>
<fraction name="minKeyboardHeight">-35.0%p</fraction>
<!-- key_height + key_bottom_gap = popup_key_height -->
<!-- <dimen name="key_height">14.5mm</dimen> -->
@@ -38,8 +39,10 @@
<!-- popup_key_height x -1.0 -->
<dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
- <fraction name="key_letter_ratio">34.4%</fraction>
- <fraction name="key_label_text_ratio">21.2%</fraction>
+ <fraction name="key_letter_ratio">38%</fraction>
+ <fraction name="key_label_ratio">26%</fraction>
+ <fraction name="key_hint_letter_ratio">23%</fraction>
+ <fraction name="key_uppercase_letter_ratio">25%</fraction>
<!-- left or right padding of label alignment -->
<dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
<fraction name="key_preview_text_ratio">26.3%</fraction>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 5557dde1e..73f62c6f1 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -16,6 +16,10 @@
<resources>
<declare-styleable name="KeyboardTheme">
+ <!-- Keyboard style -->
+ <attr name="keyboardStyle" format="reference" />
+ <!-- LatinKeyboard style -->
+ <attr name="latinKeyboardStyle" format="reference" />
<!-- KeyboardView style -->
<attr name="keyboardViewStyle" format="reference" />
<attr name="keyPreviewStyle" format="reference" />
@@ -26,6 +30,7 @@
<attr name="suggestionsStripBackgroundStyle" format="reference" />
<attr name="suggestionBackgroundStyle" format="reference" />
<attr name="suggestionPreviewBackgroundStyle" format="reference" />
+ <attr name="candidateViewStyle" format="reference" />
</declare-styleable>
<declare-styleable name="KeyboardView">
@@ -34,19 +39,27 @@
checkable+checked+pressed. -->
<attr name="keyBackground" format="reference" />
- <!-- Size of the text for one letter character keys, in the proportion of key height.
- -->
+ <!-- Size of the text for one letter 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, in the proportion of key
- height. -->
- <attr name="labelTextRatio" format="float" />
+ <!-- Size of the text for keys with some text, in the proportion of key height. -->
+ <attr name="keyLabelRatio" format="float" />
+ <!-- Size of the text for hint letter, in the proportion of key height. -->
+ <attr name="keyHintLetterRatio" format="float" />
+ <!-- Size of the text for upper case letter, in the proportion of key height. -->
+ <attr name="keyUppercaseLetterRatio" format="float" />
<!-- Color to use for the label in a key. -->
<attr name="keyTextColor" format="color" />
+ <!-- Color to use for the label in a key when in inactivated state. -->
+ <attr name="keyTextInactivatedColor" format="color" />
+ <!-- Key hint letter color -->
+ <attr name="keyHintLetterColor" format="color" />
+ <!-- Upper case letter colors -->
+ <attr name="keyUppercaseLetterInactivatedColor" format="color" />
+ <attr name="keyUppercaseLetterActivatedColor" format="color" />
- <!-- Color to use for the label in a key when in disabled state. -->
- <attr name="keyTextColorDisabled" format="color" />
+ <!-- Popup hint icon "..." -->
+ <attr name="keyPopupHintIcon" format="reference" />
<!-- Layout resource for key press feedback.-->
<attr name="keyPreviewLayout" format="reference" />
@@ -70,7 +83,7 @@
<attr name="shadowRadius" format="float" />
<attr name="backgroundDimAmount" format="float" />
- <attr name="keyLetterStyle" format="enum">
+ <attr name="keyTextStyle" format="enum">
<!-- This should be aligned with Typeface.NORMAL etc. -->
<enum name="normal" value="0" />
<enum name="bold" value="1" />
@@ -86,6 +99,19 @@
</declare-styleable>
+ <declare-styleable name="CandidateView">
+ <attr name="autoCorrectHighlight" format="integer">
+ <flag name="autoCorrectBold" value="0x01" />
+ <flag name="autoCorrectUnderline" value="0x02" />
+ <flag name="autoCorrectInvert" value="0x04" />
+ </attr>
+ <attr name="colorTypedWord" format="color" />
+ <attr name="colorAutoCorrect" format="color" />
+ <attr name="colorSuggested" format="color" />
+ <attr name="iconExpandPane" format="reference" />
+ <attr name="iconClosePane" format="reference" />
+ </declare-styleable>
+
<declare-styleable name="Keyboard">
<!-- Default keyboard height -->
<attr name="keyboardHeight" format="dimension" />
@@ -143,23 +169,20 @@
<attr name="keyOutputText" format="string" />
<!-- The label to display on the key. -->
<attr name="keyLabel" format="string" />
- <!-- The key label option -->
+ <!-- The hint letter to display on the key in conjunction with the label. -->
+ <attr name="keyHintLetter" format="string" />
+ <!-- The key label option. -->
<attr name="keyLabelOption" format="integer">
- <!-- This should be aligned with KeyboardView.KEY_LABEL_OPTION_* -->
- <flag name="alignLeft" value="1" />
- <flag name="alignRight" value="2" />
- <flag name="alignBottom" value="8" />
- <flag name="fontNormal" value="16" />
+ <!-- This should be aligned with Key.LABEL_OPTION_* -->
+ <flag name="alignLeft" value="0x01" />
+ <flag name="alignRight" value="0x02" />
+ <flag name="alignBottom" value="0x08" />
+ <flag name="fontNormal" value="0x10" />
+ <flag name="popupHint" value="0x20" />
+ <flag name="hasUppercaseLetter" value="0x40" />
</attr>
- <!-- The unicode that this key generates in manual temporary upper case mode. -->
- <attr name="manualTemporaryUpperCaseCode" format="integer" />
<!-- The icon to display on the key instead of the label. -->
<attr name="keyIcon" format="reference" />
- <!-- The hint icon to display on the key in conjunction with the label -->
- <attr name="keyHintIcon" format="reference" />
- <!-- The hint icon to display on the key when keyboard is in manual temporary upper case
- mode. -->
- <attr name="manualTemporaryUpperCaseHintIcon" format="reference" />
<!-- The key style to specify a set of key attributes defined by <key_style/> -->
<attr name="keyStyle" format="string" />
<!-- Shift key icon for shifted state -->
@@ -198,11 +221,11 @@
<enum name="phone" value="4" />
<enum name="number" value="5" />
</attr>
- <attr name="webInput" format="boolean" />
+ <attr name="navigateAction" format="boolean" />
<attr name="passwordInput" format="boolean" />
- <attr name="hasSettingsKey" format="string" />
- <attr name="voiceKeyEnabled" format="string" />
- <attr name="hasVoiceKey" format="string" />
+ <attr name="hasSettingsKey" format="boolean" />
+ <attr name="voiceKeyEnabled" format="boolean" />
+ <attr name="hasVoiceKey" format="boolean" />
<attr name="imeAction" format="enum">
<!-- This should be aligned with EditorInfo.IME_ACTION_* -->
<enum name="actionUnspecified" value="0" />
@@ -223,4 +246,15 @@
<attr name="styleName" format="string" />
<attr name="parentStyle" format="string" />
</declare-styleable>
+
+ <declare-styleable name="LatinKeyboard">
+ <attr name="autoCorrectionSpacebarLedIcon" format="reference" />
+ <attr name="disabledShortcutIcon" format="reference" />
+ <attr name="spacebarTextColor" format="color" />
+ <attr name="spacebarTextShadowColor" format="color" />
+ <attr name="spacebarArrowLeftIcon" format="reference" />
+ <attr name="spacebarArrowRightIcon" format="reference" />
+ <attr name="spacebarArrowPreviewLeftIcon" format="reference" />
+ <attr name="spacebarArrowPreviewRightIcon" format="reference" />
+ </declare-styleable>
</resources>
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 05d137e4b..d78691864 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -18,9 +18,6 @@
*/
-->
<resources>
- <color name="candidate_typed_word">#FFFFFFFF</color>
- <color name="candidate_auto_correct">#FFFCAE00</color>
- <color name="candidate_suggested">#FFFCAE00</color>
<color name="latinkeyboard_bar_language_shadow_white">#80000000</color>
<color name="latinkeyboard_bar_language_shadow_black">#80FFFFFF</color>
<color name="latinkeyboard_bar_language_text">#FFC0C0C0</color>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index c61a6d52a..a08e2ae33 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -27,7 +27,6 @@
<bool name="config_enable_quick_fixes_option">true</bool>
<bool name="config_enable_bigram_suggestions_option">true</bool>
<bool name="config_enable_usability_study_mode_option">false</bool>
- <bool name="config_candidate_highlight_font_color_enabled">true</bool>
<bool name="config_swipe_down_dismiss_keyboard_enabled">true</bool>
<bool name="config_sliding_key_input_enabled">true</bool>
<bool name="config_digit_popup_characters_enabled">true</bool>
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index e26cad3f2..a76c78a4c 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -44,7 +44,9 @@
<dimen name="keyboard_vertical_correction">-0.05in</dimen>
<fraction name="key_letter_ratio">45%</fraction>
- <fraction name="key_label_text_ratio">29%</fraction>
+ <fraction name="key_label_ratio">29%</fraction>
+ <fraction name="key_hint_letter_ratio">23%</fraction>
+ <fraction name="key_uppercase_letter_ratio">35%</fraction>
<!-- left or right padding of label alignment -->
<dimen name="key_label_horizontal_alignment_padding">21dip</dimen>
<dimen name="key_preview_height">80sp</dimen>
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 7cb4593fa..e3ee36116 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -16,17 +16,43 @@
<resources>
<!-- Theme "Basic" -->
+ <style name="Keyboard">
+ <item name="rowHeight">25%p</item>
+ <item name="keyboardHeight">@dimen/keyboardHeight</item>
+ <item name="maxKeyboardHeight">@fraction/maxKeyboardHeight</item>
+ <item name="minKeyboardHeight">@fraction/minKeyboardHeight</item>
+ <item name="popupKeyboardTemplate">@xml/kbd_popup_template</item>
+ <item name="horizontalGap">@dimen/key_horizontal_gap</item>
+ <item name="verticalGap">@dimen/key_bottom_gap</item>
+ <item name="maxPopupKeyboardColumn">@integer/config_max_popup_keyboard_column</item>
+ </style>
+ <style name="LatinKeyboard">
+ <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
+ <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
+ <item name="spacebarTextColor">@color/latinkeyboard_bar_language_text</item>
+ <item name="spacebarTextShadowColor">@color/latinkeyboard_bar_language_shadow_white</item>
+ <item name="spacebarArrowLeftIcon">@drawable/sym_keyboard_language_arrows_left</item>
+ <item name="spacebarArrowRightIcon">@drawable/sym_keyboard_language_arrows_right</item>
+ <item name="spacebarArrowPreviewLeftIcon">@drawable/sym_keyboard_feedback_language_arrows_left</item>
+ <item name="spacebarArrowPreviewRightIcon">@drawable/sym_keyboard_feedback_language_arrows_right</item>
+ </style>
<style name="KeyboardView">
<item name="android:background">@drawable/keyboard_background</item>
<item name="keyBackground">@drawable/btn_keyboard_key</item>
<item name="keyLetterRatio">@fraction/key_letter_ratio</item>
- <item name="keyLetterStyle">normal</item>
+ <item name="keyLabelRatio">@fraction/key_label_ratio</item>
+ <item name="keyHintLetterRatio">@fraction/key_hint_letter_ratio</item>
+ <item name="keyUppercaseLetterRatio">@fraction/key_uppercase_letter_ratio</item>
+ <item name="keyTextStyle">normal</item>
<item name="keyTextColor">#FFFFFFFF</item>
- <item name="keyTextColorDisabled">#FFFFFFFF</item>
+ <item name="keyTextInactivatedColor">#FFFFFFFF</item>
+ <item name="keyHintLetterColor">#80000000</item>
+ <item name="keyUppercaseLetterInactivatedColor">#66E0E4E5</item>
+ <item name="keyUppercaseLetterActivatedColor">#CCE0E4E5</item>
+ <item name="keyPopupHintIcon">@drawable/hint_popup</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="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>
@@ -57,16 +83,28 @@
<style name="SuggestionPreviewBackgroundStyle">
<item name="android:background">@drawable/candidate_feedback_background</item>
</style>
+ <style name="CandidateViewStyle" parent="SuggestionsStripBackgroundStyle">
+ <item name="colorTypedWord">#FFFFFFFF</item>
+ <item name="colorAutoCorrect">#FFFCAE00</item>
+ <item name="colorSuggested">#FFFCAE00</item>
+ <item name="iconExpandPane">@drawable/btn_expand_candidates_pane</item>
+ <item name="iconClosePane">@drawable/btn_close_candidates_pane</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="LatinKeyboard.Stone" patent="LatinKeyboard">
+ <item name="spacebarTextColor">#FF444444</item>
+ <item name="spacebarTextShadowColor">@color/latinkeyboard_bar_language_shadow_black</item>
+ <item name="disabledShortcutIcon">@drawable/sym_bkeyboard_voice_off</item>
+ </style>
<style name="KeyboardView.Stone" parent="KeyboardView">
<item name="keyBackground">@drawable/btn_keyboard_key_stone</item>
<item name="keyTextColor">@color/latinkeyboard_key_color_black</item>
- <item name="keyTextColorDisabled">#FF808080</item>
+ <item name="keyTextInactivatedColor">#FF808080</item>
<item name="shadowColor">@color/latinkeyboard_key_color_white</item>
<item name="colorScheme">black</item>
</style>
@@ -77,25 +115,35 @@
</style>
<!-- Theme "Stone bold" -->
<style name="KeyboardView.Stone.Bold" parent="KeyboardView.Stone">
- <item name="keyLetterStyle">bold</item>
+ <item name="keyTextStyle">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>
+ <item name="keyTextStyle">bold</item>
</style>
<style name="PopupMiniKeyboardView.Gingerbread" parent="PopupMiniKeyboardView">
<item name="android:background">@null</item>
</style>
<!-- Theme "Honeycomb" -->
+ <style name="Keyboard.Honeycomb" parent="Keyboard" >
+ </style>
+ <style name="LatinKeyboard.Honeycomb" parent="LatinKeyboard">
+ <item name="autoCorrectionSpacebarLedIcon">@null</item>
+ <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
+ </style>
<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="keyTextStyle">bold</item>
+ <item name="keyTextInactivatedColor">#66E0E4E5</item>
+ <item name="keyHintLetterColor">#80000000</item>
+ <item name="keyUppercaseLetterInactivatedColor">#66E0E4E5</item>
+ <item name="keyUppercaseLetterActivatedColor">#FFFFFFFF</item>
+ <item name="keyPopupHintIcon">@drawable/hint_popup_holo</item>
<item name="keyPreviewHeight">@dimen/key_preview_height_holo</item>
<item name="keyPreviewOffset">@dimen/key_preview_offset_holo</item>
- <item name="keyTextColorDisabled">#FF63666D</item>
- <item name="keyLetterStyle">bold</item>
<item name="shadowColor">#00000000</item>
<item name="shadowRadius">0.0</item>
</style>
@@ -111,15 +159,23 @@
<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">
+ <style name="SuggestionsStripBackgroundStyle.Honeycomb">
<item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
</style>
- <style name="SuggestionBackgroundStyle.Holo">
+ <style name="SuggestionBackgroundStyle.Honeycomb">
<item name="android:background">@drawable/btn_candidate_holo</item>
</style>
- <style name="SuggestionPreviewBackgroundStyle.Holo">
+ <style name="SuggestionPreviewBackgroundStyle.Honeycomb">
<item name="android:background">@drawable/keyboard_popup_panel_background_holo</item>
</style>
+ <style name="CandidateViewStyle.Honeycomb" parent="SuggestionsStripBackgroundStyle.Honeycomb">
+ <item name="autoCorrectHighlight">autoCorrectUnderline|autoCorrectInvert</item>
+ <item name="colorTypedWord">#FFFFFFFF</item>
+ <item name="colorAutoCorrect">#FFFFFFFF</item>
+ <item name="colorSuggested">#FFFFFFFF</item>
+ <item name="iconExpandPane">@drawable/btn_expand_candidates_pane</item>
+ <item name="iconClosePane">@drawable/btn_close_candidates_pane</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
index 5315a9a90..728ce5a02 100644
--- a/java/res/values/themes.xml
+++ b/java/res/values/themes.xml
@@ -16,6 +16,8 @@
<resources>
<style name="KeyboardTheme" parent="android:Theme">
+ <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
<item name="keyboardViewStyle">@style/KeyboardView</item>
<item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
<item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
@@ -23,45 +25,61 @@
<item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
<item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item>
<item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item>
+ <item name="candidateViewStyle">@style/CandidateViewStyle</item>
</style>
<style name="KeyboardTheme.HighContrast" parent="android:Theme">
+ <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
<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>
+ <item name="candidateViewStyle">@style/CandidateViewStyle</item>
</style>
<style name="KeyboardTheme.Stone" parent="android:Theme.Light">
+ <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
<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>
+ <item name="candidateViewStyle">@style/CandidateViewStyle</item>
</style>
<style name="KeyboardTheme.Stone.Bold" parent="android:Theme.Light">
+ <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
<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>
+ <item name="candidateViewStyle">@style/CandidateViewStyle</item>
</style>
<style name="KeyboardTheme.Gingerbread" parent="android:Theme.Black">
+ <item name="keyboardStyle">@style/Keyboard</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
<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>
+ <item name="candidateViewStyle">@style/CandidateViewStyle</item>
</style>
<style name="KeyboardTheme.Honeycomb" parent="android:Theme.Holo">
+ <item name="keyboardStyle">@style/Keyboard.Honeycomb</item>
+ <item name="latinKeyboardStyle">@style/LatinKeyboard.Honeycomb</item>
<item name="keyboardViewStyle">@style/KeyboardView.Honeycomb</item>
<item name="keyPreviewStyle">@style/KeyPreviewStyle.Honeycomb</item>
<item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Honeycomb</item>
<item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle.Honeycomb</item>
- <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.Holo</item>
- <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.Holo</item>
+ <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.Honeycomb</item>
+ <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.Honeycomb</item>
+ <item name="candidateViewStyle">@style/CandidateViewStyle.Honeycomb</item>
</style>
</resources>
diff --git a/java/res/xml-ar/kbd_qwerty.xml b/java/res/xml-ar/kbd_qwerty.xml
index 57823c9ac..57a6d2caf 100644
--- a/java/res/xml-ar/kbd_qwerty.xml
+++ b/java/res/xml-ar/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="ar"
>
<include
- latin:keyboardLayout="@xml/kbd_ar_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_arabic" />
</Keyboard>
diff --git a/java/res/xml-cs/kbd_qwerty.xml b/java/res/xml-cs/kbd_qwerty.xml
index 9ead49c3b..9991ea2d2 100644
--- a/java/res/xml-cs/kbd_qwerty.xml
+++ b/java/res/xml-cs/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="cs"
>
<include
- latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwertz" />
</Keyboard>
diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml
index 12ea33c13..37a50fdfd 100644
--- a/java/res/xml-da/kbd_qwerty.xml
+++ b/java/res/xml-da/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="da"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+ latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
</Keyboard>
diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml
index 5c51bbdae..89e10b26d 100644
--- a/java/res/xml-de/kbd_qwerty.xml
+++ b/java/res/xml-de/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="de"
>
<include
- latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwertz" />
</Keyboard>
diff --git a/java/res/xml-en/kbd_qwerty.xml b/java/res/xml-en/kbd_qwerty.xml
deleted file mode 100644
index 33e24d373..000000000
--- a/java/res/xml-en/kbd_qwerty.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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
index f98649177..3973a6a5a 100644
--- a/java/res/xml-es/kbd_qwerty.xml
+++ b/java/res/xml-es/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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" />
+ latin:keyboardLayout="@xml/kbd_rows_qwerty" />
</Keyboard>
diff --git a/java/res/xml-fi/kbd_qwerty.xml b/java/res/xml-fi/kbd_qwerty.xml
index e35ab2b41..75721e057 100644
--- a/java/res/xml-fi/kbd_qwerty.xml
+++ b/java/res/xml-fi/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="fi"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+ latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
</Keyboard>
diff --git a/java/res/xml-fr-rCA/kbd_qwerty.xml b/java/res/xml-fr-rCA/kbd_qwerty.xml
index 7f25848e2..7bdfbadf1 100644
--- a/java/res/xml-fr-rCA/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCA/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="fr_CA"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwerty" />
</Keyboard>
diff --git a/java/res/xml-fr-rCH/kbd_qwerty.xml b/java/res/xml-fr-rCH/kbd_qwerty.xml
index 2baed3ce5..41b701d83 100644
--- a/java/res/xml-fr-rCH/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCH/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="fr_CH"
>
<include
- latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwertz" />
</Keyboard>
diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml
index 1b1065516..8c730a24f 100644
--- a/java/res/xml-fr/kbd_qwerty.xml
+++ b/java/res/xml-fr/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="fr"
>
<include
- latin:keyboardLayout="@xml/kbd_azerty_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_azerty" />
</Keyboard>
diff --git a/java/res/xml-hu/kbd_qwerty.xml b/java/res/xml-hu/kbd_qwerty.xml
index 250b4553f..3195d5b1f 100644
--- a/java/res/xml-hu/kbd_qwerty.xml
+++ b/java/res/xml-hu/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="hu"
>
<include
- latin:keyboardLayout="@xml/kbd_qwertz_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwertz" />
</Keyboard>
diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml
index e93927f1a..dc2c5d35a 100644
--- a/java/res/xml-iw/kbd_qwerty.xml
+++ b/java/res/xml-iw/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="iw"
>
<include
- latin:keyboardLayout="@xml/kbd_iw_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_hebrew" />
</Keyboard>
diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml
index e7a743ca9..1f4e86e89 100644
--- a/java/res/xml-nb/kbd_qwerty.xml
+++ b/java/res/xml-nb/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="nb"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+ latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
</Keyboard>
diff --git a/java/res/xml-pl/kbd_qwerty.xml b/java/res/xml-pl/kbd_qwerty.xml
index 7d9476d7b..44312c52c 100644
--- a/java/res/xml-pl/kbd_qwerty.xml
+++ b/java/res/xml-pl/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="pl"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwerty" />
</Keyboard>
diff --git a/java/res/xml-pt/kbd_qwerty.xml b/java/res/xml-pt/kbd_qwerty.xml
index 1a8995510..f5dcbc61b 100644
--- a/java/res/xml-pt/kbd_qwerty.xml
+++ b/java/res/xml-pt/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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" />
+ latin:keyboardLayout="@xml/kbd_rows_qwerty" />
</Keyboard>
diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml
index 826818c46..aee1b1bfc 100644
--- a/java/res/xml-ru/kbd_qwerty.xml
+++ b/java/res/xml-ru/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="ru"
>
<include
- latin:keyboardLayout="@xml/kbd_ru_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_russian" />
</Keyboard>
diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml
index 6116c7536..58fc187c2 100644
--- a/java/res/xml-sr/kbd_qwerty.xml
+++ b/java/res/xml-sr/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="sr"
>
<include
- latin:keyboardLayout="@xml/kbd_sr_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_serbian" />
</Keyboard>
diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml
index 69f0b3fa0..e29d9abce 100644
--- a/java/res/xml-sv/kbd_qwerty.xml
+++ b/java/res/xml-sv/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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="sv"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
+ latin:keyboardLayout="@xml/kbd_rows_scandinavian" />
</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index a98ffe679..a38887910 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -75,7 +75,7 @@
latin:styleName="smileyKeyStyle"
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
- latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_smiley"
latin:maxPopupKeyboardColumn="5" />
<switch>
@@ -87,7 +87,7 @@
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:keyLabelOption="popupHint"
latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
latin:parentStyle="functionalKeyStyle" />
</case>
@@ -137,7 +137,7 @@
latin:styleName="smileyKeyStyle"
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
- latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_smiley"
latin:maxPopupKeyboardColumn="5" />
<switch>
@@ -149,7 +149,7 @@
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:keyLabelOption="popupHint"
latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
latin:parentStyle="functionalKeyStyle" />
</case>
@@ -192,9 +192,8 @@
<key-style
latin:styleName="comKeyStyle"
latin:keyLabel="@string/keylabel_for_popular_domain"
- latin:keyLabelOption="fontNormal"
+ latin:keyLabelOption="fontNormal|popupHint"
latin:keyOutputText="@string/keylabel_for_popular_domain"
- latin:keyHintIcon="@drawable/hint_popup_holo"
latin:popupCharacters="@string/alternates_for_popular_domain" />
<switch>
<case
diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml
index f9096fc2c..0ff1da9bc 100644
--- a/java/res/xml-sw600dp/kbd_number.xml
+++ b/java/res/xml-sw600dp/kbd_number.xml
@@ -20,14 +20,7 @@
<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" />
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index b20bb243f..20b284923 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -20,14 +20,7 @@
<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" />
@@ -36,13 +29,11 @@
<!-- This row is intentionally not marked as a top row -->
<Row>
<Key
- latin:code="45"
- latin:keyLabel=" - "
+ latin:keyLabel="-"
latin:keyXPos="15.625%p"
latin:keyWidth="9.25%p" />
<Key
- latin:code="43"
- latin:keyLabel=" + "
+ latin:keyLabel="+"
latin:keyWidth="9.25%p" />
<Key
latin:keyStyle="num1KeyStyle"
@@ -59,13 +50,11 @@
</Row>
<Row>
<Key
- latin:code="44"
- latin:keyLabel=" , "
+ latin:keyLabel=","
latin:keyXPos="15.625%p"
latin:keyWidth="9.25%p" />
<Key
- latin:code="46"
- latin:keyLabel=" . "
+ latin:keyLabel="."
latin:keyWidth="9.25%p" />
<Key
latin:keyStyle="num4KeyStyle"
@@ -88,13 +77,11 @@
<!-- 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:keyLabel="("
latin:keyXPos="15.625%p"
latin:keyWidth="9.25%p" />
<Key
- latin:code="41"
- latin:keyLabel=" ) "
+ latin:keyLabel=")"
latin:keyWidth="9.25%p" />
<Key
latin:keyStyle="num7KeyStyle"
diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml
index 7f6267341..a5ae9456c 100644
--- a/java/res/xml-sw600dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -20,14 +20,7 @@
<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" />
@@ -36,13 +29,11 @@
<!-- This row is intentionally not marked as a top row -->
<Row>
<Key
- latin:code="45"
- latin:keyLabel=" - "
+ latin:keyLabel="-"
latin:keyXPos="11.00%p"
latin:keyWidth="9.25%p" />
<Key
- latin:code="43"
- latin:keyLabel=" + "
+ latin:keyLabel="+"
latin:keyWidth="9.25%p" />
<Key
latin:code="44"
@@ -63,13 +54,11 @@
</Row>
<Row>
<Key
- latin:code="44"
- latin:keyLabel=" , "
+ latin:keyLabel=","
latin:keyXPos="11.00%p"
latin:keyWidth="9.25%p" />
<Key
- latin:code="46"
- latin:keyLabel=" . "
+ latin:keyLabel="."
latin:keyWidth="9.25%p" />
<Key
latin:code="59"
@@ -96,16 +85,13 @@
<!-- 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:keyLabel="("
latin:keyWidth="9.25%p" />
<Key
- latin:code="41"
- latin:keyLabel=" ) "
+ latin:keyLabel=")"
latin:keyWidth="9.25%p" />
<Key
- latin:code="78"
- latin:keyLabel=" N "
+ latin:keyLabel="N"
latin:keyWidth="9.25%p" />
<Key
latin:keyStyle="num7KeyStyle"
diff --git a/java/res/xml-sw600dp/kbd_qwerty.xml b/java/res/xml-sw600dp/kbd_qwerty.xml
deleted file mode 100644
index 9541e13fd..000000000
--- a/java/res/xml-sw600dp/kbd_qwerty.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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_row3.xml b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
index 4118ee197..0dbc5cf66 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
@@ -58,15 +58,13 @@
<default>
<Key
latin:keyLabel=","
- latin:manualTemporaryUpperCaseCode="33"
- latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="!"
latin:popupCharacters="!" />
<Key
latin:keyLabel="."
- latin:manualTemporaryUpperCaseCode="63"
- latin:keyHintIcon="@drawable/key_hint_question_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\?"
latin:popupCharacters="\?" />
</default>
</switch>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
index 3e5492e3d..49e377fa7 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
@@ -48,9 +48,8 @@
<default>
<Key
latin:keyLabel="/"
- latin:manualTemporaryUpperCaseCode="64"
- latin:keyHintIcon="@drawable/key_hint_at_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\@"
latin:popupCharacters="\@" />
</default>
</switch>
@@ -75,18 +74,16 @@
>
<Key
latin:keyLabel="/"
- latin:manualTemporaryUpperCaseCode="58"
- latin:keyHintIcon="@drawable/key_hint_colon_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter=":"
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:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="_"
latin:popupCharacters="_"
latin:keyWidth="9.750%p" />
</default>
@@ -102,9 +99,8 @@
<default>
<Key
latin:keyLabel="!"
- latin:manualTemporaryUpperCaseCode="39"
- latin:keyHintIcon="@drawable/key_hint_quote_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\'"
latin:popupCharacters="\'"
latin:keyWidth="9.750%p" />
</default>
@@ -125,18 +121,16 @@
>
<Key
latin:keyLabel="/"
- latin:manualTemporaryUpperCaseCode="58"
- latin:keyHintIcon="@drawable/key_hint_colon_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter=":"
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:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="&quot;"
latin:popupCharacters="&quot;"
latin:keyWidth="9.750%p" />
</default>
@@ -152,9 +146,8 @@
<default>
<Key
latin:keyLabel="-"
- latin:manualTemporaryUpperCaseCode="95"
- latin:keyHintIcon="@drawable/key_hint_underline_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="_"
latin:popupCharacters="_"
latin:keyWidth="9.750%p" />
</default>
diff --git a/java/res/xml-sw600dp/kbd_row3_right.xml b/java/res/xml-sw600dp/kbd_row3_right.xml
index 6f7d40bda..a9c5eb371 100644
--- a/java/res/xml-sw600dp/kbd_row3_right.xml
+++ b/java/res/xml-sw600dp/kbd_row3_right.xml
@@ -36,9 +36,8 @@
>
<Key
latin:keyLabel="-"
- latin:manualTemporaryUpperCaseCode="95"
- latin:keyHintIcon="@drawable/key_hint_underline_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="_"
latin:popupCharacters="_"
latin:keyXPos="-8.9%p"
latin:keyWidth="fillBoth"
@@ -49,9 +48,8 @@
>
<Key
latin:keyLabel=":"
- latin:manualTemporaryUpperCaseCode="43"
- latin:keyHintIcon="@drawable/key_hint_plus_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="+"
latin:popupCharacters="+"
latin:keyXPos="-8.9%p"
latin:keyWidth="fillBoth"
diff --git a/java/res/xml-sw600dp/kbd_rows_arabic.xml b/java/res/xml-sw600dp/kbd_rows_arabic.xml
new file mode 100644
index 000000000..bc37d5a9f
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_rows_arabic.xml
@@ -0,0 +1,134 @@
+<?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.
+*/
+-->
+
+<!-- This file for Arabic layout is an alpha version. It allows to enter -->
+<!-- some right-to-left text, but it has gone through no study whatsoever, -->
+<!-- and needs to be run through UX. -->
+<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"
+ >
+ <Key
+ latin:keyLabel="ض"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="ص" />
+ <Key
+ latin:keyLabel="ث" />
+ <Key
+ latin:keyLabel="ق" />
+ <Key
+ latin:keyLabel="ف"
+ latin:popupCharacters="ف,ڤ" />
+ <Key
+ latin:keyLabel="غ" />
+ <Key
+ latin:keyLabel="ع" />
+ <Key
+ latin:keyLabel="ه"
+ latin:popupCharacters="ه,هـ" />
+ <Key
+ latin:keyLabel="خ" />
+ <Key
+ latin:keyLabel="ح" />
+ <Key
+ latin:keyLabel="ج"
+ latin:popupCharacters="ج,چ" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyXPos="-10.0%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="8.0%p"
+ >
+ <Key
+ latin:keyLabel="ش"
+ latin:keyXPos="3.0%p" />
+ <Key
+ latin:keyLabel="س" />
+ <Key
+ latin:keyLabel="ي" />
+ <Key
+ latin:keyLabel="ب"
+ latin:popupCharacters="ب,پ" />
+ <Key
+ latin:keyLabel="ل"
+ latin:popupCharacters="ل,لا" />
+ <Key
+ latin:keyLabel="ا"
+ latin:popupCharacters="ا,أ,إ,آ" />
+ <Key
+ latin:keyLabel="ت" />
+ <Key
+ latin:keyLabel="ن" />
+ <Key
+ latin:keyLabel="م" />
+ <Key
+ latin:keyLabel="ك"
+ latin:popupCharacters="ك,گ" />
+ <Key
+ latin:keyLabel="ط" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-14.6%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="7.65%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="ز"
+ latin:popupCharacters="ز,ژ" />
+ <Key
+ latin:keyLabel="ظ" />
+ <Key
+ latin:keyLabel="د" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right" />
+ </Row>
+ <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_azerty_rows.xml b/java/res/xml-sw600dp/kbd_rows_azerty.xml
index 99c56e4cf..4df45eb34 100644
--- a/java/res/xml-sw600dp/kbd_azerty_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_azerty.xml
@@ -24,7 +24,7 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="9.0%p"
+ latin:keyWidth="8.5%p"
latin:rowEdgeFlags="top"
>
<Key
@@ -65,11 +65,12 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="9.0%p"
+ latin:keyWidth="8.5%p"
>
<Key
latin:keyLabel="q"
latin:popupCharacters="@string/alternates_for_q"
+ latin:keyXPos="5.0%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="s"
@@ -101,7 +102,7 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.9%p"
+ latin:keyWidth="8.5%p"
>
<Key
latin:keyStyle="shiftKeyStyle"
@@ -137,15 +138,13 @@
<default>
<Key
latin:keyLabel=","
- latin:manualTemporaryUpperCaseCode="33"
- latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="!"
latin:popupCharacters="!" />
<Key
latin:keyLabel="."
- latin:manualTemporaryUpperCaseCode="63"
- latin:keyHintIcon="@drawable/key_hint_question_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\?"
latin:popupCharacters="\?" />
</default>
</switch>
diff --git a/java/res/xml-sw600dp/kbd_rows_hebrew.xml b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
new file mode 100644
index 000000000..a1475376b
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
@@ -0,0 +1,122 @@
+<?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.600%p"
+ latin:rowEdgeFlags="top"
+ >
+ <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="-12.000%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="8.600%p"
+ >
+ <Key
+ latin:keyLabel="ש"
+ latin:keyXPos="4.000%p" />
+ <Key
+ latin:keyLabel="ד" />
+ <Key
+ latin:keyLabel="ג"
+ latin:popupCharacters="ג,ג׳" />
+ <Key
+ latin:keyLabel="כ" />
+ <Key
+ latin:keyLabel="ע" />
+ <Key
+ latin:keyLabel="י"
+ latin:popupCharacters="י,ײַ" />
+ <Key
+ latin:keyLabel="ח"
+ latin:popupCharacters="ח,ח׳" />
+ <Key
+ latin:keyLabel="ל" />
+ <Key
+ latin:keyLabel="ך" />
+ <Key
+ latin:keyLabel="ף" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-10.400%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
+ </Row>
+ <Row
+ latin:keyWidth="8.600%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.000%p"
+ latin:keyEdgeFlags="left" />
+ <Key
+ latin:keyLabel="ז"
+ latin:popupCharacters="ז,ז׳" />
+ <Key
+ latin:keyLabel="ס" />
+ <Key
+ latin:keyLabel="ב" />
+ <Key
+ latin:keyLabel="ה" />
+ <Key
+ latin:keyLabel="נ" />
+ <Key
+ latin:keyLabel="מ" />
+ <Key
+ latin:keyLabel="צ"
+ latin:popupCharacters="צ,צ׳" />
+ <Key
+ latin:keyLabel="ת"
+ latin:popupCharacters="ת,ת׳" />
+ <Key
+ latin:keyLabel="ץ"
+ latin:popupCharacters="ץ,ץ׳" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right" />
+ </Row>
+ <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_rows.xml b/java/res/xml-sw600dp/kbd_rows_qwerty.xml
index a2d26b3de..a2d26b3de 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_qwerty.xml
diff --git a/java/res/xml-sw600dp/kbd_qwertz_rows.xml b/java/res/xml-sw600dp/kbd_rows_qwertz.xml
index 9e717c804..7ea9b0f37 100644
--- a/java/res/xml-sw600dp/kbd_qwertz_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_qwertz.xml
@@ -103,15 +103,13 @@
<default>
<Key
latin:keyLabel=","
- latin:manualTemporaryUpperCaseCode="33"
- latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="!"
latin:popupCharacters="!" />
<Key
latin:keyLabel="."
- latin:manualTemporaryUpperCaseCode="63"
- latin:keyHintIcon="@drawable/key_hint_question_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\?"
latin:popupCharacters="\?" />
</default>
</switch>
diff --git a/java/res/xml-sw600dp/kbd_ru_rows.xml b/java/res/xml-sw600dp/kbd_rows_russian.xml
index 714d1a8d2..43fa665e6 100644
--- a/java/res/xml-sw600dp/kbd_ru_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_russian.xml
@@ -118,9 +118,8 @@
latin:keyLabel="ю" />
<Key
latin:keyLabel="."
- latin:manualTemporaryUpperCaseCode="44"
- latin:keyHintIcon="@drawable/key_hint_comma_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_comma_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter=","
latin:popupCharacters="," />
<include
latin:keyboardLayout="@xml/kbd_row3_right" />
diff --git a/java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
index 0bdcd21f4..3666ead51 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_rows_scandinavia.xml
+++ b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
@@ -24,13 +24,12 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="8.0%p"
+ latin:keyWidth="7.9%p"
latin:rowEdgeFlags="top"
>
<Key
latin:keyLabel="q"
latin:popupCharacters="@string/alternates_for_q"
- latin:keyXPos="2.15%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="w"
@@ -68,10 +67,11 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.0%p"
+ latin:keyWidth="7.9%p"
>
<Key
latin:keyLabel="a"
+ latin:keyXPos="3.5%p"
latin:popupCharacters="@string/alternates_for_a"
latin:keyEdgeFlags="left" />
<Key
@@ -107,8 +107,60 @@
latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
- <include
- latin:keyboardLayout="@xml/kbd_qwerty_row3" />
+ <Row
+ latin:keyWidth="7.9%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.0%p"
+ latin:keyEdgeFlags="left" />
+ <Spacer
+ latin:keyWidth="4.35%p" />
+ <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" />
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel=","
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="!"
+ latin:popupCharacters="!" />
+ <Key
+ latin:keyLabel="."
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\?"
+ latin:popupCharacters="\?" />
+ </default>
+ </switch>
+ <Spacer
+ latin:keyWidth="4.35%p" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_right" />
+ </Row>
<include
latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml-sw600dp/kbd_sr_rows.xml b/java/res/xml-sw600dp/kbd_rows_serbian.xml
index 62c3b71d0..80debdadb 100644
--- a/java/res/xml-sw600dp/kbd_sr_rows.xml
+++ b/java/res/xml-sw600dp/kbd_rows_serbian.xml
@@ -126,15 +126,13 @@
<default>
<Key
latin:keyLabel=","
- latin:manualTemporaryUpperCaseCode="33"
- latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="!"
latin:popupCharacters="!" />
<Key
latin:keyLabel="."
- latin:manualTemporaryUpperCaseCode="63"
- latin:keyHintIcon="@drawable/key_hint_question_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\?"
latin:popupCharacters="\?" />
</default>
</switch>
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 3593c7788..4d3e7d3a2 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -20,13 +20,6 @@
<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" />
diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_symbols_shift.xml
index 4cef3a78f..1743c0ff2 100644
--- a/java/res/xml-sw600dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw600dp/kbd_symbols_shift.xml
@@ -20,13 +20,6 @@
<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" />
diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index 57eaccbae..4388e8959 100644
--- a/java/res/xml-sw768dp/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
@@ -62,7 +62,7 @@
latin:styleName="smileyKeyStyle"
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
- latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_smiley"
latin:maxPopupKeyboardColumn="5" />
<key-style
@@ -116,7 +116,7 @@
latin:styleName="smileyKeyStyle"
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
- latin:keyHintIcon="@drawable/hint_popup_holo"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_smiley"
latin:maxPopupKeyboardColumn="5" />
<key-style
@@ -161,9 +161,8 @@
<key-style
latin:styleName="comKeyStyle"
latin:keyLabel="@string/keylabel_for_popular_domain"
- latin:keyLabelOption="fontNormal"
+ latin:keyLabelOption="fontNormal|popupHint"
latin:keyOutputText="@string/keylabel_for_popular_domain"
- latin:keyHintIcon="@drawable/hint_popup_holo"
latin:popupCharacters="@string/alternates_for_popular_domain" />
<switch>
<case
diff --git a/java/res/xml-sw768dp/kbd_number.xml b/java/res/xml-sw768dp/kbd_number.xml
index faab38ade..4f33e4154 100644
--- a/java/res/xml-sw768dp/kbd_number.xml
+++ b/java/res/xml-sw768dp/kbd_number.xml
@@ -20,15 +20,7 @@
<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:keyWidth="13.250%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" />
diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml
index 51627aa6a..69169ffd1 100644
--- a/java/res/xml-sw768dp/kbd_phone.xml
+++ b/java/res/xml-sw768dp/kbd_phone.xml
@@ -20,15 +20,7 @@
<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:keyWidth="13.250%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" />
@@ -41,16 +33,12 @@
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 '+'. -->
<Key
- latin:code="45"
- latin:keyLabel=" - "
+ latin:keyLabel="-"
latin:keyXPos="20.400%p"
latin:keyWidth="8.047%p" />
<Key
- latin:code="43"
- latin:keyLabel=" + "
+ latin:keyLabel="+"
latin:keyWidth="8.047%p" />
<Key
latin:keyStyle="num1KeyStyle"
@@ -70,16 +58,12 @@
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 '.'. -->
<Key
- latin:code="44"
- latin:keyLabel=" , "
+ latin:keyLabel=","
latin:keyXPos="20.400%p"
latin:keyWidth="8.047%p" />
<Key
- latin:code="46"
- latin:keyLabel=" . "
+ latin:keyLabel="."
latin:keyWidth="8.047%p" />
<Key
latin:keyStyle="num4KeyStyle"
@@ -95,18 +79,14 @@
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 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:keyLabel="("
latin:keyXPos="20.400%p"
latin:keyWidth="8.047%p" />
<Key
- latin:code="41"
- latin:keyLabel=" ) "
+ latin:keyLabel=")"
latin:keyWidth="8.047%p" />
<Key
latin:keyStyle="num7KeyStyle"
diff --git a/java/res/xml-sw768dp/kbd_phone_symbols.xml b/java/res/xml-sw768dp/kbd_phone_symbols.xml
index b086b4137..e95579c0a 100644
--- a/java/res/xml-sw768dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml
@@ -20,15 +20,7 @@
<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:keyWidth="13.250%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" />
@@ -42,20 +34,16 @@
latin:keyWidth="11.172%p"
latin:keyEdgeFlags="left" />
<Key
- latin:code="45"
- latin:keyLabel=" - "
+ latin:keyLabel="-"
latin:keyXPos="13.829%p"
latin:keyWidth="8.047%p" />
<Key
- latin:code="43"
- latin:keyLabel=" + "
+ latin:keyLabel="+"
latin:keyWidth="8.047%p" />
<Key
latin:code="44"
latin:keyLabel="@string/label_pause_key"
latin:keyWidth="8.047%p" />
- <!-- To match one character label size with "Tab" and "Pause, I placed spaces around the
- char '-' and '+'. -->
<Key
latin:keyStyle="num1KeyStyle"
latin:keyXPos="43.125%p" />
@@ -75,20 +63,16 @@
latin:keyWidth="11.172%p"
latin:keyEdgeFlags="left" />
<Key
- latin:code="44"
- latin:keyLabel=" , "
+ latin:keyLabel=","
latin:keyXPos="13.829%p"
latin:keyWidth="8.047%p" />
<Key
- latin:code="46"
- latin:keyLabel=" . "
+ latin:keyLabel="."
latin:keyWidth="8.047%p" />
<Key
latin:code="59"
latin:keyLabel="@string/label_wait_key"
latin:keyWidth="8.047%p" />
- <!-- To match one character label size with "More" and "Wait", I placed spaces around the
- char ',' and '.'. -->
<Key
latin:keyStyle="num4KeyStyle"
latin:keyXPos="43.125%p" />
@@ -103,22 +87,17 @@
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 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:keyLabel="("
latin:keyXPos="13.829%p"
latin:keyWidth="8.047%p" />
<Key
- latin:code="41"
- latin:keyLabel=" ) "
+ latin:keyLabel=")"
latin:keyWidth="8.047%p" />
<Key
- latin:code="78"
- latin:keyLabel=" N "
+ latin:keyLabel="N"
latin:keyWidth="8.047%p" />
<Key
latin:keyStyle="num7KeyStyle"
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
index 0e71cbfd4..fba2a65dd 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
@@ -58,9 +58,8 @@
>
<Key
latin:keyLabel=":"
- latin:manualTemporaryUpperCaseCode="43"
- latin:keyHintIcon="@drawable/key_hint_plus_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="+"
latin:popupCharacters="+" />
</case>
<default>
@@ -78,9 +77,8 @@
<default>
<Key
latin:keyLabel="/"
- latin:manualTemporaryUpperCaseCode="64"
- latin:keyHintIcon="@drawable/key_hint_at_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\@"
latin:popupCharacters="\@" />
</default>
</switch>
@@ -102,17 +100,15 @@
>
<Key
latin:keyLabel="/"
- latin:manualTemporaryUpperCaseCode="58"
- latin:keyHintIcon="@drawable/key_hint_colon_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter=":"
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:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="&quot;"
latin:popupCharacters="&quot;" />
</default>
</switch>
@@ -126,9 +122,8 @@
<default>
<Key
latin:keyLabel="-"
- latin:manualTemporaryUpperCaseCode="95"
- latin:keyHintIcon="@drawable/key_hint_underline_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="_"
latin:popupCharacters="_" />
</default>
</switch>
diff --git a/java/res/xml-sw768dp/kbd_row3_right2.xml b/java/res/xml-sw768dp/kbd_row3_right2.xml
index 1759ea192..e90de8eec 100644
--- a/java/res/xml-sw768dp/kbd_row3_right2.xml
+++ b/java/res/xml-sw768dp/kbd_row3_right2.xml
@@ -33,15 +33,13 @@
<default>
<Key
latin:keyLabel=","
- latin:manualTemporaryUpperCaseCode="33"
- latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="!"
latin:popupCharacters="!" />
<Key
latin:keyLabel="."
- latin:manualTemporaryUpperCaseCode="63"
- latin:keyHintIcon="@drawable/key_hint_question_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\?"
latin:popupCharacters="\?" />
</default>
</switch>
diff --git a/java/res/xml-sw768dp/kbd_ar_rows.xml b/java/res/xml-sw768dp/kbd_rows_arabic.xml
index c1810026b..c1810026b 100644
--- a/java/res/xml-sw768dp/kbd_ar_rows.xml
+++ b/java/res/xml-sw768dp/kbd_rows_arabic.xml
diff --git a/java/res/xml-sw768dp/kbd_azerty_rows.xml b/java/res/xml-sw768dp/kbd_rows_azerty.xml
index 5288ccf91..3bcba0042 100644
--- a/java/res/xml-sw768dp/kbd_azerty_rows.xml
+++ b/java/res/xml-sw768dp/kbd_rows_azerty.xml
@@ -133,9 +133,8 @@
latin:popupCharacters="@string/alternates_for_n" />
<Key
latin:keyLabel="\'"
- latin:manualTemporaryUpperCaseCode="58"
- latin:keyHintIcon="@drawable/key_hint_colon_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter=":"
latin:popupCharacters=":" />
<switch>
<case
@@ -149,15 +148,13 @@
<default>
<Key
latin:keyLabel=","
- latin:manualTemporaryUpperCaseCode="33"
- latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="!"
latin:popupCharacters="!" />
<Key
latin:keyLabel="."
- latin:manualTemporaryUpperCaseCode="63"
- latin:keyHintIcon="@drawable/key_hint_question_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\?"
latin:popupCharacters="\?" />
</default>
</switch>
diff --git a/java/res/xml-sw768dp/kbd_iw_rows.xml b/java/res/xml-sw768dp/kbd_rows_hebrew.xml
index 5275a1f15..5275a1f15 100644
--- a/java/res/xml-sw768dp/kbd_iw_rows.xml
+++ b/java/res/xml-sw768dp/kbd_rows_hebrew.xml
diff --git a/java/res/xml-sw768dp/kbd_qwerty_rows.xml b/java/res/xml-sw768dp/kbd_rows_qwerty.xml
index 6237712f6..6237712f6 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_rows.xml
+++ b/java/res/xml-sw768dp/kbd_rows_qwerty.xml
diff --git a/java/res/xml-sw768dp/kbd_qwertz_rows.xml b/java/res/xml-sw768dp/kbd_rows_qwertz.xml
index 4e937acda..8d5f1e6d4 100644
--- a/java/res/xml-sw768dp/kbd_qwertz_rows.xml
+++ b/java/res/xml-sw768dp/kbd_rows_qwertz.xml
@@ -106,15 +106,13 @@
<default>
<Key
latin:keyLabel=","
- latin:manualTemporaryUpperCaseCode="33"
- latin:keyHintIcon="@drawable/key_hint_exclamation_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="!"
latin:popupCharacters="!" />
<Key
latin:keyLabel="."
- latin:manualTemporaryUpperCaseCode="63"
- latin:keyHintIcon="@drawable/key_hint_question_holo"
- latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLetter="\?"
latin:popupCharacters="\?" />
</default>
</switch>
diff --git a/java/res/xml-sw768dp/kbd_ru_rows.xml b/java/res/xml-sw768dp/kbd_rows_russian.xml
index ee91481c1..ee91481c1 100644
--- a/java/res/xml-sw768dp/kbd_ru_rows.xml
+++ b/java/res/xml-sw768dp/kbd_rows_russian.xml
diff --git a/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
index 7e9f604f5..7e9f604f5 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_rows_scandinavia.xml
+++ b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
diff --git a/java/res/xml-sw768dp/kbd_sr_rows.xml b/java/res/xml-sw768dp/kbd_rows_serbian.xml
index 4997dabb9..4997dabb9 100644
--- a/java/res/xml-sw768dp/kbd_sr_rows.xml
+++ b/java/res/xml-sw768dp/kbd_rows_serbian.xml
diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_symbols.xml
index 5b359bfbf..d1a83c479 100644
--- a/java/res/xml-sw768dp/kbd_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_symbols.xml
@@ -20,14 +20,6 @@
<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" />
diff --git a/java/res/xml-sw768dp/kbd_symbols_shift.xml b/java/res/xml-sw768dp/kbd_symbols_shift.xml
index 94bd761ba..dde144fdf 100644
--- a/java/res/xml-sw768dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw768dp/kbd_symbols_shift.xml
@@ -20,14 +20,6 @@
<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" />
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index f888b231e..63c019d2c 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -50,7 +50,7 @@
<default>
<key-style
latin:styleName="settingsPopupStyle"
- latin:keyHintIcon="@drawable/hint_popup"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="\@drawable/sym_keyboard_settings_holo|\@integer/key_settings"
latin:parentStyle="functionalKeyStyle" />
</default>
@@ -308,7 +308,7 @@
latin:styleName="smileyKeyStyle"
latin:keyLabel=":-)"
latin:keyOutputText=":-) "
- latin:keyHintIcon="@drawable/hint_popup"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_smiley"
latin:maxPopupKeyboardColumn="5"
latin:parentStyle="functionalKeyStyle" />
diff --git a/java/res/xml/kbd_number.xml b/java/res/xml/kbd_number.xml
index 23b88a5bd..429b81846 100644
--- a/java/res/xml/kbd_number.xml
+++ b/java/res/xml/kbd_number.xml
@@ -20,15 +20,7 @@
<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:keyWidth="26.67%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" />
diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml
index e1d1ee8d0..211f7b7f7 100644
--- a/java/res/xml/kbd_phone.xml
+++ b/java/res/xml/kbd_phone.xml
@@ -20,15 +20,7 @@
<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:keyWidth="26.67%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" />
diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index 2af218cfe..c6513632c 100644
--- a/java/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
@@ -20,15 +20,7 @@
<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:keyWidth="26.67%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" />
diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index f0c1fa7fc..40917b921 100644
--- a/java/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -20,16 +20,8 @@
<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_GB,en_US"
>
<include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
+ latin:keyboardLayout="@xml/kbd_rows_qwerty" />
</Keyboard>
diff --git a/java/res/xml/kbd_qwerty_f1.xml b/java/res/xml/kbd_qwerty_f1.xml
index e89d02d91..88dfab116 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:webInput="true"
+ latin:navigateAction="true"
>
<Key
latin:keyLabel="."
diff --git a/java/res/xml/kbd_qwerty_row1.xml b/java/res/xml/kbd_qwerty_row1.xml
index ba804d321..8c3669de0 100644
--- a/java/res/xml/kbd_qwerty_row1.xml
+++ b/java/res/xml/kbd_qwerty_row1.xml
@@ -27,44 +27,44 @@
>
<Key
latin:keyLabel="q"
- latin:keyHintIcon="@drawable/key_hint_num1"
+ latin:keyHintLetter="1"
latin:popupCharacters="@string/alternates_for_q"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="w"
- latin:keyHintIcon="@drawable/key_hint_num2"
+ latin:keyHintLetter="2"
latin:popupCharacters="@string/alternates_for_w" />
<Key
latin:keyLabel="e"
- latin:keyHintIcon="@drawable/key_hint_num3"
+ latin:keyHintLetter="3"
latin:popupCharacters="@string/alternates_for_e" />
<Key
latin:keyLabel="r"
- latin:keyHintIcon="@drawable/key_hint_num4"
+ latin:keyHintLetter="4"
latin:popupCharacters="@string/alternates_for_r" />
<Key
latin:keyLabel="t"
- latin:keyHintIcon="@drawable/key_hint_num5"
+ latin:keyHintLetter="5"
latin:popupCharacters="@string/alternates_for_t" />
<Key
latin:keyLabel="y"
- latin:keyHintIcon="@drawable/key_hint_num6"
+ latin:keyHintLetter="6"
latin:popupCharacters="@string/alternates_for_y" />
<Key
latin:keyLabel="u"
- latin:keyHintIcon="@drawable/key_hint_num7"
+ latin:keyHintLetter="7"
latin:popupCharacters="@string/alternates_for_u" />
<Key
latin:keyLabel="i"
- latin:keyHintIcon="@drawable/key_hint_num8"
+ latin:keyHintLetter="8"
latin:popupCharacters="@string/alternates_for_i" />
<Key
latin:keyLabel="o"
- latin:keyHintIcon="@drawable/key_hint_num9"
+ latin:keyHintLetter="9"
latin:popupCharacters="@string/alternates_for_o" />
<Key
latin:keyLabel="p"
- latin:keyHintIcon="@drawable/key_hint_num0"
+ latin:keyHintLetter="0"
latin:popupCharacters="@string/alternates_for_p"
latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml
index 21d80eb0b..95be66dfa 100644
--- a/java/res/xml/kbd_qwerty_row4.xml
+++ b/java/res/xml/kbd_qwerty_row4.xml
@@ -56,18 +56,18 @@
</switch>
<switch>
<case
- latin:webInput="true"
+ latin:navigateAction="true"
>
<Key
- latin:keyHintIcon="@drawable/hint_popup"
+ latin:keyStyle="tabKeyStyle"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
- latin:maxPopupKeyboardColumn="8"
- latin:keyStyle="tabKeyStyle" />
+ latin:maxPopupKeyboardColumn="8" />
</case>
<default>
<Key
latin:keyLabel="."
- latin:keyHintIcon="@drawable/hint_popup"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_punctuation"
latin:maxPopupKeyboardColumn="7"
latin:keyStyle="functionalKeyStyle" />
diff --git a/java/res/xml/kbd_ar_rows.xml b/java/res/xml/kbd_rows_arabic.xml
index a548775a4..a548775a4 100644
--- a/java/res/xml/kbd_ar_rows.xml
+++ b/java/res/xml/kbd_rows_arabic.xml
diff --git a/java/res/xml/kbd_azerty_rows.xml b/java/res/xml/kbd_rows_azerty.xml
index 9c81aad71..9825c4a10 100644
--- a/java/res/xml/kbd_azerty_rows.xml
+++ b/java/res/xml/kbd_rows_azerty.xml
@@ -29,44 +29,44 @@
>
<Key
latin:keyLabel="a"
- latin:keyHintIcon="@drawable/key_hint_num1"
+ latin:keyHintLetter="1"
latin:popupCharacters="@string/alternates_for_a"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="z"
- latin:keyHintIcon="@drawable/key_hint_num2"
+ latin:keyHintLetter="2"
latin:popupCharacters="@string/alternates_for_z" />
<Key
latin:keyLabel="e"
- latin:keyHintIcon="@drawable/key_hint_num3"
+ latin:keyHintLetter="3"
latin:popupCharacters="@string/alternates_for_e" />
<Key
latin:keyLabel="r"
- latin:keyHintIcon="@drawable/key_hint_num4"
+ latin:keyHintLetter="4"
latin:popupCharacters="@string/alternates_for_r" />
<Key
latin:keyLabel="t"
- latin:keyHintIcon="@drawable/key_hint_num5"
+ latin:keyHintLetter="5"
latin:popupCharacters="@string/alternates_for_t" />
<Key
latin:keyLabel="y"
- latin:keyHintIcon="@drawable/key_hint_num6"
+ latin:keyHintLetter="6"
latin:popupCharacters="@string/alternates_for_y" />
<Key
latin:keyLabel="u"
- latin:keyHintIcon="@drawable/key_hint_num7"
+ latin:keyHintLetter="7"
latin:popupCharacters="@string/alternates_for_u" />
<Key
latin:keyLabel="i"
- latin:keyHintIcon="@drawable/key_hint_num8"
+ latin:keyHintLetter="8"
latin:popupCharacters="@string/alternates_for_i" />
<Key
latin:keyLabel="o"
- latin:keyHintIcon="@drawable/key_hint_num9"
+ latin:keyHintLetter="9"
latin:popupCharacters="@string/alternates_for_o" />
<Key
latin:keyLabel="p"
- latin:keyHintIcon="@drawable/key_hint_num0"
+ latin:keyHintLetter="0"
latin:popupCharacters="@string/alternates_for_p"
latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
diff --git a/java/res/xml/kbd_iw_rows.xml b/java/res/xml/kbd_rows_hebrew.xml
index c3c8f7d3e..c3c8f7d3e 100644
--- a/java/res/xml/kbd_iw_rows.xml
+++ b/java/res/xml/kbd_rows_hebrew.xml
diff --git a/java/res/xml/kbd_qwerty_rows.xml b/java/res/xml/kbd_rows_qwerty.xml
index 6237712f6..6237712f6 100644
--- a/java/res/xml/kbd_qwerty_rows.xml
+++ b/java/res/xml/kbd_rows_qwerty.xml
diff --git a/java/res/xml/kbd_qwertz_rows.xml b/java/res/xml/kbd_rows_qwertz.xml
index 603cf351c..0d70b2637 100644
--- a/java/res/xml/kbd_qwertz_rows.xml
+++ b/java/res/xml/kbd_rows_qwertz.xml
@@ -29,44 +29,44 @@
>
<Key
latin:keyLabel="q"
- latin:keyHintIcon="@drawable/key_hint_num1"
+ latin:keyHintLetter="1"
latin:popupCharacters="@string/alternates_for_q"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="w"
- latin:keyHintIcon="@drawable/key_hint_num2"
+ latin:keyHintLetter="2"
latin:popupCharacters="@string/alternates_for_w" />
<Key
latin:keyLabel="e"
- latin:keyHintIcon="@drawable/key_hint_num3"
+ latin:keyHintLetter="3"
latin:popupCharacters="@string/alternates_for_e" />
<Key
latin:keyLabel="r"
- latin:keyHintIcon="@drawable/key_hint_num4"
+ latin:keyHintLetter="4"
latin:popupCharacters="@string/alternates_for_r" />
<Key
latin:keyLabel="t"
- latin:keyHintIcon="@drawable/key_hint_num5"
+ latin:keyHintLetter="5"
latin:popupCharacters="@string/alternates_for_t" />
<Key
latin:keyLabel="z"
- latin:keyHintIcon="@drawable/key_hint_num6"
+ latin:keyHintLetter="6"
latin:popupCharacters="@string/alternates_for_z" />
<Key
latin:keyLabel="u"
- latin:keyHintIcon="@drawable/key_hint_num7"
+ latin:keyHintLetter="7"
latin:popupCharacters="@string/alternates_for_u" />
<Key
latin:keyLabel="i"
- latin:keyHintIcon="@drawable/key_hint_num8"
+ latin:keyHintLetter="8"
latin:popupCharacters="@string/alternates_for_i" />
<Key
latin:keyLabel="o"
- latin:keyHintIcon="@drawable/key_hint_num9"
+ latin:keyHintLetter="9"
latin:popupCharacters="@string/alternates_for_o" />
<Key
latin:keyLabel="p"
- latin:keyHintIcon="@drawable/key_hint_num0"
+ latin:keyHintLetter="0"
latin:popupCharacters="@string/alternates_for_p"
latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
diff --git a/java/res/xml/kbd_ru_rows.xml b/java/res/xml/kbd_rows_russian.xml
index 76250a303..ff9fef409 100644
--- a/java/res/xml/kbd_ru_rows.xml
+++ b/java/res/xml/kbd_rows_russian.xml
@@ -29,45 +29,45 @@
>
<Key
latin:keyLabel="й"
- latin:keyHintIcon="@drawable/key_hint_num1"
+ latin:keyHintLetter="1"
latin:popupCharacters="1"
latin:keyWidth="8.75%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ц"
- latin:keyHintIcon="@drawable/key_hint_num2"
+ latin:keyHintLetter="2"
latin:popupCharacters="2" />
<Key
latin:keyLabel="у"
- latin:keyHintIcon="@drawable/key_hint_num3"
+ latin:keyHintLetter="3"
latin:popupCharacters="3" />
<Key
latin:keyLabel="к"
- latin:keyHintIcon="@drawable/key_hint_num4"
+ latin:keyHintLetter="4"
latin:popupCharacters="4" />
<Key
latin:keyLabel="е"
- latin:keyHintIcon="@drawable/key_hint_num5"
+ latin:keyHintLetter="5"
latin:popupCharacters="@string/alternates_for_cyrillic_e" />
<Key
latin:keyLabel="н"
- latin:keyHintIcon="@drawable/key_hint_num6"
+ latin:keyHintLetter="6"
latin:popupCharacters="6" />
<Key
latin:keyLabel="г"
- latin:keyHintIcon="@drawable/key_hint_num7"
+ latin:keyHintLetter="7"
latin:popupCharacters="7" />
<Key
latin:keyLabel="ш"
- latin:keyHintIcon="@drawable/key_hint_num8"
+ latin:keyHintLetter="8"
latin:popupCharacters="8" />
<Key
latin:keyLabel="щ"
- latin:keyHintIcon="@drawable/key_hint_num9"
+ latin:keyHintLetter="9"
latin:popupCharacters="9" />
<Key
latin:keyLabel="з"
- latin:keyHintIcon="@drawable/key_hint_num0"
+ latin:keyHintLetter="0"
latin:popupCharacters="0" />
<Key
latin:keyLabel="х"
diff --git a/java/res/xml/kbd_qwerty_rows_scandinavia.xml b/java/res/xml/kbd_rows_scandinavian.xml
index 8cb0640e5..2d7dcde7a 100644
--- a/java/res/xml/kbd_qwerty_rows_scandinavia.xml
+++ b/java/res/xml/kbd_rows_scandinavian.xml
@@ -29,45 +29,45 @@
>
<Key
latin:keyLabel="q"
- latin:keyHintIcon="@drawable/key_hint_num1"
+ latin:keyHintLetter="1"
latin:popupCharacters="@string/alternates_for_q"
latin:keyWidth="8.75%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="w"
- latin:keyHintIcon="@drawable/key_hint_num2"
+ latin:keyHintLetter="2"
latin:popupCharacters="@string/alternates_for_w" />
<Key
latin:keyLabel="e"
- latin:keyHintIcon="@drawable/key_hint_num3"
+ latin:keyHintLetter="3"
latin:popupCharacters="@string/alternates_for_e" />
<Key
latin:keyLabel="r"
- latin:keyHintIcon="@drawable/key_hint_num4"
+ latin:keyHintLetter="4"
latin:popupCharacters="@string/alternates_for_r" />
<Key
latin:keyLabel="t"
- latin:keyHintIcon="@drawable/key_hint_num5"
+ latin:keyHintLetter="5"
latin:popupCharacters="@string/alternates_for_t" />
<Key
latin:keyLabel="y"
- latin:keyHintIcon="@drawable/key_hint_num6"
+ latin:keyHintLetter="6"
latin:popupCharacters="@string/alternates_for_y" />
<Key
latin:keyLabel="u"
- latin:keyHintIcon="@drawable/key_hint_num7"
+ latin:keyHintLetter="7"
latin:popupCharacters="@string/alternates_for_u" />
<Key
latin:keyLabel="i"
- latin:keyHintIcon="@drawable/key_hint_num8"
+ latin:keyHintLetter="8"
latin:popupCharacters="@string/alternates_for_i" />
<Key
latin:keyLabel="o"
- latin:keyHintIcon="@drawable/key_hint_num9"
+ latin:keyHintLetter="9"
latin:popupCharacters="@string/alternates_for_o" />
<Key
latin:keyLabel="p"
- latin:keyHintIcon="@drawable/key_hint_num0"
+ latin:keyHintLetter="0"
latin:popupCharacters="@string/alternates_for_p" />
<Key
latin:keyLabel="å"
diff --git a/java/res/xml/kbd_sr_rows.xml b/java/res/xml/kbd_rows_serbian.xml
index 139af80f5..9f4b6a203 100644
--- a/java/res/xml/kbd_sr_rows.xml
+++ b/java/res/xml/kbd_rows_serbian.xml
@@ -29,44 +29,44 @@
>
<Key
latin:keyLabel="љ"
- latin:keyHintIcon="@drawable/key_hint_num1"
+ latin:keyHintLetter="1"
latin:popupCharacters="1"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="њ"
- latin:keyHintIcon="@drawable/key_hint_num2"
+ latin:keyHintLetter="2"
latin:popupCharacters="2" />
<Key
latin:keyLabel="е"
- latin:keyHintIcon="@drawable/key_hint_num3"
+ latin:keyHintLetter="3"
latin:popupCharacters="3" />
<Key
latin:keyLabel="р"
- latin:keyHintIcon="@drawable/key_hint_num4"
+ latin:keyHintLetter="4"
latin:popupCharacters="4" />
<Key
latin:keyLabel="т"
- latin:keyHintIcon="@drawable/key_hint_num5"
+ latin:keyHintLetter="5"
latin:popupCharacters="5" />
<Key
latin:keyLabel="з"
- latin:keyHintIcon="@drawable/key_hint_num6"
+ latin:keyHintLetter="6"
latin:popupCharacters="6" />
<Key
latin:keyLabel="у"
- latin:keyHintIcon="@drawable/key_hint_num7"
+ latin:keyHintLetter="7"
latin:popupCharacters="7" />
<Key
latin:keyLabel="и"
- latin:keyHintIcon="@drawable/key_hint_num8"
+ latin:keyHintLetter="8"
latin:popupCharacters="8" />
<Key
latin:keyLabel="о"
- latin:keyHintIcon="@drawable/key_hint_num9"
+ latin:keyHintLetter="9"
latin:popupCharacters="9" />
<Key
latin:keyLabel="п"
- latin:keyHintIcon="@drawable/key_hint_num0"
+ latin:keyHintLetter="0"
latin:popupCharacters="0" />
<Key
latin:keyLabel="ш"
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index a58a51874..8e9124f74 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -20,15 +20,7 @@
<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: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_key_styles" />
diff --git a/java/res/xml/kbd_symbols_row4.xml b/java/res/xml/kbd_symbols_row4.xml
index 726f7c37a..704402aaf 100644
--- a/java/res/xml/kbd_symbols_row4.xml
+++ b/java/res/xml/kbd_symbols_row4.xml
@@ -56,7 +56,7 @@
</switch>
<Key
latin:keyLabel="."
- latin:keyHintIcon="@drawable/hint_popup"
+ latin:keyLabelOption="popupHint"
latin:popupCharacters="@string/alternates_for_punctuation"
latin:maxPopupKeyboardColumn="7"
latin:keyStyle="functionalKeyStyle" />
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index 96e741bbc..f22d45aff 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -20,15 +20,7 @@
<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: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_key_styles" />
diff --git a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
index 2789bcb39..bcdcef7dc 100644
--- a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
@@ -27,7 +27,7 @@ public class EditorInfoCompatUtils {
private static final Field FIELD_IME_FLAG_NAVIGATE_PREVIOUS = CompatUtils.getField(
EditorInfo.class, "IME_FLAG_NAVIGATE_PREVIOUS");
private static final Field FIELD_IME_ACTION_PREVIOUS = CompatUtils.getField(
- EditorInfo.class, "IME_FLAG_ACTION_PREVIOUS");
+ EditorInfo.class, "IME_ACTION_PREVIOUS");
private static final Integer OBJ_IME_FLAG_NAVIGATE_NEXT = (Integer) CompatUtils
.getFieldValue(null, null, FIELD_IME_FLAG_NAVIGATE_NEXT);
private static final Integer OBJ_IME_FLAG_NAVIGATE_PREVIOUS = (Integer) CompatUtils
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index cb529461a..e5ee272a2 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -37,25 +37,24 @@ public class Key {
* The key code (unicode or custom code) that this key generates.
*/
public final int mCode;
- /** The unicode that this key generates in manual temporary upper case mode. */
- public final int mManualTemporaryUpperCaseCode;
/** Label to display */
public final CharSequence mLabel;
+ /** Hint letter to display on the key in conjunction with the label */
+ public final CharSequence mHintLetter;
/** Option of the label */
public final int mLabelOption;
+ public static final int LABEL_OPTION_ALIGN_LEFT = 0x01;
+ public static final int LABEL_OPTION_ALIGN_RIGHT = 0x02;
+ public static final int LABEL_OPTION_ALIGN_BOTTOM = 0x08;
+ public static final int LABEL_OPTION_FONT_NORMAL = 0x10;
+ private static final int LABEL_OPTION_POPUP_HINT = 0x20;
+ private static final int LABEL_OPTION_HAS_UPPERCASE_LETTER = 0x40;
/** Icon to display instead of a label. Icon takes precedence over a label */
private Drawable mIcon;
/** Preview version of the icon, for the preview popup */
private Drawable mPreviewIcon;
- /** Hint icon to display on the key in conjunction with the label */
- public final Drawable mHintIcon;
- /**
- * The hint icon to display on the key when keyboard is in manual temporary upper case
- * mode.
- */
- public final Drawable mManualTemporaryUpperCaseHintIcon;
/** Width of the key, not including the gap */
public final int mWidth;
@@ -154,9 +153,7 @@ public class Key {
mVisualInsetsLeft = mVisualInsetsRight = 0;
mWidth = width - mGap;
mEdgeFlags = edgeFlags;
- mHintIcon = null;
- mManualTemporaryUpperCaseHintIcon = null;
- mManualTemporaryUpperCaseCode = Keyboard.CODE_DUMMY;
+ mHintLetter = null;
mLabelOption = 0;
mFunctional = false;
mSticky = false;
@@ -273,16 +270,10 @@ public class Key {
Keyboard.setDefaultBounds(mPreviewIcon);
mIcon = style.getDrawable(keyAttr, R.styleable.Keyboard_Key_keyIcon);
Keyboard.setDefaultBounds(mIcon);
- mHintIcon = style.getDrawable(keyAttr, R.styleable.Keyboard_Key_keyHintIcon);
- Keyboard.setDefaultBounds(mHintIcon);
- mManualTemporaryUpperCaseHintIcon = style.getDrawable(keyAttr,
- R.styleable.Keyboard_Key_manualTemporaryUpperCaseHintIcon);
- Keyboard.setDefaultBounds(mManualTemporaryUpperCaseHintIcon);
+ mHintLetter = style.getText(keyAttr, R.styleable.Keyboard_Key_keyHintLetter);
mLabel = style.getText(keyAttr, R.styleable.Keyboard_Key_keyLabel);
mLabelOption = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelOption, 0);
- mManualTemporaryUpperCaseCode = style.getInt(keyAttr,
- R.styleable.Keyboard_Key_manualTemporaryUpperCaseCode, Keyboard.CODE_DUMMY);
mOutputText = style.getText(keyAttr, R.styleable.Keyboard_Key_keyOutputText);
// Choose the first letter of the label as primary code if not
// specified.
@@ -305,6 +296,14 @@ public class Key {
}
}
+ public boolean hasPopupHint() {
+ return (mLabelOption & LABEL_OPTION_POPUP_HINT) != 0;
+ }
+
+ public boolean hasUppercaseLetter() {
+ return (mLabelOption & LABEL_OPTION_HAS_UPPERCASE_LETTER) != 0;
+ }
+
private static boolean isDigitPopupCharacter(CharSequence label) {
return label != null && label.length() == 1 && Character.isDigit(label.charAt(0));
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/KeyStyles.java
index d53df788f..ce5ee5495 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyStyles.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyStyles.java
@@ -183,7 +183,7 @@ public class KeyStyles {
readText(keyAttr, R.styleable.Keyboard_Key_keyOutputText);
readDrawable(keyAttr, R.styleable.Keyboard_Key_keyIcon);
readDrawable(keyAttr, R.styleable.Keyboard_Key_iconPreview);
- readDrawable(keyAttr, R.styleable.Keyboard_Key_keyHintIcon);
+ readText(keyAttr, R.styleable.Keyboard_Key_keyHintLetter);
readDrawable(keyAttr, R.styleable.Keyboard_Key_shiftedIcon);
readBoolean(keyAttr, R.styleable.Keyboard_Key_isFunctional);
readBoolean(keyAttr, R.styleable.Keyboard_Key_isSticky);
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 267abccb3..58629ba51 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -16,15 +16,15 @@
package com.android.inputmethod.keyboard;
-import com.android.inputmethod.latin.R;
-
-import org.xmlpull.v1.XmlPullParserException;
-
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.util.Log;
+import com.android.inputmethod.latin.R;
+
+import org.xmlpull.v1.XmlPullParserException;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -171,8 +171,8 @@ public class Keyboard {
mDefaultVerticalGap = 0;
mDefaultHeight = mDefaultWidth;
mId = id;
- loadKeyboard(context, xmlLayoutResId);
mProximityInfo = new ProximityInfo(GRID_WIDTH, GRID_HEIGHT);
+ loadKeyboard(context, xmlLayoutResId);
}
public int getProximityInfo() {
@@ -434,7 +434,7 @@ public class Keyboard {
private void loadKeyboard(Context context, int xmlLayoutResId) {
try {
- KeyboardParser parser = new KeyboardParser(this, context.getResources());
+ KeyboardParser parser = new KeyboardParser(this, context);
parser.parseKeyboard(xmlLayoutResId);
// mMinWidth is the width of this keyboard which is maximum width of row.
mMinWidth = parser.getMaxRowWidth();
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index 7c03ec71e..cdaed95a5 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -43,7 +43,7 @@ public class KeyboardId {
public final int mMode;
public final int mXmlId;
public final int mColorScheme;
- public final boolean mWebInput;
+ public final boolean mNavigateAction;
public final boolean mPasswordInput;
public final boolean mHasSettingsKey;
public final boolean mVoiceKeyEnabled;
@@ -67,7 +67,9 @@ public class KeyboardId {
this.mMode = mode;
this.mXmlId = xmlId;
this.mColorScheme = colorScheme;
- this.mWebInput = InputTypeCompatUtils.isWebInputType(inputType);
+ this.mNavigateAction = InputTypeCompatUtils.isWebInputType(inputType)
+ || EditorInfoCompatUtils.hasFlagNavigateNext(imeOptions)
+ || EditorInfoCompatUtils.hasFlagNavigatePrevious(imeOptions);
this.mPasswordInput = InputTypeCompatUtils.isPasswordInputType(inputType)
|| InputTypeCompatUtils.isVisiblePasswordInputType(inputType);
this.mHasSettingsKey = hasSettingsKey;
@@ -89,7 +91,7 @@ public class KeyboardId {
mode,
xmlId,
colorScheme,
- mWebInput,
+ mNavigateAction,
mPasswordInput,
hasSettingsKey,
voiceKeyEnabled,
@@ -143,7 +145,7 @@ public class KeyboardId {
&& other.mMode == this.mMode
&& other.mXmlId == this.mXmlId
&& other.mColorScheme == this.mColorScheme
- && other.mWebInput == this.mWebInput
+ && other.mNavigateAction == this.mNavigateAction
&& other.mPasswordInput == this.mPasswordInput
&& other.mHasSettingsKey == this.mHasSettingsKey
&& other.mVoiceKeyEnabled == this.mVoiceKeyEnabled
@@ -166,7 +168,7 @@ public class KeyboardId {
modeName(mMode),
EditorInfoCompatUtils.imeOptionsName(mImeAction),
colorSchemeName(mColorScheme),
- (mWebInput ? " webInput" : ""),
+ (mNavigateAction ? " navigateAction" : ""),
(mPasswordInput ? " passwordInput" : ""),
(mHasSettingsKey ? " hasSettingsKey" : ""),
(mVoiceKeyEnabled ? " voiceKeyEnabled" : ""),
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
index c2db62a1c..20af12bc5 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
@@ -16,12 +16,6 @@
package com.android.inputmethod.keyboard;
-import com.android.inputmethod.compat.EditorInfoCompatUtils;
-import com.android.inputmethod.latin.R;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
@@ -31,6 +25,12 @@ import android.util.TypedValue;
import android.util.Xml;
import android.view.InflateException;
+import com.android.inputmethod.compat.EditorInfoCompatUtils;
+import com.android.inputmethod.latin.R;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
@@ -121,6 +121,7 @@ public class KeyboardParser {
public static final String TAG_KEY_STYLE = "key-style";
private final Keyboard mKeyboard;
+ private final Context mContext;
private final Resources mResources;
private int mHorizontalEdgesPadding;
@@ -131,8 +132,10 @@ public class KeyboardParser {
private Row mCurrentRow = null;
private final KeyStyles mKeyStyles = new KeyStyles();
- public KeyboardParser(Keyboard keyboard, Resources res) {
+ public KeyboardParser(Keyboard keyboard, Context context) {
mKeyboard = keyboard;
+ mContext = context;
+ final Resources res = context.getResources();
mResources = res;
mHorizontalEdgesPadding = (int)res.getDimension(R.dimen.keyboard_horizontal_edges_padding);
}
@@ -187,8 +190,9 @@ public class KeyboardParser {
private void parseKeyboardAttributes(XmlResourceParser parser) {
final Keyboard keyboard = mKeyboard;
- final TypedArray keyboardAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
- R.styleable.Keyboard);
+ final TypedArray keyboardAttr = mContext.obtainStyledAttributes(
+ Xml.asAttributeSet(parser), R.styleable.Keyboard, R.attr.keyboardStyle,
+ R.style.Keyboard);
final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard_Key);
try {
@@ -469,8 +473,8 @@ public class KeyboardParser {
try {
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 navigateActionMatched = matchBoolean(a,
+ R.styleable.Keyboard_Case_navigateAction, id.mNavigateAction);
final boolean passwordInputMatched = matchBoolean(a,
R.styleable.Keyboard_Case_passwordInput, id.mPasswordInput);
final boolean settingsKeyMatched = matchBoolean(a,
@@ -493,7 +497,7 @@ public class KeyboardParser {
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 && webInputMatched && passwordInputMatched
+ final boolean selected = modeMatched && navigateActionMatched && passwordInputMatched
&& settingsKeyMatched && voiceEnabledMatched && voiceKeyMatched
&& colorSchemeMatched && imeActionMatched && localeCodeMatched
&& languageCodeMatched && countryCodeMatched;
@@ -503,7 +507,7 @@ public class KeyboardParser {
textAttr(KeyboardId.colorSchemeName(
viewAttr.getInt(
R.styleable.KeyboardView_colorScheme, -1)), "colorScheme"),
- booleanAttr(a, R.styleable.Keyboard_Case_webInput, "webInput"),
+ booleanAttr(a, R.styleable.Keyboard_Case_navigateAction, "navigateAction"),
booleanAttr(a, R.styleable.Keyboard_Case_passwordInput, "passwordInput"),
booleanAttr(a, R.styleable.Keyboard_Case_hasSettingsKey, "hasSettingsKey"),
booleanAttr(a, R.styleable.Keyboard_Case_voiceKeyEnabled, "voiceKeyEnabled"),
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 7c68c93f2..50c61ffae 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -57,6 +57,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
private SubtypeSwitcher mSubtypeSwitcher;
private SharedPreferences mPrefs;
+ private View mCurrentInputView;
private LatinKeyboardView mKeyboardView;
private LatinIME mInputMethodService;
@@ -201,7 +202,9 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
final Locale savedLocale = Utils.setSystemLocale(res,
mSubtypeSwitcher.getInputLocale());
- keyboard = new LatinKeyboard(mInputMethodService, id, id.mWidth);
+ final Context themeContext = new ContextThemeWrapper(mInputMethodService,
+ KEYBOARD_THEMES[mThemeIndex]);
+ keyboard = new LatinKeyboard(themeContext, id, id.mWidth);
if (id.mEnableShiftLock) {
keyboard.enableShiftLock();
@@ -294,7 +297,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
}
public boolean isInputViewShown() {
- return mKeyboardView != null && mKeyboardView.isShown();
+ return mCurrentInputView != null && mCurrentInputView.isShown();
}
public boolean isKeyboardAvailable() {
@@ -714,9 +717,6 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
return createInputView(mThemeIndex, true);
}
- // Instance variable only for {@link #createInputView(int, boolean)}.
- private View mCurrentInputView;
-
private View createInputView(final int newThemeIndex, final boolean forceRecreate) {
if (mCurrentInputView != null && mThemeIndex == newThemeIndex && !forceRecreate)
return mCurrentInputView;
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index f8bce40b1..44f2ff3ff 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -16,9 +16,6 @@
package com.android.inputmethod.keyboard;
-import com.android.inputmethod.latin.LatinImeLogger;
-import com.android.inputmethod.latin.R;
-
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;
@@ -50,6 +47,9 @@ import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
+import com.android.inputmethod.latin.LatinImeLogger;
+import com.android.inputmethod.latin.R;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.WeakHashMap;
@@ -63,13 +63,18 @@ import java.util.WeakHashMap;
* @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_keyLabelRatio
+ * @attr ref R.styleable#KeyboardView_keyHintLetterRatio
+ * @attr ref R.styleable#KeyboardView_keyUppercaseLetterRatio
+ * @attr ref R.styleable#KeyboardView_keyTextStyle
* @attr ref R.styleable#KeyboardView_keyPreviewLayout
* @attr ref R.styleable#KeyboardView_keyPreviewOffset
* @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_keyHintLetterColor
+ * @attr ref R.styleable#KeyboardView_keyUppercaseLetterInactivatedColor
+ * @attr ref R.styleable#KeyboardView_keyUppercaseLetterActivatedColor
* @attr ref R.styleable#KeyboardView_verticalCorrection
* @attr ref R.styleable#KeyboardView_popupLayout
* @attr ref R.styleable#KeyboardView_shadowColor
@@ -96,9 +101,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
// XML attribute
private final float mKeyLetterRatio;
private final int mKeyTextColor;
- private final int mKeyTextColorDisabled;
- private final Typeface mKeyLetterStyle;
- private final float mLabelTextRatio;
+ private final int mKeyTextInactivatedColor;
+ private final Typeface mKeyTextStyle;
+ private final float mKeyLabelRatio;
+ private final float mKeyHintLetterRatio;
+ private final float mKeyUppercaseLetterRatio;
private final int mColorScheme;
private final int mShadowColor;
private final float mShadowRadius;
@@ -109,11 +116,17 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
private final int mPreviewOffset;
private final int mPreviewHeight;
private final int mPopupLayout;
+ private final Drawable mKeyPopupHintIcon;
+ private final int mKeyHintLetterColor;
+ private final int mKeyUppercaseLetterInactivatedColor;
+ private final int mKeyUppercaseLetterActivatedColor;
// Main keyboard
private Keyboard mKeyboard;
private int mKeyLetterSize;
- private int mLabelTextSize;
+ private int mKeyLabelSize;
+ private int mKeyHintLetterSize;
+ private int mKeyUppercaseLetterSize;
// Key preview
private boolean mInForeground;
@@ -168,18 +181,17 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
private Bitmap mBuffer;
/** The canvas for the above mutable keyboard bitmap */
private Canvas mCanvas;
- private final Paint mPaint;
- private final Rect mPadding;
+ private final Paint mPaint = new Paint();
+ private final Rect mPadding = new Rect();
+ private final Rect mTextBounds = new Rect();
// This map caches key label text height in pixel as value and key label text size as map key.
private final HashMap<Integer, Integer> mTextHeightCache = new HashMap<Integer, Integer>();
+ // This map caches key label text width in pixel as value and key label text size as map key.
+ private final HashMap<Integer, Integer> mTextWidthCache = new HashMap<Integer, Integer>();
// Distance from horizontal center of the key, proportional to key label text height and width.
- private final float KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR_CENTER = 0.45f;
- private final float KEY_LABEL_VERTICAL_PADDING_FACTOR = 1.60f;
- private final String KEY_LABEL_REFERENCE_CHAR = "H";
- private final int KEY_LABEL_OPTION_ALIGN_LEFT = 1;
- private final int KEY_LABEL_OPTION_ALIGN_RIGHT = 2;
- private final int KEY_LABEL_OPTION_ALIGN_BOTTOM = 8;
- private final int KEY_LABEL_OPTION_FONT_NORMAL = 16;
+ private static final float KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR_CENTER = 0.45f;
+ private static final float KEY_LABEL_VERTICAL_PADDING_FACTOR = 1.60f;
+ private static final String KEY_LABEL_REFERENCE_CHAR = "M";
private final int mKeyLabelHorizontalPadding;
private final UIHandler mHandler = new UIHandler();
@@ -321,18 +333,28 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
mPreviewOffset = a.getDimensionPixelOffset(R.styleable.KeyboardView_keyPreviewOffset, 0);
mPreviewHeight = a.getDimensionPixelSize(R.styleable.KeyboardView_keyPreviewHeight, 80);
mKeyLetterRatio = getRatio(a, R.styleable.KeyboardView_keyLetterRatio);
+ mKeyLabelRatio = getRatio(a, R.styleable.KeyboardView_keyLabelRatio);
+ mKeyHintLetterRatio = getRatio(a, R.styleable.KeyboardView_keyHintLetterRatio);
+ mKeyUppercaseLetterRatio = getRatio(a,
+ R.styleable.KeyboardView_keyUppercaseLetterRatio);
mKeyTextColor = a.getColor(R.styleable.KeyboardView_keyTextColor, 0xFF000000);
- mKeyTextColorDisabled = a.getColor(
- R.styleable.KeyboardView_keyTextColorDisabled, 0xFF000000);
- mLabelTextRatio = getRatio(a, R.styleable.KeyboardView_labelTextRatio);
+ mKeyTextInactivatedColor = a.getColor(
+ R.styleable.KeyboardView_keyTextInactivatedColor, 0xFF000000);
+ mKeyPopupHintIcon = a.getDrawable(R.styleable.KeyboardView_keyPopupHintIcon);
+ mKeyHintLetterColor = a.getColor(R.styleable.KeyboardView_keyHintLetterColor, 0);
+ mKeyUppercaseLetterInactivatedColor = a.getColor(
+ R.styleable.KeyboardView_keyUppercaseLetterInactivatedColor, 0);
+ mKeyUppercaseLetterActivatedColor = a.getColor(
+ R.styleable.KeyboardView_keyUppercaseLetterActivatedColor, 0);
+ mKeyTextStyle = Typeface.defaultFromStyle(
+ a.getInt(R.styleable.KeyboardView_keyTextStyle, Typeface.NORMAL));
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);
+ a.recycle();
final Resources res = getResources();
@@ -347,12 +369,10 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
mKeyLabelHorizontalPadding = (int)res.getDimension(
R.dimen.key_label_horizontal_alignment_padding);
- mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setTextAlign(Align.CENTER);
mPaint.setAlpha(255);
- mPadding = new Rect(0, 0, 0, 0);
mKeyBackground.getPadding(mPadding);
mSwipeThreshold = (int) (500 * res.getDisplayMetrics().density);
@@ -496,7 +516,10 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
mPopupPanelCache.clear();
final int keyHeight = keyboard.getRowHeight() - keyboard.getVerticalGap();
mKeyLetterSize = (int)(keyHeight * mKeyLetterRatio);
- mLabelTextSize = (int)(keyHeight * mLabelTextRatio);
+ mKeyLabelSize = (int)(keyHeight * mKeyLabelRatio);
+ mKeyHintLetterSize = (int)(keyHeight * mKeyHintLetterRatio);
+ mKeyUppercaseLetterSize = (int)(
+ keyHeight * mKeyUppercaseLetterRatio);
mPreviewTextSize = (int)(keyHeight * mPreviewTextRatio);
}
@@ -683,7 +706,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
// Vertical label text alignment.
final float baseline;
- if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_BOTTOM) != 0) {
+ if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_BOTTOM) != 0) {
baseline = key.mHeight - labelCharHeight * KEY_LABEL_VERTICAL_PADDING_FACTOR;
if (DEBUG_SHOW_ALIGN)
drawHorizontalLine(canvas, (int)baseline, keyDrawWidth, 0xc0008000,
@@ -697,12 +720,12 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
}
// Horizontal label text alignment
final int positionX;
- if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_LEFT) != 0) {
+ if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT) != 0) {
positionX = mKeyLabelHorizontalPadding + padding.left;
paint.setTextAlign(Align.LEFT);
if (DEBUG_SHOW_ALIGN)
drawVerticalLine(canvas, positionX, rowHeight, 0xc0800080, new Paint());
- } else if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_RIGHT) != 0) {
+ } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_RIGHT) != 0) {
positionX = keyDrawWidth - mKeyLabelHorizontalPadding - padding.right;
paint.setTextAlign(Align.RIGHT);
if (DEBUG_SHOW_ALIGN)
@@ -715,8 +738,8 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
drawVerticalLine(canvas, positionX, rowHeight, 0xc0008080, new Paint());
}
}
- if (key.mManualTemporaryUpperCaseHintIcon != null && isManualTemporaryUpperCase) {
- paint.setColor(mKeyTextColorDisabled);
+ if (key.hasUppercaseLetter() && isManualTemporaryUpperCase) {
+ paint.setColor(mKeyTextInactivatedColor);
} else {
paint.setColor(mKeyTextColor);
}
@@ -732,6 +755,27 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
paint.setShadowLayer(0, 0, 0, 0);
}
+ // Draw hint letter.
+ if (key.mHintLetter != null) {
+ final String label = key.mHintLetter.toString();
+ final int textColor;
+ final int textSize;
+ if (key.hasUppercaseLetter()) {
+ textColor = isManualTemporaryUpperCase ? mKeyUppercaseLetterActivatedColor
+ : mKeyUppercaseLetterInactivatedColor;
+ textSize = mKeyUppercaseLetterSize;
+ } else {
+ textColor = mKeyHintLetterColor;
+ textSize = mKeyHintLetterSize;
+ }
+ paint.setColor(textColor);
+ paint.setTextSize(textSize);
+ // Note: padding.right for drawX?
+ final float drawX = keyDrawWidth - getLabelCharWidth(textSize, paint);
+ final float drawY = -paint.ascent() + padding.top;
+ canvas.drawText(label, drawX, drawY, paint);
+ }
+
// Draw key icon.
final Drawable icon = key.getIcon();
if (key.mLabel == null && icon != null) {
@@ -739,11 +783,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
final int drawableHeight = icon.getIntrinsicHeight();
final int drawableX;
final int drawableY = (key.mHeight + padding.top - padding.bottom - drawableHeight) / 2;
- if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_LEFT) != 0) {
+ if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT) != 0) {
drawableX = padding.left + mKeyLabelHorizontalPadding;
if (DEBUG_SHOW_ALIGN)
drawVerticalLine(canvas, drawableX, rowHeight, 0xc0800080, new Paint());
- } else if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_RIGHT) != 0) {
+ } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_RIGHT) != 0) {
drawableX = keyDrawWidth - padding.right - mKeyLabelHorizontalPadding
- drawableWidth;
if (DEBUG_SHOW_ALIGN)
@@ -761,15 +805,14 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
0x80c00000, new Paint());
}
- // Draw hint icon.
- if (key.mHintIcon != null) {
+ // Draw popup hint icon "...".
+ // TODO: Draw "..." by text.
+ if (key.hasPopupHint()) {
final int drawableWidth = keyDrawWidth;
final int drawableHeight = key.mHeight;
final int drawableX = 0;
final int drawableY = HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL;
- Drawable hintIcon = (isManualTemporaryUpperCase
- && key.mManualTemporaryUpperCaseHintIcon != null)
- ? key.mManualTemporaryUpperCaseHintIcon : key.mHintIcon;
+ final Drawable hintIcon = mKeyPopupHintIcon;
drawIcon(canvas, hintIcon, drawableX, drawableY, drawableWidth, drawableHeight);
if (DEBUG_SHOW_ALIGN)
drawRectangle(canvas, drawableX, drawableY, drawableWidth, drawableHeight,
@@ -784,15 +827,15 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
final int labelSize;
final Typeface labelStyle;
if (label.length() > 1) {
- labelSize = mLabelTextSize;
- if ((keyLabelOption & KEY_LABEL_OPTION_FONT_NORMAL) != 0) {
+ labelSize = mKeyLabelSize;
+ if ((keyLabelOption & Key.LABEL_OPTION_FONT_NORMAL) != 0) {
labelStyle = Typeface.DEFAULT;
} else {
labelStyle = Typeface.DEFAULT_BOLD;
}
} else {
labelSize = mKeyLetterSize;
- labelStyle = mKeyLetterStyle;
+ labelStyle = mKeyTextStyle;
}
paint.setTextSize(labelSize);
paint.setTypeface(labelStyle);
@@ -805,14 +848,26 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
if (labelHeightValue != null) {
labelCharHeight = labelHeightValue;
} else {
- Rect textBounds = new Rect();
- paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, textBounds);
- labelCharHeight = textBounds.height();
+ paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, mTextBounds);
+ labelCharHeight = mTextBounds.height();
mTextHeightCache.put(labelSize, labelCharHeight);
}
return labelCharHeight;
}
+ private int getLabelCharWidth(int labelSize, Paint paint) {
+ Integer labelWidthValue = mTextWidthCache.get(labelSize);
+ final int labelCharWidth;
+ if (labelWidthValue != null) {
+ labelCharWidth = labelWidthValue;
+ } else {
+ paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, mTextBounds);
+ labelCharWidth = mTextBounds.width();
+ mTextWidthCache.put(labelSize, labelCharWidth);
+ }
+ return labelCharWidth;
+ }
+
private static void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width,
int height) {
canvas.translate(x, y);
@@ -935,7 +990,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
previewText.setTypeface(Typeface.DEFAULT_BOLD);
} else {
previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSize);
- previewText.setTypeface(mKeyLetterStyle);
+ previewText.setTypeface(mKeyTextStyle);
}
} else {
final Drawable previewIcon = key.getPreviewIcon();
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index fe27ab412..a6ac76751 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -57,9 +57,9 @@ public class LatinKeyboard extends Keyboard {
private final Drawable mSpaceIcon;
private final Drawable mSpacePreviewIcon;
private final int mSpaceKeyIndex;
- private final Drawable mSpaceAutoCorrectionIndicator;
- private final Drawable mButtonArrowLeftIcon;
- private final Drawable mButtonArrowRightIcon;
+ private final Drawable mAutoCorrectionSpacebarLedIcon;
+ private final Drawable mSpacebarArrowLeftIcon;
+ private final Drawable mSpacebarArrowRightIcon;
private final int mSpacebarTextColor;
private final int mSpacebarTextShadowColor;
private float mSpacebarTextFadeFactor = 0.0f;
@@ -90,7 +90,6 @@ public class LatinKeyboard extends Keyboard {
public LatinKeyboard(Context context, KeyboardId id, int width) {
super(context, id.getXmlId(), id, width);
- final Resources res = context.getResources();
mContext = context;
final List<Key> keys = getKeys();
@@ -118,19 +117,20 @@ public class LatinKeyboard extends Keyboard {
mShortcutKey = (shortcutKeyIndex >= 0) ? keys.get(shortcutKeyIndex) : null;
mEnabledShortcutIcon = (mShortcutKey != null) ? mShortcutKey.getIcon() : null;
- mSpacebarTextColor = res.getColor(R.color.latinkeyboard_bar_language_text);
- if (id.mColorScheme == KeyboardView.COLOR_SCHEME_BLACK) {
- mSpacebarTextShadowColor = res.getColor(
- R.color.latinkeyboard_bar_language_shadow_black);
- mDisabledShortcutIcon = res.getDrawable(R.drawable.sym_bkeyboard_voice_off);
- } else { // default color scheme is KeyboardView.COLOR_SCHEME_WHITE
- mSpacebarTextShadowColor = res.getColor(
- R.color.latinkeyboard_bar_language_shadow_white);
- mDisabledShortcutIcon = res.getDrawable(R.drawable.sym_keyboard_voice_off_holo);
- }
- mSpaceAutoCorrectionIndicator = res.getDrawable(R.drawable.sym_keyboard_space_led);
- mButtonArrowLeftIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_left);
- mButtonArrowRightIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_right);
+ final TypedArray a = context.obtainStyledAttributes(
+ null, R.styleable.LatinKeyboard, R.attr.latinKeyboardStyle, R.style.LatinKeyboard);
+ mAutoCorrectionSpacebarLedIcon = a.getDrawable(
+ R.styleable.LatinKeyboard_autoCorrectionSpacebarLedIcon);
+ mDisabledShortcutIcon = a.getDrawable(R.styleable.LatinKeyboard_disabledShortcutIcon);
+ mSpacebarTextColor = a.getColor(R.styleable.LatinKeyboard_spacebarTextColor, 0);
+ mSpacebarTextShadowColor = a.getColor(
+ R.styleable.LatinKeyboard_spacebarTextShadowColor, 0);
+ mSpacebarArrowLeftIcon = a.getDrawable(
+ R.styleable.LatinKeyboard_spacebarArrowLeftIcon);
+ mSpacebarArrowRightIcon = a.getDrawable(
+ R.styleable.LatinKeyboard_spacebarArrowRightIcon);
+ a.recycle();
+
// The threshold is "key width" x 1.25
mSpacebarLanguageSwitchThreshold = (getMostCommonKeyWidth() * 5) / 4;
}
@@ -163,6 +163,10 @@ public class LatinKeyboard extends Keyboard {
view.invalidateKey(mShortcutKey);
}
+ public boolean needsAutoCorrectionSpacebarLed() {
+ return mAutoCorrectionSpacebarLedIcon != null;
+ }
+
/**
* @return a key which should be invalidated.
*/
@@ -282,7 +286,7 @@ public class LatinKeyboard extends Keyboard {
}
final String language = layoutSpacebar(paint, inputLocale,
- mButtonArrowLeftIcon, mButtonArrowRightIcon, width, height,
+ mSpacebarArrowLeftIcon, mSpacebarArrowRightIcon, width, height,
getTextSizeFromTheme(mContext.getTheme(), textStyle, defaultTextSize));
// Draw language text with shadow
@@ -303,21 +307,21 @@ public class LatinKeyboard extends Keyboard {
if (mSubtypeSwitcher.useSpacebarLanguageSwitcher()
&& mSubtypeSwitcher.getEnabledKeyboardLocaleCount() > 1
&& !(isPhoneKeyboard() || isNumberKeyboard())) {
- mButtonArrowLeftIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
- mButtonArrowRightIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
- mButtonArrowLeftIcon.draw(canvas);
- mButtonArrowRightIcon.draw(canvas);
+ mSpacebarArrowLeftIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
+ mSpacebarArrowRightIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
+ mSpacebarArrowLeftIcon.draw(canvas);
+ mSpacebarArrowRightIcon.draw(canvas);
}
}
// Draw the spacebar icon at the bottom
if (isAutoCorrection) {
final int iconWidth = width * SPACE_LED_LENGTH_PERCENT / 100;
- final int iconHeight = mSpaceAutoCorrectionIndicator.getIntrinsicHeight();
+ final int iconHeight = mAutoCorrectionSpacebarLedIcon.getIntrinsicHeight();
int x = (width - iconWidth) / 2;
int y = height - iconHeight;
- mSpaceAutoCorrectionIndicator.setBounds(x, y, x + iconWidth, y + iconHeight);
- mSpaceAutoCorrectionIndicator.draw(canvas);
+ mAutoCorrectionSpacebarLedIcon.setBounds(x, y, x + iconWidth, y + iconHeight);
+ mAutoCorrectionSpacebarLedIcon.draw(canvas);
} else if (mSpaceIcon != null) {
final int iconWidth = mSpaceIcon.getIntrinsicWidth();
final int iconHeight = mSpaceIcon.getIntrinsicHeight();
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 6b4e9469f..397ac7eec 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -22,6 +22,7 @@ import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SubtypeSwitcher;
import android.content.res.Resources;
+import android.os.SystemClock;
import android.util.Log;
import android.view.MotionEvent;
@@ -540,8 +541,11 @@ public class PointerTracker {
public void onLongPressed(PointerTrackerQueue queue) {
mKeyAlreadyProcessed = true;
- if (queue != null)
+ if (queue != null) {
+ // TODO: Support chording + long-press input.
+ queue.releaseAllPointersExcept(this, SystemClock.uptimeMillis(), true);
queue.remove(this);
+ }
}
public void onCancelEvent(int x, int y, long eventTime, PointerTrackerQueue queue) {
@@ -635,8 +639,7 @@ public class PointerTracker {
Key key = getKey(keyIndex);
if (key.mCode == Keyboard.CODE_SHIFT) {
mHandler.startLongPressShiftTimer(mLongPressShiftKeyTimeout, keyIndex, this);
- } else if (key.mManualTemporaryUpperCaseCode != Keyboard.CODE_DUMMY
- && mKeyboard.isManualTemporaryUpperCase()) {
+ } else if (key.hasUppercaseLetter() && mKeyboard.isManualTemporaryUpperCase()) {
// We need not start long press timer on the key which has manual temporary upper case
// code defined and the keyboard is in manual temporary upper case mode.
return;
@@ -663,10 +666,9 @@ public class PointerTracker {
mKeyDetector.getKeyIndexAndNearbyCodes(x, y, codes);
// If keyboard is in manual temporary upper case state and key has manual temporary
- // shift code, alternate character code should be sent.
- if (mKeyboard.isManualTemporaryUpperCase()
- && key.mManualTemporaryUpperCaseCode != Keyboard.CODE_DUMMY) {
- code = key.mManualTemporaryUpperCaseCode;
+ // uppercase letter as key hint letter, alternate character code should be sent.
+ if (mKeyboard.isManualTemporaryUpperCase() && key.hasUppercaseLetter()) {
+ code = key.mHintLetter.charAt(0);
codes[0] = code;
}
diff --git a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
index 60d87f789..ff64c73cd 100644
--- a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
@@ -37,7 +37,6 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel {
private int mOriginX;
private int mOriginY;
- private int mTrackerId;
private long mDownTime;
public PopupMiniKeyboardView(Context context, AttributeSet attrs) {
@@ -98,30 +97,19 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel {
mOriginX = x + container.getPaddingLeft() - mCoordinates[0];
mOriginY = y + container.getPaddingTop() - mCoordinates[1];
- mTrackerId = tracker.mPointerId;
mDownTime = SystemClock.uptimeMillis();
// Inject down event on the key to mini keyboard.
- final MotionEvent downEvent = translateMotionEvent(MotionEvent.ACTION_DOWN, pointX,
- pointY + parentKey.mHeight / 2, mDownTime);
+ final MotionEvent downEvent = MotionEvent.obtain(mDownTime, mDownTime,
+ MotionEvent.ACTION_DOWN, pointX - mOriginX,
+ pointY + parentKey.mHeight / 2 - mOriginY, 0);
onTouchEvent(downEvent);
downEvent.recycle();
}
- private MotionEvent translateMotionEvent(int action, float x, float y, long eventTime) {
- return MotionEvent.obtain(mDownTime, eventTime, action, x - mOriginX, y - mOriginY, 0);
- }
-
@Override
public boolean onTouchEvent(MotionEvent me) {
- final int index = me.getActionIndex();
- final int id = me.getPointerId(index);
- if (id == mTrackerId) {
- final MotionEvent translated = translateMotionEvent(me.getAction(), me.getX(index),
- me.getY(index), me.getEventTime());
- super.onTouchEvent(translated);
- translated.recycle();
- }
- return true;
+ me.offsetLocation(-mOriginX, -mOriginY);
+ return super.onTouchEvent(me);
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java b/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java
index 5cf31cb14..a20bf1cd3 100644
--- a/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java
+++ b/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java
@@ -16,22 +16,21 @@
package com.android.inputmethod.keyboard;
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.SubtypeSwitcher;
-
import android.content.Context;
-import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.Paint;
-import android.graphics.PixelFormat;
import android.graphics.Paint.Align;
+import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
import android.text.TextPaint;
import android.view.ViewConfiguration;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.SubtypeSwitcher;
+
/**
* Animation to be displayed on the spacebar preview popup when switching languages by swiping the
* spacebar. It draws the current, previous and next languages and moves them by the delta of touch
@@ -39,16 +38,16 @@ import android.view.ViewConfiguration;
*/
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;
private final int mHeight;
private final Drawable mBackground;
+ private final int mSpacebarTextColor;
private final TextPaint mTextPaint;
private final int mMiddleX;
private final Drawable mLeftDrawable;
private final Drawable mRightDrawable;
private final int mThreshold;
+
private int mDiff;
private boolean mHitThreshold;
private String mCurrentLanguage;
@@ -56,29 +55,31 @@ public class SlidingLocaleDrawable extends Drawable {
private String mPrevLanguage;
public SlidingLocaleDrawable(Context context, Drawable background, int width, int height) {
- mContext = context;
- mRes = context.getResources();
mBackground = background;
Keyboard.setDefaultBounds(mBackground);
mWidth = width;
mHeight = height;
final TextPaint textPaint = new TextPaint();
- textPaint.setTextSize(getTextSizeFromTheme(android.R.style.TextAppearance_Medium, 18));
+ textPaint.setTextSize(getTextSizeFromTheme(
+ context, android.R.style.TextAppearance_Medium, 18));
textPaint.setColor(Color.TRANSPARENT);
textPaint.setTextAlign(Align.CENTER);
textPaint.setAntiAlias(true);
mTextPaint = textPaint;
mMiddleX = (mWidth - mBackground.getIntrinsicWidth()) / 2;
- final Resources res = mRes;
- mLeftDrawable = res.getDrawable(
- R.drawable.sym_keyboard_feedback_language_arrows_left);
- mRightDrawable = res.getDrawable(
- R.drawable.sym_keyboard_feedback_language_arrows_right);
- mThreshold = ViewConfiguration.get(mContext).getScaledTouchSlop();
+
+ final TypedArray a = context.obtainStyledAttributes(
+ null, R.styleable.LatinKeyboard, R.attr.latinKeyboardStyle, R.style.LatinKeyboard);
+ mSpacebarTextColor = a.getColor(R.styleable.LatinKeyboard_spacebarTextColor, 0);
+ mLeftDrawable = a.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewLeftIcon);
+ mRightDrawable = a.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewRightIcon);
+ a.recycle();
+
+ mThreshold = ViewConfiguration.get(context).getScaledTouchSlop();
}
- private int getTextSizeFromTheme(int style, int defValue) {
- TypedArray array = mContext.getTheme().obtainStyledAttributes(
+ private static int getTextSizeFromTheme(Context context, int style, int defValue) {
+ TypedArray array = context.getTheme().obtainStyledAttributes(
style, new int[] { android.R.attr.textSize });
int textSize = array.getDimensionPixelSize(array.getResourceId(0, 0), defValue);
return textSize;
@@ -118,7 +119,7 @@ public class SlidingLocaleDrawable extends Drawable {
// Draw language text with shadow
final float baseline = mHeight * LatinKeyboard.SPACEBAR_LANGUAGE_BASELINE
- paint.descent();
- paint.setColor(mRes.getColor(R.color.latinkeyboard_feedback_language_text));
+ paint.setColor(mSpacebarTextColor);
canvas.drawText(mCurrentLanguage, width / 2 + diff, baseline, paint);
canvas.drawText(mNextLanguage, diff - width / 2, baseline, paint);
canvas.drawText(mPrevLanguage, diff + width + width / 2, baseline, paint);
diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index b4f6b2c91..2a29e1f8f 100644
--- a/java/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -18,6 +18,7 @@ package com.android.inputmethod.latin;
import android.content.Context;
import android.content.res.Resources;
+import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Handler;
@@ -38,6 +39,7 @@ 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;
@@ -56,16 +58,29 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
private static final CharacterStyle BOLD_SPAN = new StyleSpan(Typeface.BOLD);
private static final CharacterStyle UNDERLINE_SPAN = new UnderlineSpan();
- private static final int MAX_SUGGESTIONS = 16;
+ // The maximum number of suggestions available. See {@link Suggest#mPrefMaxSuggestions}.
+ private static final int MAX_SUGGESTIONS = 18;
+ private static final int UNSPECIFIED_MEASURESPEC = MeasureSpec.makeMeasureSpec(
+ 0, MeasureSpec.UNSPECIFIED);
private static final boolean DBG = LatinImeLogger.sDBG;
+ private static final int NUM_CANDIDATES_IN_STRIP = 3;
+ private final ImageView mExpandCandidatesPane;
+ private final ImageView mCloseCandidatesPane;
+ private ViewGroup mCandidatesPane;
+ private ViewGroup mCandidatesPaneContainer;
+ private View mKeyboardView;
private final ArrayList<TextView> mWords = new ArrayList<TextView>();
private final ArrayList<View> mDividers = new ArrayList<View>();
private final int mCandidatePadding;
- private final boolean mConfigCandidateHighlightFontColorEnabled;
+ private final int mCandidateStripHeight;
private final CharacterStyle mInvertedForegroundColorSpan;
private final CharacterStyle mInvertedBackgroundColorSpan;
+ private final int mAutoCorrectHighlight;
+ private static final int AUTO_CORRECT_BOLD = 0x01;
+ private static final int AUTO_CORRECT_UNDERLINE = 0x02;
+ private static final int AUTO_CORRECT_INVERT = 0x04;
private final int mColorTypedWord;
private final int mColorAutoCorrect;
private final int mColorSuggestedCandidate;
@@ -129,27 +144,44 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
* @param attrs
*/
public CandidateView(Context context, AttributeSet attrs) {
- super(context, attrs);
+ this(context, attrs, R.attr.candidateViewStyle);
+ }
+
+ public CandidateView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
Resources res = context.getResources();
- mPreviewPopup = new PopupWindow(context);
LayoutInflater inflater = LayoutInflater.from(context);
+ inflater.inflate(R.layout.candidates_strip, this);
+
+ mPreviewPopup = new PopupWindow(context);
mPreviewText = (TextView) inflater.inflate(R.layout.candidate_preview, null);
mPreviewPopup.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
mPreviewPopup.setContentView(mPreviewText);
mPreviewPopup.setBackgroundDrawable(null);
- mConfigCandidateHighlightFontColorEnabled =
- res.getBoolean(R.bool.config_candidate_highlight_font_color_enabled);
- mColorTypedWord = res.getColor(R.color.candidate_typed_word);
- mColorAutoCorrect = res.getColor(R.color.candidate_auto_correct);
- mColorSuggestedCandidate = res.getColor(R.color.candidate_suggested);
- mInvertedForegroundColorSpan = new ForegroundColorSpan(mColorTypedWord ^ 0x00ffffff);
- mInvertedBackgroundColorSpan = new BackgroundColorSpan(mColorTypedWord);
mCandidatePadding = res.getDimensionPixelOffset(R.dimen.candidate_padding);
+ mCandidateStripHeight = res.getDimensionPixelOffset(R.dimen.candidate_strip_height);
for (int i = 0; i < MAX_SUGGESTIONS; i++) {
- final TextView tv = (TextView)inflater.inflate(R.layout.candidate, null);
+ final TextView tv;
+ switch (i) {
+ case 0:
+ tv = (TextView)findViewById(R.id.candidate_left);
+ tv.setPadding(mCandidatePadding, 0, 0, 0);
+ break;
+ case 1:
+ tv = (TextView)findViewById(R.id.candidate_center);
+ break;
+ case 2:
+ tv = (TextView)findViewById(R.id.candidate_right);
+ break;
+ default:
+ tv = (TextView)inflater.inflate(R.layout.candidate, null);
+ break;
+ }
+ if (i < NUM_CANDIDATES_IN_STRIP)
+ setLayoutWeight(tv, 1.0f);
tv.setTag(i);
tv.setOnClickListener(this);
if (i == 0)
@@ -157,19 +189,53 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
mWords.add(tv);
if (i > 0) {
final View divider = inflater.inflate(R.layout.candidate_divider, null);
+ divider.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC);
mDividers.add(divider);
}
}
- scrollTo(0, getScrollY());
+ final TypedArray a = context.obtainStyledAttributes(
+ attrs, R.styleable.CandidateView, defStyle, R.style.CandidateViewStyle);
+ mAutoCorrectHighlight = a.getInt(R.styleable.CandidateView_autoCorrectHighlight, 0);
+ mColorTypedWord = a.getColor(R.styleable.CandidateView_colorTypedWord, 0);
+ mColorAutoCorrect = a.getColor(R.styleable.CandidateView_colorAutoCorrect, 0);
+ mColorSuggestedCandidate = a.getColor(R.styleable.CandidateView_colorSuggested, 0);
+ mInvertedForegroundColorSpan = new ForegroundColorSpan(mColorTypedWord ^ 0x00ffffff);
+ mInvertedBackgroundColorSpan = new BackgroundColorSpan(mColorTypedWord);
+
+ mExpandCandidatesPane = (ImageView)findViewById(R.id.expand_candidates_pane);
+ mExpandCandidatesPane.setImageDrawable(
+ a.getDrawable(R.styleable.CandidateView_iconExpandPane));
+ mExpandCandidatesPane.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ expandCandidatesPane();
+ }
+ });
+ mCloseCandidatesPane = (ImageView)findViewById(R.id.close_candidates_pane);
+ mCloseCandidatesPane.setImageDrawable(
+ a.getDrawable(R.styleable.CandidateView_iconClosePane));
+ mCloseCandidatesPane.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ closeCandidatesPane();
+ }
+ });
+
+ a.recycle();
}
/**
* A connection back to the input method.
* @param listener
*/
- public void setListener(Listener listener) {
+ public void setListener(Listener listener, View inputView) {
mListener = listener;
+ mKeyboardView = inputView.findViewById(R.id.keyboard_view);
+ mCandidatesPane = (ViewGroup)inputView.findViewById(R.id.candidates_pane);
+ mCandidatesPane.setOnClickListener(this);
+ mCandidatesPaneContainer = (ViewGroup)inputView.findViewById(
+ R.id.candidates_pane_container);
}
public void setSuggestions(SuggestedWords suggestions) {
@@ -183,22 +249,32 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
}
}
+ private static void setLayoutWeight(View v, float weight) {
+ ViewGroup.LayoutParams lp = v.getLayoutParams();
+ if (lp instanceof LinearLayout.LayoutParams) {
+ LinearLayout.LayoutParams llp = (LinearLayout.LayoutParams)lp;
+ llp.width = 0;
+ llp.weight = weight;
+ }
+ }
+
private CharSequence getStyledCandidateWord(CharSequence word, boolean isAutoCorrect) {
if (!isAutoCorrect)
return word;
- final CharacterStyle style = mConfigCandidateHighlightFontColorEnabled ? BOLD_SPAN
- : UNDERLINE_SPAN;
final Spannable spannedWord = new SpannableString(word);
- spannedWord.setSpan(style, 0, word.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+ if ((mAutoCorrectHighlight & AUTO_CORRECT_BOLD) != 0)
+ spannedWord.setSpan(BOLD_SPAN, 0, word.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+ if ((mAutoCorrectHighlight & AUTO_CORRECT_UNDERLINE) != 0)
+ spannedWord.setSpan(UNDERLINE_SPAN, 0, word.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return spannedWord;
}
private int getCandidateTextColor(boolean isAutoCorrect, boolean isSuggestedCandidate,
SuggestedWordInfo info) {
final int color;
- if (isAutoCorrect && mConfigCandidateHighlightFontColorEnabled) {
+ if (isAutoCorrect) {
color = mColorAutoCorrect;
- } else if (isSuggestedCandidate && mConfigCandidateHighlightFontColorEnabled) {
+ } else if (isSuggestedCandidate) {
color = mColorSuggestedCandidate;
} else {
color = mColorTypedWord;
@@ -216,7 +292,14 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
final List<SuggestedWordInfo> suggestedWordInfoList = suggestions.mSuggestedWordInfoList;
clear();
+ final int paneWidth = getWidth();
+ final int dividerWidth = mDividers.get(0).getMeasuredWidth();
+ int x = 0;
+ int y = 0;
+ int fromIndex = NUM_CANDIDATES_IN_STRIP;
final int count = Math.min(mWords.size(), suggestions.size());
+ closeCandidatesPane();
+ mExpandCandidatesPane.setEnabled(count >= NUM_CANDIDATES_IN_STRIP);
for (int i = 0; i < count; i++) {
final CharSequence word = suggestions.getWord(i);
if (word == null) continue;
@@ -233,39 +316,97 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
final boolean isPunctuationSuggestions = (word.length() == 1 && count > 1);
final TextView tv = mWords.get(i);
+ // TODO: Reorder candidates in strip as appropriate. The center candidate should hold
+ // the word when space is typed (valid typed word or auto corrected word).
tv.setTextColor(getCandidateTextColor(isAutoCorrect,
isSuggestedCandidate || isPunctuationSuggestions, info));
tv.setText(getStyledCandidateWord(word, isAutoCorrect));
- if (i == 0) {
- tv.setPadding(mCandidatePadding, 0, 0, 0);
- } else if (i == count - 1) {
- tv.setPadding(0, 0, mCandidatePadding, 0);
- } else {
- tv.setPadding(0, 0, 0, 0);
+ // TODO: call TextView.setTextScaleX() to fit the candidate in single line.
+ if (i >= NUM_CANDIDATES_IN_STRIP) {
+ tv.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC);
+ final int width = tv.getMeasuredWidth();
+ // TODO: Handle overflow case.
+ if (dividerWidth + x + width >= paneWidth) {
+ centeringCandidates(fromIndex, i - 1, x, paneWidth);
+ x = 0;
+ y += mCandidateStripHeight;
+ fromIndex = i;
+ }
+ if (x != 0) {
+ final View divider = mDividers.get(i - NUM_CANDIDATES_IN_STRIP);
+ mCandidatesPane.addView(divider);
+ placeCandidateAt(divider, x, y);
+ x += dividerWidth;
+ }
+ mCandidatesPane.addView(tv);
+ placeCandidateAt(tv, x, y);
+ x += width;
}
- if (i > 0)
- addView(mDividers.get(i - 1));
- addView(tv);
if (DBG && info != null) {
final TextView dv = new TextView(getContext(), null);
dv.setTextSize(10.0f);
dv.setTextColor(0xff808080);
dv.setText(info.getDebugString());
- addView(dv);
+ // TODO: debug view for candidate strip needed.
+ mCandidatesPane.addView(dv);
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)dv.getLayoutParams();
lp.gravity = Gravity.BOTTOM;
}
}
+ if (x != 0) {
+ // Centering last candidates row.
+ centeringCandidates(fromIndex, count - 1, x, paneWidth);
+ }
+ }
+
+ private void placeCandidateAt(View v, int x, int y) {
+ ViewGroup.LayoutParams lp = v.getLayoutParams();
+ if (lp instanceof ViewGroup.MarginLayoutParams) {
+ ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams)lp;
+ mlp.width = v.getMeasuredWidth();
+ mlp.height = v.getMeasuredHeight();
+ mlp.setMargins(x, y + (mCandidateStripHeight - mlp.height) / 2, 0, 0);
+ }
+ }
- scrollTo(0, getScrollY());
- requestLayout();
+ private void centeringCandidates(int from, int to, int width, int paneWidth) {
+ final ViewGroup pane = mCandidatesPane;
+ final int fromIndex = pane.indexOfChild(mWords.get(from));
+ final int toIndex = pane.indexOfChild(mWords.get(to));
+ final int offset = (paneWidth - width) / 2;
+ for (int index = fromIndex; index <= toIndex; index++) {
+ offsetMargin(pane.getChildAt(index), offset, 0);
+ }
+ }
+
+ private static void offsetMargin(View v, int dx, int dy) {
+ if (v == null)
+ return;
+ ViewGroup.LayoutParams lp = v.getLayoutParams();
+ if (lp instanceof ViewGroup.MarginLayoutParams) {
+ ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams)lp;
+ mlp.setMargins(mlp.leftMargin + dx, mlp.topMargin + dy, 0, 0);
+ }
+ }
+
+ private void expandCandidatesPane() {
+ mExpandCandidatesPane.setVisibility(View.GONE);
+ mCloseCandidatesPane.setVisibility(View.VISIBLE);
+ mCandidatesPaneContainer.setMinimumHeight(mKeyboardView.getMeasuredHeight());
+ mCandidatesPaneContainer.setVisibility(View.VISIBLE);
+ mKeyboardView.setVisibility(View.GONE);
+ }
+
+ private void closeCandidatesPane() {
+ mExpandCandidatesPane.setVisibility(View.VISIBLE);
+ mCloseCandidatesPane.setVisibility(View.GONE);
+ mCandidatesPaneContainer.setVisibility(View.GONE);
+ mKeyboardView.setVisibility(View.VISIBLE);
}
public void onAutoCorrectionInverted(CharSequence autoCorrectedWord) {
- // Displaying auto corrected word as inverted is enabled only when highlighting candidate
- // with color is disabled.
- if (mConfigCandidateHighlightFontColorEnabled)
+ if ((mAutoCorrectHighlight & AUTO_CORRECT_INVERT) == 0)
return;
final TextView tv = mWords.get(1);
final Spannable word = new SpannableString(autoCorrectedWord);
@@ -278,10 +419,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
mShowingAutoCorrectionInverted = true;
}
- public boolean isConfigCandidateHighlightFontColorEnabled() {
- return mConfigCandidateHighlightFontColorEnabled;
- }
-
public boolean isShowingAddToDictionaryHint() {
return mShowingAddToDictionary;
}
@@ -310,7 +447,9 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
public void clear() {
mShowingAddToDictionary = false;
mShowingAutoCorrectionInverted = false;
- removeAllViews();
+ for (int i = 0; i < NUM_CANDIDATES_IN_STRIP; i++)
+ mWords.get(i).setText(null);
+ mCandidatesPane.removeAllViews();
}
private void hidePreview() {
@@ -349,9 +488,13 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
@Override
public boolean onLongClick(View view) {
- final int index = (Integer) view.getTag();
+ final Object tag = view.getTag();
+ if (!(tag instanceof Integer))
+ return true;
+ final int index = (Integer) tag;
if (index >= mSuggestions.size())
return true;
+
final CharSequence word = mSuggestions.getWord(index);
if (word.length() < 2)
return false;
@@ -361,15 +504,22 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
@Override
public void onClick(View view) {
- final int index = (Integer) view.getTag();
+ final Object tag = view.getTag();
+ if (!(tag instanceof Integer))
+ return;
+ final int index = (Integer) tag;
if (index >= mSuggestions.size())
return;
+
final CharSequence word = mSuggestions.getWord(index);
if (mShowingAddToDictionary && index == 0) {
addToDictionary(word);
} else {
mListener.pickSuggestionManually(index, word);
}
+ // Because some punctuation letters are not treated as word separator depending on locale,
+ // {@link #setSuggestions} might not be called and candidates pane left opened.
+ closeCandidatesPane();
}
@Override
diff --git a/java/src/com/android/inputmethod/latin/DictionaryCollection.java b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
index 3fcb6ed55..5e7de3e6b 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryCollection.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
@@ -54,8 +54,8 @@ public class DictionaryCollection extends Dictionary {
@Override
public boolean isValidWord(CharSequence word) {
- for (final Dictionary dict : mDictionaries)
- if (dict.isValidWord(word)) return true;
+ for (int i = mDictionaries.size() - 1; i >= 0; --i)
+ if (mDictionaries.get(i).isValidWord(word)) return true;
return false;
}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 940f6b835..87912eb00 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -502,7 +502,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
super.setInputView(view);
mCandidateViewContainer = view.findViewById(R.id.candidates_container);
mCandidateView = (CandidateView) view.findViewById(R.id.candidates);
- mCandidateView.setListener(this);
+ mCandidateView.setListener(this, view);
mCandidateStripHeight = (int)mResources.getDimension(R.dimen.candidate_strip_height);
}
@@ -1464,7 +1464,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (mCandidateView != null) {
mCandidateView.setSuggestions(words);
- if (mCandidateView.isConfigCandidateHighlightFontColorEnabled()) {
+ if (mKeyboardSwitcher.getLatinKeyboard().needsAutoCorrectionSpacebarLed()) {
mKeyboardSwitcher.onAutoCorrectionStateChanged(
words.hasWordAboveAutoCorrectionScoreThreshold());
}
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 33f9820cc..62788fb9e 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -84,7 +84,7 @@ public class Suggest implements Dictionary.WordCallback {
private final Map<String, Dictionary> mUnigramDictionaries = new HashMap<String, Dictionary>();
private final Map<String, Dictionary> mBigramDictionaries = new HashMap<String, Dictionary>();
- private int mPrefMaxSuggestions = 12;
+ private int mPrefMaxSuggestions = 18;
private static final int PREF_MAX_BIGRAMS = 60;
diff --git a/native/src/bigram_dictionary.cpp b/native/src/bigram_dictionary.cpp
index 36761b88d..11e6dc250 100644
--- a/native/src/bigram_dictionary.cpp
+++ b/native/src/bigram_dictionary.cpp
@@ -111,8 +111,7 @@ int BigramDictionary::getBigrams(unsigned short *prevWord, int prevWordLength, i
mMaxBigrams = maxBigrams;
if (HAS_BIGRAM && IS_LATEST_DICT_VERSION) {
- int pos = mParentDictionary->isValidWordRec(
- DICTIONARY_HEADER_SIZE, prevWord, 0, prevWordLength);
+ int pos = mParentDictionary->getBigramPosition(prevWord, prevWordLength);
if (DEBUG_DICT) {
LOGI("Pos -> %d", pos);
}
diff --git a/native/src/dictionary.cpp b/native/src/dictionary.cpp
index d9ef8f3b7..9e32ee80f 100644
--- a/native/src/dictionary.cpp
+++ b/native/src/dictionary.cpp
@@ -53,45 +53,16 @@ bool Dictionary::hasBigram() {
return ((mDict[1] & 0xFF) == 1);
}
-// TODO: use uint32_t instead of unsigned short
bool Dictionary::isValidWord(unsigned short *word, int length) {
+ return mUnigramDictionary->isValidWord(word, length);
+}
+
+int Dictionary::getBigramPosition(unsigned short *word, int length) {
if (IS_LATEST_DICT_VERSION) {
- return (isValidWordRec(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
+ return mUnigramDictionary->getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length);
} else {
- return (isValidWordRec(0, word, 0, length) != NOT_VALID_WORD);
+ return mUnigramDictionary->getBigramPosition(0, word, 0, length);
}
}
-int Dictionary::isValidWordRec(int pos, unsigned short *word, int offset, int length) {
- // returns address of bigram data of that word
- // return -99 if not found
-
- int count = Dictionary::getCount(mDict, &pos);
- unsigned short currentChar = (unsigned short) word[offset];
- for (int j = 0; j < count; j++) {
- unsigned short c = Dictionary::getChar(mDict, &pos);
- int terminal = Dictionary::getTerminal(mDict, &pos);
- int childPos = Dictionary::getAddress(mDict, &pos);
- if (c == currentChar) {
- if (offset == length - 1) {
- if (terminal) {
- return (pos+1);
- }
- } else {
- if (childPos != 0) {
- int t = isValidWordRec(childPos, word, offset + 1, length);
- if (t > 0) {
- return t;
- }
- }
- }
- }
- if (terminal) {
- Dictionary::getFreq(mDict, IS_LATEST_DICT_VERSION, &pos);
- }
- // There could be two instances of each alphabet - upper and lower case. So continue
- // looking ...
- }
- return NOT_VALID_WORD;
-}
} // namespace latinime
diff --git a/native/src/dictionary.h b/native/src/dictionary.h
index 13b2a2816..1b41f69dd 100644
--- a/native/src/dictionary.h
+++ b/native/src/dictionary.h
@@ -43,7 +43,6 @@ public:
}
bool isValidWord(unsigned short *word, int length);
- int isValidWordRec(int pos, unsigned short *word, int offset, int length);
void *getDict() { return (void *)mDict; }
int getDictSize() { return mDictSize; }
int getMmapFd() { return mMmapFd; }
@@ -63,6 +62,9 @@ public:
const int pos, unsigned short *c, int *childrenPosition,
bool *terminal, int *freq);
+ // TODO: delete this
+ int getBigramPosition(unsigned short *word, int length);
+
private:
bool hasBigram();
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index e49e95b81..aa159b533 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -16,8 +16,6 @@
*/
#include <assert.h>
-#include <fcntl.h>
-#include <stdio.h>
#include <string.h>
#define LOG_TAG "LatinIME: unigram_dictionary.cpp"
@@ -34,10 +32,12 @@ const UnigramDictionary::digraph_t UnigramDictionary::GERMAN_UMLAUT_DIGRAPHS[] =
{ 'o', 'e' },
{ 'u', 'e' } };
-UnigramDictionary::UnigramDictionary(const unsigned char *dict, int typedLetterMultiplier,
+// TODO: check the header
+UnigramDictionary::UnigramDictionary(const uint8_t* const streamStart, int typedLetterMultiplier,
int fullWordMultiplier, int maxWordLength, int maxWords, int maxProximityChars,
const bool isLatestDictVersion)
- : DICT(dict), MAX_WORD_LENGTH(maxWordLength), MAX_WORDS(maxWords),
+ : DICT_ROOT(streamStart),
+ MAX_WORD_LENGTH(maxWordLength), MAX_WORDS(maxWords),
MAX_PROXIMITY_CHARS(maxProximityChars), IS_LATEST_DICT_VERSION(isLatestDictVersion),
TYPED_LETTER_MULTIPLIER(typedLetterMultiplier), FULL_WORD_MULTIPLIER(fullWordMultiplier),
ROOT_POS(isLatestDictVersion ? DICTIONARY_HEADER_SIZE : 0),
@@ -265,8 +265,7 @@ void UnigramDictionary::initSuggestions(const int *codes, const int codesSize,
mMaxEditDistance = mInputLength < 5 ? 2 : mInputLength / 2;
}
-void UnigramDictionary::registerNextLetter(
- unsigned short c, int *nextLetters, int nextLettersSize) {
+static inline void registerNextLetter(unsigned short c, int *nextLetters, int nextLettersSize) {
if (c < nextLettersSize) {
nextLetters[c]++;
}
@@ -290,8 +289,8 @@ bool UnigramDictionary::addWord(unsigned short *word, int length, int frequency)
// Find the right insertion point
int insertAt = 0;
while (insertAt < MAX_WORDS) {
- if (frequency > mFrequencies[insertAt] || (mFrequencies[insertAt] == frequency
- && length < Dictionary::wideStrLen(mOutputChars + insertAt * MAX_WORD_LENGTH))) {
+ // TODO: How should we sort words with the same frequency?
+ if (frequency > mFrequencies[insertAt]) {
break;
}
insertAt++;
@@ -322,7 +321,7 @@ bool UnigramDictionary::addWord(unsigned short *word, int length, int frequency)
return false;
}
-unsigned short UnigramDictionary::toBaseLowerCase(unsigned short c) {
+static inline unsigned short toBaseLowerCase(unsigned short c) {
if (c < sizeof(BASE_CHARS) / sizeof(BASE_CHARS[0])) {
c = BASE_CHARS[c];
}
@@ -363,7 +362,7 @@ void UnigramDictionary::getSuggestionCandidates(const int skipPos,
}
int rootPosition = ROOT_POS;
// Get the number of child of root, then increment the position
- int childCount = Dictionary::getCount(DICT, &rootPosition);
+ int childCount = Dictionary::getCount(DICT_ROOT, &rootPosition);
int depth = 0;
mStackChildCount[0] = childCount;
@@ -372,6 +371,7 @@ void UnigramDictionary::getSuggestionCandidates(const int skipPos,
mStackInputIndex[0] = 0;
mStackDiffs[0] = 0;
mStackSiblingPos[0] = rootPosition;
+ mStackOutputIndex[0] = 0;
// Depth first search
while (depth >= 0) {
@@ -382,14 +382,15 @@ void UnigramDictionary::getSuggestionCandidates(const int skipPos,
int inputIndex = mStackInputIndex[depth];
int diffs = mStackDiffs[depth];
int siblingPos = mStackSiblingPos[depth];
+ int outputIndex = mStackOutputIndex[depth];
int firstChildPos;
// depth will never be greater than maxDepth because in that case,
// needsToTraverseChildrenNodes should be false
- const bool needsToTraverseChildrenNodes = processCurrentNode(siblingPos, depth,
+ const bool needsToTraverseChildrenNodes = processCurrentNode(siblingPos, outputIndex,
maxDepth, traverseAllNodes, matchWeight, inputIndex, diffs, skipPos,
excessivePos, transposedPos, nextLetters, nextLettersSize, &childCount,
&firstChildPos, &traverseAllNodes, &matchWeight, &inputIndex, &diffs,
- &siblingPos);
+ &siblingPos, &outputIndex);
// Update next sibling pos
mStackSiblingPos[depth] = siblingPos;
if (needsToTraverseChildrenNodes) {
@@ -401,6 +402,7 @@ void UnigramDictionary::getSuggestionCandidates(const int skipPos,
mStackInputIndex[depth] = inputIndex;
mStackDiffs[depth] = diffs;
mStackSiblingPos[depth] = firstChildPos;
+ mStackOutputIndex[depth] = outputIndex;
}
} else {
// Goes to parent sibling node
@@ -562,7 +564,7 @@ void UnigramDictionary::getWordsOld(const int initialPos, const int inputLength,
const int excessivePos, const int transposedPos,int *nextLetters,
const int nextLettersSize) {
int initialPosition = initialPos;
- const int count = Dictionary::getCount(DICT, &initialPosition);
+ const int count = Dictionary::getCount(DICT_ROOT, &initialPosition);
getWordsRec(count, initialPosition, 0,
min(inputLength * MAX_DEPTH_MULTIPLIER, MAX_WORD_LENGTH),
mInputLength <= 0, 1, 0, 0, skipPos, excessivePos, transposedPos, nextLetters,
@@ -577,22 +579,22 @@ void UnigramDictionary::getWordsRec(const int childrenCount, const int pos, cons
for (int i = 0; i < childrenCount; ++i) {
int newCount;
int newChildPosition;
- const int newDepth = depth + 1;
bool newTraverseAllNodes;
int newMatchRate;
int newInputIndex;
int newDiffs;
int newSiblingPos;
+ int newOutputIndex;
const bool needsToTraverseChildrenNodes = processCurrentNode(siblingPos, depth, maxDepth,
traverseAllNodes, matchWeight, inputIndex, diffs,
skipPos, excessivePos, transposedPos,
nextLetters, nextLettersSize,
&newCount, &newChildPosition, &newTraverseAllNodes, &newMatchRate,
- &newInputIndex, &newDiffs, &newSiblingPos);
+ &newInputIndex, &newDiffs, &newSiblingPos, &newOutputIndex);
siblingPos = newSiblingPos;
if (needsToTraverseChildrenNodes) {
- getWordsRec(newCount, newChildPosition, newDepth, maxDepth, newTraverseAllNodes,
+ getWordsRec(newCount, newChildPosition, newOutputIndex, maxDepth, newTraverseAllNodes,
newMatchRate, newInputIndex, newDiffs, skipPos, excessivePos, transposedPos,
nextLetters, nextLettersSize);
}
@@ -754,7 +756,7 @@ inline bool UnigramDictionary::processCurrentNode(const int pos, const int depth
const int diffs, const int skipPos, const int excessivePos, const int transposedPos,
int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition,
bool *newTraverseAllNodes, int *newMatchRate, int *newInputIndex, int *newDiffs,
- int *nextSiblingPosition) {
+ int *nextSiblingPosition, int *nextOutputIndex) {
if (DEBUG_DICT) {
int inputCount = 0;
if (skipPos >= 0) ++inputCount;
@@ -770,8 +772,9 @@ inline bool UnigramDictionary::processCurrentNode(const int pos, const int depth
if (excessivePos == depth && inputIndex < mInputLength - 1) ++inputIndex;
- *nextSiblingPosition = Dictionary::setDictionaryValues(DICT, IS_LATEST_DICT_VERSION, pos, &c,
- &childPosition, &terminal, &freq);
+ *nextSiblingPosition = Dictionary::setDictionaryValues(DICT_ROOT, IS_LATEST_DICT_VERSION, pos,
+ &c, &childPosition, &terminal, &freq);
+ *nextOutputIndex = depth + 1;
const bool needsToTraverseChildrenNodes = childPosition != 0;
@@ -829,7 +832,7 @@ inline bool UnigramDictionary::processCurrentNode(const int pos, const int depth
*newTraverseAllNodes = true;
}
// get the count of nodes and increment childAddress.
- *newCount = Dictionary::getCount(DICT, &childPosition);
+ *newCount = Dictionary::getCount(DICT_ROOT, &childPosition);
*newChildPosition = childPosition;
if (DEBUG_DICT) assert(needsToTraverseChildrenNodes);
return needsToTraverseChildrenNodes;
@@ -838,7 +841,7 @@ inline bool UnigramDictionary::processCurrentNode(const int pos, const int depth
inline int UnigramDictionary::getBestWordFreq(const int startInputIndex, const int inputLength,
unsigned short *word) {
int pos = ROOT_POS;
- int count = Dictionary::getCount(DICT, &pos);
+ int count = Dictionary::getCount(DICT_ROOT, &pos);
int maxFreq = 0;
int depth = 0;
unsigned short newWord[MAX_WORD_LENGTH_INTERNAL];
@@ -894,8 +897,8 @@ inline bool UnigramDictionary::processCurrentNodeForExactMatch(const int firstCh
const int inputIndex = startInputIndex + depth;
const int *currentChars = getInputCharsAt(inputIndex);
unsigned short c;
- *siblingPos = Dictionary::setDictionaryValues(DICT, IS_LATEST_DICT_VERSION, firstChildPos, &c,
- newChildPosition, newTerminal, newFreq);
+ *siblingPos = Dictionary::setDictionaryValues(DICT_ROOT, IS_LATEST_DICT_VERSION, firstChildPos,
+ &c, newChildPosition, newTerminal, newFreq);
const unsigned int inputC = currentChars[0];
if (DEBUG_DICT) {
assert(inputC <= U_SHORT_MAX);
@@ -912,7 +915,7 @@ inline bool UnigramDictionary::processCurrentNodeForExactMatch(const int firstCh
}
}
if (hasChild) {
- *newCount = Dictionary::getCount(DICT, newChildPosition);
+ *newCount = Dictionary::getCount(DICT_ROOT, newChildPosition);
return true;
} else {
return false;
@@ -924,4 +927,50 @@ inline bool UnigramDictionary::processCurrentNodeForExactMatch(const int firstCh
return false;
}
}
+
+// TODO: use uint32_t instead of unsigned short
+bool UnigramDictionary::isValidWord(unsigned short *word, int length) {
+ if (IS_LATEST_DICT_VERSION) {
+ return (getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
+ } else {
+ return (getBigramPosition(0, word, 0, length) != NOT_VALID_WORD);
+ }
+}
+
+
+// Require strict exact match.
+int UnigramDictionary::getBigramPosition(int pos, unsigned short *word, int offset,
+ int length) const {
+ // returns address of bigram data of that word
+ // return -99 if not found
+
+ int count = Dictionary::getCount(DICT_ROOT, &pos);
+ unsigned short currentChar = (unsigned short) word[offset];
+ for (int j = 0; j < count; j++) {
+ unsigned short c = Dictionary::getChar(DICT_ROOT, &pos);
+ int terminal = Dictionary::getTerminal(DICT_ROOT, &pos);
+ int childPos = Dictionary::getAddress(DICT_ROOT, &pos);
+ if (c == currentChar) {
+ if (offset == length - 1) {
+ if (terminal) {
+ return (pos+1);
+ }
+ } else {
+ if (childPos != 0) {
+ int t = getBigramPosition(childPos, word, offset + 1, length);
+ if (t > 0) {
+ return t;
+ }
+ }
+ }
+ }
+ if (terminal) {
+ Dictionary::getFreq(DICT_ROOT, IS_LATEST_DICT_VERSION, &pos);
+ }
+ // There could be two instances of each alphabet - upper and lower case. So continue
+ // looking ...
+ }
+ return NOT_VALID_WORD;
+}
+
} // namespace latinime
diff --git a/native/src/unigram_dictionary.h b/native/src/unigram_dictionary.h
index dd1b89042..c47db1ad2 100644
--- a/native/src/unigram_dictionary.h
+++ b/native/src/unigram_dictionary.h
@@ -17,9 +17,14 @@
#ifndef LATINIME_UNIGRAM_DICTIONARY_H
#define LATINIME_UNIGRAM_DICTIONARY_H
+#include <stdint.h>
#include "defines.h"
#include "proximity_info.h"
+#ifndef NULL
+#define NULL 0
+#endif
+
namespace latinime {
class UnigramDictionary {
@@ -31,8 +36,11 @@ class UnigramDictionary {
} ProximityType;
public:
- UnigramDictionary(const unsigned char *dict, int typedLetterMultipler, int fullWordMultiplier,
- int maxWordLength, int maxWords, int maxProximityChars, const bool isLatestDictVersion);
+ UnigramDictionary(const uint8_t* const streamStart, int typedLetterMultipler,
+ int fullWordMultiplier, int maxWordLength, int maxWords, int maxProximityChars,
+ const bool isLatestDictVersion);
+ bool isValidWord(unsigned short *word, int length);
+ int getBigramPosition(int pos, unsigned short *word, int offset, int length) const;
int getSuggestions(const ProximityInfo *proximityInfo, const int *xcoordinates,
const int *ycoordinates, const int *codes, const int codesSize, const int flags,
unsigned short *outWords, int *frequencies);
@@ -59,7 +67,6 @@ private:
int wideStrLen(unsigned short *str);
bool sameAsTyped(unsigned short *word, int length);
bool addWord(unsigned short *word, int length, int frequency);
- unsigned short toBaseLowerCase(unsigned short c);
void getWordsRec(const int childrenCount, const int pos, const int depth, const int maxDepth,
const bool traverseAllNodes, const int snr, const int inputIndex, const int diffs,
const int skipPos, const int excessivePos, const int transposedPos, int *nextLetters,
@@ -73,7 +80,6 @@ private:
void getWordsOld(const int initialPos, const int inputLength, const int skipPos,
const int excessivePos, const int transposedPos, int *nextLetters,
const int nextLettersSize);
- void registerNextLetter(unsigned short c, int *nextLetters, int nextLettersSize);
int calculateFinalFreq(const int inputIndex, const int depth, const int snr, const int skipPos,
const int excessivePos, const int transposedPos, const int freq,
const bool sameLength) const;
@@ -94,7 +100,7 @@ private:
const int diffs, const int skipPos, const int excessivePos, const int transposedPos,
int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition,
bool *newTraverseAllNodes, int *newSnr, int*newInputIndex, int *newDiffs,
- int *nextSiblingPosition);
+ int *nextSiblingPosition, int *nextOutputIndex);
int getBestWordFreq(const int startInputIndex, const int inputLength, unsigned short *word);
// Process a node by considering missing space
bool processCurrentNodeForExactMatch(const int firstChildPos,
@@ -104,7 +110,8 @@ private:
inline const int* getInputCharsAt(const int index) const {
return mInputCodes + (index * MAX_PROXIMITY_CHARS);
}
- const unsigned char *DICT;
+
+ const uint8_t* const DICT_ROOT;
const int MAX_WORD_LENGTH;
const int MAX_WORDS;
const int MAX_PROXIMITY_CHARS;
@@ -138,6 +145,7 @@ private:
int mStackInputIndex[MAX_WORD_LENGTH_INTERNAL];
int mStackDiffs[MAX_WORD_LENGTH_INTERNAL];
int mStackSiblingPos[MAX_WORD_LENGTH_INTERNAL];
+ int mStackOutputIndex[MAX_WORD_LENGTH_INTERNAL];
int mNextLettersFrequency[NEXT_LETTERS_SIZE];
};