aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/res/color/emoji_tab_label_color_lxx_dark.xml (renamed from java/res/color/emoji_tab_label_color_lxx.xml)8
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_active_ics.9.png)bin462 -> 462 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png)bin463 -> 463 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.pngbin657 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.pngbin1048 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.pngbin1082 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png)bin463 -> 463 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png)bin474 -> 474 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png)bin578 -> 578 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_lxx.9.png)bin135 -> 135 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_ics.9.png)bin587 -> 587 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_klp.9.png)bin639 -> 639 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_lxx.9.png)bin130 -> 130 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx.9.png)bin272 -> 272 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_ics.9.png)bin553 -> 553 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_light_pressed_ics.9.png)bin547 -> 547 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_klp.9.png)bin537 -> 537 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_light_pressed_klp.9.png)bin517 -> 517 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_ics.9.png)bin668 -> 668 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_klp.9.png)bin655 -> 655 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png)bin138 -> 138 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_ics.9.png)bin707 -> 707 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_klp.9.png)bin670 -> 670 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png (renamed from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png)bin130 -> 130 bytes
-rw-r--r--java/res/drawable-hdpi/emoji_category_tab_selected_holo_dark.9.png (renamed from java/res/drawable-hdpi/tab_selected.9.png)bin145 -> 145 bytes
-rw-r--r--java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png (renamed from java/res/drawable-hdpi/tab_unselected.9.png)bin150 -> 150 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_nature_light_activated.png)bin1850 -> 1850 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_nature_light_normal.png)bin1800 -> 1800 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_objects_light_activated.png)bin1744 -> 1744 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_objects_light_normal.png)bin1581 -> 1581 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_people_light_activated.png)bin1767 -> 1767 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_people_light_normal.png)bin1820 -> 1820 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_places_light_activated.png)bin1418 -> 1418 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_places_light_normal.png)bin1341 -> 1341 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_recent_activated_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_recent_light_activated.png)bin1667 -> 1667 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_recent_normal_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_recent_light_normal.png)bin1703 -> 1703 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_symbols_light_activated.png)bin1087 -> 1087 bytes
-rw-r--r--java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png (renamed from java/res/drawable-hdpi/ic_emoji_symbols_light_normal.png)bin1053 -> 1053 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_background_lxx.9.pngbin2147 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.pngbin0 -> 1651 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx.9.pngbin2105 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx_dark.9.pngbin0 -> 1651 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx.9.pngbin2164 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.pngbin0 -> 1745 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx.9.pngbin2225 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.pngbin0 -> 1738 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx.9.pngbin2061 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx_dark.9.pngbin0 -> 1637 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx.9.pngbin2133 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.pngbin0 -> 1734 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png (renamed from java/res/drawable-hdpi/keyboard_popup_panel_background_lxx.9.png)bin871 -> 871 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_return_lxx_dark.pngbin0 -> 1952 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_active_ics.9.png)bin345 -> 345 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png)bin355 -> 355 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.pngbin588 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.pngbin960 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.pngbin957 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png)bin355 -> 355 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png)bin339 -> 339 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png)bin428 -> 428 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_lxx.9.png)bin120 -> 120 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_ics.9.png)bin411 -> 411 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_klp.9.png)bin453 -> 453 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_lxx.9.png)bin114 -> 114 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx.9.png)bin222 -> 222 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_ics.9.png)bin394 -> 394 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_light_pressed_ics.9.png)bin381 -> 381 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_klp.9.png)bin380 -> 380 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_light_pressed_klp.9.png)bin368 -> 368 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_ics.9.png)bin505 -> 505 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_klp.9.png)bin468 -> 468 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png)bin124 -> 124 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_ics.9.png)bin489 -> 489 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_klp.9.png)bin458 -> 458 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png (renamed from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png)bin114 -> 114 bytes
-rw-r--r--java/res/drawable-mdpi/emoji_category_tab_selected_holo_dark.9.png (renamed from java/res/drawable-mdpi/tab_selected.9.png)bin140 -> 140 bytes
-rw-r--r--java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png (renamed from java/res/drawable-mdpi/tab_unselected.9.png)bin138 -> 138 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_nature_light_activated.png)bin1213 -> 1213 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_nature_light_normal.png)bin1130 -> 1130 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_objects_light_activated.png)bin1193 -> 1193 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_objects_light_normal.png)bin1092 -> 1092 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_people_light_activated.png)bin1170 -> 1170 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_people_light_normal.png)bin1132 -> 1132 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_places_light_activated.png)bin1032 -> 1032 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_places_light_normal.png)bin963 -> 963 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_recent_activated_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_recent_light_activated.png)bin1105 -> 1105 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_recent_normal_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_recent_light_normal.png)bin1106 -> 1106 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_symbols_light_activated.png)bin805 -> 805 bytes
-rw-r--r--java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png (renamed from java/res/drawable-mdpi/ic_emoji_symbols_light_normal.png)bin775 -> 775 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_background_lxx.9.pngbin1353 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.pngbin0 -> 1023 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx.9.pngbin1305 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx_dark.9.pngbin0 -> 1000 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx.9.pngbin1425 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.pngbin0 -> 1085 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx.9.pngbin1454 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.pngbin0 -> 1106 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx.9.pngbin1314 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx_dark.9.pngbin0 -> 1023 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx.9.pngbin1427 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.pngbin0 -> 1111 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png (renamed from java/res/drawable-mdpi/keyboard_popup_panel_background_lxx.9.png)bin589 -> 589 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_return_lxx_dark.pngbin0 -> 1337 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_active_ics.9.png)bin601 -> 601 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png)bin589 -> 589 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.pngbin727 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.pngbin1110 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.pngbin1128 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png)bin589 -> 589 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png)bin594 -> 594 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png)bin732 -> 732 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_lxx.9.png)bin153 -> 153 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_ics.9.png)bin745 -> 745 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_klp.9.png)bin787 -> 787 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_lxx.9.png)bin149 -> 149 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx.9.png)bin323 -> 323 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_ics.9.png)bin737 -> 737 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_ics.9.png)bin668 -> 668 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_klp.9.png)bin657 -> 657 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_klp.9.png)bin634 -> 634 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png)bin953 -> 953 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png)bin848 -> 848 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png)bin159 -> 159 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png)bin945 -> 945 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png)bin867 -> 867 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png (renamed from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png)bin149 -> 149 bytes
-rw-r--r--java/res/drawable-xhdpi/emoji_category_tab_selected_holo_dark.9.png (renamed from java/res/drawable-xhdpi/tab_selected.9.png)bin148 -> 148 bytes
-rw-r--r--java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png (renamed from java/res/drawable-xhdpi/tab_unselected.9.png)bin155 -> 155 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_nature_light_activated.png)bin2437 -> 2437 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_nature_light_normal.png)bin2371 -> 2371 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_objects_light_activated.png)bin2319 -> 2319 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_objects_light_normal.png)bin2074 -> 2074 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_people_light_activated.png)bin2519 -> 2519 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_people_light_normal.png)bin2526 -> 2526 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_places_light_activated.png)bin1828 -> 1828 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_places_light_normal.png)bin1667 -> 1667 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_recent_activated_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_recent_light_activated.png)bin2459 -> 2459 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_recent_normal_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_recent_light_normal.png)bin2346 -> 2346 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_symbols_light_activated.png)bin1457 -> 1457 bytes
-rw-r--r--java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png (renamed from java/res/drawable-xhdpi/ic_emoji_symbols_light_normal.png)bin1267 -> 1267 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx.9.pngbin3316 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.pngbin0 -> 2148 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx.9.pngbin3169 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx_dark.9.pngbin0 -> 2120 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx.9.pngbin3374 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.pngbin0 -> 2194 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx.9.pngbin3525 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.pngbin0 -> 2219 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx.9.pngbin3218 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx_dark.9.pngbin0 -> 2102 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx.9.pngbin3424 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.pngbin0 -> 2182 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png (renamed from java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx.9.png)bin1246 -> 1246 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_return_lxx_dark.pngbin0 -> 2606 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_ics.9.png)bin1805 -> 1805 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png)bin1718 -> 1718 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_holo.9.png)bin1718 -> 1718 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_light_normal_holo.9.png)bin1787 -> 1787 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_holo.9.png)bin1905 -> 1905 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_lxx.9.png)bin180 -> 180 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_ics.9.png)bin2039 -> 2039 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_klp.9.png)bin1998 -> 1998 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_lxx.9.png)bin182 -> 182 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx.9.png)bin1261 -> 1261 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_ics.9.png)bin1863 -> 1863 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_ics.9.png)bin1840 -> 1840 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_klp.9.png)bin1861 -> 1861 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_klp.9.png)bin1799 -> 1799 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png)bin2196 -> 2196 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png)bin2073 -> 2073 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png)bin186 -> 186 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png)bin2210 -> 2210 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png)bin2091 -> 2091 bytes
-rw-r--r--java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png (renamed from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png)bin182 -> 182 bytes
-rw-r--r--java/res/drawable-xxhdpi/emoji_category_tab_selected_holo_dark.9.png (renamed from java/res/drawable-xxhdpi/tab_selected.9.png)bin1030 -> 1030 bytes
-rw-r--r--java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png (renamed from java/res/drawable-xxhdpi/tab_unselected.9.png)bin1048 -> 1048 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_nature_light_activated.png)bin3150 -> 3150 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_nature_light_normal.png)bin2999 -> 2999 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_objects_light_activated.png)bin2831 -> 2831 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_objects_light_normal.png)bin2656 -> 2656 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_people_light_activated.png)bin3118 -> 3118 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_people_light_normal.png)bin3097 -> 3097 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_places_light_activated.png)bin2256 -> 2256 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_places_light_normal.png)bin2169 -> 2169 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_recent_activated_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_recent_light_activated.png)bin3152 -> 3152 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_recent_normal_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_recent_light_normal.png)bin2943 -> 2943 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_symbols_light_activated.png)bin1939 -> 1939 bytes
-rw-r--r--java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png (renamed from java/res/drawable-xxhdpi/ic_emoji_symbols_light_normal.png)bin1784 -> 1784 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx.9.pngbin5251 -> 0 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.pngbin0 -> 3744 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx.9.pngbin5862 -> 0 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx_dark.9.pngbin0 -> 3757 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx.9.pngbin5920 -> 0 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.pngbin0 -> 3842 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx.9.pngbin5450 -> 0 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.pngbin0 -> 3833 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx.9.pngbin5981 -> 0 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx_dark.9.pngbin0 -> 3677 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx.9.pngbin6060 -> 0 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.pngbin0 -> 3767 bytes
-rw-r--r--java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png (renamed from java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx.9.png)bin2732 -> 2732 bytes
-rw-r--r--java/res/drawable-xxhdpi/sym_keyboard_return_lxx_dark.pngbin0 -> 4213 bytes
-rw-r--r--java/res/drawable/btn_keyboard_key_functional_ics.xml4
-rw-r--r--java/res/drawable/btn_keyboard_key_functional_klp.xml4
-rw-r--r--java/res/drawable/btn_keyboard_key_functional_lxx_dark.xml (renamed from java/res/drawable/btn_keyboard_key_functional_lxx.xml)4
-rw-r--r--java/res/drawable/btn_keyboard_key_ics.xml16
-rw-r--r--java/res/drawable/btn_keyboard_key_klp.xml16
-rw-r--r--java/res/drawable/btn_keyboard_key_lxx_dark.xml (renamed from java/res/drawable/btn_keyboard_key_lxx.xml)18
-rw-r--r--java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml (renamed from java/res/drawable/btn_keyboard_key_popup_lxx.xml)2
-rw-r--r--java/res/drawable/btn_keyboard_spacebar_ics.xml4
-rw-r--r--java/res/drawable/btn_keyboard_spacebar_klp.xml4
-rw-r--r--java/res/drawable/btn_keyboard_spacebar_lxx_dark.xml (renamed from java/res/drawable/btn_keyboard_spacebar_lxx.xml)4
-rw-r--r--java/res/drawable/btn_suggestion_lxx_dark.xml (renamed from java/res/drawable/btn_suggestion_lxx.xml)2
-rw-r--r--java/res/drawable/ic_emoji_nature_holo_dark.xml (renamed from java/res/drawable/ic_emoji_nature_light.xml)8
-rw-r--r--java/res/drawable/ic_emoji_objects_holo_dark.xml32
-rw-r--r--java/res/drawable/ic_emoji_people_holo_dark.xml (renamed from java/res/drawable/ic_emoji_places_light.xml)8
-rw-r--r--java/res/drawable/ic_emoji_places_holo_dark.xml (renamed from java/res/drawable/ic_emoji_people_light.xml)8
-rw-r--r--java/res/drawable/ic_emoji_recent_holo_dark.xml (renamed from java/res/drawable/ic_emoji_objects_light.xml)8
-rw-r--r--java/res/drawable/ic_emoji_recent_light.xml32
-rw-r--r--java/res/drawable/ic_emoji_symbols_holo_dark.xml32
-rw-r--r--java/res/drawable/ic_emoji_symbols_light.xml32
-rw-r--r--java/res/drawable/keyboard_key_feedback_lxx_dark.xml (renamed from java/res/drawable/keyboard_key_feedback_lxx.xml)12
-rw-r--r--java/res/layout/emoji_palettes_view.xml9
-rw-r--r--java/res/values/colors.xml32
-rw-r--r--java/res/values/keyboard-icons-lxx-dark.xml (renamed from java/res/values/keyboard-icons-lxx.xml)4
-rw-r--r--java/res/values/themes-lxx-dark.xml (renamed from java/res/values/themes-lxx.xml)104
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardTheme.java6
-rw-r--r--java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java12
-rw-r--r--java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java7
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java6
-rw-r--r--java/src/com/android/inputmethod/latin/Dictionary.java8
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryCollection.java6
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java4
-rw-r--r--java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java4
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java10
-rw-r--r--java/src/com/android/inputmethod/latin/PrevWordsInfo.java29
-rw-r--r--java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java4
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java16
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java28
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java8
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java29
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java3
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java5
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java5
-rw-r--r--java/src/com/android/inputmethod/latin/utils/DistracterFilter.java9
-rw-r--r--java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java29
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node.h26
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node_utils.cpp6
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node_utils.h2
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h25
-rw-r--r--native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp24
-rw-r--r--native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h5
-rw-r--r--native/jni/src/suggest/core/session/dic_traverse_session.cpp17
-rw-r--r--native/jni/src/suggest/core/session/dic_traverse_session.h2
-rw-r--r--native/jni/src/suggest/core/session/prev_words_info.h57
-rw-r--r--native/jni/src/suggest/core/suggest.cpp2
-rw-r--r--tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java60
-rw-r--r--tests/src/com/android/inputmethod/latin/DistracterFilterTest.java18
-rw-r--r--tests/src/com/android/inputmethod/latin/WordComposerTests.java16
-rw-r--r--tools/dicttool/Android.mk1
261 files changed, 486 insertions, 412 deletions
diff --git a/java/res/color/emoji_tab_label_color_lxx.xml b/java/res/color/emoji_tab_label_color_lxx_dark.xml
index c2710d365..090f83e6a 100644
--- a/java/res/color/emoji_tab_label_color_lxx.xml
+++ b/java/res/color/emoji_tab_label_color_lxx_dark.xml
@@ -21,13 +21,13 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:color="@color/key_text_color_holo" />
+ android:color="@color/key_text_color_lxx_dark" />
<item
android:state_pressed="true"
- android:color="@color/key_text_color_holo" />
+ android:color="@color/key_text_color_lxx_dark" />
<item
android:state_selected="true"
- android:color="@color/key_text_color_holo" />
+ android:color="@color/key_text_color_lxx_dark" />
<item
- android:color="@color/key_text_inactive_color_lxx" />
+ android:color="@color/key_text_inactive_color_lxx_dark" />
</selector>
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png
index 9aa8db60e..9aa8db60e 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_active_ics.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png
index fa2cb8542..fa2cb8542 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
deleted file mode 100644
index 43099899c..000000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
deleted file mode 100644
index 2d1acf22f..000000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
deleted file mode 100644
index 3e25a9817..000000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png
index fa2cb8542..fa2cb8542 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png
index 6da273b09..6da273b09 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png
index b1af23b6c..b1af23b6c 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_lxx.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
index 44308bfd8..44308bfd8 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_lxx.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png
index 9f4587b4a..9f4587b4a 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_ics.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png
index 814e40235..814e40235 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_klp.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_lxx.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
index 674783d7d..674783d7d 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_lxx.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
index 10f8e97e4..10f8e97e4 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png
index 7ec33dd20..7ec33dd20 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_ics.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png
index 5612c51a1..5612c51a1 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_ics.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png
index 90abe3940..90abe3940 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_klp.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png
index 6768241a7..6768241a7 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_klp.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
index 655bc01b1..655bc01b1 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
index 48eeb3f54..48eeb3f54 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
index 96b625bd6..96b625bd6 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
index 138e915d9..138e915d9 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
index 71e0683cd..71e0683cd 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
index 20e53c2e5..20e53c2e5 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/tab_selected.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_holo_dark.9.png
index 84e63df17..84e63df17 100644
--- a/java/res/drawable-hdpi/tab_selected.9.png
+++ b/java/res/drawable-hdpi/emoji_category_tab_selected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/tab_unselected.9.png b/java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png
index bbcfb2c64..bbcfb2c64 100644
--- a/java/res/drawable-hdpi/tab_unselected.9.png
+++ b/java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png
index 5525df2f7..5525df2f7 100644
--- a/java/res/drawable-hdpi/ic_emoji_nature_light_activated.png
+++ b/java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png
index 34e16b9de..34e16b9de 100644
--- a/java/res/drawable-hdpi/ic_emoji_nature_light_normal.png
+++ b/java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png
index c3c7ec1b8..c3c7ec1b8 100644
--- a/java/res/drawable-hdpi/ic_emoji_objects_light_activated.png
+++ b/java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png
index f012d7707..f012d7707 100644
--- a/java/res/drawable-hdpi/ic_emoji_objects_light_normal.png
+++ b/java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_light_activated.png b/java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png
index cfacbc2e7..cfacbc2e7 100644
--- a/java/res/drawable-hdpi/ic_emoji_people_light_activated.png
+++ b/java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_light_normal.png b/java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png
index c54dbc1f5..c54dbc1f5 100644
--- a/java/res/drawable-hdpi/ic_emoji_people_light_normal.png
+++ b/java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_light_activated.png b/java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png
index 959dfdfd5..959dfdfd5 100644
--- a/java/res/drawable-hdpi/ic_emoji_places_light_activated.png
+++ b/java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_light_normal.png b/java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png
index fc0d9711d..fc0d9711d 100644
--- a/java/res/drawable-hdpi/ic_emoji_places_light_normal.png
+++ b/java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-hdpi/ic_emoji_recent_activated_holo_dark.png
index de570a185..de570a185 100644
--- a/java/res/drawable-hdpi/ic_emoji_recent_light_activated.png
+++ b/java/res/drawable-hdpi/ic_emoji_recent_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-hdpi/ic_emoji_recent_normal_holo_dark.png
index b2562088d..b2562088d 100644
--- a/java/res/drawable-hdpi/ic_emoji_recent_light_normal.png
+++ b/java/res/drawable-hdpi/ic_emoji_recent_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png
index af1fd27ec..af1fd27ec 100644
--- a/java/res/drawable-hdpi/ic_emoji_symbols_light_activated.png
+++ b/java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png
index 02b84d51b..02b84d51b 100644
--- a/java/res/drawable-hdpi/ic_emoji_symbols_light_normal.png
+++ b/java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx.9.png
deleted file mode 100644
index be394151a..000000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 000000000..6a76ce66e
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx.9.png
deleted file mode 100644
index 9fa6d0003..000000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
new file mode 100644
index 000000000..752c7581f
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx.9.png
deleted file mode 100644
index c73269b7e..000000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..a24519fef
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx.9.png
deleted file mode 100644
index fffd4021e..000000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..f3c2f6ba0
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx.9.png
deleted file mode 100644
index 61c23c19b..000000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
new file mode 100644
index 000000000..0a9e46734
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx.9.png
deleted file mode 100644
index 827d74363..000000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..6a58ed302
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png
index f9dd3b8b1..f9dd3b8b1 100644
--- a/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx.9.png
+++ b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 000000000..f6c3c0d97
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png
index e810c7789..e810c7789 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_active_ics.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png
index 8e9a34957..8e9a34957 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png
deleted file mode 100644
index 46e9db092..000000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png
deleted file mode 100644
index ee60e4864..000000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png
deleted file mode 100644
index 1f8f318d1..000000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png
index 8e9a34957..8e9a34957 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png
index 2915588bf..2915588bf 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png
index 58a316fba..58a316fba 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_lxx.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
index 837df83ce..837df83ce 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_lxx.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png
index f3fc64114..f3fc64114 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_ics.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png
index b7b2dca43..b7b2dca43 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_klp.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_lxx.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
index 977265214..977265214 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_lxx.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
index ee0aae28b..ee0aae28b 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png
index 8f340d355..8f340d355 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_ics.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png
index c39dd4a94..c39dd4a94 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_ics.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png
index 4a92b80dd..4a92b80dd 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_klp.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png
index 049385984..049385984 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_klp.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
index 53ea5f894..53ea5f894 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
index 72125a065..72125a065 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
index d21363316..d21363316 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
index 69c84e7ec..69c84e7ec 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
index 82413d4cc..82413d4cc 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
index 6d20c540b..6d20c540b 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/tab_selected.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_holo_dark.9.png
index 4b00f350a..4b00f350a 100644
--- a/java/res/drawable-mdpi/tab_selected.9.png
+++ b/java/res/drawable-mdpi/emoji_category_tab_selected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/tab_unselected.9.png b/java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png
index bb45ab960..bb45ab960 100644
--- a/java/res/drawable-mdpi/tab_unselected.9.png
+++ b/java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png
index d4c8d8da8..d4c8d8da8 100644
--- a/java/res/drawable-mdpi/ic_emoji_nature_light_activated.png
+++ b/java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png
index 1555aa7a9..1555aa7a9 100644
--- a/java/res/drawable-mdpi/ic_emoji_nature_light_normal.png
+++ b/java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png
index 081dc66c2..081dc66c2 100644
--- a/java/res/drawable-mdpi/ic_emoji_objects_light_activated.png
+++ b/java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png
index 58e6f6e75..58e6f6e75 100644
--- a/java/res/drawable-mdpi/ic_emoji_objects_light_normal.png
+++ b/java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_light_activated.png b/java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png
index 067ad5496..067ad5496 100644
--- a/java/res/drawable-mdpi/ic_emoji_people_light_activated.png
+++ b/java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_light_normal.png b/java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png
index d835d4ec7..d835d4ec7 100644
--- a/java/res/drawable-mdpi/ic_emoji_people_light_normal.png
+++ b/java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_light_activated.png b/java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png
index 1aecec598..1aecec598 100644
--- a/java/res/drawable-mdpi/ic_emoji_places_light_activated.png
+++ b/java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_light_normal.png b/java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png
index c70e484e1..c70e484e1 100644
--- a/java/res/drawable-mdpi/ic_emoji_places_light_normal.png
+++ b/java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-mdpi/ic_emoji_recent_activated_holo_dark.png
index 8009e932f..8009e932f 100644
--- a/java/res/drawable-mdpi/ic_emoji_recent_light_activated.png
+++ b/java/res/drawable-mdpi/ic_emoji_recent_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-mdpi/ic_emoji_recent_normal_holo_dark.png
index c2e598dfb..c2e598dfb 100644
--- a/java/res/drawable-mdpi/ic_emoji_recent_light_normal.png
+++ b/java/res/drawable-mdpi/ic_emoji_recent_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png
index caea87191..caea87191 100644
--- a/java/res/drawable-mdpi/ic_emoji_symbols_light_activated.png
+++ b/java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png
index 0edada626..0edada626 100644
--- a/java/res/drawable-mdpi/ic_emoji_symbols_light_normal.png
+++ b/java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx.9.png
deleted file mode 100644
index 625490b1f..000000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 000000000..0173d096f
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx.9.png
deleted file mode 100644
index 427c87061..000000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
new file mode 100644
index 000000000..6d8954961
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx.9.png
deleted file mode 100644
index ea757296d..000000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..a459d42ac
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx.9.png
deleted file mode 100644
index 1911c429f..000000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..5c00e7e52
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx.9.png
deleted file mode 100644
index cdef116d2..000000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
new file mode 100644
index 000000000..f85dd03cc
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx.9.png
deleted file mode 100644
index dea5d076c..000000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..83d72a27b
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png
index 896505518..896505518 100644
--- a/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx.9.png
+++ b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 000000000..8903e02eb
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png
index d990c0258..d990c0258 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_active_ics.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png
index a2f6ac0e2..a2f6ac0e2 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png
deleted file mode 100644
index 2baf7d90c..000000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png
deleted file mode 100644
index 6812f9e8f..000000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png
deleted file mode 100644
index 16416f000..000000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png
index a2f6ac0e2..a2f6ac0e2 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png
index 0ef4a4b5f..0ef4a4b5f 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
index 2f00fc623..2f00fc623 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_lxx.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
index eeb447cc3..eeb447cc3 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_lxx.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
index ab8fb2e86..ab8fb2e86 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_ics.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
index 20251a000..20251a000 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_klp.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_lxx.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
index 624ba8c27..624ba8c27 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_lxx.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
index 891d00024..891d00024 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png
index 3871689ef..3871689ef 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_ics.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png
index c23a4b225..c23a4b225 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_ics.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png
index 84d173967..84d173967 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_klp.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png
index f770962c3..f770962c3 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_klp.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
index 912506368..912506368 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
index ee4490eac..ee4490eac 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
index 2bc16cfeb..2bc16cfeb 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
index 35ce67fdc..35ce67fdc 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
index e8124776c..e8124776c 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
index 80dedd228..80dedd228 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/tab_selected.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_holo_dark.9.png
index 95e5f4341..95e5f4341 100644
--- a/java/res/drawable-xhdpi/tab_selected.9.png
+++ b/java/res/drawable-xhdpi/emoji_category_tab_selected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/tab_unselected.9.png b/java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png
index 8cede8d5e..8cede8d5e 100644
--- a/java/res/drawable-xhdpi/tab_unselected.9.png
+++ b/java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png
index 3e6744343..3e6744343 100644
--- a/java/res/drawable-xhdpi/ic_emoji_nature_light_activated.png
+++ b/java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png
index 5344a9ee9..5344a9ee9 100644
--- a/java/res/drawable-xhdpi/ic_emoji_nature_light_normal.png
+++ b/java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png
index 75695d43d..75695d43d 100644
--- a/java/res/drawable-xhdpi/ic_emoji_objects_light_activated.png
+++ b/java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png
index 2adb186e6..2adb186e6 100644
--- a/java/res/drawable-xhdpi/ic_emoji_objects_light_normal.png
+++ b/java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png
index e6baa2e59..e6baa2e59 100644
--- a/java/res/drawable-xhdpi/ic_emoji_people_light_activated.png
+++ b/java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png
index c26aa4efb..c26aa4efb 100644
--- a/java/res/drawable-xhdpi/ic_emoji_people_light_normal.png
+++ b/java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png
index eaa3b86cf..eaa3b86cf 100644
--- a/java/res/drawable-xhdpi/ic_emoji_places_light_activated.png
+++ b/java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png
index d6e1eaa35..d6e1eaa35 100644
--- a/java/res/drawable-xhdpi/ic_emoji_places_light_normal.png
+++ b/java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_recent_activated_holo_dark.png
index 06003b82d..06003b82d 100644
--- a/java/res/drawable-xhdpi/ic_emoji_recent_light_activated.png
+++ b/java/res/drawable-xhdpi/ic_emoji_recent_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_recent_normal_holo_dark.png
index da2effedb..da2effedb 100644
--- a/java/res/drawable-xhdpi/ic_emoji_recent_light_normal.png
+++ b/java/res/drawable-xhdpi/ic_emoji_recent_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png
index 438fde2b4..438fde2b4 100644
--- a/java/res/drawable-xhdpi/ic_emoji_symbols_light_activated.png
+++ b/java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png
index 757863233..757863233 100644
--- a/java/res/drawable-xhdpi/ic_emoji_symbols_light_normal.png
+++ b/java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx.9.png
deleted file mode 100644
index c211d89c8..000000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 000000000..fed1da764
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx.9.png
deleted file mode 100644
index 543bc763e..000000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
new file mode 100644
index 000000000..ca90d52fd
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx.9.png
deleted file mode 100644
index ec42aadb6..000000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..ad277d6ab
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx.9.png
deleted file mode 100644
index 319e9d7cf..000000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..3c5f89f33
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx.9.png
deleted file mode 100644
index 052032be7..000000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
new file mode 100644
index 000000000..6c4982476
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx.9.png
deleted file mode 100644
index c7e9d1c9e..000000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..2cd7b02fa
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png
index 36df715b6..36df715b6 100644
--- a/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx.9.png
+++ b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 000000000..351f73bcb
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png
index 680421eaf..680421eaf 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_ics.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png
index 17f0a7a58..17f0a7a58 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png
index 17f0a7a58..17f0a7a58 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png
index 4ddfdcb6c..4ddfdcb6c 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_light_normal_holo.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
index b0e815eb2..b0e815eb2 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_holo.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_lxx.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
index 97b049eb0..97b049eb0 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_lxx.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
index 40f5011c0..40f5011c0 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_ics.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
index 97f96258e..97f96258e 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_klp.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_lxx.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
index 2e8149709..2e8149709 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_lxx.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
index 0cbb2ec84..0cbb2ec84 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png
index 6ff6319d3..6ff6319d3 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_ics.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png
index 3c17c5eec..3c17c5eec 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_ics.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png
index dfb16a76b..dfb16a76b 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_klp.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png
index 17144b673..17144b673 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_klp.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
index 818ea70fd..818ea70fd 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
index bf1d34686..bf1d34686 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
index d844b1713..d844b1713 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
index a476d2a9e..a476d2a9e 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
index 962277165..962277165 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
index 9661f4a6e..9661f4a6e 100644
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/tab_selected.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_holo_dark.9.png
index e5efc5828..e5efc5828 100644
--- a/java/res/drawable-xxhdpi/tab_selected.9.png
+++ b/java/res/drawable-xxhdpi/emoji_category_tab_selected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/tab_unselected.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png
index 389188695..389188695 100644
--- a/java/res/drawable-xxhdpi/tab_unselected.9.png
+++ b/java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png
index 470fd695c..470fd695c 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_nature_light_activated.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png
index a7fde0ec5..a7fde0ec5 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_nature_light_normal.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png
index c582b704a..c582b704a 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_objects_light_activated.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png
index acc95d725..acc95d725 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_objects_light_normal.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png
index 5973ac355..5973ac355 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_people_light_activated.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png
index 22e06f808..22e06f808 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_people_light_normal.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png
index 690e95fd5..690e95fd5 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_places_light_activated.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png
index ced4b08cf..ced4b08cf 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_places_light_normal.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_recent_activated_holo_dark.png
index 25e847ef3..25e847ef3 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_recent_light_activated.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_recent_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_recent_normal_holo_dark.png
index c86368d73..c86368d73 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_recent_light_normal.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_recent_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png
index 29dfc7118..29dfc7118 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_symbols_light_activated.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png
index 0570567cf..0570567cf 100644
--- a/java/res/drawable-xxhdpi/ic_emoji_symbols_light_normal.png
+++ b/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx.9.png
deleted file mode 100644
index fd2f9e514..000000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 000000000..1f10e926c
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx.9.png
deleted file mode 100644
index 3ab79007e..000000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
new file mode 100644
index 000000000..25e362ce7
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx.9.png
deleted file mode 100644
index 99543a1e0..000000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..c6d9f3cc7
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx.9.png
deleted file mode 100644
index 121411a06..000000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..a197c2932
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx.9.png
deleted file mode 100644
index e9e379287..000000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
new file mode 100644
index 000000000..686f757ba
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx.9.png
deleted file mode 100644
index 6c1143aeb..000000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
new file mode 100644
index 000000000..41fad2db0
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png
index 91d5d7f90..91d5d7f90 100644
--- a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx.9.png
+++ b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 000000000..08334f0da
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable/btn_keyboard_key_functional_ics.xml b/java/res/drawable/btn_keyboard_key_functional_ics.xml
index 847ca72f4..846bccc49 100644
--- a/java/res/drawable/btn_keyboard_key_functional_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_functional_ics.xml
@@ -17,6 +17,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Functional keys. -->
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_ics" />
- <item android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_ics_dark" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_klp.xml b/java/res/drawable/btn_keyboard_key_functional_klp.xml
index 0e17ed234..7b444f7c5 100644
--- a/java/res/drawable/btn_keyboard_key_functional_klp.xml
+++ b/java/res/drawable/btn_keyboard_key_functional_klp.xml
@@ -17,6 +17,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Functional keys. -->
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_klp" />
- <item android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_klp_dark" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_lxx.xml b/java/res/drawable/btn_keyboard_key_functional_lxx_dark.xml
index fc6f98d01..fd1dbb9f0 100644
--- a/java/res/drawable/btn_keyboard_key_functional_lxx.xml
+++ b/java/res/drawable/btn_keyboard_key_functional_lxx_dark.xml
@@ -17,6 +17,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Functional keys. -->
<item android:state_pressed="true"
- android:drawable="@color/key_background_pressed_lxx" />
- <item android:drawable="@color/key_background_lxx" />
+ android:drawable="@color/key_background_pressed_lxx_dark" />
+ <item android:drawable="@color/key_background_lxx_dark" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_ics.xml b/java/res/drawable/btn_keyboard_key_ics.xml
index af14cd51c..0bb098d23 100644
--- a/java/res/drawable/btn_keyboard_key_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_ics.xml
@@ -17,19 +17,19 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Action keys. -->
<item android:state_active="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_ics" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_ics_dark" />
<item android:state_active="true"
- android:drawable="@drawable/btn_keyboard_key_dark_active_ics" />
+ android:drawable="@drawable/btn_keyboard_key_active_ics_dark" />
<!-- Toggle keys. Use checkable/checked state. -->
<item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_on_ics" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_on_ics_dark" />
<item android:state_checkable="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_ics" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_off_ics_dark" />
<item android:state_checkable="true" android:state_checked="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_on_ics" />
+ android:drawable="@drawable/btn_keyboard_key_normal_on_ics_dark" />
<item android:state_checkable="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_off_holo" />
+ android:drawable="@drawable/btn_keyboard_key_normal_off_holo_dark" />
<!-- Empty background keys. -->
<item android:state_empty="true"
@@ -37,6 +37,6 @@
<!-- Normal keys. -->
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_light_pressed_ics" />
- <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_klp.xml b/java/res/drawable/btn_keyboard_key_klp.xml
index 56c295f14..2a202a179 100644
--- a/java/res/drawable/btn_keyboard_key_klp.xml
+++ b/java/res/drawable/btn_keyboard_key_klp.xml
@@ -17,19 +17,19 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Action keys. -->
<item android:state_active="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_klp" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_klp_dark" />
<item android:state_active="true"
- android:drawable="@drawable/btn_keyboard_key_dark_active_klp" />
+ android:drawable="@drawable/btn_keyboard_key_active_klp_dark" />
<!-- Toggle keys. Use checkable/checked state. -->
<item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_on_klp" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_on_klp_dark" />
<item android:state_checkable="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_klp" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_off_klp_dark" />
<item android:state_checkable="true" android:state_checked="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_on_klp" />
+ android:drawable="@drawable/btn_keyboard_key_normal_on_klp_dark" />
<item android:state_checkable="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_off_holo" />
+ android:drawable="@drawable/btn_keyboard_key_normal_off_holo_dark" />
<!-- Empty background keys. -->
<item android:state_empty="true"
@@ -37,6 +37,6 @@
<!-- Normal keys. -->
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_light_pressed_klp" />
- <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_lxx.xml b/java/res/drawable/btn_keyboard_key_lxx_dark.xml
index fc19a0bbd..c56d4b3bc 100644
--- a/java/res/drawable/btn_keyboard_key_lxx.xml
+++ b/java/res/drawable/btn_keyboard_key_lxx_dark.xml
@@ -17,26 +17,26 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Action keys. -->
<item android:state_active="true" android:state_pressed="true"
- android:drawable="@color/key_background_pressed_lxx" />
+ android:drawable="@color/key_background_pressed_lxx_dark" />
<item android:state_active="true"
- android:drawable="@color/key_background_lxx" />
+ android:drawable="@color/key_background_lxx_dark" />
<!-- Toggle keys. Use checkable/checked state. -->
<item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_on_lxx" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_on_lxx_dark" />
<item android:state_checkable="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_lxx" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_off_lxx_dark" />
<item android:state_checkable="true" android:state_checked="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_on_lxx" />
+ android:drawable="@drawable/btn_keyboard_key_normal_on_lxx_dark" />
<item android:state_checkable="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_off_lxx" />
+ android:drawable="@drawable/btn_keyboard_key_normal_off_lxx_dark" />
<!-- Empty background keys. -->
<item android:state_empty="true"
- android:drawable="@color/key_background_lxx" />
+ android:drawable="@color/key_background_lxx_dark" />
<!-- Normal keys. -->
<item android:state_pressed="true"
- android:drawable="@color/key_background_pressed_lxx" />
- <item android:drawable="@color/key_background_lxx" />
+ android:drawable="@color/key_background_pressed_lxx_dark" />
+ <item android:drawable="@color/key_background_lxx_dark" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_lxx.xml b/java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml
index 7daebc8d3..dee645712 100644
--- a/java/res/drawable/btn_keyboard_key_popup_lxx.xml
+++ b/java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml
@@ -16,6 +16,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_lxx" />
+ android:drawable="@drawable/btn_keyboard_key_popup_selected_lxx_dark" />
<item android:drawable="@android:color/transparent" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/drawable/btn_keyboard_spacebar_ics.xml
index 4530ea079..229f7a965 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/drawable/btn_keyboard_spacebar_ics.xml
@@ -16,6 +16,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_light_pressed_ics" />
- <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_klp.xml b/java/res/drawable/btn_keyboard_spacebar_klp.xml
index 6b07a392f..9882f9a74 100644
--- a/java/res/drawable/btn_keyboard_spacebar_klp.xml
+++ b/java/res/drawable/btn_keyboard_spacebar_klp.xml
@@ -16,6 +16,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_light_pressed_klp" />
- <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_lxx.xml b/java/res/drawable/btn_keyboard_spacebar_lxx_dark.xml
index 10d04a8cc..5c595d9ed 100644
--- a/java/res/drawable/btn_keyboard_spacebar_lxx.xml
+++ b/java/res/drawable/btn_keyboard_spacebar_lxx_dark.xml
@@ -16,6 +16,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
- android:drawable="@color/key_background_pressed_lxx" />
- <item android:drawable="@color/key_background_lxx" />
+ android:drawable="@color/key_background_pressed_lxx_dark" />
+ <item android:drawable="@color/key_background_lxx_dark" />
</selector>
diff --git a/java/res/drawable/btn_suggestion_lxx.xml b/java/res/drawable/btn_suggestion_lxx_dark.xml
index c73e1f772..84a91209e 100644
--- a/java/res/drawable/btn_suggestion_lxx.xml
+++ b/java/res/drawable/btn_suggestion_lxx_dark.xml
@@ -23,5 +23,5 @@
>
<item
android:state_pressed="true"
- android:drawable="@color/suggested_word_background_selected_lxx" />
+ android:drawable="@color/suggested_word_background_selected_lxx_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_nature_light.xml b/java/res/drawable/ic_emoji_nature_holo_dark.xml
index 543409e03..b94629580 100644
--- a/java/res/drawable/ic_emoji_nature_light.xml
+++ b/java/res/drawable/ic_emoji_nature_holo_dark.xml
@@ -21,13 +21,13 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:drawable="@drawable/ic_emoji_nature_light_activated" />
+ android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
<item
android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_nature_light_activated" />
+ android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
<item
android:state_selected="true"
- android:drawable="@drawable/ic_emoji_nature_light_activated" />
+ android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
<item
- android:drawable="@drawable/ic_emoji_nature_light_normal" />
+ android:drawable="@drawable/ic_emoji_nature_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_objects_holo_dark.xml b/java/res/drawable/ic_emoji_objects_holo_dark.xml
new file mode 100644
index 000000000..266e81e0b
--- /dev/null
+++ b/java/res/drawable/ic_emoji_objects_holo_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:state_focused="true"
+ android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
+ <item
+ android:state_pressed="true"
+ android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
+ <item
+ android:state_selected="true"
+ android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
+ <item android:drawable="@drawable/ic_emoji_objects_normal_holo_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_places_light.xml b/java/res/drawable/ic_emoji_people_holo_dark.xml
index 312cad9c3..15955d261 100644
--- a/java/res/drawable/ic_emoji_places_light.xml
+++ b/java/res/drawable/ic_emoji_people_holo_dark.xml
@@ -21,12 +21,12 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:drawable="@drawable/ic_emoji_places_light_activated" />
+ android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
<item
android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_places_light_activated" />
+ android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
<item
android:state_selected="true"
- android:drawable="@drawable/ic_emoji_places_light_activated" />
- <item android:drawable="@drawable/ic_emoji_places_light_normal" />
+ android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
+ <item android:drawable="@drawable/ic_emoji_people_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_people_light.xml b/java/res/drawable/ic_emoji_places_holo_dark.xml
index ea9e406a4..260bbd843 100644
--- a/java/res/drawable/ic_emoji_people_light.xml
+++ b/java/res/drawable/ic_emoji_places_holo_dark.xml
@@ -21,12 +21,12 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:drawable="@drawable/ic_emoji_people_light_activated" />
+ android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
<item
android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_people_light_activated" />
+ android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
<item
android:state_selected="true"
- android:drawable="@drawable/ic_emoji_people_light_activated" />
- <item android:drawable="@drawable/ic_emoji_people_light_normal" />
+ android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
+ <item android:drawable="@drawable/ic_emoji_places_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_objects_light.xml b/java/res/drawable/ic_emoji_recent_holo_dark.xml
index 4096e695b..225caeb2b 100644
--- a/java/res/drawable/ic_emoji_objects_light.xml
+++ b/java/res/drawable/ic_emoji_recent_holo_dark.xml
@@ -21,12 +21,12 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_recent_activated_holo_dark" />
<item
android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_recent_activated_holo_dark" />
<item
android:state_selected="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
- <item android:drawable="@drawable/ic_emoji_objects_light_normal" />
+ android:drawable="@drawable/ic_emoji_recent_activated_holo_dark" />
+ <item android:drawable="@drawable/ic_emoji_recent_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_recent_light.xml b/java/res/drawable/ic_emoji_recent_light.xml
deleted file mode 100644
index 8c2123f83..000000000
--- a/java/res/drawable/ic_emoji_recent_light.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_recent_light_activated" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_recent_light_activated" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_recent_light_activated" />
- <item android:drawable="@drawable/ic_emoji_recent_light_normal" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_symbols_holo_dark.xml b/java/res/drawable/ic_emoji_symbols_holo_dark.xml
new file mode 100644
index 000000000..831d6594b
--- /dev/null
+++ b/java/res/drawable/ic_emoji_symbols_holo_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:state_focused="true"
+ android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
+ <item
+ android:state_pressed="true"
+ android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
+ <item
+ android:state_selected="true"
+ android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
+ <item android:drawable="@drawable/ic_emoji_symbols_normal_holo_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_symbols_light.xml b/java/res/drawable/ic_emoji_symbols_light.xml
deleted file mode 100644
index 79aaf0fc5..000000000
--- a/java/res/drawable/ic_emoji_symbols_light.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_symbols_light_activated" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_symbols_light_activated" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_symbols_light_activated" />
- <item android:drawable="@drawable/ic_emoji_symbols_light_normal" />
-</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_lxx.xml b/java/res/drawable/keyboard_key_feedback_lxx_dark.xml
index 2abbc909d..e624a8ba8 100644
--- a/java/res/drawable/keyboard_key_feedback_lxx.xml
+++ b/java/res/drawable/keyboard_key_feedback_lxx_dark.xml
@@ -20,17 +20,17 @@
>
<!-- Left edge -->
<item latin:state_left_edge="true" latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_left_more_background_lxx" />
+ android:drawable="@drawable/keyboard_key_feedback_left_more_background_lxx_dark" />
<item latin:state_left_edge="true"
- android:drawable="@drawable/keyboard_key_feedback_left_background_lxx" />
+ android:drawable="@drawable/keyboard_key_feedback_left_background_lxx_dark" />
<!-- Right edge -->
<item latin:state_right_edge="true" latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_right_more_background_lxx" />
+ android:drawable="@drawable/keyboard_key_feedback_right_more_background_lxx_dark" />
<item latin:state_right_edge="true"
- android:drawable="@drawable/keyboard_key_feedback_right_background_lxx" />
+ android:drawable="@drawable/keyboard_key_feedback_right_background_lxx_dark" />
<item latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_more_background_lxx" />
- <item android:drawable="@drawable/keyboard_key_feedback_background_lxx" />
+ android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_dark" />
+ <item android:drawable="@drawable/keyboard_key_feedback_background_lxx_dark" />
</selector>
diff --git a/java/res/layout/emoji_palettes_view.xml b/java/res/layout/emoji_palettes_view.xml
index 761887168..c0c346ef0 100644
--- a/java/res/layout/emoji_palettes_view.xml
+++ b/java/res/layout/emoji_palettes_view.xml
@@ -41,11 +41,11 @@
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@drawable/tab_selected"
+ android:background="@drawable/emoji_category_tab_selected_holo_dark"
android:divider="@null"
android:tabStripEnabled="true"
- android:tabStripLeft="@drawable/tab_unselected"
- android:tabStripRight="@drawable/tab_unselected" />
+ android:tabStripLeft="@drawable/emoji_category_tab_unselected_holo_dark"
+ android:tabStripRight="@drawable/emoji_category_tab_unselected_holo_dark" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dip"
@@ -70,7 +70,6 @@
android:layout_width="0dip"
android:layout_weight="12.5"
android:layout_height="match_parent"
- android:background="@color/emoji_key_background_color"
android:src="@drawable/sym_keyboard_delete_holo_dark"
android:contentDescription="@string/spoken_description_delete" />
</LinearLayout>
@@ -82,7 +81,7 @@
android:id="@+id/emoji_category_page_id_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/emoji_category_page_id_view_background" />
+ android:background="@color/emoji_category_page_id_background_holo" />
<LinearLayout
android:id="@+id/emoji_action_bar"
android:orientation="horizontal"
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 60b5cdfae..12cb71f2e 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -40,27 +40,25 @@
<color name="suggested_word_color_klp">#B2F0F0F0</color>
<color name="highlight_translucent_color_klp">#99E0E0E0</color>
<!-- Color resources for LXX theme. Base color = F0F0F0 -->
- <color name="key_text_inactive_color_lxx">#808184</color>
- <color name="key_hint_letter_color_lxx">#808184</color>
- <color name="highlight_color_lxx">#7FCAC3</color>
- <color name="typed_word_color_lxx">#D87FCAC3</color>
- <color name="suggested_word_color_lxx">#B27FCAC3</color>
- <color name="highlight_translucent_color_lxx">#997FCAC3</color>
- <color name="keyboard_background_lxx">#384248</color>
- <color name="key_background_lxx">#384248</color>
- <color name="key_background_pressed_lxx">#546872</color>
- <color name="suggestions_strip_background_lxx">#263238</color>
- <color name="suggested_word_background_selected_lxx">#384248</color>
+ <color name="key_text_color_lxx_dark">#FFFFFF</color>
+ <color name="key_text_inactive_color_lxx_dark">#808184</color>
+ <color name="key_hint_letter_color_lxx_dark">#808184</color>
+ <color name="highlight_color_lxx_dark">#7FCAC3</color>
+ <color name="typed_word_color_lxx_dark">#D87FCAC3</color>
+ <color name="suggested_word_color_lxx_dark">#B27FCAC3</color>
+ <color name="highlight_translucent_color_lxx_dark">#997FCAC3</color>
+ <color name="keyboard_background_lxx_dark">#384248</color>
+ <color name="key_background_lxx_dark">#384248</color>
+ <color name="key_background_pressed_lxx_dark">#546872</color>
+ <color name="suggestions_strip_background_lxx_dark">#263238</color>
+ <color name="suggested_word_background_selected_lxx_dark">#384248</color>
+ <color name="gesture_floating_preview_color_lxx_dark">#C0000000</color>
<!-- Color resources for setup wizard and tutorial -->
<color name="setup_background">#FFEBEBEB</color>
<color name="setup_text_dark">#FF707070</color>
<color name="setup_text_action">@android:color/holo_blue_light</color>
<color name="setup_step_background">@android:color/background_light</color>
<color name="setup_welcome_video_margin_color">#FFCCCCCC</color>
- <color name="emoji_category_page_id_view_background">#FF000000</color>
- <color name="emoji_category_page_id_view_foreground">#80FFFFFF</color>
-
- <!-- TODO: Color which should be included in the theme -->
- <color name="emoji_key_background_color">#00000000</color>
- <color name="emoji_key_pressed_background_color">#30FFFFFF</color>
+ <color name="emoji_category_page_id_background_holo">#FF000000</color>
+ <color name="emoji_category_page_id_foreground_holo">#80FFFFFF</color>
</resources>
diff --git a/java/res/values/keyboard-icons-lxx.xml b/java/res/values/keyboard-icons-lxx-dark.xml
index 56d660475..07af85eab 100644
--- a/java/res/values/keyboard-icons-lxx.xml
+++ b/java/res/values/keyboard-icons-lxx-dark.xml
@@ -19,14 +19,14 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <style name="KeyboardIcons.LXX">
+ <style name="KeyboardIcons.LXX_Dark">
<!-- Keyboard icons -->
<!-- TODO: Update those icons for LXX theme. -->
<item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item>
<item name="iconDeleteKey">@drawable/sym_keyboard_delete_lxx_dark</item>
<item name="iconSettingsKey">@drawable/sym_keyboard_settings_lxx_dark</item>
<item name="iconSpaceKey">@drawable/sym_keyboard_spacebar_lxx_dark</item>
- <item name="iconEnterKey">@drawable/sym_keyboard_return_holo_dark</item>
+ <item name="iconEnterKey">@drawable/sym_keyboard_return_lxx_dark</item>
<item name="iconGoKey">@drawable/sym_keyboard_go_lxx_dark</item>
<item name="iconSearchKey">@drawable/sym_keyboard_search_lxx_dark</item>
<item name="iconSendKey">@drawable/sym_keyboard_send_lxx_dark</item>
diff --git a/java/res/values/themes-lxx.xml b/java/res/values/themes-lxx-dark.xml
index 8016e76b2..ace5fe9c6 100644
--- a/java/res/values/themes-lxx.xml
+++ b/java/res/values/themes-lxx-dark.xml
@@ -19,19 +19,19 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <style name="KeyboardTheme.LXX" parent="KeyboardIcons.LXX">
- <item name="keyboardStyle">@style/Keyboard.LXX</item>
- <item name="keyboardViewStyle">@style/KeyboardView.LXX</item>
- <item name="mainKeyboardViewStyle">@style/MainKeyboardView.LXX</item>
- <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.LXX</item>
- <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.LXX</item>
- <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.LXX</item>
- <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.LXX</item>
- <item name="suggestionStripViewStyle">@style/SuggestionStripView.LXX</item>
- <item name="suggestionWordStyle">@style/SuggestionWord.LXX</item>
+ <style name="KeyboardTheme.LXX_Dark" parent="KeyboardIcons.LXX_Dark">
+ <item name="keyboardStyle">@style/Keyboard.LXX_Dark</item>
+ <item name="keyboardViewStyle">@style/KeyboardView.LXX_Dark</item>
+ <item name="mainKeyboardViewStyle">@style/MainKeyboardView.LXX_Dark</item>
+ <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.LXX_Dark</item>
+ <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.LXX_Dark</item>
+ <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.LXX_Dark</item>
+ <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.LXX_Dark</item>
+ <item name="suggestionStripViewStyle">@style/SuggestionStripView.LXX_Dark</item>
+ <item name="suggestionWordStyle">@style/SuggestionWord.LXX_Dark</item>
</style>
<style
- name="Keyboard.LXX"
+ name="Keyboard.LXX_Dark"
parent="Keyboard"
>
<!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
@@ -43,56 +43,56 @@
<item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
</style>
<style
- name="KeyboardView.LXX"
+ name="KeyboardView.LXX_Dark"
parent="KeyboardView"
>
- <item name="android:background">@color/keyboard_background_lxx</item>
- <item name="keyBackground">@drawable/btn_keyboard_key_lxx</item>
- <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_lxx</item>
- <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lxx</item>
+ <item name="android:background">@color/keyboard_background_lxx_dark</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_lxx_dark</item>
+ <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_lxx_dark</item>
+ <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lxx_dark</item>
<item name="spacebarIconWidthRatio">0.9</item>
<item name="keyTypeface">normal</item>
- <item name="keyTextColor">@color/key_text_color_holo</item>
- <item name="keyTextInactivatedColor">@color/key_text_inactive_color_lxx</item>
- <item name="functionalTextColor">@color/key_hint_letter_color_lxx</item>
- <item name="keyHintLetterColor">@color/key_hint_letter_color_lxx</item>
- <item name="keyHintLabelColor">@color/key_text_inactive_color_lxx</item>
- <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx</item>
- <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_holo</item>
- <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
+ <item name="keyTextColor">@color/key_text_color_lxx_dark</item>
+ <item name="keyTextInactivatedColor">@color/key_text_inactive_color_lxx_dark</item>
+ <item name="functionalTextColor">@color/key_hint_letter_color_lxx_dark</item>
+ <item name="keyHintLetterColor">@color/key_hint_letter_color_lxx_dark</item>
+ <item name="keyHintLabelColor">@color/key_text_inactive_color_lxx_dark</item>
+ <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx_dark</item>
+ <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_lxx_dark</item>
+ <item name="keyPreviewTextColor">@color/key_text_color_lxx_dark</item>
<!-- A negative value to disable key text shadow layer. -->
<item name="keyTextShadowRadius">-1.0</item>
</style>
<style
- name="MainKeyboardView.LXX"
- parent="KeyboardView.LXX"
+ name="MainKeyboardView.LXX_Dark"
+ parent="KeyboardView.LXX_Dark"
>
<item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
- <item name="gestureFloatingPreviewTextColor">@color/highlight_color_lxx</item>
- <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
- <item name="gestureTrailColor">@color/highlight_color_lxx</item>
- <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_lxx</item>
- <item name="languageOnSpacebarTextColor">@color/key_text_inactive_color_lxx</item>
+ <item name="gestureFloatingPreviewTextColor">@color/highlight_color_lxx_dark</item>
+ <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_lxx_dark</item>
+ <item name="gestureTrailColor">@color/highlight_color_lxx_dark</item>
+ <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_lxx_dark</item>
+ <item name="languageOnSpacebarTextColor">@color/key_text_inactive_color_lxx_dark</item>
<!-- A negative value to disable text shadow layer. -->
<item name="languageOnSpacebarTextShadowRadius">-1.0</item>
</style>
<style
- name="KeyPreviewTextView.LXX"
+ name="KeyPreviewTextView.LXX_Dark"
parent="KeyPreviewTextView"
>
- <item name="android:background">@drawable/keyboard_key_feedback_lxx</item>
+ <item name="android:background">@drawable/keyboard_key_feedback_lxx_dark</item>
</style>
<!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
for instance delete button, need themed {@link KeyboardView} attributes. -->
<style
- name="EmojiPalettesView.LXX"
- parent="MainKeyboardView.LXX"
+ name="EmojiPalettesView.LXX_Dark"
+ parent="MainKeyboardView.LXX_Dark"
>
- <item name="emojiTabLabelColor">@color/emoji_tab_label_color_lxx</item>
+ <item name="emojiTabLabelColor">@color/emoji_tab_label_color_lxx_dark</item>
</style>
<style
- name="MoreKeysKeyboard.LXX"
- parent="Keyboard.LXX"
+ name="MoreKeysKeyboard.LXX_Dark"
+ parent="Keyboard.LXX_Dark"
>
<item name="keyboardTopPadding">0%p</item>
<item name="keyboardBottomPadding">0%p</item>
@@ -100,35 +100,35 @@
<item name="touchPositionCorrectionData">@null</item>
</style>
<style
- name="MoreKeysKeyboardView.LXX"
- parent="KeyboardView.LXX"
+ name="MoreKeysKeyboardView.LXX_Dark"
+ parent="KeyboardView.LXX_Dark"
>
- <item name="android:background">@drawable/keyboard_popup_panel_background_lxx</item>
- <item name="keyBackground">@drawable/btn_keyboard_key_popup_lxx</item>
+ <item name="android:background">@drawable/keyboard_popup_panel_background_lxx_dark</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_popup_lxx_dark</item>
<item name="keyTypeface">normal</item>
<item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
</style>
<style
- name="SuggestionStripView.LXX"
- parent="KeyboardView.LXX"
+ name="SuggestionStripView.LXX_Dark"
+ parent="KeyboardView.LXX_Dark"
>
<item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
<item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
<item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
<item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
- <item name="android:background">@color/suggestions_strip_background_lxx</item>
+ <item name="android:background">@color/suggestions_strip_background_lxx_dark</item>
<item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
- <item name="colorValidTypedWord">@color/typed_word_color_lxx</item>
- <item name="colorTypedWord">@color/typed_word_color_lxx</item>
- <item name="colorAutoCorrect">@color/highlight_color_lxx</item>
- <item name="colorSuggested">@color/suggested_word_color_lxx</item>
+ <item name="colorValidTypedWord">@color/typed_word_color_lxx_dark</item>
+ <item name="colorTypedWord">@color/typed_word_color_lxx_dark</item>
+ <item name="colorAutoCorrect">@color/highlight_color_lxx_dark</item>
+ <item name="colorSuggested">@color/suggested_word_color_lxx_dark</item>
<item name="alphaObsoleted">70%</item>
</style>
<style
- name="SuggestionWord.LXX"
+ name="SuggestionWord.LXX_Dark"
parent="SuggestionWord"
>
- <item name="android:background">@drawable/btn_suggestion_lxx</item>
- <item name="android:textColor">@color/highlight_color_lxx</item>
+ <item name="android:background">@drawable/btn_suggestion_lxx_dark</item>
+ <item name="android:textColor">@color/highlight_color_lxx_dark</item>
</style>
</resources>
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
index 0c0c16229..1f14aa2e3 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
@@ -34,7 +34,7 @@ public final class KeyboardTheme {
static final int THEME_ID_ICS = 0;
static final int THEME_ID_KLP = 2;
- static final int THEME_ID_LXX = 3;
+ static final int THEME_ID_LXX_DARK = 3;
static final int DEFAULT_THEME_ID = THEME_ID_KLP;
private static final KeyboardTheme[] KEYBOARD_THEMES = {
@@ -42,7 +42,7 @@ public final class KeyboardTheme {
VERSION_CODES.BASE),
new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP,
VERSION_CODES.ICE_CREAM_SANDWICH),
- new KeyboardTheme(THEME_ID_LXX, R.style.KeyboardTheme_LXX,
+ new KeyboardTheme(THEME_ID_LXX_DARK, R.style.KeyboardTheme_LXX_Dark,
// TODO: Update this constant once the *next* version becomes available.
VERSION_CODES.CUR_DEVELOPMENT),
};
@@ -88,7 +88,7 @@ public final class KeyboardTheme {
return 5;
case THEME_ID_KLP:
return 9;
- case THEME_ID_LXX:
+ case THEME_ID_LXX_DARK:
return 10;
default: // Invalid theme
return -1;
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
index dd0e3e838..495fa554b 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
@@ -70,12 +70,12 @@ final class EmojiCategory {
"emoticons" };
private static final int[] sCategoryIcon = {
- R.drawable.ic_emoji_recent_light,
- R.drawable.ic_emoji_people_light,
- R.drawable.ic_emoji_objects_light,
- R.drawable.ic_emoji_nature_light,
- R.drawable.ic_emoji_places_light,
- R.drawable.ic_emoji_symbols_light,
+ R.drawable.ic_emoji_recent_holo_dark,
+ R.drawable.ic_emoji_people_holo_dark,
+ R.drawable.ic_emoji_objects_holo_dark,
+ R.drawable.ic_emoji_nature_holo_dark,
+ R.drawable.ic_emoji_places_holo_dark,
+ R.drawable.ic_emoji_symbols_holo_dark,
0 };
private static final String[] sCategoryLabel =
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
index 74cfd9b4b..f5aa1079e 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
@@ -38,7 +38,7 @@ public final class EmojiCategoryPageIndicatorView extends LinearLayout {
public EmojiCategoryPageIndicatorView(final Context context, final AttributeSet attrs) {
super(context, attrs);
mPaint.setColor(context.getResources().getColor(
- R.color.emoji_category_page_id_view_foreground));
+ R.color.emoji_category_page_id_foreground_holo));
}
public void setCategoryPageId(final int size, final int id, final float offset) {
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
index 3813c578a..8e4595703 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
@@ -416,14 +416,11 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
private static class DeleteKeyOnTouchListener implements OnTouchListener {
static final long MAX_REPEAT_COUNT_TIME = TimeUnit.SECONDS.toMillis(30);
- final int mDeleteKeyPressedBackgroundColor;
final long mKeyRepeatStartTimeout;
final long mKeyRepeatInterval;
public DeleteKeyOnTouchListener(Context context) {
final Resources res = context.getResources();
- mDeleteKeyPressedBackgroundColor =
- res.getColor(R.color.emoji_key_pressed_background_color);
mKeyRepeatStartTimeout = res.getInteger(R.integer.config_key_repeat_start_timeout);
mKeyRepeatInterval = res.getInteger(R.integer.config_key_repeat_interval);
mTimer = new CountDownTimer(MAX_REPEAT_COUNT_TIME, mKeyRepeatInterval) {
@@ -500,7 +497,7 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
mTimer.cancel();
mRepeatCount = 0;
handleKeyDown();
- v.setBackgroundColor(mDeleteKeyPressedBackgroundColor);
+ v.setPressed(true /* pressed */);
mState = KEY_REPEAT_STATE_KEY_DOWN;
mTimer.start();
}
@@ -510,7 +507,7 @@ public final class EmojiPalettesView extends LinearLayout implements OnTabChange
if (mState == KEY_REPEAT_STATE_KEY_DOWN) {
handleKeyUp();
}
- v.setBackgroundColor(Color.TRANSPARENT);
+ v.setPressed(false /* pressed */);
mState = KEY_REPEAT_STATE_INITIALIZED;
}
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 8a6404b1b..b8cf3f89c 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -265,7 +265,7 @@ public final class BinaryDictionary extends Dictionary {
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
if (!isValidDictionary()) {
@@ -274,8 +274,8 @@ public final class BinaryDictionary extends Dictionary {
Arrays.fill(mInputCodePoints, Constants.NOT_A_CODE);
// TODO: toLowerCase in the native code
- final int[] prevWordCodePointArray = (null == prevWord)
- ? null : StringUtils.toCodePointArray(prevWord);
+ final int[] prevWordCodePointArray = (null == prevWordsInfo.mPrevWord)
+ ? null : StringUtils.toCodePointArray(prevWordsInfo.mPrevWord);
final InputPointers inputPointers = composer.getInputPointers();
final boolean isGesture = composer.isBatchMode();
final int inputSize;
diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java
index 5253cc3dd..aab16653e 100644
--- a/java/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -69,7 +69,7 @@ public abstract class Dictionary {
* Searches for suggestions for a given context. For the moment the context is only the
* previous word.
* @param composer the key sequence to match with coordinate info, as a WordComposer
- * @param prevWord the previous word, or null if none
+ * @param prevWordsInfo the information of previous words.
* @param proximityInfo the object for key proximity. May be ignored by some implementations.
* @param blockOffensiveWords whether to block potentially offensive words
* @param additionalFeaturesOptions options about additional features used for the suggestion.
@@ -79,10 +79,8 @@ public abstract class Dictionary {
* different language weight is used.
* @return the list of suggestions (possibly null if none)
*/
- // TODO: pass more context than just the previous word, to enable better suggestions (n-gram
- // and more)
abstract public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight);
@@ -156,7 +154,7 @@ public abstract class Dictionary {
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
return null;
diff --git a/java/src/com/android/inputmethod/latin/DictionaryCollection.java b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
index 239fd067a..e6e4e0938 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryCollection.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
@@ -57,7 +57,7 @@ public final class DictionaryCollection extends Dictionary {
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
final CopyOnWriteArrayList<Dictionary> dictionaries = mDictionaries;
@@ -65,13 +65,13 @@ public final class DictionaryCollection extends Dictionary {
// To avoid creating unnecessary objects, we get the list out of the first
// dictionary and add the rest to it if not null, hence the get(0)
ArrayList<SuggestedWordInfo> suggestions = dictionaries.get(0).getSuggestions(composer,
- prevWord, proximityInfo, blockOffensiveWords, additionalFeaturesOptions,
+ prevWordsInfo, proximityInfo, blockOffensiveWords, additionalFeaturesOptions,
sessionId, inOutLanguageWeight);
if (null == suggestions) suggestions = CollectionUtils.newArrayList();
final int length = dictionaries.size();
for (int i = 1; i < length; ++ i) {
final ArrayList<SuggestedWordInfo> sugg = dictionaries.get(i).getSuggestions(composer,
- prevWord, proximityInfo, blockOffensiveWords, additionalFeaturesOptions,
+ prevWordsInfo, proximityInfo, blockOffensiveWords, additionalFeaturesOptions,
sessionId, inOutLanguageWeight);
if (null != sugg) suggestions.addAll(sugg);
}
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
index ddbb196d9..14c8bb6c3 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
@@ -444,7 +444,7 @@ public class DictionaryFacilitatorForSuggest {
// TODO: Revise the way to fusion suggestion results.
public SuggestionResults getSuggestionResults(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final ArrayList<SuggestedWordInfo> rawSuggestions) {
final Dictionaries dictionaries = mDictionaries;
@@ -455,7 +455,7 @@ public class DictionaryFacilitatorForSuggest {
final Dictionary dictionary = dictionaries.getDict(dictType);
if (null == dictionary) continue;
final ArrayList<SuggestedWordInfo> dictionarySuggestions =
- dictionary.getSuggestions(composer, prevWord, proximityInfo,
+ dictionary.getSuggestions(composer, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId,
languageWeight);
if (null == dictionarySuggestions) continue;
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 4358f84c2..629f3fd18 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -367,7 +367,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
reloadDictionaryIfRequired();
@@ -380,7 +380,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
return null;
}
final ArrayList<SuggestedWordInfo> suggestions =
- mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo,
+ mBinaryDictionary.getSuggestions(composer, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId,
inOutLanguageWeight);
if (mBinaryDictionary.isCorrupted()) {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index d100d32bb..5e45275f8 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1428,8 +1428,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (DEBUG) {
if (mInputLogic.mWordComposer.isComposingWord()
|| mInputLogic.mWordComposer.isBatchMode()) {
- final String previousWord
- = mInputLogic.mWordComposer.getPreviousWordForSuggestion();
+ final PrevWordsInfo prevWordsInfo
+ = mInputLogic.mWordComposer.getPrevWordsInfoForSuggestion();
// TODO: this is for checking consistency with older versions. Remove this when
// we are confident this is stable.
// We're checking the previous word in the text field against the memorized previous
@@ -1438,14 +1438,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final CharSequence rereadPrevWord = mInputLogic.getNthPreviousWordForSuggestion(
currentSettings.mSpacingAndPunctuations,
mInputLogic.mWordComposer.isComposingWord() ? 2 : 1);
- if (!TextUtils.equals(previousWord, rereadPrevWord)) {
+ if (!TextUtils.equals(prevWordsInfo.mPrevWord, rereadPrevWord)) {
throw new RuntimeException("Unexpected previous word: "
- + previousWord + " <> " + rereadPrevWord);
+ + prevWordsInfo.mPrevWord + " <> " + rereadPrevWord);
}
}
}
mInputLogic.mSuggest.getSuggestedWords(mInputLogic.mWordComposer,
- mInputLogic.mWordComposer.getPreviousWordForSuggestion(),
+ mInputLogic.mWordComposer.getPrevWordsInfoForSuggestion(),
keyboard.getProximityInfo(), currentSettings.mBlockPotentiallyOffensive,
currentSettings.mCorrectionEnabled, additionalFeaturesOptions, sessionId,
sequenceNumber, callback);
diff --git a/java/src/com/android/inputmethod/latin/PrevWordsInfo.java b/java/src/com/android/inputmethod/latin/PrevWordsInfo.java
new file mode 100644
index 000000000..9d8543183
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/PrevWordsInfo.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+public class PrevWordsInfo {
+ // The previous word. May be null after resetting and before starting a new composing word, or
+ // when there is no context like at the start of text for example. It can also be set to null
+ // externally when the user enters a separator that does not let bigrams across, like a period
+ // or a comma.
+ public final String mPrevWord;
+
+ public PrevWordsInfo(final String prevWord) {
+ mPrevWord = prevWord;
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
index 15b12381b..8f744bef8 100644
--- a/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
@@ -50,12 +50,12 @@ public final class ReadOnlyBinaryDictionary extends Dictionary {
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
if (mLock.readLock().tryLock()) {
try {
- return mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo,
+ return mBinaryDictionary.getSuggestions(composer, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId,
inOutLanguageWeight);
} finally {
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 71355f418..e3759a586 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -71,17 +71,17 @@ public final class Suggest {
}
public void getSuggestedWords(final WordComposer wordComposer,
- final String prevWordForBigram, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final boolean isCorrectionEnabled,
final int[] additionalFeaturesOptions, final int sessionId, final int sequenceNumber,
final OnGetSuggestedWordsCallback callback) {
- LatinImeLogger.onStartSuggestion(prevWordForBigram);
+ LatinImeLogger.onStartSuggestion(prevWordsInfo.mPrevWord);
if (wordComposer.isBatchMode()) {
- getSuggestedWordsForBatchInput(wordComposer, prevWordForBigram, proximityInfo,
+ getSuggestedWordsForBatchInput(wordComposer, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId, sequenceNumber,
callback);
} else {
- getSuggestedWordsForTypingInput(wordComposer, prevWordForBigram, proximityInfo,
+ getSuggestedWordsForTypingInput(wordComposer, prevWordsInfo, proximityInfo,
blockOffensiveWords, isCorrectionEnabled, additionalFeaturesOptions,
sequenceNumber, callback);
}
@@ -90,7 +90,7 @@ public final class Suggest {
// Retrieves suggestions for the typing input
// and calls the callback function with the suggestions.
private void getSuggestedWordsForTypingInput(final WordComposer wordComposer,
- final String prevWordForBigram, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final boolean isCorrectionEnabled,
final int[] additionalFeaturesOptions, final int sequenceNumber,
final OnGetSuggestedWordsCallback callback) {
@@ -108,7 +108,7 @@ public final class Suggest {
rawSuggestions = null;
}
final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults(
- wordComposer, prevWordForBigram, proximityInfo, blockOffensiveWords,
+ wordComposer, prevWordsInfo, proximityInfo, blockOffensiveWords,
additionalFeaturesOptions, SESSION_TYPING, rawSuggestions);
final boolean isFirstCharCapitalized = wordComposer.isFirstCharCapitalized();
@@ -215,7 +215,7 @@ public final class Suggest {
// Retrieves suggestions for the batch input
// and calls the callback function with the suggestions.
private void getSuggestedWordsForBatchInput(final WordComposer wordComposer,
- final String prevWordForBigram, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final int sequenceNumber,
final OnGetSuggestedWordsCallback callback) {
@@ -226,7 +226,7 @@ public final class Suggest {
rawSuggestions = null;
}
final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults(
- wordComposer, prevWordForBigram, proximityInfo, blockOffensiveWords,
+ wordComposer, prevWordsInfo, proximityInfo, blockOffensiveWords,
additionalFeaturesOptions, sessionId, rawSuggestions);
for (SuggestedWordInfo wordInfo : suggestionResults) {
LatinImeLogger.onAddSuggestedWord(wordInfo.mWord, wordInfo.mSourceDict.mDictType);
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index 9cf71c7f4..227b42bde 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -46,11 +46,9 @@ public final class WordComposer {
// The list of events that served to compose this string.
private final ArrayList<Event> mEvents;
private final InputPointers mInputPointers = new InputPointers(MAX_WORD_LENGTH);
- // The previous word (before the composing word). Used as context for suggestions. May be null
- // after resetting and before starting a new composing word, or when there is no context like
- // at the start of text for example. It can also be set to null externally when the user
- // enters a separator that does not let bigrams across, like a period or a comma.
- private String mPreviousWordForSuggestion;
+ // The information of previous words (before the composing word). Must not be null. Used as
+ // context for suggestions.
+ private PrevWordsInfo mPrevWordsInfo;
private String mAutoCorrection;
private boolean mIsResumed;
private boolean mIsBatchMode;
@@ -87,7 +85,7 @@ public final class WordComposer {
mIsBatchMode = false;
mCursorPositionWithinWord = 0;
mRejectedBatchModeSuggestion = null;
- mPreviousWordForSuggestion = null;
+ mPrevWordsInfo = new PrevWordsInfo(null);
refreshTypedWordCache();
}
@@ -119,7 +117,7 @@ public final class WordComposer {
mIsBatchMode = false;
mCursorPositionWithinWord = 0;
mRejectedBatchModeSuggestion = null;
- mPreviousWordForSuggestion = null;
+ mPrevWordsInfo = new PrevWordsInfo(null);
refreshTypedWordCache();
}
@@ -309,7 +307,7 @@ public final class WordComposer {
CoordinateUtils.yFromArray(coordinates, i)));
}
mIsResumed = true;
- mPreviousWordForSuggestion = null == previousWord ? null : previousWord.toString();
+ mPrevWordsInfo = new PrevWordsInfo(null == previousWord ? null : previousWord.toString());
}
/**
@@ -320,8 +318,8 @@ public final class WordComposer {
return mTypedWordCache.toString();
}
- public String getPreviousWordForSuggestion() {
- return mPreviousWordForSuggestion;
+ public PrevWordsInfo getPrevWordsInfoForSuggestion() {
+ return mPrevWordsInfo;
}
/**
@@ -379,7 +377,7 @@ public final class WordComposer {
public void setCapitalizedModeAndPreviousWordAtStartComposingTime(final int mode,
final CharSequence previousWord) {
mCapitalizedMode = mode;
- mPreviousWordForSuggestion = null == previousWord ? null : previousWord.toString();
+ mPrevWordsInfo = new PrevWordsInfo(null == previousWord ? null : previousWord.toString());
}
/**
@@ -430,7 +428,7 @@ public final class WordComposer {
mCapsCount = 0;
mDigitsCount = 0;
mIsBatchMode = false;
- mPreviousWordForSuggestion = committedWord.toString();
+ mPrevWordsInfo = new PrevWordsInfo(committedWord.toString());
mCombinerChain.reset();
mEvents.clear();
mCodePointSize = 0;
@@ -448,11 +446,11 @@ public final class WordComposer {
// when the user inputs a separator that's not whitespace (including the case of the
// double-space-to-period feature).
public void discardPreviousWordForSuggestion() {
- mPreviousWordForSuggestion = null;
+ mPrevWordsInfo = new PrevWordsInfo(null);
}
public void resumeSuggestionOnLastComposedWord(final LastComposedWord lastComposedWord,
- final String previousWord) {
+ final PrevWordsInfo prevWordsInfo) {
mEvents.clear();
Collections.copy(mEvents, lastComposedWord.mEvents);
mInputPointers.set(lastComposedWord.mInputPointers);
@@ -463,7 +461,7 @@ public final class WordComposer {
mCursorPositionWithinWord = mCodePointSize;
mRejectedBatchModeSuggestion = null;
mIsResumed = true;
- mPreviousWordForSuggestion = previousWord;
+ mPrevWordsInfo = prevWordsInfo;
}
public boolean isBatchMode() {
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java
index ddda52d71..e951f5a89 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java
@@ -23,6 +23,7 @@ import android.view.textservice.SentenceSuggestionsInfo;
import android.view.textservice.SuggestionsInfo;
import android.view.textservice.TextInfo;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.utils.CollectionUtils;
import java.util.ArrayList;
@@ -57,7 +58,7 @@ public final class AndroidSpellCheckerSession extends AndroidWordLevelSpellCheck
final int offset = ssi.getOffsetAt(i);
final int length = ssi.getLengthAt(i);
final String subText = typedText.substring(offset, offset + length);
- final String prevWord = currentWord;
+ final PrevWordsInfo prevWordsInfo = new PrevWordsInfo(currentWord);
currentWord = subText;
if (!subText.contains(AndroidSpellCheckerService.SINGLE_QUOTE)) {
continue;
@@ -73,7 +74,7 @@ public final class AndroidSpellCheckerSession extends AndroidWordLevelSpellCheck
if (TextUtils.isEmpty(splitText)) {
continue;
}
- if (mSuggestionsCache.getSuggestionsFromCache(splitText, prevWord) == null) {
+ if (mSuggestionsCache.getSuggestionsFromCache(splitText, prevWordsInfo) == null) {
continue;
}
final int newLength = splitText.length();
@@ -148,7 +149,8 @@ public final class AndroidSpellCheckerSession extends AndroidWordLevelSpellCheck
} else {
prevWord = null;
}
- retval[i] = onGetSuggestionsInternal(textInfos[i], prevWord, suggestionsLimit);
+ final PrevWordsInfo prevWordsInfo = new PrevWordsInfo(prevWord);
+ retval[i] = onGetSuggestionsInternal(textInfos[i], prevWordsInfo, suggestionsLimit);
retval[i].setCookieAndSequence(textInfos[i].getCookie(),
textInfos[i].getSequence());
}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
index 4c23d2210..cf26000d5 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
@@ -31,6 +31,7 @@ import com.android.inputmethod.compat.SuggestionsInfoCompatUtils;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.WordComposer;
import com.android.inputmethod.latin.spellcheck.AndroidSpellCheckerService.SuggestionsGatherer;
@@ -71,26 +72,26 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
new LruCache<String, SuggestionsParams>(MAX_CACHE_SIZE);
// TODO: Support n-gram input
- private static String generateKey(String query, String prevWord) {
- if (TextUtils.isEmpty(query) || TextUtils.isEmpty(prevWord)) {
+ private static String generateKey(final String query, final PrevWordsInfo prevWordsInfo) {
+ if (TextUtils.isEmpty(query) || TextUtils.isEmpty(prevWordsInfo.mPrevWord)) {
return query;
}
- return query + CHAR_DELIMITER + prevWord;
+ return query + CHAR_DELIMITER + prevWordsInfo.mPrevWord;
}
- // TODO: Support n-gram input
- public SuggestionsParams getSuggestionsFromCache(String query, String prevWord) {
- return mUnigramSuggestionsInfoCache.get(generateKey(query, prevWord));
+ public SuggestionsParams getSuggestionsFromCache(String query,
+ final PrevWordsInfo prevWordsInfo) {
+ return mUnigramSuggestionsInfoCache.get(generateKey(query, prevWordsInfo));
}
- // TODO: Support n-gram input
public void putSuggestionsToCache(
- String query, String prevWord, String[] suggestions, int flags) {
+ final String query, final PrevWordsInfo prevWordsInfo,
+ final String[] suggestions, final int flags) {
if (suggestions == null || TextUtils.isEmpty(query)) {
return;
}
mUnigramSuggestionsInfoCache.put(
- generateKey(query, prevWord), new SuggestionsParams(suggestions, flags));
+ generateKey(query, prevWordsInfo), new SuggestionsParams(suggestions, flags));
}
public void clearCache() {
@@ -259,11 +260,12 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
}
protected SuggestionsInfo onGetSuggestionsInternal(
- final TextInfo textInfo, final String prevWord, final int suggestionsLimit) {
+ final TextInfo textInfo, final PrevWordsInfo prevWordsInfo,
+ final int suggestionsLimit) {
try {
final String inText = textInfo.getText();
final SuggestionsParams cachedSuggestionsParams =
- mSuggestionsCache.getSuggestionsFromCache(inText, prevWord);
+ mSuggestionsCache.getSuggestionsFromCache(inText, prevWordsInfo);
if (cachedSuggestionsParams != null) {
if (DBG) {
Log.d(TAG, "Cache hit: " + inText + ", " + cachedSuggestionsParams.mFlags);
@@ -325,7 +327,7 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
composer.setComposingWord(codePoints, coordinates, null /* previousWord */);
// TODO: make a spell checker option to block offensive words or not
final ArrayList<SuggestedWordInfo> suggestions =
- dictInfo.mDictionary.getSuggestions(composer, prevWord,
+ dictInfo.mDictionary.getSuggestions(composer, prevWordsInfo,
dictInfo.getProximityInfo(), true /* blockOffensiveWords */,
null /* additionalFeaturesOptions */, 0 /* sessionId */,
null /* inOutLanguageWeight */);
@@ -369,7 +371,8 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
.getValueOf_RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS()
: 0);
final SuggestionsInfo retval = new SuggestionsInfo(flags, result.mSuggestions);
- mSuggestionsCache.putSuggestionsToCache(text, prevWord, result.mSuggestions, flags);
+ mSuggestionsCache.putSuggestionsToCache(text, prevWordsInfo, result.mSuggestions,
+ flags);
return retval;
} catch (RuntimeException e) {
// Don't kill the keyboard if there is a bug in the spell checker
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java b/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
index 0be256805..ba2e0c309 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
@@ -20,6 +20,7 @@ import android.util.Log;
import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.WordComposer;
import com.android.inputmethod.latin.utils.CollectionUtils;
@@ -52,7 +53,7 @@ public final class DictionaryPool extends LinkedBlockingQueue<DictAndKeyboard> {
// TODO: this dummy dictionary should be a singleton in the Dictionary class.
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
return noSuggestions;
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java
index 5f6e168b3..75075664f 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java
@@ -20,6 +20,7 @@ import android.content.Context;
import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.ContactsBinaryDictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.WordComposer;
@@ -36,11 +37,11 @@ public final class SynchronouslyLoadedContactsBinaryDictionary extends ContactsB
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
- final String prevWordForBigrams, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
synchronized (mLock) {
- return super.getSuggestions(codes, prevWordForBigrams, proximityInfo,
+ return super.getSuggestions(codes, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId, inOutLanguageWeight);
}
}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java
index 0499ad234..f2d981a9d 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java
@@ -19,6 +19,7 @@ package com.android.inputmethod.latin.spellcheck;
import android.content.Context;
import com.android.inputmethod.keyboard.ProximityInfo;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.UserBinaryDictionary;
import com.android.inputmethod.latin.WordComposer;
@@ -41,11 +42,11 @@ public final class SynchronouslyLoadedUserBinaryDictionary extends UserBinaryDic
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
- final String prevWordForBigrams, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
synchronized (mLock) {
- return super.getSuggestions(codes, prevWordForBigrams, proximityInfo,
+ return super.getSuggestions(codes, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId, inOutLanguageWeight);
}
}
diff --git a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
index 05387d55b..a21953259 100644
--- a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
+++ b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
@@ -24,6 +24,7 @@ import android.util.Log;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.Suggest;
import com.android.inputmethod.latin.Suggest.OnGetSuggestedWordsCallback;
import com.android.inputmethod.latin.SuggestedWords;
@@ -88,13 +89,13 @@ public class DistracterFilter {
/**
* Determine whether a word is a distracter to words in dictionaries.
*
- * @param prevWord the previous word, or null if none.
+ * @param prevWordsInfo the information of previous words.
* @param testedWord the word that will be tested to see whether it is a distracter to words
* in dictionaries.
* @param locale the locale of words.
* @return true if testedWord is a distracter, otherwise false.
*/
- public boolean isDistracterToWordsInDictionaries(final String prevWord,
+ public boolean isDistracterToWordsInDictionaries(final PrevWordsInfo prevWordsInfo,
final String testedWord, final Locale locale) {
if (mKeyboard == null || locale == null) {
return false;
@@ -113,7 +114,7 @@ public class DistracterFilter {
final int[] codePoints = StringUtils.toCodePointArray(testedWord);
final int[] coordinates;
coordinates = mKeyboard.getCoordinates(codePoints);
- composer.setComposingWord(codePoints, coordinates, prevWord);
+ composer.setComposingWord(codePoints, coordinates, prevWordsInfo.mPrevWord);
final int trailingSingleQuotesCount = StringUtils.getTrailingSingleQuotesCount(testedWord);
final String consideredWord = trailingSingleQuotesCount > 0 ?
@@ -133,7 +134,7 @@ public class DistracterFilter {
}
}
};
- mSuggest.getSuggestedWords(composer, prevWord, mKeyboard.getProximityInfo(),
+ mSuggest.getSuggestedWords(composer, prevWordsInfo, mKeyboard.getProximityInfo(),
true /* blockOffensiveWords */, true /* isCorrectionEnbaled */,
null /* additionalFeaturesOptions */, 0 /* sessionId */,
SuggestedWords.NOT_A_SEQUENCE_NUMBER, callback);
diff --git a/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java b/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
index 2d6796e3e..aaf4a4064 100644
--- a/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
+++ b/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
@@ -20,6 +20,7 @@ import android.util.Log;
import com.android.inputmethod.latin.Dictionary;
import com.android.inputmethod.latin.DictionaryFacilitatorForSuggest;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
import java.util.ArrayList;
@@ -85,7 +86,7 @@ public final class LanguageModelParam {
final ArrayList<LanguageModelParam> languageModelParams =
CollectionUtils.newArrayList();
final int N = tokens.size();
- String prevWord = null;
+ PrevWordsInfo prevWordsInfo = new PrevWordsInfo(null);
for (int i = 0; i < N; ++i) {
final String tempWord = tokens.get(i);
if (StringUtils.isEmptyStringOrWhiteSpaces(tempWord)) {
@@ -102,7 +103,7 @@ public final class LanguageModelParam {
+ tempWord + "\"");
}
// Sentence terminator found. Split.
- prevWord = null;
+ prevWordsInfo = new PrevWordsInfo(null);
continue;
}
if (DEBUG_TOKEN) {
@@ -110,19 +111,19 @@ public final class LanguageModelParam {
}
final LanguageModelParam languageModelParam =
detectWhetherVaildWordOrNotAndGetLanguageModelParam(
- prevWord, tempWord, timestamp, dictionaryFacilitator,
+ prevWordsInfo, tempWord, timestamp, dictionaryFacilitator,
distracterFilter);
if (languageModelParam == null) {
continue;
}
languageModelParams.add(languageModelParam);
- prevWord = languageModelParam.mTargetWord;
+ prevWordsInfo = new PrevWordsInfo(languageModelParam.mTargetWord);
}
return languageModelParams;
}
private static LanguageModelParam detectWhetherVaildWordOrNotAndGetLanguageModelParam(
- final String prevWord, final String targetWord, final int timestamp,
+ final PrevWordsInfo prevWordsInfo, final String targetWord, final int timestamp,
final DictionaryFacilitatorForSuggest dictionaryFacilitator,
final DistracterFilter distracterFilter) {
final Locale locale = dictionaryFacilitator.getLocale();
@@ -133,14 +134,14 @@ public final class LanguageModelParam {
// distracterFilter in the following code. If targetWord is a distracter,
// it should be filtered out.
if (dictionaryFacilitator.isValidWord(targetWord, false /* ignoreCase */)) {
- return createAndGetLanguageModelParamOfWord(prevWord, targetWord, timestamp,
+ return createAndGetLanguageModelParamOfWord(prevWordsInfo, targetWord, timestamp,
true /* isValidWord */, locale);
}
final String lowerCaseTargetWord = targetWord.toLowerCase(locale);
if (dictionaryFacilitator.isValidWord(lowerCaseTargetWord, false /* ignoreCase */)) {
// Add the lower-cased word.
- return createAndGetLanguageModelParamOfWord(prevWord, lowerCaseTargetWord,
+ return createAndGetLanguageModelParamOfWord(prevWordsInfo, lowerCaseTargetWord,
timestamp, true /* isValidWord */, locale);
}
@@ -150,26 +151,26 @@ public final class LanguageModelParam {
// Adding such a word to dictonaries would interfere with entering in-dictionary words. For
// example, adding "mot" to dictionaries might interfere with entering "not".
// This kind of OOV should be filtered out.
- if (distracterFilter.isDistracterToWordsInDictionaries(prevWord, targetWord, locale)) {
+ if (distracterFilter.isDistracterToWordsInDictionaries(prevWordsInfo, targetWord, locale)) {
return null;
}
- return createAndGetLanguageModelParamOfWord(prevWord, targetWord, timestamp,
+ return createAndGetLanguageModelParamOfWord(prevWordsInfo, targetWord, timestamp,
false /* isValidWord */, locale);
}
private static LanguageModelParam createAndGetLanguageModelParamOfWord(
- final String prevWord, final String targetWord, final int timestamp,
+ final PrevWordsInfo prevWordsInfo, final String targetWord, final int timestamp,
final boolean isValidWord, final Locale locale) {
final String word;
if (StringUtils.getCapitalizationType(targetWord) == StringUtils.CAPITALIZE_FIRST
- && prevWord == null && !isValidWord) {
+ && prevWordsInfo.mPrevWord == null && !isValidWord) {
word = targetWord.toLowerCase(locale);
} else {
word = targetWord;
}
final int unigramProbability = isValidWord ?
UNIGRAM_PROBABILITY_FOR_VALID_WORD : UNIGRAM_PROBABILITY_FOR_OOV_WORD;
- if (prevWord == null) {
+ if (prevWordsInfo.mPrevWord == null) {
if (DEBUG) {
Log.d(TAG, "--- add unigram: current("
+ (isValidWord ? "Valid" : "OOV") + ") = " + word);
@@ -177,12 +178,12 @@ public final class LanguageModelParam {
return new LanguageModelParam(word, unigramProbability, timestamp);
}
if (DEBUG) {
- Log.d(TAG, "--- add bigram: prev = " + prevWord + ", current("
+ Log.d(TAG, "--- add bigram: prev = " + prevWordsInfo.mPrevWord + ", current("
+ (isValidWord ? "Valid" : "OOV") + ") = " + word);
}
final int bigramProbability = isValidWord ?
BIGRAM_PROBABILITY_FOR_VALID_WORD : BIGRAM_PROBABILITY_FOR_OOV_WORD;
- return new LanguageModelParam(prevWord, word, unigramProbability,
+ return new LanguageModelParam(prevWordsInfo.mPrevWord, word, unigramProbability,
bigramProbability, timestamp);
}
}
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index 47f5ec0d7..e69d2c46b 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -103,10 +103,10 @@ class DicNode {
PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
}
- // Init for root with prevWordPtNodePos which is used for bigram
- void initAsRoot(const int rootPtNodeArrayPos, const int prevWordPtNodePos) {
+ // Init for root with prevWordsPtNodePos which is used for n-gram
+ void initAsRoot(const int rootPtNodeArrayPos, const int *const prevWordsPtNodePos) {
mIsCachedForNextSuggestion = false;
- mDicNodeProperties.init(rootPtNodeArrayPos, prevWordPtNodePos);
+ mDicNodeProperties.init(rootPtNodeArrayPos, prevWordsPtNodePos);
mDicNodeState.init();
PROF_NODE_RESET(mProfiler);
}
@@ -114,7 +114,12 @@ class DicNode {
// Init for root with previous word
void initAsRootWithPreviousWord(const DicNode *const dicNode, const int rootPtNodeArrayPos) {
mIsCachedForNextSuggestion = dicNode->mIsCachedForNextSuggestion;
- mDicNodeProperties.init(rootPtNodeArrayPos, dicNode->mDicNodeProperties.getPtNodePos());
+ int newPrevWordsPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+ newPrevWordsPtNodePos[0] = dicNode->mDicNodeProperties.getPtNodePos();
+ for (size_t i = 1; i < NELEMS(newPrevWordsPtNodePos); ++i) {
+ newPrevWordsPtNodePos[i] = dicNode->getNthPrevWordTerminalPtNodePos(i);
+ }
+ mDicNodeProperties.init(rootPtNodeArrayPos, newPrevWordsPtNodePos);
mDicNodeState.initAsRootWithPreviousWord(&dicNode->mDicNodeState,
dicNode->mDicNodeProperties.getDepth());
PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
@@ -140,7 +145,7 @@ class DicNode {
dicNode->mDicNodeProperties.getLeavingDepth() + mergedNodeCodePointCount);
mDicNodeProperties.init(ptNodePos, childrenPtNodeArrayPos, mergedNodeCodePoints[0],
probability, isTerminal, hasChildren, isBlacklistedOrNotAWord, newDepth,
- newLeavingDepth, dicNode->mDicNodeProperties.getPrevWordTerminalPtNodePos());
+ newLeavingDepth, dicNode->mDicNodeProperties.getPrevWordsTerminalPtNodePos());
mDicNodeState.init(&dicNode->mDicNodeState, mergedNodeCodePointCount,
mergedNodeCodePoints);
PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
@@ -198,14 +203,17 @@ class DicNode {
return mDicNodeState.mDicNodeStateInput.getInputIndex(0) < inputSize - 1;
}
- // Used to get bigram probability in DicNodeUtils
+ // Used to get n-gram probability in DicNodeUtils
int getPtNodePos() const {
return mDicNodeProperties.getPtNodePos();
}
- // Used to get bigram probability in DicNodeUtils
- int getPrevWordTerminalPtNodePos() const {
- return mDicNodeProperties.getPrevWordTerminalPtNodePos();
+ // Used to get n-gram probability in DicNodeUtils
+ int getNthPrevWordTerminalPtNodePos(const int n) const {
+ if (n <= 0 || n > MAX_PREV_WORD_COUNT_FOR_N_GRAM) {
+ return NOT_A_DICT_POS;
+ }
+ return mDicNodeProperties.getPrevWordsTerminalPtNodePos()[n - 1];
}
// Used in DicNodeUtils
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
index 2d02a7d9c..bf2a0000d 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
@@ -29,8 +29,8 @@ namespace latinime {
/* static */ void DicNodeUtils::initAsRoot(
const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
- const int prevWordPtNodePos, DicNode *const newRootDicNode) {
- newRootDicNode->initAsRoot(dictionaryStructurePolicy->getRootPosition(), prevWordPtNodePos);
+ const int *const prevWordsPtNodePos, DicNode *const newRootDicNode) {
+ newRootDicNode->initAsRoot(dictionaryStructurePolicy->getRootPosition(), prevWordsPtNodePos);
}
/*static */ void DicNodeUtils::initAsRootWithPreviousWord(
@@ -86,7 +86,7 @@ namespace latinime {
const DicNode *const dicNode, MultiBigramMap *const multiBigramMap) {
const int unigramProbability = dicNode->getProbability();
const int ptNodePos = dicNode->getPtNodePos();
- const int prevWordTerminalPtNodePos = dicNode->getPrevWordTerminalPtNodePos();
+ const int prevWordTerminalPtNodePos = dicNode->getNthPrevWordTerminalPtNodePos(1 /* n */);
if (NOT_A_DICT_POS == ptNodePos || NOT_A_DICT_POS == prevWordTerminalPtNodePos) {
// Note: Normally wordPos comes from the dictionary and should never equal
// NOT_A_VALID_WORD_POS.
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.h b/native/jni/src/suggest/core/dicnode/dic_node_utils.h
index 4c0f1f15d..0d60e5796 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.h
@@ -30,7 +30,7 @@ class DicNodeUtils {
public:
static void initAsRoot(
const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
- const int prevWordPtNodePos, DicNode *const newRootDicNode);
+ const int *const prevWordPtNodePos, DicNode *const newRootDicNode);
static void initAsRootWithPreviousWord(
const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
const DicNode *const prevWordLastDicNode, DicNode *const newRootDicNode);
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
index 11f8c2905..8202176f7 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
@@ -32,15 +32,14 @@ class DicNodeProperties {
: mPtNodePos(NOT_A_DICT_POS), mChildrenPtNodeArrayPos(NOT_A_DICT_POS),
mProbability(NOT_A_PROBABILITY), mDicNodeCodePoint(NOT_A_CODE_POINT),
mIsTerminal(false), mHasChildrenPtNodes(false),
- mIsBlacklistedOrNotAWord(false), mDepth(0), mLeavingDepth(0),
- mPrevWordTerminalPtNodePos(NOT_A_DICT_POS) {}
+ mIsBlacklistedOrNotAWord(false), mDepth(0), mLeavingDepth(0) {}
~DicNodeProperties() {}
// Should be called only once per DicNode is initialized.
void init(const int pos, const int childrenPos, const int nodeCodePoint, const int probability,
const bool isTerminal, const bool hasChildren, const bool isBlacklistedOrNotAWord,
- const uint16_t depth, const uint16_t leavingDepth, const int prevWordNodePos) {
+ const uint16_t depth, const uint16_t leavingDepth, const int *const prevWordsNodePos) {
mPtNodePos = pos;
mChildrenPtNodeArrayPos = childrenPos;
mDicNodeCodePoint = nodeCodePoint;
@@ -50,11 +49,11 @@ class DicNodeProperties {
mIsBlacklistedOrNotAWord = isBlacklistedOrNotAWord;
mDepth = depth;
mLeavingDepth = leavingDepth;
- mPrevWordTerminalPtNodePos = prevWordNodePos;
+ memmove(mPrevWordsTerminalPtNodePos, prevWordsNodePos, sizeof(mPrevWordsTerminalPtNodePos));
}
- // Init for root with prevWordPtNodePos which is used for bigram
- void init(const int rootPtNodeArrayPos, const int prevWordNodePos) {
+ // Init for root with prevWordsPtNodePos which is used for n-gram
+ void init(const int rootPtNodeArrayPos, const int *const prevWordsNodePos) {
mPtNodePos = NOT_A_DICT_POS;
mChildrenPtNodeArrayPos = rootPtNodeArrayPos;
mDicNodeCodePoint = NOT_A_CODE_POINT;
@@ -64,7 +63,7 @@ class DicNodeProperties {
mIsBlacklistedOrNotAWord = false;
mDepth = 0;
mLeavingDepth = 0;
- mPrevWordTerminalPtNodePos = prevWordNodePos;
+ memmove(mPrevWordsTerminalPtNodePos, prevWordsNodePos, sizeof(mPrevWordsTerminalPtNodePos));
}
void initByCopy(const DicNodeProperties *const dicNodeProp) {
@@ -77,7 +76,8 @@ class DicNodeProperties {
mIsBlacklistedOrNotAWord = dicNodeProp->mIsBlacklistedOrNotAWord;
mDepth = dicNodeProp->mDepth;
mLeavingDepth = dicNodeProp->mLeavingDepth;
- mPrevWordTerminalPtNodePos = dicNodeProp->mPrevWordTerminalPtNodePos;
+ memmove(mPrevWordsTerminalPtNodePos, dicNodeProp->mPrevWordsTerminalPtNodePos,
+ sizeof(mPrevWordsTerminalPtNodePos));
}
// Init as passing child
@@ -91,7 +91,8 @@ class DicNodeProperties {
mIsBlacklistedOrNotAWord = dicNodeProp->mIsBlacklistedOrNotAWord;
mDepth = dicNodeProp->mDepth + 1; // Increment the depth of a passing child
mLeavingDepth = dicNodeProp->mLeavingDepth;
- mPrevWordTerminalPtNodePos = dicNodeProp->mPrevWordTerminalPtNodePos;
+ memmove(mPrevWordsTerminalPtNodePos, dicNodeProp->mPrevWordsTerminalPtNodePos,
+ sizeof(mPrevWordsTerminalPtNodePos));
}
int getPtNodePos() const {
@@ -131,8 +132,8 @@ class DicNodeProperties {
return mIsBlacklistedOrNotAWord;
}
- int getPrevWordTerminalPtNodePos() const {
- return mPrevWordTerminalPtNodePos;
+ const int *getPrevWordsTerminalPtNodePos() const {
+ return mPrevWordsTerminalPtNodePos;
}
private:
@@ -148,7 +149,7 @@ class DicNodeProperties {
bool mIsBlacklistedOrNotAWord;
uint16_t mDepth;
uint16_t mLeavingDepth;
- int mPrevWordTerminalPtNodePos;
+ int mPrevWordsTerminalPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
};
} // namespace latinime
#endif // LATINIME_DIC_NODE_PROPERTIES_H
diff --git a/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp b/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp
index 847fa1b02..295e760d6 100644
--- a/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp
+++ b/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp
@@ -48,21 +48,10 @@ BigramDictionary::~BigramDictionary() {
*/
void BigramDictionary::getPredictions(const PrevWordsInfo *const prevWordsInfo,
SuggestionResults *const outSuggestionResults) const {
- int pos = getBigramListPositionForWord(prevWordsInfo->getPrevWordCodePoints(),
- prevWordsInfo->getPrevWordCodePointCount(), false /* forceLowerCaseSearch */);
- // getBigramListPositionForWord returns 0 if this word isn't in the dictionary or has no bigrams
- if (NOT_A_DICT_POS == pos) {
- // If no bigrams for this exact word, search again in lower case.
- pos = getBigramListPositionForWord(prevWordsInfo->getPrevWordCodePoints(),
- prevWordsInfo->getPrevWordCodePointCount(), true /* forceLowerCaseSearch */);
- }
- // If still no bigrams, we really don't have them!
- if (NOT_A_DICT_POS == pos) return;
-
int unigramProbability = 0;
int bigramCodePoints[MAX_WORD_LENGTH];
- BinaryDictionaryBigramsIterator bigramsIt(
- mDictionaryStructurePolicy->getBigramsStructurePolicy(), pos);
+ BinaryDictionaryBigramsIterator bigramsIt =
+ prevWordsInfo->getBigramsIteratorForPrediction(mDictionaryStructurePolicy);
while (bigramsIt.hasNext()) {
bigramsIt.next();
if (bigramsIt.getBigramPos() == NOT_A_DICT_POS) {
@@ -98,16 +87,11 @@ int BigramDictionary::getBigramListPositionForWord(const int *prevWord, const in
int BigramDictionary::getBigramProbability(const PrevWordsInfo *const prevWordsInfo,
const int *word1, int length1) const {
- int pos = getBigramListPositionForWord(prevWordsInfo->getPrevWordCodePoints(),
- prevWordsInfo->getPrevWordCodePointCount(), false /* forceLowerCaseSearch */);
- // getBigramListPositionForWord returns 0 if this word isn't in the dictionary or has no bigrams
- if (NOT_A_DICT_POS == pos) return NOT_A_PROBABILITY;
int nextWordPos = mDictionaryStructurePolicy->getTerminalPtNodePositionOfWord(word1, length1,
false /* forceLowerCaseSearch */);
if (NOT_A_DICT_POS == nextWordPos) return NOT_A_PROBABILITY;
-
- BinaryDictionaryBigramsIterator bigramsIt(
- mDictionaryStructurePolicy->getBigramsStructurePolicy(), pos);
+ BinaryDictionaryBigramsIterator bigramsIt =
+ prevWordsInfo->getBigramsIteratorForPrediction(mDictionaryStructurePolicy);
while (bigramsIt.hasNext()) {
bigramsIt.next();
if (bigramsIt.getBigramPos() == nextWordPos
diff --git a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h b/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h
index d16ac47fe..bc9d57671 100644
--- a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h
+++ b/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h
@@ -30,6 +30,11 @@ class BinaryDictionaryBigramsIterator {
mBigramPos(NOT_A_DICT_POS), mProbability(NOT_A_PROBABILITY),
mHasNext(pos != NOT_A_DICT_POS) {}
+ BinaryDictionaryBigramsIterator(BinaryDictionaryBigramsIterator &&bigramsIterator)
+ : mBigramsStructurePolicy(bigramsIterator.mBigramsStructurePolicy),
+ mPos(bigramsIterator.mPos), mBigramPos(bigramsIterator.mBigramPos),
+ mProbability(bigramsIterator.mProbability), mHasNext(bigramsIterator.mHasNext) {}
+
AK_FORCE_INLINE bool hasNext() const {
return mHasNext;
}
diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.cpp b/native/jni/src/suggest/core/session/dic_traverse_session.cpp
index b9e9db719..dc2b66a2c 100644
--- a/native/jni/src/suggest/core/session/dic_traverse_session.cpp
+++ b/native/jni/src/suggest/core/session/dic_traverse_session.cpp
@@ -35,21 +35,8 @@ void DicTraverseSession::init(const Dictionary *const dictionary,
mMultiWordCostMultiplier = getDictionaryStructurePolicy()->getHeaderStructurePolicy()
->getMultiWordCostMultiplier();
mSuggestOptions = suggestOptions;
- if (!prevWordsInfo->getPrevWordCodePoints()) {
- mPrevWordsPtNodePos[0] = NOT_A_DICT_POS;
- return;
- }
- // TODO: merge following similar calls to getTerminalPosition into one case-insensitive call.
- mPrevWordsPtNodePos[0] = getDictionaryStructurePolicy()->getTerminalPtNodePositionOfWord(
- prevWordsInfo->getPrevWordCodePoints(), prevWordsInfo->getPrevWordCodePointCount(),
- false /* forceLowerCaseSearch */);
- if (mPrevWordsPtNodePos[0] == NOT_A_DICT_POS) {
- // Check bigrams for lower-cased previous word if original was not found. Useful for
- // auto-capitalized words like "The [current_word]".
- mPrevWordsPtNodePos[0] = getDictionaryStructurePolicy()->getTerminalPtNodePositionOfWord(
- prevWordsInfo->getPrevWordCodePoints(), prevWordsInfo->getPrevWordCodePointCount(),
- true /* forceLowerCaseSearch */);
- }
+ prevWordsInfo->getPrevWordsTerminalPtNodePos(
+ getDictionaryStructurePolicy(), mPrevWordsPtNodePos);
}
void DicTraverseSession::setupForGetSuggestions(const ProximityInfo *pInfo,
diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.h b/native/jni/src/suggest/core/session/dic_traverse_session.h
index 90aff06c3..5a51a112d 100644
--- a/native/jni/src/suggest/core/session/dic_traverse_session.h
+++ b/native/jni/src/suggest/core/session/dic_traverse_session.h
@@ -79,7 +79,7 @@ class DicTraverseSession {
//--------------------
const ProximityInfo *getProximityInfo() const { return mProximityInfo; }
const SuggestOptions *getSuggestOptions() const { return mSuggestOptions; }
- int getPrevWordPtNodePos() const { return mPrevWordsPtNodePos[0]; }
+ const int *getPrevWordsPtNodePos() const { return mPrevWordsPtNodePos; }
DicNodesCache *getDicTraverseCache() { return &mDicNodesCache; }
MultiBigramMap *getMultiBigramMap() { return &mMultiBigramMap; }
const ProximityInfoState *getProximityInfoState(int id) const {
diff --git a/native/jni/src/suggest/core/session/prev_words_info.h b/native/jni/src/suggest/core/session/prev_words_info.h
index bc685945e..70a99ef38 100644
--- a/native/jni/src/suggest/core/session/prev_words_info.h
+++ b/native/jni/src/suggest/core/session/prev_words_info.h
@@ -18,6 +18,8 @@
#define LATINIME_PREV_WORDS_INFO_H
#include "defines.h"
+#include "suggest/core/dictionary/binary_dictionary_bigrams_iterator.h"
+#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
namespace latinime {
@@ -38,17 +40,64 @@ class PrevWordsInfo {
mPrevWordCodePointCount[0] = prevWordCodePointCount;
mIsBeginningOfSentence[0] = isBeginningOfSentence;
}
- const int *getPrevWordCodePoints() const {
- return mPrevWordCodePoints[0];
+
+ void getPrevWordsTerminalPtNodePos(
+ const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+ int *const outPrevWordsTerminalPtNodePos) const {
+ for (size_t i = 0; i < NELEMS(mPrevWordCodePoints); ++i) {
+ outPrevWordsTerminalPtNodePos[i] = getTerminalPtNodePosOfWord(dictStructurePolicy,
+ mPrevWordCodePoints[i], mPrevWordCodePointCount[i],
+ mIsBeginningOfSentence[i]);
+ }
}
- int getPrevWordCodePointCount() const {
- return mPrevWordCodePointCount[0];
+ BinaryDictionaryBigramsIterator getBigramsIteratorForPrediction(
+ const DictionaryStructureWithBufferPolicy *const dictStructurePolicy) const {
+ int pos = getBigramListPositionForWord(dictStructurePolicy, mPrevWordCodePoints[0],
+ mPrevWordCodePointCount[0], false /* forceLowerCaseSearch */);
+ // getBigramListPositionForWord returns NOT_A_DICT_POS if this word isn't in the
+ // dictionary or has no bigrams
+ if (NOT_A_DICT_POS == pos) {
+ // If no bigrams for this exact word, search again in lower case.
+ pos = getBigramListPositionForWord(dictStructurePolicy, mPrevWordCodePoints[0],
+ mPrevWordCodePointCount[0], true /* forceLowerCaseSearch */);
+ }
+ return BinaryDictionaryBigramsIterator(
+ dictStructurePolicy->getBigramsStructurePolicy(), pos);
}
private:
DISALLOW_COPY_AND_ASSIGN(PrevWordsInfo);
+ static int getTerminalPtNodePosOfWord(
+ const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+ const int *const wordCodePoints, const int wordCodePointCount,
+ const bool isBeginningOfSentence) {
+ if (!dictStructurePolicy || !wordCodePoints) {
+ return NOT_A_DICT_POS;
+ }
+ const int wordPtNodePos = dictStructurePolicy->getTerminalPtNodePositionOfWord(
+ wordCodePoints, wordCodePointCount, false /* forceLowerCaseSearch */);
+ if (wordPtNodePos != NOT_A_DICT_POS) {
+ return wordPtNodePos;
+ }
+ // Check bigrams for lower-cased previous word if original was not found. Useful for
+ // auto-capitalized words like "The [current_word]".
+ return dictStructurePolicy->getTerminalPtNodePositionOfWord(
+ wordCodePoints, wordCodePointCount, true /* forceLowerCaseSearch */);
+ }
+
+ static int getBigramListPositionForWord(
+ const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+ const int *wordCodePoints, const int wordCodePointCount,
+ const bool forceLowerCaseSearch) {
+ if (!wordCodePoints || wordCodePointCount <= 0) return NOT_A_DICT_POS;
+ const int terminalPtNodePos = dictStructurePolicy->getTerminalPtNodePositionOfWord(
+ wordCodePoints, wordCodePointCount, forceLowerCaseSearch);
+ if (NOT_A_DICT_POS == terminalPtNodePos) return NOT_A_DICT_POS;
+ return dictStructurePolicy->getBigramsPositionOfPtNode(terminalPtNodePos);
+ }
+
void clear() {
for (size_t i = 0; i < NELEMS(mPrevWordCodePoints); ++i) {
mPrevWordCodePoints[i] = nullptr;
diff --git a/native/jni/src/suggest/core/suggest.cpp b/native/jni/src/suggest/core/suggest.cpp
index e675e0bb3..0cd305f5a 100644
--- a/native/jni/src/suggest/core/suggest.cpp
+++ b/native/jni/src/suggest/core/suggest.cpp
@@ -92,7 +92,7 @@ void Suggest::initializeSearch(DicTraverseSession *traverseSession) const {
// Create a new dic node here
DicNode rootNode;
DicNodeUtils::initAsRoot(traverseSession->getDictionaryStructurePolicy(),
- traverseSession->getPrevWordPtNodePos(), &rootNode);
+ traverseSession->getPrevWordsPtNodePos(), &rootNode);
traverseSession->getDicTraverseCache()->copyPushActive(&rootNode);
}
}
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
index fb5231ba6..4f4f01c76 100644
--- a/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
@@ -35,7 +35,7 @@ public class KeyboardThemeTests extends AndroidTestCase {
private static final String ILLEGAL_THEME_ID_STRING = "ThisCausesNumberFormatExecption";
private static final int THEME_ID_ICS = KeyboardTheme.THEME_ID_ICS;
private static final int THEME_ID_KLP = KeyboardTheme.THEME_ID_KLP;
- private static final int THEME_ID_LXX = KeyboardTheme.THEME_ID_LXX;
+ private static final int THEME_ID_LXX_DARK = KeyboardTheme.THEME_ID_LXX_DARK;
@Override
protected void setUp() throws Exception {
@@ -51,7 +51,7 @@ public class KeyboardThemeTests extends AndroidTestCase {
switch (themeId) {
case THEME_ID_ICS:
case THEME_ID_KLP:
- case THEME_ID_LXX:
+ case THEME_ID_LXX_DARK:
return true;
default:
return false;
@@ -95,7 +95,7 @@ public class KeyboardThemeTests extends AndroidTestCase {
assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId);
assertKeyboardThemePreference(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
assertKeyboardThemePreference(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
- assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX, THEME_ID_LXX);
+ assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK);
assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId);
assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId);
}
@@ -110,11 +110,11 @@ public class KeyboardThemeTests extends AndroidTestCase {
}
private void assertKeyboardThemePreferenceOnLxx(final int sdkVersion) {
- final int defaultThemeId = THEME_ID_LXX;
+ final int defaultThemeId = THEME_ID_LXX_DARK;
assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId);
assertKeyboardThemePreference(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
assertKeyboardThemePreference(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
- assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX, THEME_ID_LXX);
+ assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK);
assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId);
assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId);
}
@@ -165,11 +165,11 @@ public class KeyboardThemeTests extends AndroidTestCase {
private void assertDefaultKeyboardThemeOnLxx(final int sdkVersion) {
// Forced to switch to LXX theme.
- assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_LXX);
- assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_LXX);
- assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_LXX);
- assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX);
- assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX);
+ assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK);
+ assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK);
+ assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK);
+ assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+ assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
}
public void testDefaultKeyboardThemeOnLxx() {
@@ -230,11 +230,11 @@ public class KeyboardThemeTests extends AndroidTestCase {
private void assertUpgradeKeyboardToLxxOnLxx(final int sdkVersion) {
// Forced to switch to LXX theme.
- assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_LXX);
- assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_LXX);
- assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_LXX);
- assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX);
- assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX);
+ assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK);
+ assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK);
+ assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK);
+ assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+ assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
}
// Upgrading keyboard on L.
@@ -293,11 +293,16 @@ public class KeyboardThemeTests extends AndroidTestCase {
private void assertUpgradePlatformToLxxFrom(final int oldSdkVersion) {
// Forced to switch to LXX theme.
final int newSdkVersion = VERSION_CODES_LXX;
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
}
// Update platform from I,J, and K to L
@@ -314,10 +319,15 @@ public class KeyboardThemeTests extends AndroidTestCase {
public void testUpgradePlatformToLxxFromLxx() {
final int oldSdkVersion = VERSION_CODES_LXX;
final int newSdkVersion = VERSION_CODES_LXX;
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_ICS);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_KLP);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_ICS);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_KLP);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
}
}
diff --git a/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java b/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java
index d7b57aeea..e98f9eacc 100644
--- a/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java
+++ b/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java
@@ -36,50 +36,50 @@ public class DistracterFilterTest extends InputTestsBase {
}
public void testIsDistractorToWordsInDictionaries() {
- final String EMPTY_PREV_WORD = null;
+ final PrevWordsInfo EMPTY_PREV_WORDS_INFO = new PrevWordsInfo(null);
final Locale localeEnUs = new Locale("en", "US");
String typedWord = "alot";
// For this test case, we consider "alot" is a distracter to "a lot".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "mot";
// For this test case, we consider "mot" is a distracter to "not".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "wierd";
// For this test case, we consider "wierd" is a distracter to "weird".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "hoe";
// For this test case, we consider "hoe" is a distracter to "how".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "nit";
// For this test case, we consider "nit" is a distracter to "not".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "ill";
// For this test case, we consider "ill" is a distracter to "I'll".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "asdfd";
// For this test case, we consider "asdfd" is not a distracter to any word in dictionaries.
assertFalse(
mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "thank";
// For this test case, we consider "thank" is not a distracter to any other word
// in dictionaries.
assertFalse(
mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
}
}
diff --git a/tests/src/com/android/inputmethod/latin/WordComposerTests.java b/tests/src/com/android/inputmethod/latin/WordComposerTests.java
index d68bb5c54..16e8b36b0 100644
--- a/tests/src/com/android/inputmethod/latin/WordComposerTests.java
+++ b/tests/src/com/android/inputmethod/latin/WordComposerTests.java
@@ -57,14 +57,14 @@ public class WordComposerTests extends AndroidTestCase {
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(1));
assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
// Check the previous word is still there
- assertEquals(PREVWORD, wc.getPreviousWordForSuggestion());
+ assertEquals(PREVWORD, wc.getPrevWordsInfoForSuggestion().mPrevWord);
// Move the cursor past the end of the word
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(1));
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(15));
// Do what LatinIME does when the cursor is moved outside of the word,
// and check the behavior is correct.
wc.reset();
- assertNull(wc.getPreviousWordForSuggestion());
+ assertNull(wc.getPrevWordsInfoForSuggestion().mPrevWord);
// \uD861\uDED7 is 𨛗, a character outside the BMP
final String STR_WITH_SUPPLEMENTARY_CHAR = "abcde\uD861\uDED7fgh";
@@ -83,37 +83,37 @@ public class WordComposerTests extends AndroidTestCase {
assertTrue(wc.isCursorFrontOrMiddleOfComposingWord());
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(1));
assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
- assertNull(wc.getPreviousWordForSuggestion());
+ assertNull(wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
STR_WITHIN_BMP);
wc.setCursorPositionWithinWord(3);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(7));
- assertEquals(STR_WITHIN_BMP, wc.getPreviousWordForSuggestion());
+ assertEquals(STR_WITHIN_BMP, wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
STR_WITH_SUPPLEMENTARY_CHAR);
wc.setCursorPositionWithinWord(3);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(7));
- assertEquals(STR_WITH_SUPPLEMENTARY_CHAR, wc.getPreviousWordForSuggestion());
+ assertEquals(STR_WITH_SUPPLEMENTARY_CHAR, wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
STR_WITHIN_BMP);
wc.setCursorPositionWithinWord(3);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(-3));
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(-1));
- assertEquals(STR_WITHIN_BMP, wc.getPreviousWordForSuggestion());
+ assertEquals(STR_WITHIN_BMP, wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
null /* previousWord */);
wc.setCursorPositionWithinWord(3);
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(-9));
- assertNull(wc.getPreviousWordForSuggestion());
+ assertNull(wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
STR_WITH_SUPPLEMENTARY_CHAR);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(-10));
- assertEquals(STR_WITH_SUPPLEMENTARY_CHAR, wc.getPreviousWordForSuggestion());
+ assertEquals(STR_WITH_SUPPLEMENTARY_CHAR, wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
null /* previousWord */);
diff --git a/tools/dicttool/Android.mk b/tools/dicttool/Android.mk
index e12d7e0b5..10104cf33 100644
--- a/tools/dicttool/Android.mk
+++ b/tools/dicttool/Android.mk
@@ -44,6 +44,7 @@ LATINIME_SRC_FILES_FOR_DICTTOOL := \
latin/InputPointers.java \
latin/LastComposedWord.java \
latin/LatinImeLogger.java \
+ latin/PrevWordsInfo.java \
latin/SuggestedWords.java \
latin/WordComposer.java \
latin/settings/NativeSuggestOptions.java \