diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png index bc0a03fc1ea14e3683383663df28d12457f82e69..c89f7385ae069d398e7a9075247579f0a51c9077 100644 Binary files a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png and b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png differ diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png index 3f2fc0002dfa974a4d942095883e0c4955de4ca3..1fbb15ea5a36494465531f23b650af0a4de183f7 100644 Binary files a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png and b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png differ diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png index 9e77015ea58dae63db43568404dfcc0c1769a18a..e4469c6dc396191be1467c9d304644705e8526f3 100644 Binary files a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png and b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png differ diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png index b3ac506addd8d7ce2fa12a8c4853eba255cfc06a..f574a38c95a3ae226152345a9bc2a6618f64ffa6 100644 Binary files a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png and b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png differ diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png index 66138edecacf83f3f375a7c21ea779a2a7284f0e..af525376351667338ebe9271aee015f7488a7b8b 100644 Binary files a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png and b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png differ diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png index 7c80300e9e0c9431f799e1d240217ff2dfd99ba6..541cf5c4a370db0de873e7bbe9ddfe32f539bc6f 100644 Binary files a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png and b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png differ diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png index 737de397b4871d5b36ea031b6ec67e826849c52f..0ad025c90c60cb4478cab32f179d9f944f38a47f 100644 Binary files a/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png and b/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png differ diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png index 3dcd8323d67c35a27678f0702a4b68999fc4392a..c0403f0bdfe11e486cc8ad4cd401f97bf58ab627 100644 Binary files a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png and b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png differ diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4a77ffb97f736ea09a3562d019124f21f63afb17 Binary files /dev/null and b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png differ diff --git a/java/res/drawable-hdpi/key_hint_at_holo.9.png b/java/res/drawable-hdpi/key_hint_at_holo.9.png index 2b8520a92e487e9488921e0bf5b31f854c8b9677..e7ce4b065b7c977dcb170ac4ff180e0c18c39442 100644 Binary files a/java/res/drawable-hdpi/key_hint_at_holo.9.png and b/java/res/drawable-hdpi/key_hint_at_holo.9.png differ diff --git a/java/res/drawable-hdpi/key_hint_at_large_holo.9.png b/java/res/drawable-hdpi/key_hint_at_large_holo.9.png index ff56845f88b7b5ae555a019d12f5038cc136a198..3e8db989c3ebe31f7f5675ea3b844a7f91701708 100644 Binary files a/java/res/drawable-hdpi/key_hint_at_large_holo.9.png and b/java/res/drawable-hdpi/key_hint_at_large_holo.9.png differ diff --git a/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png index 7230fb92a7d35371daa538a622e481b2b64cebe5..0e2d3545ec7f5688a9591a8ee53fb55287dd6c5b 100644 Binary files a/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png and b/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png differ diff --git a/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png index 0152ce21b63d58b62875506b8fb62f2193d80a92..75a450c872f25608bf8670bb811579a11db7ca37 100644 Binary files a/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png and b/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png differ diff --git a/java/res/drawable-hdpi/key_hint_question_holo.9.png b/java/res/drawable-hdpi/key_hint_question_holo.9.png index 088550f5bffbd8e657e4f13715e510b37f028ccb..84bf78fd419c7783fe35c830d0b2fea5a600d502 100644 Binary files a/java/res/drawable-hdpi/key_hint_question_holo.9.png and b/java/res/drawable-hdpi/key_hint_question_holo.9.png differ diff --git a/java/res/drawable-hdpi/key_hint_question_large_holo.9.png b/java/res/drawable-hdpi/key_hint_question_large_holo.9.png index 8a9dffbe2739819015a648aa2b1fa1aab96397a6..d1e9fda0696e8088d2ad2bedbb418c9763d4c275 100644 Binary files a/java/res/drawable-hdpi/key_hint_question_large_holo.9.png and b/java/res/drawable-hdpi/key_hint_question_large_holo.9.png differ diff --git a/java/res/drawable-hdpi/key_hint_quote_holo.9.png b/java/res/drawable-hdpi/key_hint_quote_holo.9.png index 51dcfac990ce9ab42f757f4f6a55290af64fb801..9d5a88bbfaab56805e1b40b1a37da91b4e89a520 100644 Binary files a/java/res/drawable-hdpi/key_hint_quote_holo.9.png and b/java/res/drawable-hdpi/key_hint_quote_holo.9.png differ diff --git a/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png index 6514e0bf7f587a56376658957fd9beba16bf8d25..49154a7370e23fde63789c7b1b58bb9be16bfc77 100644 Binary files a/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png and b/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png differ diff --git a/java/res/drawable-hdpi/key_hint_underline_holo.9.png b/java/res/drawable-hdpi/key_hint_underline_holo.9.png index fef1b63697a0c457ee6763a2dfe053c56c5b8798..8d83cf93875481e13e47d52f81f9ed98525c16cb 100644 Binary files a/java/res/drawable-hdpi/key_hint_underline_holo.9.png and b/java/res/drawable-hdpi/key_hint_underline_holo.9.png differ diff --git a/java/res/drawable-hdpi/keyboard_background_holo.9.png b/java/res/drawable-hdpi/keyboard_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1eeb9e5cce4e525d39cc087aec54b696201145af Binary files /dev/null and b/java/res/drawable-hdpi/keyboard_background_holo.9.png differ diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..571f3aa3715d409cb70f88a9325da9830b89890a Binary files /dev/null and b/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png differ diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_holo.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c33d6642941bbc3cb4cf9c153476ae3aa054f6b7 Binary files /dev/null and b/java/res/drawable-hdpi/keyboard_popup_panel_background_holo.9.png differ diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..c432bf4a33b318e98f8dfb4687288862775c1d18 Binary files /dev/null and b/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png differ diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png index bc0a03fc1ea14e3683383663df28d12457f82e69..c89f7385ae069d398e7a9075247579f0a51c9077 100644 Binary files a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png and b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png differ diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png index 3f2fc0002dfa974a4d942095883e0c4955de4ca3..1fbb15ea5a36494465531f23b650af0a4de183f7 100644 Binary files a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png and b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png differ diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png index 9e77015ea58dae63db43568404dfcc0c1769a18a..e4469c6dc396191be1467c9d304644705e8526f3 100644 Binary files a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png and b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png differ diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png index b3ac506addd8d7ce2fa12a8c4853eba255cfc06a..f574a38c95a3ae226152345a9bc2a6618f64ffa6 100644 Binary files a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png and b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png differ diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png index 66138edecacf83f3f375a7c21ea779a2a7284f0e..af525376351667338ebe9271aee015f7488a7b8b 100644 Binary files a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png and b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png differ diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png index 7c80300e9e0c9431f799e1d240217ff2dfd99ba6..541cf5c4a370db0de873e7bbe9ddfe32f539bc6f 100644 Binary files a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png and b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png differ diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png index 737de397b4871d5b36ea031b6ec67e826849c52f..0ad025c90c60cb4478cab32f179d9f944f38a47f 100644 Binary files a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png and b/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png differ diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png index 3dcd8323d67c35a27678f0702a4b68999fc4392a..c0403f0bdfe11e486cc8ad4cd401f97bf58ab627 100644 Binary files a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png and b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png differ diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4a77ffb97f736ea09a3562d019124f21f63afb17 Binary files /dev/null and b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png differ diff --git a/java/res/drawable-mdpi/hint_popup_holo.9.png b/java/res/drawable-mdpi/hint_popup_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ab2448126dfdf850bbfaee4b34256d9c0459eb Binary files /dev/null and b/java/res/drawable-mdpi/hint_popup_holo.9.png differ diff --git a/java/res/drawable-mdpi/key_hint_at_holo.9.png b/java/res/drawable-mdpi/key_hint_at_holo.9.png index 2b8520a92e487e9488921e0bf5b31f854c8b9677..54ec524bea6b75c774c37bc7d9dd562833bc5d40 100644 Binary files a/java/res/drawable-mdpi/key_hint_at_holo.9.png and b/java/res/drawable-mdpi/key_hint_at_holo.9.png differ diff --git a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-mdpi/key_hint_at_large_holo.9.png index ff56845f88b7b5ae555a019d12f5038cc136a198..ae7b6454382095fc32fa3b1d31f1b7ad6d2d4a45 100644 Binary files a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png and b/java/res/drawable-mdpi/key_hint_at_large_holo.9.png differ diff --git a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png index 7230fb92a7d35371daa538a622e481b2b64cebe5..0e2d3545ec7f5688a9591a8ee53fb55287dd6c5b 100644 Binary files a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png and b/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png differ diff --git a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png index 0152ce21b63d58b62875506b8fb62f2193d80a92..75a450c872f25608bf8670bb811579a11db7ca37 100644 Binary files a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png and b/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png differ diff --git a/java/res/drawable-mdpi/key_hint_question_holo.9.png b/java/res/drawable-mdpi/key_hint_question_holo.9.png index 088550f5bffbd8e657e4f13715e510b37f028ccb..84bf78fd419c7783fe35c830d0b2fea5a600d502 100644 Binary files a/java/res/drawable-mdpi/key_hint_question_holo.9.png and b/java/res/drawable-mdpi/key_hint_question_holo.9.png differ diff --git a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-mdpi/key_hint_question_large_holo.9.png index 8a9dffbe2739819015a648aa2b1fa1aab96397a6..d1e9fda0696e8088d2ad2bedbb418c9763d4c275 100644 Binary files a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png and b/java/res/drawable-mdpi/key_hint_question_large_holo.9.png differ diff --git a/java/res/drawable-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_holo.9.png index 51dcfac990ce9ab42f757f4f6a55290af64fb801..9d5a88bbfaab56805e1b40b1a37da91b4e89a520 100644 Binary files a/java/res/drawable-mdpi/key_hint_quote_holo.9.png and b/java/res/drawable-mdpi/key_hint_quote_holo.9.png differ diff --git a/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png index 6514e0bf7f587a56376658957fd9beba16bf8d25..49154a7370e23fde63789c7b1b58bb9be16bfc77 100644 Binary files a/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png and b/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png differ diff --git a/java/res/drawable-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-mdpi/key_hint_underline_holo.9.png index fef1b63697a0c457ee6763a2dfe053c56c5b8798..8d83cf93875481e13e47d52f81f9ed98525c16cb 100644 Binary files a/java/res/drawable-mdpi/key_hint_underline_holo.9.png and b/java/res/drawable-mdpi/key_hint_underline_holo.9.png differ diff --git a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png index d584dad3d268405a5a38b435039da053ce6afe76..8d83b62773f9fc22c1b5e21fd324ef58852b84cb 100644 Binary files a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png and b/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png differ diff --git a/java/res/drawable-mdpi/keyboard_background_holo.9.png b/java/res/drawable-mdpi/keyboard_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..13cb0a07192125b1cb72db7bbf6a20736b703fbc Binary files /dev/null and b/java/res/drawable-mdpi/keyboard_background_holo.9.png differ diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..571f3aa3715d409cb70f88a9325da9830b89890a Binary files /dev/null and b/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png differ diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..94756b717124dbdf1adcdd4d13a9ef119d2bca81 Binary files /dev/null and b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png differ diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c33d6642941bbc3cb4cf9c153476ae3aa054f6b7 Binary files /dev/null and b/java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_holo.png b/java/res/drawable-mdpi/sym_keyboard_delete_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..1141ddd8308469d1c5a233d075c9cf659ac7de5d Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_delete_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_num0_holo.png b/java/res/drawable-mdpi/sym_keyboard_num0_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..39f19a48775f450635bada50b8dec94062a6a1bc Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_num0_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_num1_holo.png b/java/res/drawable-mdpi/sym_keyboard_num1_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..40c82a7f42d863672a98855c65c2e406424d0cc0 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_num1_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_num2_holo.png b/java/res/drawable-mdpi/sym_keyboard_num2_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..0f444b76bacd7e95f4a1bd493e94ea4559ac7535 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_num2_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_num3_holo.png b/java/res/drawable-mdpi/sym_keyboard_num3_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..e4c5bee3a31d3bbd89ca291c0af7cca830ea9933 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_num3_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_num4_holo.png b/java/res/drawable-mdpi/sym_keyboard_num4_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..68404aa43f56fcd8ca4a146db97e5ad66b3225b1 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_num4_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_num5_holo.png b/java/res/drawable-mdpi/sym_keyboard_num5_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa3b89258832260eabb11856ba2fadad8a10837 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_num5_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_num6_holo.png b/java/res/drawable-mdpi/sym_keyboard_num6_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..1827d540992cab3cf8256aeacdc913a7c216e54e Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_num6_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_num7_holo.png b/java/res/drawable-mdpi/sym_keyboard_num7_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..2488b7f91ec15ca06ab0c226698a6b4061d3db5a Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_num7_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_num8_holo.png b/java/res/drawable-mdpi/sym_keyboard_num8_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..3f60df194b0eb35d9024dcd04e6b48c2a395618a Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_num8_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_num9_holo.png b/java/res/drawable-mdpi/sym_keyboard_num9_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..71c5dfc6e7cc874286f3f79c9dea4204e7126f69 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_num9_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png b/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..a9866bbac93f4173ddf408b0770e1a44d61d2200 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png b/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..ba4ea88e877f870326a78636b5816220d8d04cff Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_return_holo.png b/java/res/drawable-mdpi/sym_keyboard_return_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..f64c731607181962a14a9ee21743ad149b8d8d85 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_return_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d62136de3f9563caf34ab4f115cdb2be3205d4 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_shift_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_lock.png b/java/res/drawable-mdpi/sym_keyboard_shift_lock.png deleted file mode 100644 index 244179c2def030160df47d4cf1a1b94bb0e498e3..0000000000000000000000000000000000000000 Binary files a/java/res/drawable-mdpi/sym_keyboard_shift_lock.png and /dev/null differ diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..c432bf4a33b318e98f8dfb4687288862775c1d18 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png b/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..a123d4cdf6454aaf9b253a9e09cec95ac09ce78a Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png differ diff --git a/java/res/drawable-mdpi/sym_keyboard_space_holo.png b/java/res/drawable-mdpi/sym_keyboard_space_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..d1ef4414e8fb185ca965a58ead33e651855ab4b8 Binary files /dev/null and b/java/res/drawable-mdpi/sym_keyboard_space_holo.png differ diff --git a/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml b/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml new file mode 100644 index 0000000000000000000000000000000000000000..87e952c60fa36c8d6684bd1df8d0f065d81261a9 --- /dev/null +++ b/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_popup_selected_holo" /> + <item android:drawable="@drawable/btn_keyboard_key_light_popup_normal" /> +</selector> diff --git a/java/res/drawable/keyboard_key_feedback_honeycomb.xml b/java/res/drawable/keyboard_key_feedback_honeycomb.xml new file mode 100644 index 0000000000000000000000000000000000000000..dd9b53e463e94cfa396eee7b2c1556dc346a4b71 --- /dev/null +++ b/java/res/drawable/keyboard_key_feedback_honeycomb.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_long_pressable="true" + android:drawable="@drawable/keyboard_key_feedback_more_background" /> + <item android:drawable="@drawable/keyboard_key_feedback_background_holo" /> +</selector> diff --git a/java/res/layout-xlarge/keyboard_popup_honeycomb.xml b/java/res/layout-xlarge/keyboard_popup_honeycomb.xml new file mode 100644 index 0000000000000000000000000000000000000000..50e91f7ea75ffbf29be2df22a7916aa3b2cfd998 --- /dev/null +++ b/java/res/layout-xlarge/keyboard_popup_honeycomb.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:background="@drawable/keyboard_popup_panel_background_holo" + android:paddingLeft="44dip" + android:paddingRight="32dip" + > + <com.android.inputmethod.latin.BaseKeyboardView + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + android:id="@+id/BaseKeyboardView" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/latinkeyboard_transparent" + + latin:keyBackground="@drawable/btn_keyboard_key_honeycomb_popup" + latin:keyHysteresisDistance="0dip" + latin:verticalCorrection="@dimen/mini_keyboard_vertical_correction" + /> +</LinearLayout> diff --git a/java/res/layout/input_honeycomb.xml b/java/res/layout/input_honeycomb.xml index 7bc0df4272526c06e0aca7c18df1f4774a1ad6b0..79eb7be964bd5106aaa391a3cff3dc589b8a303a 100644 --- a/java/res/layout/input_honeycomb.xml +++ b/java/res/layout/input_honeycomb.xml @@ -27,9 +27,11 @@ android:layout_height="wrap_content" android:paddingTop="@dimen/keyboard_top_padding" android:paddingBottom="@dimen/keyboard_bottom_padding" - android:background="@drawable/keyboard_dark_background" + android:background="@drawable/keyboard_background_holo" android:textStyle="bold" latin:keyBackground="@drawable/btn_keyboard_key_honeycomb" + latin:keyPreviewLayout="@layout/key_preview_honeycomb" + latin:popupLayout="@layout/keyboard_popup_honeycomb" latin:keyTextStyle="bold" /> diff --git a/java/res/layout/key_preview_honeycomb.xml b/java/res/layout/key_preview_honeycomb.xml new file mode 100644 index 0000000000000000000000000000000000000000..a90fe55885d161f1215eb33ba700d0dc58402915 --- /dev/null +++ b/java/res/layout/key_preview_honeycomb.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<TextView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="80sp" + android:textSize="40sp" + android:textColor="@color/latinkeyboard_key_color_white" + android:minWidth="24dip" + android:gravity="center" + android:background="@drawable/keyboard_key_feedback_honeycomb" + /> diff --git a/java/res/layout/keyboard_popup_honeycomb.xml b/java/res/layout/keyboard_popup_honeycomb.xml new file mode 100644 index 0000000000000000000000000000000000000000..63b5353813bc1cffaf9197e4b03dd9b301c50470 --- /dev/null +++ b/java/res/layout/keyboard_popup_honeycomb.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:background="@drawable/keyboard_popup_panel_background_holo" + android:paddingLeft="24dip" + android:paddingRight="24dip" + > + <com.android.inputmethod.latin.BaseKeyboardView + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + android:id="@+id/BaseKeyboardView" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/latinkeyboard_transparent" + + latin:keyBackground="@drawable/btn_keyboard_key_honeycomb_popup" + latin:keyHysteresisDistance="0dip" + latin:verticalCorrection="@dimen/mini_keyboard_vertical_correction" + /> +</LinearLayout> diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml index 1162a317225b1f75e7bc10b58cd93e12f1c3f85f..58fea4edf63a4e490577410910a5835b7a010875 100644 --- a/java/res/values-xlarge/dimens.xml +++ b/java/res/values-xlarge/dimens.xml @@ -21,22 +21,24 @@ <resources> <!-- key_height + key_bottom_gap = popup_key_height --> <dimen name="key_height">13.0mm</dimen> - <dimen name="key_bottom_gap">2.0mm</dimen> + <dimen name="key_bottom_gap">1.5mm</dimen> <dimen name="key_horizontal_gap">2.0mm</dimen> <dimen name="popup_key_height">15.0mm</dimen> <dimen name="keyboard_top_padding">1.0mm</dimen> <dimen name="keyboard_bottom_padding">1.0mm</dimen> - <!-- key_height x 1.6 --> - <dimen name="key_preview_height">20.8mm</dimen> + <!-- key_height x 1.0 --> + <dimen name="key_preview_height">13.0mm</dimen> <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. --> <!-- popup_key_height x 1.2 --> <dimen name="mini_keyboard_slide_allowance">15.6mm</dimen> <!-- popup_key_height x -1.0 --> <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen> - <dimen name="key_text_size">0.175in</dimen> - <dimen name="key_label_text_size">0.110in</dimen> - <dimen name="key_preview_text_size_large">0.245in</dimen> + <dimen name="key_text_size">24dip</dimen> + <dimen name="key_label_text_size">18dip</dimen> + <dimen name="key_preview_text_size_large">24dip</dimen> + <!-- left or right padding for of label alignment --> + <dimen name="key_label_horizontal_alignment_padding">18dip</dimen> <dimen name="candidate_strip_height">46dip</dimen> </resources> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 28ea6fcccfb6115008c74b3e9f7ceab709cbe619..ee4ec051778b453f2485c3650e1135f5621d95d3 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -126,6 +126,8 @@ <attr name="manualTemporaryUpperCaseHintIcon" format="reference" /> <!-- The key style to specify a set of key attributes defined by <key_style/> --> <attr name="keyStyle" format="string" /> + <!-- Shift key icon for shifted state --> + <attr name="shiftedIcon" format="reference" /> </declare-styleable> <declare-styleable name="BaseKeyboard_Row"> diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index 0073835fda507903ea76e790e8eb1373685ec25e..f29bc4d113a77e38d811e76babf913665e53d0af 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -37,6 +37,8 @@ <dimen name="key_text_size">0.13in</dimen> <dimen name="key_label_text_size">0.083in</dimen> <dimen name="key_preview_text_size_large">40sp</dimen> + <!-- left or right padding for of label alignment --> + <dimen name="key_label_horizontal_alignment_padding">0.13in</dimen> <dimen name="key_preview_offset">0.000in</dimen> <!-- We use "inch", not "dip" because this value tries dealing with physical distance related to user's finger. --> diff --git a/java/res/xml-xlarge/kbd_key_styles.xml b/java/res/xml-xlarge/kbd_key_styles.xml new file mode 100644 index 0000000000000000000000000000000000000000..0643bc3446fca4d8d054207b55d90bb1dfd83417 --- /dev/null +++ b/java/res/xml-xlarge/kbd_key_styles.xml @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <!-- Functional key styles --> + <switch> + <case + latin:colorScheme="white" + > + <key-style + latin:styleName="functionalKeyStyle" + latin:isModifier="true" /> + <key-style + latin:styleName="shiftKeyStyle" + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift_holo" + latin:shiftedIcon="@drawable/sym_keyboard_shift_locked_holo" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:parentStyle="functionalKeyStyle" + latin:isSticky="true" /> + <key-style + latin:styleName="deleteKeyStyle" + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete_holo" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:parentStyle="functionalKeyStyle" + latin:isRepeatable="true" /> + <key-style + latin:styleName="returnKeyStyle" + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return_holo" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:parentStyle="functionalKeyStyle" /> + 1 + <key-style + latin:styleName="spaceKeyStyle" + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space_holo" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="nonSpecialBackgroundSpaceKeyStyle" + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space_holo" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> + <key-style + latin:styleName="smileyKeyStyle" + latin:codes="0" + latin:keyIcon="@drawable/sym_keyboard_smiley_holo" + latin:keyOutputText=";-) " + latin:keyHintIcon="@drawable/hint_popup_holo" + latin:popupKeyboard="@xml/popup_smileys" /> + </case> + <case + latin:colorScheme="black" + > + <key-style + latin:styleName="functionalKeyStyle" /> + <key-style + latin:styleName="shiftKeyStyle" + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:parentStyle="functionalKeyStyle" + latin:isSticky="true" /> + <key-style + latin:styleName="deleteKeyStyle" + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:parentStyle="functionalKeyStyle" + latin:isRepeatable="true" /> + <key-style + latin:styleName="returnKeyStyle" + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="spaceKeyStyle" + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="nonSpecialBackgroundSpaceKeyStyle" + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> + <key-style + latin:styleName="smileyKeyStyle" + latin:keyLabel=";-)" + latin:keyOutputText=";-) " + latin:keyHintIcon="@drawable/hint_popup_holo" + latin:popupKeyboard="@xml/popup_smileys" /> + </case> + </switch> + <key-style + latin:styleName="tabKeyStyle" + latin:codes="@integer/key_tab" + latin:keyLabel="@string/label_tab_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="toSymbolKeyStyle" + latin:codes="@integer/key_switch_alpha_symbol" + latin:keyLabel="@string/label_to_symbol_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="toAlphaKeyStyle" + latin:codes="@integer/key_switch_alpha_symbol" + latin:keyLabel="@string/label_to_alpha_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="moreKeyStyle" + latin:codes="@integer/key_shift" + latin:keyLabel="@string/label_more_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" + latin:isSticky="true" /> + <key-style + latin:styleName="comKeyStyle" + latin:keyLabel=".com" + latin:keyLabelOption="fontNormal" + latin:keyHintIcon="@drawable/hint_popup_holo" + latin:popupKeyboard="@xml/popup_domains" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_number.xml b/java/res/xml-xlarge/kbd_number.xml index dd251ea9fbe78ca33c09bcde2a6c537b152640ee..f5f4fbc8aa3ed40d76deb029d85a7fc600911dda 100644 --- a/java/res/xml-xlarge/kbd_number.xml +++ b/java/res/xml-xlarge/kbd_number.xml @@ -25,13 +25,13 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:keyHeight="@dimen/key_height" > + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> <!-- This row is intentionally not marked as a top row --> <Row> <Key - latin:codes="@integer/key_tab" - latin:keyLabel="@string/label_tab_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" - latin:isModifier="true" + latin:keyStyle="tabKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyEdgeFlags="left" /> <Spacer latin:horizontalGap="4.458%p" /> @@ -55,12 +55,8 @@ <Spacer latin:horizontalGap="9.360%p" /> <Key - latin:codes="@integer/key_delete" - latin:keyLabel="@string/label_backspace_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" + latin:keyStyle="deleteKeyStyle" latin:keyWidth="9.804%p" - latin:isModifier="true" - latin:isRepeatable="true" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -86,11 +82,8 @@ <Spacer latin:horizontalGap="4.458%p" /> <Key - latin:codes="@integer/key_return" - latin:keyLabel="@string/label_return_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" + latin:keyStyle="returnKeyStyle" latin:keyWidth="14.706%p" - latin:isModifier="true" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -125,9 +118,7 @@ <Spacer latin:horizontalGap="16.406%p" /> <Key - latin:codes="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" latin:keyWidth="24.127%p" /> <Spacer latin:horizontalGap="4.458%p" /> diff --git a/java/res/xml-xlarge/kbd_numkey_styles.xml b/java/res/xml-xlarge/kbd_numkey_styles.xml new file mode 100644 index 0000000000000000000000000000000000000000..adf45a861087c4fb74c89e4940c54afbd4e67c1e --- /dev/null +++ b/java/res/xml-xlarge/kbd_numkey_styles.xml @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <switch> + <case + latin:colorScheme="white" + > + <key-style + latin:styleName="num0KeyStyle" + latin:codes="48" + latin:keyIcon="@drawable/sym_keyboard_num0_holo" /> + <key-style + latin:styleName="num1KeyStyle" + latin:codes="49" + latin:keyIcon="@drawable/sym_keyboard_num1_holo" /> + <key-style + latin:styleName="num2KeyStyle" + latin:codes="50" + latin:keyIcon="@drawable/sym_keyboard_num2_holo" /> + <key-style + latin:styleName="num3KeyStyle" + latin:codes="51" + latin:keyIcon="@drawable/sym_keyboard_num3_holo" /> + <key-style + latin:styleName="num4KeyStyle" + latin:codes="52" + latin:keyIcon="@drawable/sym_keyboard_num4_holo" /> + <key-style + latin:styleName="num5KeyStyle" + latin:codes="53" + latin:keyIcon="@drawable/sym_keyboard_num5_holo" /> + <key-style + latin:styleName="num6KeyStyle" + latin:codes="54" + latin:keyIcon="@drawable/sym_keyboard_num6_holo" /> + <key-style + latin:styleName="num7KeyStyle" + latin:codes="55" + latin:keyIcon="@drawable/sym_keyboard_num7_holo" /> + <key-style + latin:styleName="num8KeyStyle" + latin:codes="56" + latin:keyIcon="@drawable/sym_keyboard_num8_holo" /> + <key-style + latin:styleName="num9KeyStyle" + latin:codes="57" + latin:keyIcon="@drawable/sym_keyboard_num9_holo" /> + <key-style + latin:styleName="numStarKeyStyle" + latin:codes="42" + latin:keyIcon="@drawable/sym_keyboard_numbstar_holo" /> + <key-style + latin:styleName="numPoundKeyStyle" + latin:codes="35" + latin:keyIcon="@drawable/sym_keyboard_numbpound_holo" /> + <key-style + latin:styleName="numAltKeyStyle" + latin:codes="@integer/key_switch_alpha_symbol" + latin:keyIcon="@drawable/sym_keyboard_numalt" + latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> + <key-style + latin:styleName="numSpaceKeyStyle" + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space_holo" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> + </case> + <case + latin:colorScheme="black" + > + <key-style + latin:styleName="num0KeyStyle" + latin:codes="48" + latin:keyIcon="@drawable/sym_bkeyboard_num0" /> + <key-style + latin:styleName="num1KeyStyle" + latin:codes="49" + latin:keyIcon="@drawable/sym_bkeyboard_num1" /> + <key-style + latin:styleName="num2KeyStyle" + latin:codes="50" + latin:keyIcon="@drawable/sym_bkeyboard_num2" /> + <key-style + latin:styleName="num3KeyStyle" + latin:codes="51" + latin:keyIcon="@drawable/sym_bkeyboard_num3" /> + <key-style + latin:styleName="num4KeyStyle" + latin:codes="52" + latin:keyIcon="@drawable/sym_bkeyboard_num4" /> + <key-style + latin:styleName="num5KeyStyle" + latin:codes="53" + latin:keyIcon="@drawable/sym_bkeyboard_num5" /> + <key-style + latin:styleName="num6KeyStyle" + latin:codes="54" + latin:keyIcon="@drawable/sym_bkeyboard_num6" /> + <key-style + latin:styleName="num7KeyStyle" + latin:codes="55" + latin:keyIcon="@drawable/sym_bkeyboard_num7" /> + <key-style + latin:styleName="num8KeyStyle" + latin:codes="56" + latin:keyIcon="@drawable/sym_bkeyboard_num8" /> + <key-style + latin:styleName="num9KeyStyle" + latin:codes="57" + latin:keyIcon="@drawable/sym_bkeyboard_num9" /> + <key-style + latin:styleName="numStarKeyStyle" + latin:codes="42" + latin:keyIcon="@drawable/sym_bkeyboard_numstar" /> + <key-style + latin:styleName="numPoundKeyStyle" + latin:codes="35" + latin:keyIcon="@drawable/sym_bkeyboard_numpound" /> + <key-style + latin:styleName="numAltKeyStyle" + latin:codes="@integer/key_switch_alpha_symbol" + latin:keyIcon="@drawable/sym_bkeyboard_numalt" + latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> + <key-style + latin:styleName="numSpaceKeyStyle" + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> + </case> + </switch> +</merge> diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-xlarge/kbd_phone.xml index 842c74bf5544d8d6634d230e6af6a7c13de57833..483b022a52ff230e86c7403f5dc03c05b320ddd5 100644 --- a/java/res/xml-xlarge/kbd_phone.xml +++ b/java/res/xml-xlarge/kbd_phone.xml @@ -25,13 +25,15 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:keyHeight="@dimen/key_height" > + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <include + latin:keyboardLayout="@xml/kbd_numkey_styles" /> <!-- This row is intentionally not marked as a top row --> <Row> <Key - latin:codes="@integer/key_tab" - latin:keyLabel="@string/label_tab_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" - latin:isModifier="true" + latin:keyStyle="tabKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyEdgeFlags="left" /> <!-- To match one character label size with "Tab", I placed spaces around the char '-' and '+'. --> @@ -48,32 +50,22 @@ <Spacer latin:horizontalGap="8.479%p" /> <Key - latin:codes="49" - latin:keyIcon="@drawable/sym_keyboard_num1" /> + latin:keyStyle="num1KeyStyle" /> <Key - latin:codes="50" - latin:keyIcon="@drawable/sym_keyboard_num2" /> + latin:keyStyle="num2KeyStyle" /> <Key - latin:codes="51" - latin:keyIcon="@drawable/sym_keyboard_num3" /> + latin:keyStyle="num3KeyStyle" /> <Spacer - latin:horizontalGap="4.458%p" /> + latin:horizontalGap="9.360%p" /> <Key - latin:codes="@integer/key_delete" - latin:keyLabel="@string/label_backspace_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" - latin:keyWidth="14.706%p" - latin:isModifier="true" - latin:isRepeatable="true" + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="9.804%p" latin:keyEdgeFlags="right" /> </Row> <Row> <Key - latin:codes="@integer/key_shift" - latin:keyLabel="@string/label_more_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" - latin:isModifier="true" - latin:isSticky="true" + latin:keyStyle="moreKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyEdgeFlags="left" /> <!-- To match one character label size with "More", I placed spaces around the char ',' and '.'. --> @@ -90,22 +82,16 @@ <Spacer latin:horizontalGap="8.479%p" /> <Key - latin:codes="52" - latin:keyIcon="@drawable/sym_keyboard_num4" /> + latin:keyStyle="num4KeyStyle" /> <Key - latin:codes="53" - latin:keyIcon="@drawable/sym_keyboard_num5" /> + latin:keyStyle="num5KeyStyle" /> <Key - latin:codes="54" - latin:keyIcon="@drawable/sym_keyboard_num6" /> + latin:keyStyle="num6KeyStyle" /> <Spacer latin:horizontalGap="4.458%p" /> <Key - latin:codes="@integer/key_return" - latin:keyLabel="@string/label_return_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" + latin:keyStyle="returnKeyStyle" latin:keyWidth="14.706%p" - latin:isModifier="true" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -126,14 +112,11 @@ <Spacer latin:horizontalGap="8.479%p" /> <Key - latin:codes="55" - latin:keyIcon="@drawable/sym_keyboard_num7" /> + latin:keyStyle="num7KeyStyle" /> <Key - latin:codes="56" - latin:keyIcon="@drawable/sym_keyboard_num8" /> + latin:keyStyle="num8KeyStyle" /> <Key - latin:codes="57" - latin:keyIcon="@drawable/sym_keyboard_num9" /> + latin:keyStyle="num9KeyStyle" /> <!-- There is an empty area bellow the "Enter" key and right of the "9" key. To ignore the touch event on the area, "9" is intentionally not marked as a right edge key. --> </Row> @@ -144,21 +127,16 @@ <Spacer latin:horizontalGap="20.427%p" /> <Key - latin:codes="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" latin:keyWidth="16.085%p" /> <Spacer latin:horizontalGap="8.479%p" /> <Key - latin:codes="42" - latin:keyIcon="@drawable/sym_keyboard_numstar" /> + latin:keyStyle="numStarKeyStyle" /> <Key - latin:codes="48" - latin:keyIcon="@drawable/sym_keyboard_num0" /> + latin:keyStyle="num0KeyStyle" /> <Key - latin:codes="35" - latin:keyIcon="@drawable/sym_keyboard_numpound" /> + latin:keyStyle="numPoundKeyStyle" /> <!-- There is an empty area bellow the "Enter" key and right of the "#" key. To ignore the touch event on the area, "#" is intentionally not marked as a right edge key. --> </Row> diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-xlarge/kbd_phone_symbols.xml index 9ba60ed85895b5383ef20b5a30a395e9739aa5d4..09eb403c86af69639cf9ba3fb17e94d9b911fa6b 100644 --- a/java/res/xml-xlarge/kbd_phone_symbols.xml +++ b/java/res/xml-xlarge/kbd_phone_symbols.xml @@ -25,13 +25,15 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:keyHeight="@dimen/key_height" > + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <include + latin:keyboardLayout="@xml/kbd_numkey_styles" /> <!-- This row is intentionally not marked as a top row --> <Row> <Key - latin:codes="@integer/key_tab" - latin:keyLabel="@string/label_tab_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" - latin:isModifier="true" + latin:keyStyle="tabKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyEdgeFlags="left" /> <Spacer latin:horizontalGap="4.458%p" /> @@ -52,32 +54,22 @@ <Spacer latin:horizontalGap="4.458%p" /> <Key - latin:codes="49" - latin:keyIcon="@drawable/sym_keyboard_num1" /> + latin:keyStyle="num1KeyStyle" /> <Key - latin:codes="50" - latin:keyIcon="@drawable/sym_keyboard_num2" /> + latin:keyStyle="num2KeyStyle" /> <Key - latin:codes="51" - latin:keyIcon="@drawable/sym_keyboard_num3" /> + latin:keyStyle="num3KeyStyle" /> <Spacer - latin:horizontalGap="4.458%p" /> + latin:horizontalGap="9.360%p" /> <Key - latin:codes="@integer/key_delete" - latin:keyLabel="@string/label_backspace_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" - latin:keyWidth="14.706%p" - latin:isModifier="true" - latin:isRepeatable="true" + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="9.804%p" latin:keyEdgeFlags="right" /> </Row> <Row> <Key - latin:codes="@integer/key_shift" - latin:keyLabel="@string/label_more_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" - latin:isModifier="true" - latin:isSticky="true" + latin:keyStyle="moreKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyEdgeFlags="left" /> <Spacer latin:horizontalGap="4.458%p" /> @@ -98,22 +90,16 @@ <Spacer latin:horizontalGap="4.458%p" /> <Key - latin:codes="52" - latin:keyIcon="@drawable/sym_keyboard_num4" /> + latin:keyStyle="num4KeyStyle" /> <Key - latin:codes="53" - latin:keyIcon="@drawable/sym_keyboard_num5" /> + latin:keyStyle="num5KeyStyle" /> <Key - latin:codes="54" - latin:keyIcon="@drawable/sym_keyboard_num6" /> + latin:keyStyle="num6KeyStyle" /> <Spacer latin:horizontalGap="4.458%p" /> <Key - latin:codes="@integer/key_return" - latin:keyLabel="@string/label_return_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" + latin:keyStyle="returnKeyStyle" latin:keyWidth="14.706%p" - latin:isModifier="true" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -138,14 +124,11 @@ <Spacer latin:horizontalGap="4.458%p" /> <Key - latin:codes="55" - latin:keyIcon="@drawable/sym_keyboard_num7" /> + latin:keyStyle="num7KeyStyle" /> <Key - latin:codes="56" - latin:keyIcon="@drawable/sym_keyboard_num8" /> + latin:keyStyle="num8KeyStyle" /> <Key - latin:codes="57" - latin:keyIcon="@drawable/sym_keyboard_num9" /> + latin:keyStyle="num9KeyStyle" /> <!-- There is an empty area bellow the "Enter" key and right of the "9" key. To ignore the touch event on the area, "9" is intentionally not marked as a right edge key. --> </Row> @@ -156,21 +139,16 @@ <Spacer latin:horizontalGap="16.406%p" /> <Key - latin:codes="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" latin:keyWidth="24.127%p" /> <Spacer latin:horizontalGap="4.458%p" /> <Key - latin:codes="42" - latin:keyIcon="@drawable/sym_keyboard_numstar" /> + latin:keyStyle="numStarKeyStyle" /> <Key - latin:codes="48" - latin:keyIcon="@drawable/sym_keyboard_num0" /> + latin:keyStyle="num0KeyStyle" /> <Key - latin:codes="35" - latin:keyIcon="@drawable/sym_keyboard_numpound" /> + latin:keyStyle="numPoundKeyStyle" /> <!-- There is an empty area bellow the "Enter" key and right of the "#" key. To ignore the touch event on the area, "#" is intentionally not marked as a right edge key. --> </Row> diff --git a/java/res/xml-xlarge/kbd_qwerty.xml b/java/res/xml-xlarge/kbd_qwerty.xml index b45060497adf3c70996b9398e93bb91e6827b2cf..6f6877b0bfe7e62757baceb803be411c1def9842 100644 --- a/java/res/xml-xlarge/kbd_qwerty.xml +++ b/java/res/xml-xlarge/kbd_qwerty.xml @@ -24,8 +24,14 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:keyHeight="@dimen/key_height" > - <include latin:keyboardLayout="@xml/kbd_qwerty_row1" /> - <include latin:keyboardLayout="@xml/kbd_qwerty_row2" /> - <include latin:keyboardLayout="@xml/kbd_qwerty_row3" /> - <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row1" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row2" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row3" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </Keyboard> diff --git a/java/res/xml-xlarge/kbd_qwerty_row1.xml b/java/res/xml-xlarge/kbd_qwerty_row1.xml index eca24b6e15e5b96307558366f20fdc219469c306..1596867928ff900725043cc61ff718c30f77905e 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row1.xml +++ b/java/res/xml-xlarge/kbd_qwerty_row1.xml @@ -26,11 +26,9 @@ latin:keyWidth="8.272%p" > <Key - latin:codes="@integer/key_tab" - latin:keyLabel="@string/label_tab_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" + latin:keyStyle="tabKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyWidth="7.949%p" - latin:isModifier="true" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="q" @@ -73,12 +71,8 @@ latin:popupKeyboard="@xml/kbd_popup_template" latin:popupCharacters="@string/alternates_for_p" /> <Key - latin:codes="@integer/key_delete" - latin:keyIcon="@drawable/sym_keyboard_delete" - latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyStyle="deleteKeyStyle" latin:keyWidth="9.331%p" - latin:isModifier="true" - latin:isRepeatable="true" latin:keyEdgeFlags="right" /> </Row> </merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row2.xml b/java/res/xml-xlarge/kbd_qwerty_row2.xml index 8dfb4888584fa81b6ab56c76e3510d0fd228f9e7..2b9be10abbf6e724bae41c004983547ab4ee4e24 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row2.xml +++ b/java/res/xml-xlarge/kbd_qwerty_row2.xml @@ -25,11 +25,9 @@ latin:keyWidth="8.157%p" > <Key - latin:codes="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_symbol_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" + latin:keyStyle="toSymbolKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyWidth="11.167%p" - latin:isModifier="true" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="a" @@ -60,11 +58,8 @@ latin:popupKeyboard="@xml/kbd_popup_template" latin:popupCharacters="@string/alternates_for_l" /> <Key - latin:codes="@integer/key_return" - latin:keyLabel="@string/label_return_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" + latin:keyStyle="returnKeyStyle" latin:keyWidth="15.750%p" - latin:isModifier="true" latin:keyEdgeFlags="right" /> </Row> </merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row3.xml b/java/res/xml-xlarge/kbd_qwerty_row3.xml index c26dcc41043b9ee1fb29eb6dda11cb8adfccece8..209ef213d892ade14c94862fa30125ddb83da515 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row3.xml +++ b/java/res/xml-xlarge/kbd_qwerty_row3.xml @@ -25,12 +25,8 @@ latin:keyWidth="8.042%p" > <Key - latin:codes="@integer/key_shift" - latin:keyLabel="@string/label_shift_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" + latin:keyStyle="shiftKeyStyle" latin:keyWidth="15.192%p" - latin:isModifier="true" - latin:isSticky="true" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="z" @@ -81,12 +77,8 @@ </default> </switch> <Key - latin:codes="@integer/key_shift" - latin:keyLabel="@string/label_shift_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" - latin:keyWidth="12.430%p" - latin:isModifier="true" - latin:isSticky="true" + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="12.530%p" latin:keyEdgeFlags="right" /> </Row> </merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row4.xml b/java/res/xml-xlarge/kbd_qwerty_row4.xml index 8b31ec6fa60a5bb6935a18dfab59a4048abb0f05..7b9049a8ec321ae05f0055df7967592eac1249ee 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row4.xml +++ b/java/res/xml-xlarge/kbd_qwerty_row4.xml @@ -32,10 +32,7 @@ latin:mode="email" > <Key - latin:keyLabel=".com" - latin:keyOutputText=".com" - latin:keyHintIcon="@drawable/hint_popup" - latin:popupKeyboard="@xml/popup_domains" /> + latin:keyStyle="comKeyStyle" /> <Key latin:keyLabel="\@" /> </case> @@ -44,18 +41,12 @@ latin:mode="url" > <Key - latin:keyLabel=".com" - latin:keyOutputText=".com" - latin:keyHintIcon="@drawable/hint_popup" - latin:popupKeyboard="@xml/popup_domains" + latin:keyStyle="comKeyStyle" latin:keyWidth="16.084%p" /> </case> <default> <Key - latin:keyLabel=":-)" - latin:keyOutputText=":-)" - latin:keyHintIcon="@drawable/hint_popup" - latin:popupKeyboard="@xml/popup_smileys" /> + latin:keyStyle="smileyKeyStyle" /> <Key latin:keyLabel="/" latin:manualTemporaryUpperCaseCode="64" @@ -66,11 +57,8 @@ </default> </switch> <Key - latin:codes="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" - latin:keyWidth="37.454%p" - latin:isModifier="true" /> + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="37.454%p" /> <switch> <case latin:mode="email" diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-xlarge/kbd_symbols.xml index 317c32b810ee129bb099e5d2678e94df426dec10..7197115d68e8b025d981d350f9910344e9fe1d20 100644 --- a/java/res/xml-xlarge/kbd_symbols.xml +++ b/java/res/xml-xlarge/kbd_symbols.xml @@ -24,16 +24,16 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:keyHeight="@dimen/key_height" > + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> <!-- This row is intentionally not marked as a top row --> <Row latin:keyWidth="8.272%p" > <Key - latin:codes="@integer/key_tab" - latin:keyLabel="@string/label_tab_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" + latin:keyStyle="tabKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyWidth="7.949%p" - latin:isModifier="true" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="1" @@ -70,23 +70,17 @@ latin:popupKeyboard="@xml/kbd_popup_template" latin:popupCharacters="â¿âˆ…" /> <Key - latin:codes="@integer/key_delete" - latin:keyIcon="@drawable/sym_keyboard_delete" - latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyStyle="deleteKeyStyle" latin:keyWidth="9.331%p" - latin:isModifier="true" - latin:isRepeatable="true" latin:keyEdgeFlags="right" /> </Row> <Row latin:keyWidth="8.157%p" > <Key - latin:codes="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_alpha_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" + latin:keyStyle="toAlphaKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyWidth="11.167%p" - latin:isModifier="true" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="#" /> @@ -121,23 +115,17 @@ latin:popupKeyboard="@xml/kbd_popup_template" latin:popupCharacters="]}>" /> <Key - latin:codes="@integer/key_return" - latin:keyLabel="@string/label_return_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" + latin:keyStyle="returnKeyStyle" latin:keyWidth="15.750%p" - latin:isModifier="true" latin:keyEdgeFlags="right" /> </Row> <Row latin:keyWidth="8.042%p" > <Key - latin:codes="@integer/key_shift" - latin:keyLabel="@string/label_more_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" + latin:keyStyle="moreKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyWidth="15.192%p" - latin:isModifier="true" - latin:isSticky="true" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="<" @@ -166,13 +154,9 @@ latin:popupKeyboard="@xml/kbd_popup_template" latin:popupCharacters="¿" /> <Key - latin:codes="@integer/key_shift" - latin:keyLabel="@string/label_more_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" - latin:iconPreview="@drawable/sym_keyboard_feedback_shift" - latin:keyWidth="12.430%p" - latin:isModifier="true" - latin:isSticky="true" + latin:keyStyle="moreKeyStyle" + latin:keyLabelOption="alignRight" + latin:keyWidth="12.530%p" latin:keyEdgeFlags="right" /> </Row> <!-- This row is intentionally not marked as a bottom row --> @@ -186,11 +170,8 @@ <Key latin:keyLabel="\@" /> <Key - latin:codes="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" - latin:keyWidth="37.454%p" - latin:isModifier="true" /> + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="37.454%p" /> <Key latin:keyLabel=""" latin:popupKeyboard="@xml/kbd_popup_template" diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-xlarge/kbd_symbols_shift.xml index 603b36b4ee24e1f71ad7cd891fce795bc2f7a660..4742967326f91f8c8f0291a03c3151930f5adbaf 100644 --- a/java/res/xml-xlarge/kbd_symbols_shift.xml +++ b/java/res/xml-xlarge/kbd_symbols_shift.xml @@ -24,16 +24,16 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:keyHeight="@dimen/key_height" > + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> <!-- This row is intentionally not marked as a top row --> <Row latin:keyWidth="8.272%p" > <Key - latin:codes="@integer/key_tab" - latin:keyLabel="@string/label_tab_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" + latin:keyStyle="tabKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyWidth="7.949%p" - latin:isModifier="true" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="~" /> @@ -60,23 +60,17 @@ <Key latin:keyLabel="}" /> <Key - latin:codes="@integer/key_delete" - latin:keyIcon="@drawable/sym_keyboard_delete" - latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyStyle="deleteKeyStyle" latin:keyWidth="9.331%p" - latin:isModifier="true" - latin:isRepeatable="true" latin:keyEdgeFlags="right" /> </Row> <Row latin:keyWidth="8.157%p" > <Key - latin:codes="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_alpha_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" + latin:keyStyle="toAlphaKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyWidth="11.167%p" - latin:isModifier="true" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="£" /> @@ -101,23 +95,17 @@ <Key latin:keyLabel="]" /> <Key - latin:codes="@integer/key_return" - latin:keyLabel="@string/label_return_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" + latin:keyStyle="returnKeyStyle" latin:keyWidth="15.750%p" - latin:isModifier="true" latin:keyEdgeFlags="right" /> </Row> <Row latin:keyWidth="8.042%p" > <Key - latin:codes="@integer/key_shift" - latin:keyLabel="@string/label_more_key" - latin:keyLabelOption="fontNormal|alignLeft|alignBottom" + latin:keyStyle="moreKeyStyle" + latin:keyLabelOption="alignLeft" latin:keyWidth="15.192%p" - latin:isModifier="true" - latin:isSticky="true" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="©" /> @@ -142,12 +130,9 @@ <Key latin:keyLabel="¿" /> <Key - latin:codes="@integer/key_shift" - latin:keyLabel="@string/label_more_key" - latin:keyLabelOption="fontNormal|alignRight|alignBottom" - latin:keyWidth="12.430%p" - latin:isModifier="true" - latin:isSticky="true" + latin:keyStyle="moreKeyStyle" + latin:keyLabelOption="alignRight" + latin:keyWidth="12.530%p" latin:keyEdgeFlags="right" /> </Row> <!-- This row is intentionally not marked as a bottom row --> @@ -157,10 +142,7 @@ <Spacer latin:horizontalGap="32.488%p" /> <Key - latin:codes="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" - latin:keyWidth="37.454%p" - latin:isModifier="true" /> + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="37.454%p" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml index b80bb9ff4f20cb114e7e29ce083182bf4b9bbacb..9dd166a411b52e358ff2199c03e3f562b5e92b27 100644 --- a/java/res/xml/kbd_key_styles.xml +++ b/java/res/xml/kbd_key_styles.xml @@ -33,6 +33,7 @@ latin:styleName="shiftKeyStyle" latin:codes="@integer/key_shift" latin:keyIcon="@drawable/sym_keyboard_shift" + latin:shiftedIcon="@drawable/sym_keyboard_shift_locked" latin:iconPreview="@drawable/sym_keyboard_feedback_shift" latin:parentStyle="functionalKeyStyle" latin:isSticky="true" /> @@ -109,6 +110,7 @@ latin:styleName="shiftKeyStyle" latin:codes="@integer/key_shift" latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked" latin:iconPreview="@drawable/sym_keyboard_feedback_shift" latin:parentStyle="functionalKeyStyle" latin:isSticky="true" /> diff --git a/java/res/xml/kbd_numkey_styles.xml b/java/res/xml/kbd_numkey_styles.xml new file mode 100644 index 0000000000000000000000000000000000000000..006476db27d3809914c468eadda51a564ddc7ff9 --- /dev/null +++ b/java/res/xml/kbd_numkey_styles.xml @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <switch> + <case + latin:colorScheme="white" + > + <key-style + latin:styleName="num0KeyStyle" + latin:codes="48" + latin:keyIcon="@drawable/sym_keyboard_num0" /> + <key-style + latin:styleName="num1KeyStyle" + latin:codes="49" + latin:keyIcon="@drawable/sym_keyboard_num1" /> + <key-style + latin:styleName="num2KeyStyle" + latin:codes="50" + latin:keyIcon="@drawable/sym_keyboard_num2" /> + <key-style + latin:styleName="num3KeyStyle" + latin:codes="51" + latin:keyIcon="@drawable/sym_keyboard_num3" /> + <key-style + latin:styleName="num4KeyStyle" + latin:codes="52" + latin:keyIcon="@drawable/sym_keyboard_num4" /> + <key-style + latin:styleName="num5KeyStyle" + latin:codes="53" + latin:keyIcon="@drawable/sym_keyboard_num5" /> + <key-style + latin:styleName="num6KeyStyle" + latin:codes="54" + latin:keyIcon="@drawable/sym_keyboard_num6" /> + <key-style + latin:styleName="num7KeyStyle" + latin:codes="55" + latin:keyIcon="@drawable/sym_keyboard_num7" /> + <key-style + latin:styleName="num8KeyStyle" + latin:codes="56" + latin:keyIcon="@drawable/sym_keyboard_num8" /> + <key-style + latin:styleName="num9KeyStyle" + latin:codes="57" + latin:keyIcon="@drawable/sym_keyboard_num9" /> + <key-style + latin:styleName="numStarKeyStyle" + latin:codes="42" + latin:keyIcon="@drawable/sym_keyboard_numstar" /> + <key-style + latin:styleName="numPoundKeyStyle" + latin:codes="35" + latin:keyIcon="@drawable/sym_keyboard_numpound" /> + <key-style + latin:styleName="numAltKeyStyle" + latin:codes="@integer/key_switch_alpha_symbol" + latin:keyIcon="@drawable/sym_keyboard_numalt" + latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> + <key-style + latin:styleName="numSpaceKeyStyle" + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> + </case> + <case + latin:colorScheme="black" + > + <key-style + latin:styleName="num0KeyStyle" + latin:codes="48" + latin:keyIcon="@drawable/sym_bkeyboard_num0" /> + <key-style + latin:styleName="num1KeyStyle" + latin:codes="49" + latin:keyIcon="@drawable/sym_bkeyboard_num1" /> + <key-style + latin:styleName="num2KeyStyle" + latin:codes="50" + latin:keyIcon="@drawable/sym_bkeyboard_num2" /> + <key-style + latin:styleName="num3KeyStyle" + latin:codes="51" + latin:keyIcon="@drawable/sym_bkeyboard_num3" /> + <key-style + latin:styleName="num4KeyStyle" + latin:codes="52" + latin:keyIcon="@drawable/sym_bkeyboard_num4" /> + <key-style + latin:styleName="num5KeyStyle" + latin:codes="53" + latin:keyIcon="@drawable/sym_bkeyboard_num5" /> + <key-style + latin:styleName="num6KeyStyle" + latin:codes="54" + latin:keyIcon="@drawable/sym_bkeyboard_num6" /> + <key-style + latin:styleName="num7KeyStyle" + latin:codes="55" + latin:keyIcon="@drawable/sym_bkeyboard_num7" /> + <key-style + latin:styleName="num8KeyStyle" + latin:codes="56" + latin:keyIcon="@drawable/sym_bkeyboard_num8" /> + <key-style + latin:styleName="num9KeyStyle" + latin:codes="57" + latin:keyIcon="@drawable/sym_bkeyboard_num9" /> + <key-style + latin:styleName="numStarKeyStyle" + latin:codes="42" + latin:keyIcon="@drawable/sym_bkeyboard_numstar" /> + <key-style + latin:styleName="numPoundKeyStyle" + latin:codes="35" + latin:keyIcon="@drawable/sym_bkeyboard_numpound" /> + <key-style + latin:styleName="numAltKeyStyle" + latin:codes="@integer/key_switch_alpha_symbol" + latin:keyIcon="@drawable/sym_bkeyboard_numalt" + latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> + <key-style + latin:styleName="numSpaceKeyStyle" + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> + </case> + </switch> +</merge> diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml index c9b1ad631484fe8e21637f3c19294d4fb6fde498..7e146ed69db14baddce5d53d6adcb3017c8b715e 100644 --- a/java/res/xml/kbd_phone.xml +++ b/java/res/xml/kbd_phone.xml @@ -27,116 +27,8 @@ > <include latin:keyboardLayout="@xml/kbd_key_styles" /> - <switch> - <case - latin:colorScheme="white" - > - <key-style - latin:styleName="num0KeyStyle" - latin:codes="48" - latin:keyIcon="@drawable/sym_keyboard_num0" /> - <key-style - latin:styleName="num1KeyStyle" - latin:codes="49" - latin:keyIcon="@drawable/sym_keyboard_num1" /> - <key-style - latin:styleName="num2KeyStyle" - latin:codes="50" - latin:keyIcon="@drawable/sym_keyboard_num2" /> - <key-style - latin:styleName="num3KeyStyle" - latin:codes="51" - latin:keyIcon="@drawable/sym_keyboard_num3" /> - <key-style - latin:styleName="num4KeyStyle" - latin:codes="52" - latin:keyIcon="@drawable/sym_keyboard_num4" /> - <key-style - latin:styleName="num5KeyStyle" - latin:codes="53" - latin:keyIcon="@drawable/sym_keyboard_num5" /> - <key-style - latin:styleName="num6KeyStyle" - latin:codes="54" - latin:keyIcon="@drawable/sym_keyboard_num6" /> - <key-style - latin:styleName="num7KeyStyle" - latin:codes="55" - latin:keyIcon="@drawable/sym_keyboard_num7" /> - <key-style - latin:styleName="num8KeyStyle" - latin:codes="56" - latin:keyIcon="@drawable/sym_keyboard_num8" /> - <key-style - latin:styleName="num9KeyStyle" - latin:codes="57" - latin:keyIcon="@drawable/sym_keyboard_num9" /> - <key-style - latin:styleName="numAltKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" - latin:keyIcon="@drawable/sym_keyboard_numalt" - latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> - <key-style - latin:styleName="numSpaceKeyStyle" - latin:codes="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - </case> - <case - latin:colorScheme="black" - > - <key-style - latin:styleName="num0KeyStyle" - latin:codes="48" - latin:keyIcon="@drawable/sym_bkeyboard_num0" /> - <key-style - latin:styleName="num1KeyStyle" - latin:codes="49" - latin:keyIcon="@drawable/sym_bkeyboard_num1" /> - <key-style - latin:styleName="num2KeyStyle" - latin:codes="50" - latin:keyIcon="@drawable/sym_bkeyboard_num2" /> - <key-style - latin:styleName="num3KeyStyle" - latin:codes="51" - latin:keyIcon="@drawable/sym_bkeyboard_num3" /> - <key-style - latin:styleName="num4KeyStyle" - latin:codes="52" - latin:keyIcon="@drawable/sym_bkeyboard_num4" /> - <key-style - latin:styleName="num5KeyStyle" - latin:codes="53" - latin:keyIcon="@drawable/sym_bkeyboard_num5" /> - <key-style - latin:styleName="num6KeyStyle" - latin:codes="54" - latin:keyIcon="@drawable/sym_bkeyboard_num6" /> - <key-style - latin:styleName="num7KeyStyle" - latin:codes="55" - latin:keyIcon="@drawable/sym_bkeyboard_num7" /> - <key-style - latin:styleName="num8KeyStyle" - latin:codes="56" - latin:keyIcon="@drawable/sym_bkeyboard_num8" /> - <key-style - latin:styleName="num9KeyStyle" - latin:codes="57" - latin:keyIcon="@drawable/sym_bkeyboard_num9" /> - <key-style - latin:styleName="numAltKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" - latin:keyIcon="@drawable/sym_bkeyboard_numalt" - latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> - <key-style - latin:styleName="numSpaceKeyStyle" - latin:codes="@integer/key_space" - latin:keyIcon="@drawable/sym_bkeyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - </case> - </switch> + <include + latin:keyboardLayout="@xml/kbd_numkey_styles" /> <Row latin:rowEdgeFlags="top" > diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml index 0d6d0e40710eaeb695b2b3613fad25b082b85b47..1bb4bac74a1206eab9007463b22314a6a0c107c7 100644 --- a/java/res/xml/kbd_phone_symbols.xml +++ b/java/res/xml/kbd_phone_symbols.xml @@ -27,44 +27,8 @@ > <include latin:keyboardLayout="@xml/kbd_key_styles" /> - <switch> - <case - latin:colorScheme="white" - > - <key-style - latin:styleName="numStarKeyStyle" - latin:codes="42" - latin:keyIcon="@drawable/sym_keyboard_numstar" - latin:keyEdgeFlags="left" /> - <key-style - latin:styleName="numPoundKeyStyle" - latin:codes="35" - latin:keyIcon="@drawable/sym_keyboard_numpound" /> - <key-style - latin:styleName="numSpaceKeyStyle" - latin:codes="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - </case> - <case - latin:colorScheme="black" - > - <key-style - latin:styleName="numStarKeyStyle" - latin:codes="42" - latin:keyIcon="@drawable/sym_bkeyboard_numstar" - latin:keyEdgeFlags="left" /> - <key-style - latin:styleName="numPoundKeyStyle" - latin:codes="35" - latin:keyIcon="@drawable/sym_bkeyboard_numpound" /> - <key-style - latin:styleName="numSpaceKeyStyle" - latin:codes="@integer/key_space" - latin:keyIcon="@drawable/sym_bkeyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - </case> - </switch> + <include + latin:keyboardLayout="@xml/kbd_numkey_styles" /> <Row latin:rowEdgeFlags="top" > diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboard.java b/java/src/com/android/inputmethod/latin/BaseKeyboard.java index 485cc3153f001ae00b2e0c763b547b5fc0b6cb99..00ed453c4e843892e5808d958db8efabbc4def2d 100644 --- a/java/src/com/android/inputmethod/latin/BaseKeyboard.java +++ b/java/src/com/android/inputmethod/latin/BaseKeyboard.java @@ -28,11 +28,14 @@ import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.graphics.drawable.Drawable; import android.text.TextUtils; +import android.util.Log; import android.util.Xml; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard @@ -86,6 +89,9 @@ public class BaseKeyboard { /** List of shift keys in this keyboard */ private final List<Key> mShiftKeys = new ArrayList<Key>(); + /** List of shift keys and its shifted state icon */ + private final HashMap<Key, Drawable> mShiftedIcons = new HashMap<Key, Drawable>(); + /** Total height of the keyboard, including the padding and keys */ private int mTotalHeight; @@ -340,6 +346,10 @@ public class BaseKeyboard { manualTemporaryUpperCaseCode = style.getInt(a, R.styleable.BaseKeyboard_Key_manualTemporaryUpperCaseCode, 0); text = style.getText(a, R.styleable.BaseKeyboard_Key_keyOutputText); + final Drawable shiftedIcon = style.getDrawable(a, + R.styleable.BaseKeyboard_Key_shiftedIcon); + if (shiftedIcon != null) + keyboard.getShiftedIcons().put(this, shiftedIcon); if (codes == null && !TextUtils.isEmpty(label)) { codes = new int[] { label.charAt(0) }; @@ -622,6 +632,10 @@ public class BaseKeyboard { return mShiftKeys; } + public Map<Key, Drawable> getShiftedIcons() { + return mShiftedIcons; + } + private void computeNearestNeighbors() { // Round-up so we don't have any pixels outside the grid mCellWidth = (getMinWidth() + GRID_WIDTH - 1) / GRID_WIDTH; @@ -686,8 +700,10 @@ public class BaseKeyboard { mTotalWidth = parser.getMaxRowWidth(); mTotalHeight = parser.getTotalHeight(); } catch (XmlPullParserException e) { + Log.w(TAG, "keyboard XML parse error: " + e); throw new IllegalArgumentException(e); } catch (IOException e) { + Log.w(TAG, "keyboard XML parse error: " + e); throw new RuntimeException(e); } } diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java b/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java index 621e875bff4ad170321800b0ac35ba10d808532a..38b2a1b57cec8b7f132b321ab2cfb109d468c3d3 100644 --- a/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java +++ b/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java @@ -174,6 +174,7 @@ public class BaseKeyboardParser { keyboard.setVerticalGap(getDimensionOrFraction(a, R.styleable.BaseKeyboard_verticalGap, height, 0)); a.recycle(); + if (DEBUG_TAG) Log.d(TAG, "id=" + keyboard.mId); } private void parseKeyboardContent(XmlResourceParser parser, List<Key> keys) @@ -310,6 +311,7 @@ public class BaseKeyboardParser { checkEndTag(TAG_INCLUDE, parser); if (keyboardLayout == 0) throw new ParseException("No keyboardLayout attribute in <include/>", parser); + if (DEBUG_TAG) Log.d(TAG, String.format(" keyboardLayout=0x%08x", keyboardLayout)); parseMerge(mResources.getLayout(keyboardLayout), row, keys); } } @@ -560,10 +562,10 @@ public class BaseKeyboardParser { } private static String debugInteger(TypedArray a, int index, String name) { - return a.hasValue(index) ? name + "=" + a.getInt(index, 0) : ""; + return a.hasValue(index) ? " " + name + "=" + a.getInt(index, 0) : ""; } private static String debugBoolean(TypedArray a, int index, String name) { - return a.hasValue(index) ? name + "=" + a.getBoolean(index, false) : ""; + return a.hasValue(index) ? " " + name + "=" + a.getBoolean(index, false) : ""; } } diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboardView.java b/java/src/com/android/inputmethod/latin/BaseKeyboardView.java index 129ff81a1ca0b571d3bda0b18cd48c44db02cb1c..954f264bdd8fb5c871a1e21956e8083ac92335b9 100644 --- a/java/src/com/android/inputmethod/latin/BaseKeyboardView.java +++ b/java/src/com/android/inputmethod/latin/BaseKeyboardView.java @@ -71,6 +71,7 @@ import java.util.WeakHashMap; public class BaseKeyboardView extends View implements PointerTracker.UIProxy { private static final String TAG = "BaseKeyboardView"; private static final boolean DEBUG = false; + private static final boolean DEBUG_SHOW_ALIGN = false; private static final boolean DEBUG_KEYBOARD_GRID = false; public static final int COLOR_SCHEME_WHITE = 0; @@ -252,17 +253,15 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { private final Rect mClipRegion = new Rect(0, 0, 0, 0); // This map caches key label text height in pixel as value and key label text size as map key. private final HashMap<Integer, Integer> mTextHeightCache = new HashMap<Integer, Integer>(); - // This map caches key label text width in pixel as value and key label text size as map key. - private final HashMap<Integer, Integer> mTextWidthCache = new HashMap<Integer, Integer>(); // Distance from horizontal center of the key, proportional to key label text height and width. private final float KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR_CENTER = 0.55f; private final float KEY_LABEL_VERTICAL_PADDING_FACTOR = 1.60f; - private final float KEY_LABEL_HORIZONTAL_PADDING_FACTOR = 0.80f; private final String KEY_LABEL_REFERENCE_CHAR = "H"; private final int KEY_LABEL_OPTION_ALIGN_LEFT = 1; private final int KEY_LABEL_OPTION_ALIGN_RIGHT = 2; private final int KEY_LABEL_OPTION_ALIGN_BOTTOM = 8; private final int KEY_LABEL_OPTION_FONT_NORMAL = 16; + private final int mKeyLabelHorizontalPadding; private final UIHandler mHandler = new UIHandler(); @@ -514,6 +513,8 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { mPreviewPopup.setAnimationStyle(R.style.KeyPreviewAnimation); mDelayBeforePreview = res.getInteger(R.integer.config_delay_before_preview); mDelayAfterPreview = res.getInteger(R.integer.config_delay_after_preview); + mKeyLabelHorizontalPadding = (int)res.getDimension( + R.dimen.key_label_horizontal_alignment_padding); mMiniKeyboardParent = this; mMiniKeyboardPopup = new PopupWindow(context); @@ -818,44 +819,22 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { canvas.translate(key.x + kbdPaddingLeft, key.y + kbdPaddingTop); keyBackground.draw(canvas); + final int rowHeight = padding.top + key.height; boolean drawHintIcon = true; // Draw key label if (label != null) { // For characters, use large font. For labels like "Done", use small font. - final int labelSize; - if (label.length() > 1 && key.codes.length < 2) { - labelSize = mLabelTextSize; - if ((key.labelOption & KEY_LABEL_OPTION_FONT_NORMAL) != 0) { - paint.setTypeface(Typeface.DEFAULT); - } else { - paint.setTypeface(Typeface.DEFAULT_BOLD); - } - } else { - labelSize = mKeyTextSize; - paint.setTypeface(mKeyTextStyle); - } - paint.setTextSize(labelSize); - - Integer labelHeightValue = mTextHeightCache.get(labelSize); - final int labelCharHeight; - final int labelCharWidth; - if (labelHeightValue != null) { - labelCharHeight = labelHeightValue; - labelCharWidth = mTextWidthCache.get(labelSize); - } else { - Rect textBounds = new Rect(); - paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, textBounds); - labelCharHeight = textBounds.height(); - labelCharWidth = textBounds.width(); - mTextHeightCache.put(labelSize, labelCharHeight); - mTextWidthCache.put(labelSize, labelCharWidth); - } + final int labelSize = getLabelSizeAndSetPaint(label, key, paint); + final int labelCharHeight = getLabelCharHeight(labelSize, paint); // Vertical label text alignment. final float baseline; if ((key.labelOption & KEY_LABEL_OPTION_ALIGN_BOTTOM) != 0) { baseline = key.height - + labelCharHeight * KEY_LABEL_VERTICAL_PADDING_FACTOR; + if (DEBUG_SHOW_ALIGN) + drawHorizontalLine(canvas, (int)baseline, key.width, 0xc0008000, + new Paint()); } else { // Align center final float centerY = (key.height + padding.top - padding.bottom) / 2; baseline = centerY @@ -864,16 +843,20 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { // Horizontal label text alignment final int positionX; if ((key.labelOption & KEY_LABEL_OPTION_ALIGN_LEFT) != 0) { - positionX = (int)( - labelCharWidth * KEY_LABEL_HORIZONTAL_PADDING_FACTOR + padding.left); + positionX = mKeyLabelHorizontalPadding + padding.left; paint.setTextAlign(Align.LEFT); + if (DEBUG_SHOW_ALIGN) + drawVerticalLine(canvas, positionX, rowHeight, 0xc0800080, new Paint()); } else if ((key.labelOption & KEY_LABEL_OPTION_ALIGN_RIGHT) != 0) { - positionX = (int)(key.width - - labelCharWidth * KEY_LABEL_HORIZONTAL_PADDING_FACTOR - padding.right); + positionX = key.width - mKeyLabelHorizontalPadding - padding.right; paint.setTextAlign(Align.RIGHT); + if (DEBUG_SHOW_ALIGN) + drawVerticalLine(canvas, positionX, rowHeight, 0xc0808000, new Paint()); } else { positionX = (key.width + padding.left - padding.right) / 2; paint.setTextAlign(Align.CENTER); + if (DEBUG_SHOW_ALIGN && label.length() > 1) + drawVerticalLine(canvas, positionX, rowHeight, 0xc0008080, new Paint()); } // Set a drop shadow for the text paint.setShadowLayer(mShadowRadius, 0, 0, mShadowColor); @@ -883,21 +866,44 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { } // Draw key icon if (key.label == null && key.icon != null) { - int drawableWidth = key.icon.getIntrinsicWidth(); - int drawableHeight = key.icon.getIntrinsicHeight(); - int drawableX = (key.width + padding.left - padding.right - drawableWidth) / 2; - int drawableY = (key.height + padding.top - padding.bottom - drawableHeight) / 2; + final int drawableWidth = key.icon.getIntrinsicWidth(); + final int drawableHeight = key.icon.getIntrinsicHeight(); + final int drawableX; + final int drawableY = ( + key.height + padding.top - padding.bottom - drawableHeight) / 2; + if ((key.labelOption & KEY_LABEL_OPTION_ALIGN_LEFT) != 0) { + drawableX = padding.left + mKeyLabelHorizontalPadding; + if (DEBUG_SHOW_ALIGN) + drawVerticalLine(canvas, drawableX, rowHeight, 0xc0800080, new Paint()); + } else if ((key.labelOption & KEY_LABEL_OPTION_ALIGN_RIGHT) != 0) { + drawableX = key.width - padding.right - mKeyLabelHorizontalPadding + - drawableWidth; + if (DEBUG_SHOW_ALIGN) + drawVerticalLine(canvas, drawableX + drawableWidth, rowHeight, + 0xc0808000, new Paint()); + } else { // Align center + drawableX = (key.width + padding.left - padding.right - drawableWidth) / 2; + if (DEBUG_SHOW_ALIGN) + drawVerticalLine(canvas, drawableX + drawableWidth / 2, rowHeight, + 0xc0008080, new Paint()); + } drawIcon(canvas, key.icon, drawableX, drawableY, drawableWidth, drawableHeight); + if (DEBUG_SHOW_ALIGN) + drawRectangle(canvas, drawableX, drawableY, drawableWidth, drawableHeight, + 0x80c00000, new Paint()); } if (key.hintIcon != null && drawHintIcon) { - int drawableWidth = key.width; - int drawableHeight = key.height; - int drawableX = 0; - int drawableY = HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL; + final int drawableWidth = key.width; + final int drawableHeight = key.height; + final int drawableX = 0; + final int drawableY = HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL; Drawable icon = (isManualTemporaryUpperCase && key.manualTemporaryUpperCaseHintIcon != null) ? key.manualTemporaryUpperCaseHintIcon : key.hintIcon; drawIcon(canvas, icon, drawableX, drawableY, drawableWidth, drawableHeight); + if (DEBUG_SHOW_ALIGN) + drawRectangle(canvas, drawableX, drawableY, drawableWidth, drawableHeight, + 0x80c0c000, new Paint()); } canvas.translate(-key.x - kbdPaddingLeft, -key.y - kbdPaddingTop); } @@ -945,13 +951,70 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { mDirtyRect.setEmpty(); } - private void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width, int height) { + private int getLabelSizeAndSetPaint(CharSequence label, Key key, Paint paint) { + // For characters, use large font. For labels like "Done", use small font. + final int labelSize; + if (label.length() > 1 && key.codes.length < 2) { + labelSize = mLabelTextSize; + if ((key.labelOption & KEY_LABEL_OPTION_FONT_NORMAL) != 0) { + paint.setTypeface(Typeface.DEFAULT); + } else { + paint.setTypeface(Typeface.DEFAULT_BOLD); + } + } else { + labelSize = mKeyTextSize; + paint.setTypeface(mKeyTextStyle); + } + paint.setTextSize(labelSize); + return labelSize; + } + + private int getLabelCharHeight(int labelSize, Paint paint) { + Integer labelHeightValue = mTextHeightCache.get(labelSize); + final int labelCharHeight; + if (labelHeightValue != null) { + labelCharHeight = labelHeightValue; + } else { + Rect textBounds = new Rect(); + paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, textBounds); + labelCharHeight = textBounds.height(); + mTextHeightCache.put(labelSize, labelCharHeight); + } + return labelCharHeight; + } + + private static void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width, + int height) { canvas.translate(x, y); icon.setBounds(0, 0, width, height); icon.draw(canvas); canvas.translate(-x, -y); } + private static void drawHorizontalLine(Canvas canvas, int y, int w, int color, Paint paint) { + paint.setStyle(Paint.Style.STROKE); + paint.setStrokeWidth(1.0f); + paint.setColor(color); + canvas.drawLine(0, y, w, y, paint); + } + + private static void drawVerticalLine(Canvas canvas, int x, int h, int color, Paint paint) { + paint.setStyle(Paint.Style.STROKE); + paint.setStrokeWidth(1.0f); + paint.setColor(color); + canvas.drawLine(x, 0, x, h, paint); + } + + private static void drawRectangle(Canvas canvas, int x, int y, int w, int h, int color, + Paint paint) { + paint.setStyle(Paint.Style.STROKE); + paint.setStrokeWidth(1.0f); + paint.setColor(color); + canvas.translate(x, y); + canvas.drawRect(0, 0, w, h, paint); + canvas.translate(-x, -y); + } + public void setForeground(boolean foreground) { mInForeground = foreground; } diff --git a/java/src/com/android/inputmethod/latin/KeyStyles.java b/java/src/com/android/inputmethod/latin/KeyStyles.java index e53e351a3c3c609d190bb8dbb8bc3ba13ccbd4fc..fceede7c3dc8d49a2d18900e1a146cae7edba509 100644 --- a/java/src/com/android/inputmethod/latin/KeyStyles.java +++ b/java/src/com/android/inputmethod/latin/KeyStyles.java @@ -104,7 +104,7 @@ public class KeyStyles { try { values[count++] = Integer.parseInt(st.nextToken()); } catch (NumberFormatException nfe) { - Log.e(TAG, "Error parsing integer CSV " + value); + Log.w(TAG, "Error parsing integer CSV " + value); } } return values; @@ -163,6 +163,7 @@ public class KeyStyles { readDrawable(a, R.styleable.BaseKeyboard_Key_keyIcon); readDrawable(a, R.styleable.BaseKeyboard_Key_iconPreview); readDrawable(a, R.styleable.BaseKeyboard_Key_keyHintIcon); + readDrawable(a, R.styleable.BaseKeyboard_Key_shiftedIcon); readResourceId(a, R.styleable.BaseKeyboard_Key_popupKeyboard); readBoolean(a, R.styleable.BaseKeyboard_Key_isModifier); readBoolean(a, R.styleable.BaseKeyboard_Key_isSticky); diff --git a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java index 58958b6108f1967f21d9055465d87b185fcccef9..b08b97a810c249534f3cfe0e85bcd13c5cb7d14b 100644 --- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java @@ -691,9 +691,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha ).inflate(THEMES[newLayout], null); tryGC = false; } catch (OutOfMemoryError e) { + Log.w(TAG, "load keyboard failed: " + e); tryGC = LatinIMEUtil.GCUtils.getInstance().tryGCOrWait( mLayoutId + "," + newLayout, e); } catch (InflateException e) { + Log.w(TAG, "load keyboard failed: " + e); tryGC = LatinIMEUtil.GCUtils.getInstance().tryGCOrWait( mLayoutId + "," + newLayout, e); } diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboard.java b/java/src/com/android/inputmethod/latin/LatinKeyboard.java index c6e9116804da7b59b832eced4eff1119d1fbc01c..cae0b10b3e508491bf98be25057ff31d81558a81 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboard.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboard.java @@ -37,6 +37,7 @@ import android.view.ViewConfiguration; import java.util.HashMap; import java.util.List; import java.util.Locale; +import java.util.Map; public class LatinKeyboard extends BaseKeyboard { @@ -45,7 +46,6 @@ public class LatinKeyboard extends BaseKeyboard { private static final int OPACITY_FULLY_OPAQUE = 255; private static final int SPACE_LED_LENGTH_PERCENT = 80; - private final Drawable mShiftedIcon; private Drawable mShiftLockPreviewIcon; private final HashMap<Key, Drawable> mNormalShiftIcons = new HashMap<Key, Drawable>(); private Drawable mSpaceIcon; @@ -89,11 +89,9 @@ public class LatinKeyboard extends BaseKeyboard { mContext = context; mRes = res; if (id.mColorScheme == BaseKeyboardView.COLOR_SCHEME_BLACK) { - mShiftedIcon = res.getDrawable(R.drawable.sym_bkeyboard_shift_locked); mSpaceBarTextShadowColor = res.getColor( R.color.latinkeyboard_bar_language_shadow_black); } else { // default color scheme is BaseKeyboardView.COLOR_SCHEME_WHITE - mShiftedIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked); mSpaceBarTextShadowColor = res.getColor( R.color.latinkeyboard_bar_language_shadow_white); } @@ -132,9 +130,10 @@ public class LatinKeyboard extends BaseKeyboard { } public boolean setShiftLocked(boolean newShiftLockState) { + final Map<Key, Drawable> shiftedIcons = getShiftedIcons(); for (final Key key : getShiftKeys()) { key.on = newShiftLockState; - key.icon = newShiftLockState ? mShiftedIcon : mNormalShiftIcons.get(key); + key.icon = newShiftLockState ? shiftedIcons.get(key) : mNormalShiftIcons.get(key); } mShiftState.setShiftLocked(newShiftLockState); return true; @@ -149,11 +148,12 @@ public class LatinKeyboard extends BaseKeyboard { if (getShiftKeys().size() == 0) return super.setShifted(newShiftState); + final Map<Key, Drawable> shiftedIcons = getShiftedIcons(); for (final Key key : getShiftKeys()) { if (!newShiftState && !mShiftState.isShiftLocked()) { key.icon = mNormalShiftIcons.get(key); } else if (newShiftState && !mShiftState.isShiftedOrShiftLocked()) { - key.icon = mShiftedIcon; + key.icon = shiftedIcons.get(key); } } return mShiftState.setShifted(newShiftState);