diff options
992 files changed, 11072 insertions, 4707 deletions
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml index 2fbf4c2be..cb0a9a2e1 100644 --- a/java/AndroidManifest.xml +++ b/java/AndroidManifest.xml @@ -41,5 +41,11 @@ <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> + + <receiver android:name="SuggestionSpanPickedNotificationReceiver" android:enabled="true"> + <intent-filter> + <action android:name="android.text.style.SUGGESTION_PICKED" /> + </intent-filter> + </receiver> </application> </manifest> diff --git a/java/proguard.flags b/java/proguard.flags index 914bd7595..9094be401 100644 --- a/java/proguard.flags +++ b/java/proguard.flags @@ -22,3 +22,7 @@ -keep class com.android.inputmethod.latin.Utils { boolean equalsIgnoreCase(...); } + +-keep class com.android.inputmethod.latin.spellcheck.SpellChecker { + *; +} diff --git a/java/res/drawable-hdpi/btn_center_default.9.png b/java/res/drawable-hdpi/btn_center_default.9.png Binary files differnew file mode 100644 index 000000000..4f5f01cb8 --- /dev/null +++ b/java/res/drawable-hdpi/btn_center_default.9.png diff --git a/java/res/drawable-hdpi/btn_center_pressed.9.png b/java/res/drawable-hdpi/btn_center_pressed.9.png Binary files differnew file mode 100644 index 000000000..213b482d4 --- /dev/null +++ b/java/res/drawable-hdpi/btn_center_pressed.9.png diff --git a/java/res/drawable-hdpi/btn_center_selected.9.png b/java/res/drawable-hdpi/btn_center_selected.9.png Binary files differnew file mode 100644 index 000000000..213b482d4 --- /dev/null +++ b/java/res/drawable-hdpi/btn_center_selected.9.png diff --git a/java/res/drawable-hdpi/btn_close_candidates_pane.9.png b/java/res/drawable-hdpi/btn_close_candidates_pane.9.png Binary files differnew file mode 100644 index 000000000..bdd949577 --- /dev/null +++ b/java/res/drawable-hdpi/btn_close_candidates_pane.9.png diff --git a/java/res/drawable-hdpi/btn_expand_candidates_pane.9.png b/java/res/drawable-hdpi/btn_expand_candidates_pane.9.png Binary files differnew file mode 100644 index 000000000..63015ec5b --- /dev/null +++ b/java/res/drawable-hdpi/btn_expand_candidates_pane.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png Binary files differindex 01fc8ca78..50cc49fdb 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png 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 Binary files differindex a8c1688f7..2dc1bed5d 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png Binary files differindex af4017e2c..dabf77ec6 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png 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 Binary files differindex 829647663..575781f07 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png Binary files differindex 4c35aca95..6e7d74c88 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png 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 Binary files differindex 020a65d6e..6c5b42e5c 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png Binary files differindex 174f3452c..ddb77c224 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png 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 Binary files differindex 88b27c07b..8c999f655 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png Binary files differindex 1fcbd9a88..1e9227e1c 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png 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 Binary files differindex 87497bc1f..8c7c2f3bc 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png Binary files differindex 072753f37..7207b2ece 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png 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 Binary files differindex f0d76dfa2..02497b472 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png Binary files differindex b6c234c04..a524168c9 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png Binary files differindex 73a8cd1c3..4395e978a 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png Binary files differindex 1ad746053..9d85c7b74 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png 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 Binary files differindex 3115fa436..a13b2003f 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png Binary files differindex e3a77d61b..2ed1b3447 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png Binary files differindex 431c44967..77e17dbae 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png Binary files differindex ccd59d5fa..a409639e7 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png 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 Binary files differindex dc08102a7..0b76855e6 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png Binary files differindex 42c7c146d..6ec7e6592 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png Binary files differindex 01e2506b0..995780cbf 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png Binary files differindex fad0ec458..1388b6694 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png Binary files differindex 83c6eb3fc..7215782eb 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png Binary files differindex 215f8157c..5a94cb6ac 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png Binary files differindex 88acdd748..c6373a8af 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png Binary files differnew file mode 100644 index 000000000..0b2758925 --- /dev/null +++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png 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 Binary files differindex 5ecdaf428..166de2a03 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png Binary files differindex e047eaff1..0bd49a0e7 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png Binary files differindex 218a2d29e..634419f1b 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png Binary files differindex afe49512e..8474f9f42 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png diff --git a/java/res/drawable-hdpi/cancel.png b/java/res/drawable-hdpi/cancel.png Binary files differdeleted file mode 100644 index 506cf99d0..000000000 --- a/java/res/drawable-hdpi/cancel.png +++ /dev/null diff --git a/java/res/drawable-hdpi/cancel_holo.9.png b/java/res/drawable-hdpi/cancel_holo.9.png Binary files differdeleted file mode 100644 index 33548d606..000000000 --- a/java/res/drawable-hdpi/cancel_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/candidate_feedback_background.9.png b/java/res/drawable-hdpi/candidate_feedback_background.9.png Binary files differindex 203c4e640..16499002e 100644 --- a/java/res/drawable-hdpi/candidate_feedback_background.9.png +++ b/java/res/drawable-hdpi/candidate_feedback_background.9.png diff --git a/java/res/drawable-hdpi/caution.png b/java/res/drawable-hdpi/caution.png Binary files differindex 5cb6c54b9..61eb4dd62 100644 --- a/java/res/drawable-hdpi/caution.png +++ b/java/res/drawable-hdpi/caution.png diff --git a/java/res/drawable-hdpi/dialog_bubble_step02.9.png b/java/res/drawable-hdpi/dialog_bubble_step02.9.png Binary files differdeleted file mode 100644 index b338364c5..000000000 --- a/java/res/drawable-hdpi/dialog_bubble_step02.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/dialog_bubble_step07.9.png b/java/res/drawable-hdpi/dialog_bubble_step07.9.png Binary files differdeleted file mode 100644 index 94b915432..000000000 --- a/java/res/drawable-hdpi/dialog_bubble_step07.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/hint_popup.9.png b/java/res/drawable-hdpi/hint_popup.9.png Binary files differindex b5ec003e6..5b2ad5388 100644 --- a/java/res/drawable-hdpi/hint_popup.9.png +++ b/java/res/drawable-hdpi/hint_popup.9.png diff --git a/java/res/drawable-hdpi/hint_popup_holo.9.png b/java/res/drawable-hdpi/hint_popup_holo.9.png Binary files differindex 2ffc6ea2b..c44af8883 100644 --- a/java/res/drawable-hdpi/hint_popup_holo.9.png +++ b/java/res/drawable-hdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-hdpi/ic_dialog_keyboard.png b/java/res/drawable-hdpi/ic_dialog_keyboard.png Binary files differindex c7729566c..305441633 100644 --- a/java/res/drawable-hdpi/ic_dialog_keyboard.png +++ b/java/res/drawable-hdpi/ic_dialog_keyboard.png diff --git a/java/res/drawable-hdpi/ic_mic_dialog.png b/java/res/drawable-hdpi/ic_mic_dialog.png Binary files differindex 349dc4b37..6107f876e 100644 --- a/java/res/drawable-hdpi/ic_mic_dialog.png +++ b/java/res/drawable-hdpi/ic_mic_dialog.png diff --git a/java/res/drawable-hdpi/ic_subtype_keyboard.png b/java/res/drawable-hdpi/ic_subtype_keyboard.png Binary files differindex 7015e266a..484305655 100644 --- a/java/res/drawable-hdpi/ic_subtype_keyboard.png +++ b/java/res/drawable-hdpi/ic_subtype_keyboard.png diff --git a/java/res/drawable-hdpi/ic_subtype_mic.png b/java/res/drawable-hdpi/ic_subtype_mic.png Binary files differindex cb86a5598..25c9ee2ab 100644 --- a/java/res/drawable-hdpi/ic_subtype_mic.png +++ b/java/res/drawable-hdpi/ic_subtype_mic.png diff --git a/java/res/drawable-hdpi/ic_suggest_strip_microphone.png b/java/res/drawable-hdpi/ic_suggest_strip_microphone.png Binary files differindex c00b4aaa6..189a861fb 100644 --- a/java/res/drawable-hdpi/ic_suggest_strip_microphone.png +++ b/java/res/drawable-hdpi/ic_suggest_strip_microphone.png diff --git a/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png Binary files differindex 256dc3d61..b4a6e373b 100644 --- a/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png +++ b/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png diff --git a/java/res/drawable-hdpi/key_hint_at_holo.9.png b/java/res/drawable-hdpi/key_hint_at_holo.9.png Binary files differdeleted file mode 100644 index 129e19853..000000000 --- a/java/res/drawable-hdpi/key_hint_at_holo.9.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index d90bc31ab..000000000 --- a/java/res/drawable-hdpi/key_hint_at_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_colon_holo.9.png b/java/res/drawable-hdpi/key_hint_colon_holo.9.png Binary files differdeleted file mode 100644 index e82e41c94..000000000 --- a/java/res/drawable-hdpi/key_hint_colon_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png Binary files differdeleted file mode 100644 index e46845dbd..000000000 --- a/java/res/drawable-hdpi/key_hint_colon_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_comma_holo.9.png b/java/res/drawable-hdpi/key_hint_comma_holo.9.png Binary files differdeleted file mode 100644 index da0d6fdd6..000000000 --- a/java/res/drawable-hdpi/key_hint_comma_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-hdpi/key_hint_comma_large_holo.9.png Binary files differdeleted file mode 100644 index 1f2f70762..000000000 --- a/java/res/drawable-hdpi/key_hint_comma_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_dash_holo.9.png b/java/res/drawable-hdpi/key_hint_dash_holo.9.png Binary files differdeleted file mode 100644 index a2b2fceeb..000000000 --- a/java/res/drawable-hdpi/key_hint_dash_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_doublecross_holo.9.png b/java/res/drawable-hdpi/key_hint_doublecross_holo.9.png Binary files differdeleted file mode 100644 index d5af9f8c7..000000000 --- a/java/res/drawable-hdpi/key_hint_doublecross_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_equal_holo.9.png b/java/res/drawable-hdpi/key_hint_equal_holo.9.png Binary files differdeleted file mode 100644 index 4acc3c3be..000000000 --- a/java/res/drawable-hdpi/key_hint_equal_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png Binary files differdeleted file mode 100644 index 8d99a27d2..000000000 --- a/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index e93e49187..000000000 --- a/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_larger_holo.9.png b/java/res/drawable-hdpi/key_hint_larger_holo.9.png Binary files differdeleted file mode 100644 index 10614d9fe..000000000 --- a/java/res/drawable-hdpi/key_hint_larger_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_minus_holo.9.png b/java/res/drawable-hdpi/key_hint_minus_holo.9.png Binary files differdeleted file mode 100644 index 2c34ef90b..000000000 --- a/java/res/drawable-hdpi/key_hint_minus_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_minus_large_holo.9.png b/java/res/drawable-hdpi/key_hint_minus_large_holo.9.png Binary files differdeleted file mode 100644 index 0df056ee1..000000000 --- a/java/res/drawable-hdpi/key_hint_minus_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_parenclose_holo.9.png b/java/res/drawable-hdpi/key_hint_parenclose_holo.9.png Binary files differdeleted file mode 100644 index 9096362e0..000000000 --- a/java/res/drawable-hdpi/key_hint_parenclose_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_parenopen_holo.9.png b/java/res/drawable-hdpi/key_hint_parenopen_holo.9.png Binary files differdeleted file mode 100644 index bb4cbd40d..000000000 --- a/java/res/drawable-hdpi/key_hint_parenopen_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_period_holo.9.png b/java/res/drawable-hdpi/key_hint_period_holo.9.png Binary files differdeleted file mode 100644 index 68f789b95..000000000 --- a/java/res/drawable-hdpi/key_hint_period_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_plus_holo.9.png b/java/res/drawable-hdpi/key_hint_plus_holo.9.png Binary files differdeleted file mode 100644 index 3dd85065a..000000000 --- a/java/res/drawable-hdpi/key_hint_plus_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png Binary files differdeleted file mode 100644 index b0d75f433..000000000 --- a/java/res/drawable-hdpi/key_hint_plus_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_question_holo.9.png b/java/res/drawable-hdpi/key_hint_question_holo.9.png Binary files differdeleted file mode 100644 index 4fe6a5b80..000000000 --- a/java/res/drawable-hdpi/key_hint_question_holo.9.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 44dfdc4ea..000000000 --- a/java/res/drawable-hdpi/key_hint_question_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_quote_holo.9.png b/java/res/drawable-hdpi/key_hint_quote_holo.9.png Binary files differdeleted file mode 100644 index 8308aa647..000000000 --- a/java/res/drawable-hdpi/key_hint_quote_holo.9.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index e73b9e0c6..000000000 --- a/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_semicolon_holo.9.png b/java/res/drawable-hdpi/key_hint_semicolon_holo.9.png Binary files differdeleted file mode 100644 index ac3de374c..000000000 --- a/java/res/drawable-hdpi/key_hint_semicolon_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_simplequote_holo.9.png b/java/res/drawable-hdpi/key_hint_simplequote_holo.9.png Binary files differdeleted file mode 100644 index 20d56c549..000000000 --- a/java/res/drawable-hdpi/key_hint_simplequote_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_slash_holo.9.png b/java/res/drawable-hdpi/key_hint_slash_holo.9.png Binary files differdeleted file mode 100644 index 3fe2c4271..000000000 --- a/java/res/drawable-hdpi/key_hint_slash_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_slash_large_holo.9.png b/java/res/drawable-hdpi/key_hint_slash_large_holo.9.png Binary files differdeleted file mode 100644 index 47e767557..000000000 --- a/java/res/drawable-hdpi/key_hint_slash_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_smaller_holo.9.png b/java/res/drawable-hdpi/key_hint_smaller_holo.9.png Binary files differdeleted file mode 100644 index 19a7d937e..000000000 --- a/java/res/drawable-hdpi/key_hint_smaller_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_star_holo.9.png b/java/res/drawable-hdpi/key_hint_star_holo.9.png Binary files differdeleted file mode 100644 index 4e4340d63..000000000 --- a/java/res/drawable-hdpi/key_hint_star_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_underline_holo.9.png b/java/res/drawable-hdpi/key_hint_underline_holo.9.png Binary files differdeleted file mode 100644 index e4f271918..000000000 --- a/java/res/drawable-hdpi/key_hint_underline_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png Binary files differdeleted file mode 100644 index dad34fc72..000000000 --- a/java/res/drawable-hdpi/key_hint_underline_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_underscore_holo.9.png b/java/res/drawable-hdpi/key_hint_underscore_holo.9.png Binary files differdeleted file mode 100644 index e4f271918..000000000 --- a/java/res/drawable-hdpi/key_hint_underscore_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/key_hint_underscore_large_holo.9.png b/java/res/drawable-hdpi/key_hint_underscore_large_holo.9.png Binary files differdeleted file mode 100644 index dad34fc72..000000000 --- a/java/res/drawable-hdpi/key_hint_underscore_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_background.9.png b/java/res/drawable-hdpi/keyboard_background.9.png Binary files differindex edffac5b8..d57463fb6 100644 --- a/java/res/drawable-hdpi/keyboard_background.9.png +++ b/java/res/drawable-hdpi/keyboard_background.9.png diff --git a/java/res/drawable-hdpi/keyboard_background_holo.9.png b/java/res/drawable-hdpi/keyboard_background_holo.9.png Binary files differindex 76fe2c8b8..39746ffd2 100644 --- a/java/res/drawable-hdpi/keyboard_background_holo.9.png +++ b/java/res/drawable-hdpi/keyboard_background_holo.9.png diff --git a/java/res/drawable-hdpi/keyboard_dark_background.9.png b/java/res/drawable-hdpi/keyboard_dark_background.9.png Binary files differindex f315cbdd4..fa3d449f7 100644 --- a/java/res/drawable-hdpi/keyboard_dark_background.9.png +++ b/java/res/drawable-hdpi/keyboard_dark_background.9.png diff --git a/java/res/drawable-hdpi/keyboard_hint_0.9.png b/java/res/drawable-hdpi/keyboard_hint_0.9.png Binary files differdeleted file mode 100644 index 271264e92..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_0.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_1.9.png b/java/res/drawable-hdpi/keyboard_hint_1.9.png Binary files differdeleted file mode 100644 index eaf374262..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_1.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_2.9.png b/java/res/drawable-hdpi/keyboard_hint_2.9.png Binary files differdeleted file mode 100644 index 8a1657117..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_2.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_3.9.png b/java/res/drawable-hdpi/keyboard_hint_3.9.png Binary files differdeleted file mode 100644 index 34b501109..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_3.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_4.9.png b/java/res/drawable-hdpi/keyboard_hint_4.9.png Binary files differdeleted file mode 100644 index d4cc250dd..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_4.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_5.9.png b/java/res/drawable-hdpi/keyboard_hint_5.9.png Binary files differdeleted file mode 100644 index 6a054b42f..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_5.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_6.9.png b/java/res/drawable-hdpi/keyboard_hint_6.9.png Binary files differdeleted file mode 100644 index 66e91400a..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_6.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_7.9.png b/java/res/drawable-hdpi/keyboard_hint_7.9.png Binary files differdeleted file mode 100644 index 5eae24f4f..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_7.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_8.9.png b/java/res/drawable-hdpi/keyboard_hint_8.9.png Binary files differdeleted file mode 100644 index ea7f512fd..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_8.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_9.9.png b/java/res/drawable-hdpi/keyboard_hint_9.9.png Binary files differdeleted file mode 100644 index 0bf85de93..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_9.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_at.9.png b/java/res/drawable-hdpi/keyboard_hint_at.9.png Binary files differdeleted file mode 100644 index 4b49c0dd9..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_at.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_colon.9.png b/java/res/drawable-hdpi/keyboard_hint_colon.9.png Binary files differdeleted file mode 100644 index a91dc47f1..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_colon.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_doublecross.9.png b/java/res/drawable-hdpi/keyboard_hint_doublecross.9.png Binary files differdeleted file mode 100644 index c0917c200..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_doublecross.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_exclamation.9.png b/java/res/drawable-hdpi/keyboard_hint_exclamation.9.png Binary files differdeleted file mode 100644 index 98c07d94a..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_exclamation.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_greater.9.png b/java/res/drawable-hdpi/keyboard_hint_greater.9.png Binary files differdeleted file mode 100644 index f2bf37dc2..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_greater.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_plus.9.png b/java/res/drawable-hdpi/keyboard_hint_plus.9.png Binary files differdeleted file mode 100644 index 586e9c158..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_plus.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_question.9.png b/java/res/drawable-hdpi/keyboard_hint_question.9.png Binary files differdeleted file mode 100644 index 6c7d4310a..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_question.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_quote.9.png b/java/res/drawable-hdpi/keyboard_hint_quote.9.png Binary files differdeleted file mode 100644 index 57f44e4a2..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_quote.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_smaller.9.png b/java/res/drawable-hdpi/keyboard_hint_smaller.9.png Binary files differdeleted file mode 100644 index 438b95ea8..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_smaller.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_hint_star.9.png b/java/res/drawable-hdpi/keyboard_hint_star.9.png Binary files differdeleted file mode 100644 index 33f8281b2..000000000 --- a/java/res/drawable-hdpi/keyboard_hint_star.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png Binary files differindex 762a25704..27d992375 100644 --- a/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png +++ b/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png 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 Binary files differindex 8d6acacfb..fd7a56e17 100644 --- a/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png +++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.png Binary files differnew file mode 100644 index 000000000..60d920315 --- /dev/null +++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.png diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png Binary files differnew file mode 100644 index 000000000..f694b796c --- /dev/null +++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png Binary files differindex 141d2d6be..33263b9d7 100644 --- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png +++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png Binary files differindex c21240f17..3165d08aa 100644 --- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png +++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png Binary files differnew file mode 100644 index 000000000..3136073a2 --- /dev/null +++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png Binary files differnew file mode 100644 index 000000000..13d5af9cb --- /dev/null +++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background.9.png Binary files differindex d6b2c7936..baff80950 100644 --- a/java/res/drawable-hdpi/keyboard_popup_panel_background.9.png +++ b/java/res/drawable-hdpi/keyboard_popup_panel_background.9.png diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip.9.png Binary files differindex 0ccdb6ab2..7cab5a899 100644 --- a/java/res/drawable-hdpi/keyboard_suggest_strip.9.png +++ b/java/res/drawable-hdpi/keyboard_suggest_strip.9.png diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png Binary files differindex 7ca3e6131..a62daf90c 100644 --- a/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png +++ b/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png Binary files differindex f55bcc933..f25003405 100644 --- a/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png +++ b/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png diff --git a/java/res/drawable-hdpi/mic_base.png b/java/res/drawable-hdpi/mic_base.png Binary files differnew file mode 100644 index 000000000..504a1aa2a --- /dev/null +++ b/java/res/drawable-hdpi/mic_base.png diff --git a/java/res/drawable-hdpi/mic_full.png b/java/res/drawable-hdpi/mic_full.png Binary files differnew file mode 100644 index 000000000..3f4a67657 --- /dev/null +++ b/java/res/drawable-hdpi/mic_full.png diff --git a/java/res/drawable-hdpi/mic_slash.png b/java/res/drawable-hdpi/mic_slash.png Binary files differindex dc8da6252..c3b10929b 100644 --- a/java/res/drawable-hdpi/mic_slash.png +++ b/java/res/drawable-hdpi/mic_slash.png diff --git a/java/res/drawable-hdpi/mic_slash_holo.png b/java/res/drawable-hdpi/mic_slash_holo.png Binary files differdeleted file mode 100644 index 27a05dec3..000000000 --- a/java/res/drawable-hdpi/mic_slash_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/ok_cancel.png b/java/res/drawable-hdpi/ok_cancel.png Binary files differdeleted file mode 100644 index f11e57a38..000000000 --- a/java/res/drawable-hdpi/ok_cancel.png +++ /dev/null diff --git a/java/res/drawable-hdpi/ok_cancel_holo.9.png b/java/res/drawable-hdpi/ok_cancel_holo.9.png Binary files differdeleted file mode 100644 index 5be81c35a..000000000 --- a/java/res/drawable-hdpi/ok_cancel_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level0.png b/java/res/drawable-hdpi/speak_now_level0.png Binary files differdeleted file mode 100644 index 342849cfe..000000000 --- a/java/res/drawable-hdpi/speak_now_level0.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level0_holo.png b/java/res/drawable-hdpi/speak_now_level0_holo.png Binary files differdeleted file mode 100644 index 29eef926b..000000000 --- a/java/res/drawable-hdpi/speak_now_level0_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level1.png b/java/res/drawable-hdpi/speak_now_level1.png Binary files differdeleted file mode 100644 index 8947a4306..000000000 --- a/java/res/drawable-hdpi/speak_now_level1.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level1_holo.png b/java/res/drawable-hdpi/speak_now_level1_holo.png Binary files differdeleted file mode 100644 index a76e990b7..000000000 --- a/java/res/drawable-hdpi/speak_now_level1_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level2.png b/java/res/drawable-hdpi/speak_now_level2.png Binary files differdeleted file mode 100644 index 44fc58c4e..000000000 --- a/java/res/drawable-hdpi/speak_now_level2.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level2_holo.png b/java/res/drawable-hdpi/speak_now_level2_holo.png Binary files differdeleted file mode 100644 index 8cd462d20..000000000 --- a/java/res/drawable-hdpi/speak_now_level2_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level3.png b/java/res/drawable-hdpi/speak_now_level3.png Binary files differdeleted file mode 100644 index cfa5c1b87..000000000 --- a/java/res/drawable-hdpi/speak_now_level3.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level3_holo.png b/java/res/drawable-hdpi/speak_now_level3_holo.png Binary files differdeleted file mode 100644 index b7371dc88..000000000 --- a/java/res/drawable-hdpi/speak_now_level3_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level4.png b/java/res/drawable-hdpi/speak_now_level4.png Binary files differdeleted file mode 100644 index a050d8836..000000000 --- a/java/res/drawable-hdpi/speak_now_level4.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level4_holo.png b/java/res/drawable-hdpi/speak_now_level4_holo.png Binary files differdeleted file mode 100644 index 74befc8c3..000000000 --- a/java/res/drawable-hdpi/speak_now_level4_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level5.png b/java/res/drawable-hdpi/speak_now_level5.png Binary files differdeleted file mode 100644 index 8cd5ae7ad..000000000 --- a/java/res/drawable-hdpi/speak_now_level5.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level5_holo.png b/java/res/drawable-hdpi/speak_now_level5_holo.png Binary files differdeleted file mode 100644 index b027e8343..000000000 --- a/java/res/drawable-hdpi/speak_now_level5_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level6.png b/java/res/drawable-hdpi/speak_now_level6.png Binary files differdeleted file mode 100644 index 9f4481eb4..000000000 --- a/java/res/drawable-hdpi/speak_now_level6.png +++ /dev/null diff --git a/java/res/drawable-hdpi/speak_now_level6_holo.png b/java/res/drawable-hdpi/speak_now_level6_holo.png Binary files differdeleted file mode 100644 index 17bb03452..000000000 --- a/java/res/drawable-hdpi/speak_now_level6_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png Binary files differindex 3e4eff698..af6082d04 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_delete.png b/java/res/drawable-hdpi/sym_bkeyboard_delete.png Binary files differindex 1d24cc85c..999a182f4 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_delete.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_delete.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_done.png b/java/res/drawable-hdpi/sym_bkeyboard_done.png Binary files differdeleted file mode 100644 index b77803d21..000000000 --- a/java/res/drawable-hdpi/sym_bkeyboard_done.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_bkeyboard_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_mic.png Binary files differindex 512f46080..5c73600d9 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_mic.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_mic.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num0.png b/java/res/drawable-hdpi/sym_bkeyboard_num0.png Binary files differindex 678a790de..02f281166 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_num0.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_num0.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num1.png b/java/res/drawable-hdpi/sym_bkeyboard_num1.png Binary files differindex 4e68e35b3..304acfd31 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_num1.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_num1.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num2.png b/java/res/drawable-hdpi/sym_bkeyboard_num2.png Binary files differindex 546663fda..295eba1e4 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_num2.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_num2.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num3.png b/java/res/drawable-hdpi/sym_bkeyboard_num3.png Binary files differindex 57f9a8d8e..9ee6e4437 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_num3.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_num3.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num4.png b/java/res/drawable-hdpi/sym_bkeyboard_num4.png Binary files differindex de504388f..ab4392dcb 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_num4.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_num4.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num5.png b/java/res/drawable-hdpi/sym_bkeyboard_num5.png Binary files differindex 1d2e1ef89..004ecd72e 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_num5.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_num5.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num6.png b/java/res/drawable-hdpi/sym_bkeyboard_num6.png Binary files differindex 39788b727..2aa317d77 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_num6.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_num6.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num7.png b/java/res/drawable-hdpi/sym_bkeyboard_num7.png Binary files differindex fff6f27bf..721361c29 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_num7.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_num7.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num8.png b/java/res/drawable-hdpi/sym_bkeyboard_num8.png Binary files differindex 8cc1a955e..941359f6b 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_num8.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_num8.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_num9.png b/java/res/drawable-hdpi/sym_bkeyboard_num9.png Binary files differindex 021742509..74e08a087 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_num9.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_num9.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_numalt.png b/java/res/drawable-hdpi/sym_bkeyboard_numalt.png Binary files differdeleted file mode 100644 index 200714f66..000000000 --- a/java/res/drawable-hdpi/sym_bkeyboard_numalt.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_bkeyboard_numpound.png b/java/res/drawable-hdpi/sym_bkeyboard_numpound.png Binary files differdeleted file mode 100644 index 0a46122b2..000000000 --- a/java/res/drawable-hdpi/sym_bkeyboard_numpound.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_bkeyboard_numstar.png b/java/res/drawable-hdpi/sym_bkeyboard_numstar.png Binary files differdeleted file mode 100644 index ca22bd535..000000000 --- a/java/res/drawable-hdpi/sym_bkeyboard_numstar.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_bkeyboard_return.png b/java/res/drawable-hdpi/sym_bkeyboard_return.png Binary files differindex 426e1599e..91bb397ff 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_return.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_return.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_search.png b/java/res/drawable-hdpi/sym_bkeyboard_search.png Binary files differindex 1b6f884fa..0ac08145b 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_search.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_search.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_settings.png b/java/res/drawable-hdpi/sym_bkeyboard_settings.png Binary files differindex 08ba18f28..5b6217aa0 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_settings.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_settings.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_shift.png b/java/res/drawable-hdpi/sym_bkeyboard_shift.png Binary files differindex 5a22dd309..5ef01b8bd 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_shift.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_shift.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png b/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png Binary files differindex 566449126..7d36dcb34 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_space.png b/java/res/drawable-hdpi/sym_bkeyboard_space.png Binary files differindex cd0ebe2f4..77518cc93 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_space.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_space.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_tab.png b/java/res/drawable-hdpi/sym_bkeyboard_tab.png Binary files differindex 3466e1271..5db4cef2b 100644 --- a/java/res/drawable-hdpi/sym_bkeyboard_tab.png +++ b/java/res/drawable-hdpi/sym_bkeyboard_tab.png diff --git a/java/res/drawable-hdpi/sym_bkeyboard_voice_off.png b/java/res/drawable-hdpi/sym_bkeyboard_voice_off.png Binary files differnew file mode 100644 index 000000000..081a13096 --- /dev/null +++ b/java/res/drawable-hdpi/sym_bkeyboard_voice_off.png diff --git a/java/res/drawable-hdpi/sym_keyboard_123_mic.png b/java/res/drawable-hdpi/sym_keyboard_123_mic.png Binary files differindex 62669803d..6f0aec24c 100644 --- a/java/res/drawable-hdpi/sym_keyboard_123_mic.png +++ b/java/res/drawable-hdpi/sym_keyboard_123_mic.png diff --git a/java/res/drawable-hdpi/sym_keyboard_delete.png b/java/res/drawable-hdpi/sym_keyboard_delete.png Binary files differindex 459ebcff8..0591b82cd 100644 --- a/java/res/drawable-hdpi/sym_keyboard_delete.png +++ b/java/res/drawable-hdpi/sym_keyboard_delete.png diff --git a/java/res/drawable-hdpi/sym_keyboard_delete_holo.png b/java/res/drawable-hdpi/sym_keyboard_delete_holo.png Binary files differindex ff2a4acbb..9d87ba619 100644 --- a/java/res/drawable-hdpi/sym_keyboard_delete_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_delete_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_done.png b/java/res/drawable-hdpi/sym_keyboard_done.png Binary files differdeleted file mode 100644 index 471c5021b..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_done.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png b/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png Binary files differindex eef789680..e56799cdb 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png Binary files differindex 8322e8e1d..960bb4e8e 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_done.png b/java/res/drawable-hdpi/sym_keyboard_feedback_done.png Binary files differdeleted file mode 100644 index 7015e266a..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_done.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png Binary files differindex 889477cfb..5d1cb7833 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png Binary files differindex b0f6d7feb..3a56d4745 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png b/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png Binary files differindex f82c33ae3..a88a19d0d 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png b/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png Binary files differindex 819236c8e..7d418d91d 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_return.png b/java/res/drawable-hdpi/sym_keyboard_feedback_return.png Binary files differindex f038d3abe..f73ff3cd9 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_return.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_return.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_search.png b/java/res/drawable-hdpi/sym_keyboard_feedback_search.png Binary files differindex 337f9e4fe..0e69157d6 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_search.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_search.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_settings.png b/java/res/drawable-hdpi/sym_keyboard_feedback_settings.png Binary files differindex 8a02be07e..6304b00ed 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_settings.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_settings.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png b/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png Binary files differindex abf15f8f9..fc858f220 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png b/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png Binary files differdeleted file mode 100644 index 1fd822ea6..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_space.png b/java/res/drawable-hdpi/sym_keyboard_feedback_space.png Binary files differindex 70debca9b..67311fc8f 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_space.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_space.png diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png Binary files differindex d2efb1619..d75fcacd5 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png diff --git a/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png Binary files differindex dcc4bd59b..79f235f25 100644 --- a/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png +++ b/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png diff --git a/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png Binary files differindex ecf61a98e..e1444e85b 100644 --- a/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png +++ b/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png diff --git a/java/res/drawable-hdpi/sym_keyboard_mic.png b/java/res/drawable-hdpi/sym_keyboard_mic.png Binary files differindex c8dca62a0..520a40f09 100644 --- a/java/res/drawable-hdpi/sym_keyboard_mic.png +++ b/java/res/drawable-hdpi/sym_keyboard_mic.png diff --git a/java/res/drawable-hdpi/sym_keyboard_mic_disabled.png b/java/res/drawable-hdpi/sym_keyboard_mic_disabled.png Binary files differdeleted file mode 100644 index c8dca62a0..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_mic_disabled.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_num0.png b/java/res/drawable-hdpi/sym_keyboard_num0.png Binary files differindex 10ac70b9d..2024f416b 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num0.png +++ b/java/res/drawable-hdpi/sym_keyboard_num0.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num0_holo.png b/java/res/drawable-hdpi/sym_keyboard_num0_holo.png Binary files differindex ec8b5a8d2..fbd55d68d 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num0_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_num0_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num1.png b/java/res/drawable-hdpi/sym_keyboard_num1.png Binary files differindex 0fc03efa5..5e66b9a31 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num1.png +++ b/java/res/drawable-hdpi/sym_keyboard_num1.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num1_holo.png b/java/res/drawable-hdpi/sym_keyboard_num1_holo.png Binary files differindex 60c8ab8a8..e651c3e85 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num1_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_num1_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num2.png b/java/res/drawable-hdpi/sym_keyboard_num2.png Binary files differindex 283560b35..3933270dc 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num2.png +++ b/java/res/drawable-hdpi/sym_keyboard_num2.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num2_holo.png b/java/res/drawable-hdpi/sym_keyboard_num2_holo.png Binary files differindex 578e37d6e..8458f5313 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num2_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_num2_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num3.png b/java/res/drawable-hdpi/sym_keyboard_num3.png Binary files differindex 9a3b3294b..c69548345 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num3.png +++ b/java/res/drawable-hdpi/sym_keyboard_num3.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num3_holo.png b/java/res/drawable-hdpi/sym_keyboard_num3_holo.png Binary files differindex fb6250699..81025c635 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num3_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_num3_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num4.png b/java/res/drawable-hdpi/sym_keyboard_num4.png Binary files differindex f13ff1ae9..ef20add54 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num4.png +++ b/java/res/drawable-hdpi/sym_keyboard_num4.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num4_holo.png b/java/res/drawable-hdpi/sym_keyboard_num4_holo.png Binary files differindex c0e54a523..30a0c77c7 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num4_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_num4_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num5.png b/java/res/drawable-hdpi/sym_keyboard_num5.png Binary files differindex c251329fa..9a2f51f8d 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num5.png +++ b/java/res/drawable-hdpi/sym_keyboard_num5.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num5_holo.png b/java/res/drawable-hdpi/sym_keyboard_num5_holo.png Binary files differindex b581a4657..147f056fc 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num5_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_num5_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num6.png b/java/res/drawable-hdpi/sym_keyboard_num6.png Binary files differindex 4acba4c91..6829f81d1 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num6.png +++ b/java/res/drawable-hdpi/sym_keyboard_num6.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num6_holo.png b/java/res/drawable-hdpi/sym_keyboard_num6_holo.png Binary files differindex 0791802ba..b96830844 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num6_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_num6_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num7.png b/java/res/drawable-hdpi/sym_keyboard_num7.png Binary files differindex 14931c18c..dc608d4e1 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num7.png +++ b/java/res/drawable-hdpi/sym_keyboard_num7.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num7_holo.png b/java/res/drawable-hdpi/sym_keyboard_num7_holo.png Binary files differindex 7b3d3a825..7d44bfb45 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num7_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_num7_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num8.png b/java/res/drawable-hdpi/sym_keyboard_num8.png Binary files differindex d4973fdc9..f0978c611 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num8.png +++ b/java/res/drawable-hdpi/sym_keyboard_num8.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num8_holo.png b/java/res/drawable-hdpi/sym_keyboard_num8_holo.png Binary files differindex e076aedbe..093cd743a 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num8_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_num8_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num9.png b/java/res/drawable-hdpi/sym_keyboard_num9.png Binary files differindex 49cec66f4..4b8328d1f 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num9.png +++ b/java/res/drawable-hdpi/sym_keyboard_num9.png diff --git a/java/res/drawable-hdpi/sym_keyboard_num9_holo.png b/java/res/drawable-hdpi/sym_keyboard_num9_holo.png Binary files differindex 4189cda79..f35e80dab 100644 --- a/java/res/drawable-hdpi/sym_keyboard_num9_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_num9_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_numalt.png b/java/res/drawable-hdpi/sym_keyboard_numalt.png Binary files differdeleted file mode 100644 index 3cc5311cd..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_numalt.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_numbpound_holo.png b/java/res/drawable-hdpi/sym_keyboard_numbpound_holo.png Binary files differdeleted file mode 100644 index 73f8be054..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_numbpound_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_numbstar_holo.png b/java/res/drawable-hdpi/sym_keyboard_numbstar_holo.png Binary files differdeleted file mode 100644 index fcb891b93..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_numbstar_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_numpound.png b/java/res/drawable-hdpi/sym_keyboard_numpound.png Binary files differdeleted file mode 100644 index d09133929..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_numpound.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_numstar.png b/java/res/drawable-hdpi/sym_keyboard_numstar.png Binary files differdeleted file mode 100644 index e838e169f..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_numstar.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_return.png b/java/res/drawable-hdpi/sym_keyboard_return.png Binary files differindex 9d97e1efd..9743c7f2f 100644 --- a/java/res/drawable-hdpi/sym_keyboard_return.png +++ b/java/res/drawable-hdpi/sym_keyboard_return.png diff --git a/java/res/drawable-hdpi/sym_keyboard_return_holo.png b/java/res/drawable-hdpi/sym_keyboard_return_holo.png Binary files differindex ca3c02dbe..ef04d6767 100644 --- a/java/res/drawable-hdpi/sym_keyboard_return_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_return_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_search.png b/java/res/drawable-hdpi/sym_keyboard_search.png Binary files differindex 1aa22d7e2..8cd28c64a 100644 --- a/java/res/drawable-hdpi/sym_keyboard_search.png +++ b/java/res/drawable-hdpi/sym_keyboard_search.png diff --git a/java/res/drawable-hdpi/sym_keyboard_settings.png b/java/res/drawable-hdpi/sym_keyboard_settings.png Binary files differindex 35d1ed6e6..1e5bf939e 100644 --- a/java/res/drawable-hdpi/sym_keyboard_settings.png +++ b/java/res/drawable-hdpi/sym_keyboard_settings.png diff --git a/java/res/drawable-hdpi/sym_keyboard_settings_holo.png b/java/res/drawable-hdpi/sym_keyboard_settings_holo.png Binary files differindex 471bd0b86..29085e5ea 100644 --- a/java/res/drawable-hdpi/sym_keyboard_settings_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_settings_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_shift.png b/java/res/drawable-hdpi/sym_keyboard_shift.png Binary files differindex bf217d147..8e3d0320c 100644 --- a/java/res/drawable-hdpi/sym_keyboard_shift.png +++ b/java/res/drawable-hdpi/sym_keyboard_shift.png diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_holo.png b/java/res/drawable-hdpi/sym_keyboard_shift_holo.png Binary files differindex 375c1b4ca..1e074a716 100644 --- a/java/res/drawable-hdpi/sym_keyboard_shift_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_shift_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked.png Binary files differindex d11b39712..d345634a6 100644 --- a/java/res/drawable-hdpi/sym_keyboard_shift_locked.png +++ b/java/res/drawable-hdpi/sym_keyboard_shift_locked.png diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png Binary files differindex 57362eaf4..ab77b9542 100644 --- a/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_smiley_holo.png b/java/res/drawable-hdpi/sym_keyboard_smiley_holo.png Binary files differdeleted file mode 100644 index a3f5e840d..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_smiley_holo.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_space.png b/java/res/drawable-hdpi/sym_keyboard_space.png Binary files differindex fcd20de7d..780733ec5 100644 --- a/java/res/drawable-hdpi/sym_keyboard_space.png +++ b/java/res/drawable-hdpi/sym_keyboard_space.png diff --git a/java/res/drawable-hdpi/sym_keyboard_space_holo.png b/java/res/drawable-hdpi/sym_keyboard_space_holo.png Binary files differindex a8e5f7d5e..143a89964 100644 --- a/java/res/drawable-hdpi/sym_keyboard_space_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_space_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_space_led.9.png b/java/res/drawable-hdpi/sym_keyboard_space_led.9.png Binary files differindex 2c6f4a925..c76f64b94 100644 --- a/java/res/drawable-hdpi/sym_keyboard_space_led.9.png +++ b/java/res/drawable-hdpi/sym_keyboard_space_led.9.png diff --git a/java/res/drawable-hdpi/sym_keyboard_tab.png b/java/res/drawable-hdpi/sym_keyboard_tab.png Binary files differindex 51d17d989..3d1c5c0ea 100644 --- a/java/res/drawable-hdpi/sym_keyboard_tab.png +++ b/java/res/drawable-hdpi/sym_keyboard_tab.png diff --git a/java/res/drawable-hdpi/sym_keyboard_tab_holo.png b/java/res/drawable-hdpi/sym_keyboard_tab_holo.png Binary files differnew file mode 100644 index 000000000..321c541cc --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_tab_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_holo.png b/java/res/drawable-hdpi/sym_keyboard_voice_holo.png Binary files differindex 5ea2edc53..d3cb46e0d 100644 --- a/java/res/drawable-hdpi/sym_keyboard_voice_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_voice_holo.png diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_off_holo.png b/java/res/drawable-hdpi/sym_keyboard_voice_off_holo.png Binary files differindex 6e6279a8a..45e3e79c5 100644 --- a/java/res/drawable-hdpi/sym_keyboard_voice_off_holo.png +++ b/java/res/drawable-hdpi/sym_keyboard_voice_off_holo.png diff --git a/java/res/drawable-hdpi/top_suggest_line_holo.9.png b/java/res/drawable-hdpi/top_suggest_line_holo.9.png Binary files differdeleted file mode 100644 index dcce3015f..000000000 --- a/java/res/drawable-hdpi/top_suggest_line_holo.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/voice_ime_background.9.png b/java/res/drawable-hdpi/voice_ime_background.9.png Binary files differdeleted file mode 100644 index 42868522f..000000000 --- a/java/res/drawable-hdpi/voice_ime_background.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/voice_swipe_hint.png b/java/res/drawable-hdpi/voice_swipe_hint.png Binary files differdeleted file mode 100644 index 130f83a9c..000000000 --- a/java/res/drawable-hdpi/voice_swipe_hint.png +++ /dev/null diff --git a/java/res/drawable-hdpi/vs_dialog_blue.9.png b/java/res/drawable-hdpi/vs_dialog_blue.9.png Binary files differnew file mode 100644 index 000000000..4f813ead3 --- /dev/null +++ b/java/res/drawable-hdpi/vs_dialog_blue.9.png diff --git a/java/res/drawable-hdpi/vs_dialog_red.9.png b/java/res/drawable-hdpi/vs_dialog_red.9.png Binary files differnew file mode 100644 index 000000000..a2055600e --- /dev/null +++ b/java/res/drawable-hdpi/vs_dialog_red.9.png diff --git a/java/res/drawable-hdpi/vs_dialog_yellow.9.png b/java/res/drawable-hdpi/vs_dialog_yellow.9.png Binary files differnew file mode 100644 index 000000000..ce664b676 --- /dev/null +++ b/java/res/drawable-hdpi/vs_dialog_yellow.9.png diff --git a/java/res/drawable-xlarge/vs_popup_mic_edge.png b/java/res/drawable-hdpi/vs_popup_mic_edge.png Binary files differindex 4ff6337a2..4ff6337a2 100644 --- a/java/res/drawable-xlarge/vs_popup_mic_edge.png +++ b/java/res/drawable-hdpi/vs_popup_mic_edge.png diff --git a/java/res/drawable-hdpi/working.png b/java/res/drawable-hdpi/working.png Binary files differdeleted file mode 100755 index 5ea702307..000000000 --- a/java/res/drawable-hdpi/working.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png Binary files differindex 603bf0e15..603bf0e15 100755..100644 --- a/java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png +++ b/java/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png Binary files differindex 6ddd516e7..6ddd516e7 100755..100644 --- a/java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png +++ b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png Binary files differindex 65fdeb353..65fdeb353 100755..100644 --- a/java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png +++ b/java/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png Binary files differindex 7ec915fe8..7ec915fe8 100755..100644 --- a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png +++ b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png Binary files differindex 439271723..439271723 100755..100644 --- a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png +++ b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png diff --git a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png Binary files differindex c2cc32044..c2cc32044 100755..100644 --- a/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png +++ b/java/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png diff --git a/java/res/drawable-land-hdpi/key_hint_at_holo.9.png b/java/res/drawable-land-hdpi/key_hint_at_holo.9.png Binary files differdeleted file mode 100644 index 874802fcb..000000000 --- a/java/res/drawable-land-hdpi/key_hint_at_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png Binary files differdeleted file mode 100644 index d90bc31ab..000000000 --- a/java/res/drawable-land-hdpi/key_hint_at_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png b/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png Binary files differdeleted file mode 100644 index e82e41c94..000000000 --- a/java/res/drawable-land-hdpi/key_hint_colon_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png Binary files differdeleted file mode 100644 index e46845dbd..000000000 --- a/java/res/drawable-land-hdpi/key_hint_colon_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png b/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png Binary files differdeleted file mode 100644 index da0d6fdd6..000000000 --- a/java/res/drawable-land-hdpi/key_hint_comma_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.png Binary files differdeleted file mode 100644 index 1f2f70762..000000000 --- a/java/res/drawable-land-hdpi/key_hint_comma_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_dash_holo.9.png b/java/res/drawable-land-hdpi/key_hint_dash_holo.9.png Binary files differdeleted file mode 100644 index c045b8c54..000000000 --- a/java/res/drawable-land-hdpi/key_hint_dash_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_doublecross_holo.9.png b/java/res/drawable-land-hdpi/key_hint_doublecross_holo.9.png Binary files differdeleted file mode 100644 index 6975ab71f..000000000 --- a/java/res/drawable-land-hdpi/key_hint_doublecross_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_equal_holo.9.png b/java/res/drawable-land-hdpi/key_hint_equal_holo.9.png Binary files differdeleted file mode 100644 index a619fb29f..000000000 --- a/java/res/drawable-land-hdpi/key_hint_equal_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png Binary files differdeleted file mode 100644 index 570a1b87d..000000000 --- a/java/res/drawable-land-hdpi/key_hint_exclamation_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.png Binary files differdeleted file mode 100644 index e93e49187..000000000 --- a/java/res/drawable-land-hdpi/key_hint_exclamation_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_larger_holo.9.png b/java/res/drawable-land-hdpi/key_hint_larger_holo.9.png Binary files differdeleted file mode 100644 index f8d960f17..000000000 --- a/java/res/drawable-land-hdpi/key_hint_larger_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_minus_holo.9.png b/java/res/drawable-land-hdpi/key_hint_minus_holo.9.png Binary files differdeleted file mode 100644 index 2c34ef90b..000000000 --- a/java/res/drawable-land-hdpi/key_hint_minus_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_minus_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_minus_large_holo.9.png Binary files differdeleted file mode 100644 index 0df056ee1..000000000 --- a/java/res/drawable-land-hdpi/key_hint_minus_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_parenclose_holo.9.png b/java/res/drawable-land-hdpi/key_hint_parenclose_holo.9.png Binary files differdeleted file mode 100644 index 9d8b05761..000000000 --- a/java/res/drawable-land-hdpi/key_hint_parenclose_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_parenopen_holo.9.png b/java/res/drawable-land-hdpi/key_hint_parenopen_holo.9.png Binary files differdeleted file mode 100644 index 8e2d8f2ad..000000000 --- a/java/res/drawable-land-hdpi/key_hint_parenopen_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_period_holo.9.png b/java/res/drawable-land-hdpi/key_hint_period_holo.9.png Binary files differdeleted file mode 100644 index bf8c6d722..000000000 --- a/java/res/drawable-land-hdpi/key_hint_period_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png b/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png Binary files differdeleted file mode 100644 index 3dd85065a..000000000 --- a/java/res/drawable-land-hdpi/key_hint_plus_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png Binary files differdeleted file mode 100644 index b0d75f433..000000000 --- a/java/res/drawable-land-hdpi/key_hint_plus_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_question_holo.9.png b/java/res/drawable-land-hdpi/key_hint_question_holo.9.png Binary files differdeleted file mode 100644 index 1a0db31ec..000000000 --- a/java/res/drawable-land-hdpi/key_hint_question_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png Binary files differdeleted file mode 100644 index 44dfdc4ea..000000000 --- a/java/res/drawable-land-hdpi/key_hint_question_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png b/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png Binary files differdeleted file mode 100644 index bfb612f59..000000000 --- a/java/res/drawable-land-hdpi/key_hint_quote_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.png Binary files differdeleted file mode 100644 index e73b9e0c6..000000000 --- a/java/res/drawable-land-hdpi/key_hint_quote_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_semicolon_holo.9.png b/java/res/drawable-land-hdpi/key_hint_semicolon_holo.9.png Binary files differdeleted file mode 100644 index f35275857..000000000 --- a/java/res/drawable-land-hdpi/key_hint_semicolon_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_simplequote_holo.9.png b/java/res/drawable-land-hdpi/key_hint_simplequote_holo.9.png Binary files differdeleted file mode 100644 index e69a9696e..000000000 --- a/java/res/drawable-land-hdpi/key_hint_simplequote_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_slash_holo.9.png b/java/res/drawable-land-hdpi/key_hint_slash_holo.9.png Binary files differdeleted file mode 100644 index 592ea4434..000000000 --- a/java/res/drawable-land-hdpi/key_hint_slash_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_slash_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_slash_large_holo.9.png Binary files differdeleted file mode 100644 index b18be7bb5..000000000 --- a/java/res/drawable-land-hdpi/key_hint_slash_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_smaller_holo.9.png b/java/res/drawable-land-hdpi/key_hint_smaller_holo.9.png Binary files differdeleted file mode 100644 index 145320dab..000000000 --- a/java/res/drawable-land-hdpi/key_hint_smaller_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_star_holo.9.png b/java/res/drawable-land-hdpi/key_hint_star_holo.9.png Binary files differdeleted file mode 100644 index 9bde78a21..000000000 --- a/java/res/drawable-land-hdpi/key_hint_star_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png b/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png Binary files differdeleted file mode 100644 index b2ab17d41..000000000 --- a/java/res/drawable-land-hdpi/key_hint_underline_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.png Binary files differdeleted file mode 100644 index dad34fc72..000000000 --- a/java/res/drawable-land-hdpi/key_hint_underline_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_underscore_holo.9.png b/java/res/drawable-land-hdpi/key_hint_underscore_holo.9.png Binary files differdeleted file mode 100644 index e4f271918..000000000 --- a/java/res/drawable-land-hdpi/key_hint_underscore_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-hdpi/key_hint_underscore_large_holo.9.png b/java/res/drawable-land-hdpi/key_hint_underscore_large_holo.9.png Binary files differdeleted file mode 100644 index dad34fc72..000000000 --- a/java/res/drawable-land-hdpi/key_hint_underscore_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_at_holo.9.png b/java/res/drawable-land-mdpi/key_hint_at_holo.9.png Binary files differdeleted file mode 100644 index 5b946ff9b..000000000 --- a/java/res/drawable-land-mdpi/key_hint_at_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png Binary files differdeleted file mode 100644 index 852f899ed..000000000 --- a/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png Binary files differdeleted file mode 100644 index 1d9346e6f..000000000 --- a/java/res/drawable-land-mdpi/key_hint_colon_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png Binary files differdeleted file mode 100644 index 17e9091b4..000000000 --- a/java/res/drawable-land-mdpi/key_hint_colon_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png Binary files differdeleted file mode 100644 index c2a913c04..000000000 --- a/java/res/drawable-land-mdpi/key_hint_comma_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.png Binary files differdeleted file mode 100644 index 846f213f1..000000000 --- a/java/res/drawable-land-mdpi/key_hint_comma_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_dash_holo.9.png b/java/res/drawable-land-mdpi/key_hint_dash_holo.9.png Binary files differdeleted file mode 100644 index 1cb0bdfaa..000000000 --- a/java/res/drawable-land-mdpi/key_hint_dash_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_doublecross_holo.9.png b/java/res/drawable-land-mdpi/key_hint_doublecross_holo.9.png Binary files differdeleted file mode 100644 index 7e7ceb3fc..000000000 --- a/java/res/drawable-land-mdpi/key_hint_doublecross_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_equal_holo.9.png b/java/res/drawable-land-mdpi/key_hint_equal_holo.9.png Binary files differdeleted file mode 100644 index 8e570595c..000000000 --- a/java/res/drawable-land-mdpi/key_hint_equal_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png Binary files differdeleted file mode 100644 index ce8e8de43..000000000 --- a/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png Binary files differdeleted file mode 100644 index 035dcf85d..000000000 --- a/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_larger_holo.9.png b/java/res/drawable-land-mdpi/key_hint_larger_holo.9.png Binary files differdeleted file mode 100644 index 37c05275e..000000000 --- a/java/res/drawable-land-mdpi/key_hint_larger_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_parenclose_holo.9.png b/java/res/drawable-land-mdpi/key_hint_parenclose_holo.9.png Binary files differdeleted file mode 100644 index 97e1f1449..000000000 --- a/java/res/drawable-land-mdpi/key_hint_parenclose_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_parenopen_holo.9.png b/java/res/drawable-land-mdpi/key_hint_parenopen_holo.9.png Binary files differdeleted file mode 100644 index 36add5d51..000000000 --- a/java/res/drawable-land-mdpi/key_hint_parenopen_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_period_holo.9.png b/java/res/drawable-land-mdpi/key_hint_period_holo.9.png Binary files differdeleted file mode 100644 index 4a70f07dc..000000000 --- a/java/res/drawable-land-mdpi/key_hint_period_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png Binary files differdeleted file mode 100644 index 931390b45..000000000 --- a/java/res/drawable-land-mdpi/key_hint_plus_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png Binary files differdeleted file mode 100644 index e6f9f8a9c..000000000 --- a/java/res/drawable-land-mdpi/key_hint_plus_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_question_holo.9.png b/java/res/drawable-land-mdpi/key_hint_question_holo.9.png Binary files differdeleted file mode 100644 index 6cbeb5993..000000000 --- a/java/res/drawable-land-mdpi/key_hint_question_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png Binary files differdeleted file mode 100644 index bfd58de09..000000000 --- a/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png Binary files differdeleted file mode 100644 index 3b361b71c..000000000 --- a/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png Binary files differdeleted file mode 100644 index 2a08aa12e..000000000 --- a/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_semicolon_holo.9.png b/java/res/drawable-land-mdpi/key_hint_semicolon_holo.9.png Binary files differdeleted file mode 100644 index 63a3875b5..000000000 --- a/java/res/drawable-land-mdpi/key_hint_semicolon_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_simplequote_holo.9.png b/java/res/drawable-land-mdpi/key_hint_simplequote_holo.9.png Binary files differdeleted file mode 100644 index 3c217b058..000000000 --- a/java/res/drawable-land-mdpi/key_hint_simplequote_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_slash_holo.9.png b/java/res/drawable-land-mdpi/key_hint_slash_holo.9.png Binary files differdeleted file mode 100644 index 98545f0ac..000000000 --- a/java/res/drawable-land-mdpi/key_hint_slash_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_slash_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_slash_large_holo.9.png Binary files differdeleted file mode 100644 index a3a02973c..000000000 --- a/java/res/drawable-land-mdpi/key_hint_slash_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_smaller_holo.9.png b/java/res/drawable-land-mdpi/key_hint_smaller_holo.9.png Binary files differdeleted file mode 100644 index 5af183644..000000000 --- a/java/res/drawable-land-mdpi/key_hint_smaller_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_star_holo.9.png b/java/res/drawable-land-mdpi/key_hint_star_holo.9.png Binary files differdeleted file mode 100644 index 18304d738..000000000 --- a/java/res/drawable-land-mdpi/key_hint_star_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png Binary files differdeleted file mode 100644 index 50f99a191..000000000 --- a/java/res/drawable-land-mdpi/key_hint_underline_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-mdpi/key_hint_underscore_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_underscore_large_holo.9.png Binary files differdeleted file mode 100644 index ee0e83578..000000000 --- a/java/res/drawable-land-mdpi/key_hint_underscore_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-land-xhdpi/hint_popup_holo.9.png b/java/res/drawable-land-xhdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..3cd20d34f --- /dev/null +++ b/java/res/drawable-land-xhdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-xlarge/btn_center_default.9.png b/java/res/drawable-mdpi/btn_center_default.9.png Binary files differindex d5ec36ba4..d5ec36ba4 100755..100644 --- a/java/res/drawable-xlarge/btn_center_default.9.png +++ b/java/res/drawable-mdpi/btn_center_default.9.png diff --git a/java/res/drawable-xlarge/btn_center_pressed.9.png b/java/res/drawable-mdpi/btn_center_pressed.9.png Binary files differindex 593a679d0..593a679d0 100755..100644 --- a/java/res/drawable-xlarge/btn_center_pressed.9.png +++ b/java/res/drawable-mdpi/btn_center_pressed.9.png diff --git a/java/res/drawable-xlarge/btn_center_selected.9.png b/java/res/drawable-mdpi/btn_center_selected.9.png Binary files differindex f1914a886..f1914a886 100644 --- a/java/res/drawable-xlarge/btn_center_selected.9.png +++ b/java/res/drawable-mdpi/btn_center_selected.9.png diff --git a/java/res/drawable-mdpi/btn_close_candidates_pane.9.png b/java/res/drawable-mdpi/btn_close_candidates_pane.9.png Binary files differnew file mode 100644 index 000000000..5ea56925d --- /dev/null +++ b/java/res/drawable-mdpi/btn_close_candidates_pane.9.png diff --git a/java/res/drawable-mdpi/btn_expand_candidates_pane.9.png b/java/res/drawable-mdpi/btn_expand_candidates_pane.9.png Binary files differnew file mode 100644 index 000000000..83cb65305 --- /dev/null +++ b/java/res/drawable-mdpi/btn_expand_candidates_pane.9.png 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 Binary files differindex 1534d99d1..034d63870 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png 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 Binary files differindex 936513a31..0cb53d506 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png 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 Binary files differindex b071251a7..0050a0110 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png 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 Binary files differindex 9fed21edf..27f8fdac6 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png 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 Binary files differindex 3fce55938..b8ce95235 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png 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 Binary files differindex 3f82b67dd..4d4d1a748 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png 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 Binary files differindex eded1736b..90f471f48 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png 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 Binary files differindex e6a1dcecc..c850768cd 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.png Binary files differnew file mode 100644 index 000000000..e9186b7bb --- /dev/null +++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.png 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 Binary files differindex d2f5f3bf2..e96c8c5db 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png diff --git a/java/res/drawable-mdpi/cancel.png b/java/res/drawable-mdpi/cancel.png Binary files differdeleted file mode 100644 index 713a37875..000000000 --- a/java/res/drawable-mdpi/cancel.png +++ /dev/null diff --git a/java/res/drawable-mdpi/cancel_holo.9.png b/java/res/drawable-mdpi/cancel_holo.9.png Binary files differdeleted file mode 100644 index 74f967eb9..000000000 --- a/java/res/drawable-mdpi/cancel_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/dialog_bubble_step02.9.png b/java/res/drawable-mdpi/dialog_bubble_step02.9.png Binary files differdeleted file mode 100644 index d77f85fe2..000000000 --- a/java/res/drawable-mdpi/dialog_bubble_step02.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/dialog_bubble_step07.9.png b/java/res/drawable-mdpi/dialog_bubble_step07.9.png Binary files differdeleted file mode 100644 index 80f4a0eaa..000000000 --- a/java/res/drawable-mdpi/dialog_bubble_step07.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/hint_popup_holo.9.png b/java/res/drawable-mdpi/hint_popup_holo.9.png Binary files differindex 01d1139d8..e9e131c54 100644 --- a/java/res/drawable-mdpi/hint_popup_holo.9.png +++ b/java/res/drawable-mdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-mdpi/key_hint_at_holo.9.png b/java/res/drawable-mdpi/key_hint_at_holo.9.png Binary files differdeleted file mode 100644 index 5b946ff9b..000000000 --- a/java/res/drawable-mdpi/key_hint_at_holo.9.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 852f899ed..000000000 --- a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_colon_holo.9.png b/java/res/drawable-mdpi/key_hint_colon_holo.9.png Binary files differdeleted file mode 100644 index 1d9346e6f..000000000 --- a/java/res/drawable-mdpi/key_hint_colon_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png b/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png Binary files differdeleted file mode 100644 index 17e9091b4..000000000 --- a/java/res/drawable-mdpi/key_hint_colon_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_comma_holo.9.png b/java/res/drawable-mdpi/key_hint_comma_holo.9.png Binary files differdeleted file mode 100644 index c2a913c04..000000000 --- a/java/res/drawable-mdpi/key_hint_comma_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_comma_large_holo.9.png b/java/res/drawable-mdpi/key_hint_comma_large_holo.9.png Binary files differdeleted file mode 100644 index 846f213f1..000000000 --- a/java/res/drawable-mdpi/key_hint_comma_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_dash_holo.9.png b/java/res/drawable-mdpi/key_hint_dash_holo.9.png Binary files differdeleted file mode 100644 index 2ee22ba79..000000000 --- a/java/res/drawable-mdpi/key_hint_dash_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_doublecross_holo.9.png b/java/res/drawable-mdpi/key_hint_doublecross_holo.9.png Binary files differdeleted file mode 100644 index 0da933239..000000000 --- a/java/res/drawable-mdpi/key_hint_doublecross_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_equal_holo.9.png b/java/res/drawable-mdpi/key_hint_equal_holo.9.png Binary files differdeleted file mode 100644 index f5a9ba2f4..000000000 --- a/java/res/drawable-mdpi/key_hint_equal_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png Binary files differdeleted file mode 100644 index ce8e8de43..000000000 --- a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 035dcf85d..000000000 --- a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_larger_holo.9.png b/java/res/drawable-mdpi/key_hint_larger_holo.9.png Binary files differdeleted file mode 100644 index 50652bb13..000000000 --- a/java/res/drawable-mdpi/key_hint_larger_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_minus_large_holo.9.png b/java/res/drawable-mdpi/key_hint_minus_large_holo.9.png Binary files differdeleted file mode 100644 index 52c28dd87..000000000 --- a/java/res/drawable-mdpi/key_hint_minus_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_parenclose_holo.9.png b/java/res/drawable-mdpi/key_hint_parenclose_holo.9.png Binary files differdeleted file mode 100644 index 52ee86a0f..000000000 --- a/java/res/drawable-mdpi/key_hint_parenclose_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_parenopen_holo.9.png b/java/res/drawable-mdpi/key_hint_parenopen_holo.9.png Binary files differdeleted file mode 100644 index b0ed388ad..000000000 --- a/java/res/drawable-mdpi/key_hint_parenopen_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_period_holo.9.png b/java/res/drawable-mdpi/key_hint_period_holo.9.png Binary files differdeleted file mode 100644 index 8d798a57f..000000000 --- a/java/res/drawable-mdpi/key_hint_period_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_plus_holo.9.png b/java/res/drawable-mdpi/key_hint_plus_holo.9.png Binary files differdeleted file mode 100644 index 931390b45..000000000 --- a/java/res/drawable-mdpi/key_hint_plus_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png b/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png Binary files differdeleted file mode 100644 index e6f9f8a9c..000000000 --- a/java/res/drawable-mdpi/key_hint_plus_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_question_holo.9.png b/java/res/drawable-mdpi/key_hint_question_holo.9.png Binary files differdeleted file mode 100644 index 6cbeb5993..000000000 --- a/java/res/drawable-mdpi/key_hint_question_holo.9.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index bfd58de09..000000000 --- a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_holo.9.png Binary files differdeleted file mode 100644 index 3b361b71c..000000000 --- a/java/res/drawable-mdpi/key_hint_quote_holo.9.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 2a08aa12e..000000000 --- a/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_semicolon_holo.9.png b/java/res/drawable-mdpi/key_hint_semicolon_holo.9.png Binary files differdeleted file mode 100644 index 7f9e8c90e..000000000 --- a/java/res/drawable-mdpi/key_hint_semicolon_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_simplequote_holo.9.png b/java/res/drawable-mdpi/key_hint_simplequote_holo.9.png Binary files differdeleted file mode 100644 index 5e1a45c0e..000000000 --- a/java/res/drawable-mdpi/key_hint_simplequote_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_slash_holo.9.png b/java/res/drawable-mdpi/key_hint_slash_holo.9.png Binary files differdeleted file mode 100644 index 645586a30..000000000 --- a/java/res/drawable-mdpi/key_hint_slash_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_slash_large_holo.9.png b/java/res/drawable-mdpi/key_hint_slash_large_holo.9.png Binary files differdeleted file mode 100644 index 75c3bb1a6..000000000 --- a/java/res/drawable-mdpi/key_hint_slash_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_smaller_holo.9.png b/java/res/drawable-mdpi/key_hint_smaller_holo.9.png Binary files differdeleted file mode 100644 index 2a0587cbd..000000000 --- a/java/res/drawable-mdpi/key_hint_smaller_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_star_holo.9.png b/java/res/drawable-mdpi/key_hint_star_holo.9.png Binary files differdeleted file mode 100644 index 9f33b9830..000000000 --- a/java/res/drawable-mdpi/key_hint_star_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_underscore_holo.9.png b/java/res/drawable-mdpi/key_hint_underscore_holo.9.png Binary files differdeleted file mode 100644 index 52e871e0a..000000000 --- a/java/res/drawable-mdpi/key_hint_underscore_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/key_hint_underscore_large_holo.9.png b/java/res/drawable-mdpi/key_hint_underscore_large_holo.9.png Binary files differdeleted file mode 100644 index ee0e83578..000000000 --- a/java/res/drawable-mdpi/key_hint_underscore_large_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_background_holo.9.png b/java/res/drawable-mdpi/keyboard_background_holo.9.png Binary files differindex a93966c92..f1d55c6dd 100644 --- a/java/res/drawable-mdpi/keyboard_background_holo.9.png +++ b/java/res/drawable-mdpi/keyboard_background_holo.9.png diff --git a/java/res/drawable-mdpi/keyboard_hint_0.9.png b/java/res/drawable-mdpi/keyboard_hint_0.9.png Binary files differdeleted file mode 100644 index 61ad1b50a..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_0.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_1.9.png b/java/res/drawable-mdpi/keyboard_hint_1.9.png Binary files differdeleted file mode 100644 index cd7772e71..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_1.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_2.9.png b/java/res/drawable-mdpi/keyboard_hint_2.9.png Binary files differdeleted file mode 100644 index fa5f8b79c..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_2.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_3.9.png b/java/res/drawable-mdpi/keyboard_hint_3.9.png Binary files differdeleted file mode 100644 index 0c7336cb7..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_3.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_4.9.png b/java/res/drawable-mdpi/keyboard_hint_4.9.png Binary files differdeleted file mode 100644 index 73ef06c0e..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_4.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_5.9.png b/java/res/drawable-mdpi/keyboard_hint_5.9.png Binary files differdeleted file mode 100644 index aea460e1c..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_5.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_6.9.png b/java/res/drawable-mdpi/keyboard_hint_6.9.png Binary files differdeleted file mode 100644 index 16a9237e3..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_6.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_7.9.png b/java/res/drawable-mdpi/keyboard_hint_7.9.png Binary files differdeleted file mode 100644 index 6747a19c0..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_7.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_8.9.png b/java/res/drawable-mdpi/keyboard_hint_8.9.png Binary files differdeleted file mode 100644 index 28be2fb86..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_8.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_9.9.png b/java/res/drawable-mdpi/keyboard_hint_9.9.png Binary files differdeleted file mode 100644 index 731d63b1b..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_9.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_at.9.png b/java/res/drawable-mdpi/keyboard_hint_at.9.png Binary files differdeleted file mode 100644 index 69baedef4..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_at.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_colon.9.png b/java/res/drawable-mdpi/keyboard_hint_colon.9.png Binary files differdeleted file mode 100644 index 9d0d7cbab..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_colon.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png b/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png Binary files differdeleted file mode 100644 index d24aa0f07..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png b/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png Binary files differdeleted file mode 100644 index f6cc7fe84..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_greater.9.png b/java/res/drawable-mdpi/keyboard_hint_greater.9.png Binary files differdeleted file mode 100644 index 5210392bf..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_greater.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_plus.9.png b/java/res/drawable-mdpi/keyboard_hint_plus.9.png Binary files differdeleted file mode 100644 index d1d85ac87..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_plus.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_question.9.png b/java/res/drawable-mdpi/keyboard_hint_question.9.png Binary files differdeleted file mode 100644 index 37f6e5f36..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_question.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_quote.9.png b/java/res/drawable-mdpi/keyboard_hint_quote.9.png Binary files differdeleted file mode 100644 index e7d2cb5e3..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_quote.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_smaller.9.png b/java/res/drawable-mdpi/keyboard_hint_smaller.9.png Binary files differdeleted file mode 100644 index 76553cf96..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_smaller.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_hint_star.9.png b/java/res/drawable-mdpi/keyboard_hint_star.9.png Binary files differdeleted file mode 100644 index 47978c46c..000000000 --- a/java/res/drawable-mdpi/keyboard_hint_star.9.png +++ /dev/null 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 Binary files differindex 286cf84fc..9a1b7aadd 100644 --- a/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png +++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png Binary files differnew file mode 100644 index 000000000..cb222b0f9 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.png Binary files differnew file mode 100644 index 000000000..07d980083 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.png 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 Binary files differindex e3f5be86d..05a332b8e 100644 --- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png +++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png Binary files differnew file mode 100644 index 000000000..fd1675512 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png Binary files differnew file mode 100644 index 000000000..1acbd8268 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png diff --git a/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png Binary files differindex 1f87a68e9..17faf86d0 100644 --- a/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png +++ b/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png diff --git a/java/res/drawable-xlarge/mic_base.png b/java/res/drawable-mdpi/mic_base.png Binary files differindex 53e29ff4b..53e29ff4b 100644 --- a/java/res/drawable-xlarge/mic_base.png +++ b/java/res/drawable-mdpi/mic_base.png diff --git a/java/res/drawable-xlarge/mic_full.png b/java/res/drawable-mdpi/mic_full.png Binary files differindex e3e3dfac3..e3e3dfac3 100644 --- a/java/res/drawable-xlarge/mic_full.png +++ b/java/res/drawable-mdpi/mic_full.png diff --git a/java/res/drawable-mdpi/mic_slash_holo.png b/java/res/drawable-mdpi/mic_slash_holo.png Binary files differdeleted file mode 100644 index 07181e6fa..000000000 --- a/java/res/drawable-mdpi/mic_slash_holo.png +++ /dev/null diff --git a/java/res/drawable-mdpi/ok_cancel.png b/java/res/drawable-mdpi/ok_cancel.png Binary files differdeleted file mode 100644 index 20d10f986..000000000 --- a/java/res/drawable-mdpi/ok_cancel.png +++ /dev/null diff --git a/java/res/drawable-mdpi/ok_cancel_holo.9.png b/java/res/drawable-mdpi/ok_cancel_holo.9.png Binary files differdeleted file mode 100644 index 035a4f6f0..000000000 --- a/java/res/drawable-mdpi/ok_cancel_holo.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level0.png b/java/res/drawable-mdpi/speak_now_level0.png Binary files differdeleted file mode 100644 index 5bd13603e..000000000 --- a/java/res/drawable-mdpi/speak_now_level0.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level0_holo.png b/java/res/drawable-mdpi/speak_now_level0_holo.png Binary files differdeleted file mode 100644 index 2090b95a5..000000000 --- a/java/res/drawable-mdpi/speak_now_level0_holo.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level1.png b/java/res/drawable-mdpi/speak_now_level1.png Binary files differdeleted file mode 100644 index ccb76b879..000000000 --- a/java/res/drawable-mdpi/speak_now_level1.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level1_holo.png b/java/res/drawable-mdpi/speak_now_level1_holo.png Binary files differdeleted file mode 100644 index 8acf482aa..000000000 --- a/java/res/drawable-mdpi/speak_now_level1_holo.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level2.png b/java/res/drawable-mdpi/speak_now_level2.png Binary files differdeleted file mode 100644 index 715f90081..000000000 --- a/java/res/drawable-mdpi/speak_now_level2.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level2_holo.png b/java/res/drawable-mdpi/speak_now_level2_holo.png Binary files differdeleted file mode 100644 index 4b307d542..000000000 --- a/java/res/drawable-mdpi/speak_now_level2_holo.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level3.png b/java/res/drawable-mdpi/speak_now_level3.png Binary files differdeleted file mode 100644 index 725248a25..000000000 --- a/java/res/drawable-mdpi/speak_now_level3.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level3_holo.png b/java/res/drawable-mdpi/speak_now_level3_holo.png Binary files differdeleted file mode 100644 index 7c7cd666f..000000000 --- a/java/res/drawable-mdpi/speak_now_level3_holo.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level4.png b/java/res/drawable-mdpi/speak_now_level4.png Binary files differdeleted file mode 100644 index ff6c50b40..000000000 --- a/java/res/drawable-mdpi/speak_now_level4.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level4_holo.png b/java/res/drawable-mdpi/speak_now_level4_holo.png Binary files differdeleted file mode 100644 index 362c45337..000000000 --- a/java/res/drawable-mdpi/speak_now_level4_holo.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level5.png b/java/res/drawable-mdpi/speak_now_level5.png Binary files differdeleted file mode 100644 index a5d6b89d6..000000000 --- a/java/res/drawable-mdpi/speak_now_level5.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level5_holo.png b/java/res/drawable-mdpi/speak_now_level5_holo.png Binary files differdeleted file mode 100644 index 1886befff..000000000 --- a/java/res/drawable-mdpi/speak_now_level5_holo.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level6.png b/java/res/drawable-mdpi/speak_now_level6.png Binary files differdeleted file mode 100644 index dcdb48d08..000000000 --- a/java/res/drawable-mdpi/speak_now_level6.png +++ /dev/null diff --git a/java/res/drawable-mdpi/speak_now_level6_holo.png b/java/res/drawable-mdpi/speak_now_level6_holo.png Binary files differdeleted file mode 100644 index 88e4131c8..000000000 --- a/java/res/drawable-mdpi/speak_now_level6_holo.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_bkeyboard_done.png b/java/res/drawable-mdpi/sym_bkeyboard_done.png Binary files differdeleted file mode 100644 index 05ce7c643..000000000 --- a/java/res/drawable-mdpi/sym_bkeyboard_done.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_bkeyboard_numalt.png b/java/res/drawable-mdpi/sym_bkeyboard_numalt.png Binary files differdeleted file mode 100644 index 4fa410b62..000000000 --- a/java/res/drawable-mdpi/sym_bkeyboard_numalt.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_bkeyboard_numpound.png b/java/res/drawable-mdpi/sym_bkeyboard_numpound.png Binary files differdeleted file mode 100644 index 9126eed0d..000000000 --- a/java/res/drawable-mdpi/sym_bkeyboard_numpound.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_bkeyboard_numstar.png b/java/res/drawable-mdpi/sym_bkeyboard_numstar.png Binary files differdeleted file mode 100644 index 9b9f1b986..000000000 --- a/java/res/drawable-mdpi/sym_bkeyboard_numstar.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_holo.png b/java/res/drawable-mdpi/sym_keyboard_delete_holo.png Binary files differindex 155579169..f8f6e6a80 100644 --- a/java/res/drawable-mdpi/sym_keyboard_delete_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_delete_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_done.png b/java/res/drawable-mdpi/sym_keyboard_done.png Binary files differdeleted file mode 100644 index c0d6d1394..000000000 --- a/java/res/drawable-mdpi/sym_keyboard_done.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_keyboard_feedback_done.png b/java/res/drawable-mdpi/sym_keyboard_feedback_done.png Binary files differdeleted file mode 100644 index 0d7ebd4e5..000000000 --- a/java/res/drawable-mdpi/sym_keyboard_feedback_done.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png b/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png Binary files differdeleted file mode 100644 index 494524a66..000000000 --- a/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_keyboard_mic_disabled.png b/java/res/drawable-mdpi/sym_keyboard_mic_disabled.png Binary files differdeleted file mode 100644 index e926b3fa6..000000000 --- a/java/res/drawable-mdpi/sym_keyboard_mic_disabled.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_keyboard_num0_holo.png b/java/res/drawable-mdpi/sym_keyboard_num0_holo.png Binary files differindex e1d395b45..2c57adf8b 100644 --- a/java/res/drawable-mdpi/sym_keyboard_num0_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_num0_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_num1_holo.png b/java/res/drawable-mdpi/sym_keyboard_num1_holo.png Binary files differindex 225436ac2..509e28f9b 100644 --- a/java/res/drawable-mdpi/sym_keyboard_num1_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_num1_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_num2_holo.png b/java/res/drawable-mdpi/sym_keyboard_num2_holo.png Binary files differindex e513fa4a0..0da18e772 100644 --- a/java/res/drawable-mdpi/sym_keyboard_num2_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_num2_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_num3_holo.png b/java/res/drawable-mdpi/sym_keyboard_num3_holo.png Binary files differindex b91e005fc..e8470586f 100644 --- a/java/res/drawable-mdpi/sym_keyboard_num3_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_num3_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_num4_holo.png b/java/res/drawable-mdpi/sym_keyboard_num4_holo.png Binary files differindex 65f88245b..13c216d3a 100644 --- a/java/res/drawable-mdpi/sym_keyboard_num4_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_num4_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_num5_holo.png b/java/res/drawable-mdpi/sym_keyboard_num5_holo.png Binary files differindex b89ef07eb..0065153fc 100644 --- a/java/res/drawable-mdpi/sym_keyboard_num5_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_num5_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_num6_holo.png b/java/res/drawable-mdpi/sym_keyboard_num6_holo.png Binary files differindex 931275a9e..09fab76a1 100644 --- a/java/res/drawable-mdpi/sym_keyboard_num6_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_num6_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_num7_holo.png b/java/res/drawable-mdpi/sym_keyboard_num7_holo.png Binary files differindex 9396c4c8f..d350fddc8 100644 --- a/java/res/drawable-mdpi/sym_keyboard_num7_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_num7_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_num8_holo.png b/java/res/drawable-mdpi/sym_keyboard_num8_holo.png Binary files differindex 12e3eef45..c40cb89a5 100644 --- a/java/res/drawable-mdpi/sym_keyboard_num8_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_num8_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_num9_holo.png b/java/res/drawable-mdpi/sym_keyboard_num9_holo.png Binary files differindex 6911c2b4f..73526939d 100644 --- a/java/res/drawable-mdpi/sym_keyboard_num9_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_num9_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_numalt.png b/java/res/drawable-mdpi/sym_keyboard_numalt.png Binary files differdeleted file mode 100644 index 32a2cf3ca..000000000 --- a/java/res/drawable-mdpi/sym_keyboard_numalt.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_keyboard_numpound.png b/java/res/drawable-mdpi/sym_keyboard_numpound.png Binary files differdeleted file mode 100644 index b2419d9ab..000000000 --- a/java/res/drawable-mdpi/sym_keyboard_numpound.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_keyboard_numstar.png b/java/res/drawable-mdpi/sym_keyboard_numstar.png Binary files differdeleted file mode 100644 index cb66f968f..000000000 --- a/java/res/drawable-mdpi/sym_keyboard_numstar.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_keyboard_return_holo.png b/java/res/drawable-mdpi/sym_keyboard_return_holo.png Binary files differindex d519ccecf..abbce5234 100644 --- a/java/res/drawable-mdpi/sym_keyboard_return_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_return_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_settings_holo.png b/java/res/drawable-mdpi/sym_keyboard_settings_holo.png Binary files differindex 784a45054..82df90376 100644 --- a/java/res/drawable-mdpi/sym_keyboard_settings_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_settings_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_holo.png Binary files differindex 91d6e32f9..49b9fc088 100644 --- a/java/res/drawable-mdpi/sym_keyboard_shift_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_shift_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png Binary files differindex 2bd053656..5375beb4e 100644 --- a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_space_holo.png b/java/res/drawable-mdpi/sym_keyboard_space_holo.png Binary files differindex 25e655d96..e413ddf2e 100644 --- a/java/res/drawable-mdpi/sym_keyboard_space_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_space_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_tab_holo.png b/java/res/drawable-mdpi/sym_keyboard_tab_holo.png Binary files differnew file mode 100644 index 000000000..c41af7b89 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_tab_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_holo.png b/java/res/drawable-mdpi/sym_keyboard_voice_holo.png Binary files differindex c1116dc17..158439a9f 100644 --- a/java/res/drawable-mdpi/sym_keyboard_voice_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_voice_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_off_holo.png b/java/res/drawable-mdpi/sym_keyboard_voice_off_holo.png Binary files differindex 44919dfcc..79026f1ab 100644 --- a/java/res/drawable-mdpi/sym_keyboard_voice_off_holo.png +++ b/java/res/drawable-mdpi/sym_keyboard_voice_off_holo.png diff --git a/java/res/drawable-mdpi/voice_ime_background.9.png b/java/res/drawable-mdpi/voice_ime_background.9.png Binary files differdeleted file mode 100644 index 9b15bc25f..000000000 --- a/java/res/drawable-mdpi/voice_ime_background.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/voice_swipe_hint.png b/java/res/drawable-mdpi/voice_swipe_hint.png Binary files differdeleted file mode 100644 index bb8873251..000000000 --- a/java/res/drawable-mdpi/voice_swipe_hint.png +++ /dev/null diff --git a/java/res/drawable-xlarge/vs_dialog_blue.9.png b/java/res/drawable-mdpi/vs_dialog_blue.9.png Binary files differindex cf27e8f43..cf27e8f43 100644 --- a/java/res/drawable-xlarge/vs_dialog_blue.9.png +++ b/java/res/drawable-mdpi/vs_dialog_blue.9.png diff --git a/java/res/drawable-xlarge/vs_dialog_red.9.png b/java/res/drawable-mdpi/vs_dialog_red.9.png Binary files differindex 6c08d5a30..6c08d5a30 100644 --- a/java/res/drawable-xlarge/vs_dialog_red.9.png +++ b/java/res/drawable-mdpi/vs_dialog_red.9.png diff --git a/java/res/drawable-xlarge/vs_dialog_yellow.9.png b/java/res/drawable-mdpi/vs_dialog_yellow.9.png Binary files differindex 2fb06c263..2fb06c263 100644 --- a/java/res/drawable-xlarge/vs_dialog_yellow.9.png +++ b/java/res/drawable-mdpi/vs_dialog_yellow.9.png diff --git a/java/res/drawable/vs_popup_mic_edge.png b/java/res/drawable-mdpi/vs_popup_mic_edge.png Binary files differindex 4ff6337a2..4ff6337a2 100644 --- a/java/res/drawable/vs_popup_mic_edge.png +++ b/java/res/drawable-mdpi/vs_popup_mic_edge.png diff --git a/java/res/drawable-mdpi/working.png b/java/res/drawable-mdpi/working.png Binary files differdeleted file mode 100644 index 4a930c52d..000000000 --- a/java/res/drawable-mdpi/working.png +++ /dev/null diff --git a/java/res/drawable-sw600dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw600dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png Binary files differnew file mode 100644 index 000000000..544ed7f78 --- /dev/null +++ b/java/res/drawable-sw600dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png diff --git a/java/res/drawable-sw600dp-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-hdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..2ffc6ea2b --- /dev/null +++ b/java/res/drawable-sw600dp-hdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-sw600dp-hdpi/sym_keyboard_numsymbol_holo.png b/java/res/drawable-sw600dp-hdpi/sym_keyboard_numsymbol_holo.png Binary files differnew file mode 100644 index 000000000..398eaea12 --- /dev/null +++ b/java/res/drawable-sw600dp-hdpi/sym_keyboard_numsymbol_holo.png diff --git a/java/res/drawable-sw600dp-hdpi/sym_keyboard_tab_holo.png b/java/res/drawable-sw600dp-hdpi/sym_keyboard_tab_holo.png Binary files differnew file mode 100644 index 000000000..1780f682b --- /dev/null +++ b/java/res/drawable-sw600dp-hdpi/sym_keyboard_tab_holo.png diff --git a/java/res/drawable-sw600dp-land-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-land-hdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..2ffc6ea2b --- /dev/null +++ b/java/res/drawable-sw600dp-land-hdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..f5d15b728 --- /dev/null +++ b/java/res/drawable-sw600dp-land-mdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-sw600dp-land-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-land-xhdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..bc37fa844 --- /dev/null +++ b/java/res/drawable-sw600dp-land-xhdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png Binary files differnew file mode 100644 index 000000000..2ad73041e --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png Binary files differnew file mode 100644 index 000000000..fc21e79c4 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png Binary files differnew file mode 100644 index 000000000..76cfbb221 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png Binary files differnew file mode 100644 index 000000000..73748c2fb --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png Binary files differnew file mode 100644 index 000000000..059d4ac2e --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png Binary files differnew file mode 100644 index 000000000..e5cfdec88 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_normal_holo.9.png Binary files differnew file mode 100644 index 000000000..060524a53 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_normal_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png Binary files differnew file mode 100644 index 000000000..f4b061e07 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png Binary files differnew file mode 100644 index 000000000..ffa7386df --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..f5d15b728 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-sw600dp-mdpi/keyboard_background_holo.9.png Binary files differindex b137b0021..a93966c92 100644 --- a/java/res/drawable-mdpi/key_hint_underline_holo.9.png +++ b/java/res/drawable-sw600dp-mdpi/keyboard_background_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/keyboard_popup_panel_background_holo.9.png b/java/res/drawable-sw600dp-mdpi/keyboard_popup_panel_background_holo.9.png Binary files differnew file mode 100644 index 000000000..7be7ab7e2 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/keyboard_popup_panel_background_holo.9.png diff --git a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-sw600dp-mdpi/keyboard_suggest_strip_holo.9.png Binary files differindex 9845e3bd6..1f87a68e9 100644 --- a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png +++ b/java/res/drawable-sw600dp-mdpi/keyboard_suggest_strip_holo.9.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_delete_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_delete_holo.png Binary files differnew file mode 100644 index 000000000..155579169 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_delete_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num0_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num0_holo.png Binary files differnew file mode 100644 index 000000000..e1d395b45 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num0_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num1_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num1_holo.png Binary files differnew file mode 100644 index 000000000..225436ac2 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num1_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num2_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num2_holo.png Binary files differnew file mode 100644 index 000000000..e513fa4a0 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num2_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num3_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num3_holo.png Binary files differnew file mode 100644 index 000000000..b91e005fc --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num3_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num4_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num4_holo.png Binary files differnew file mode 100644 index 000000000..65f88245b --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num4_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num5_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num5_holo.png Binary files differnew file mode 100644 index 000000000..b89ef07eb --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num5_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num6_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num6_holo.png Binary files differnew file mode 100644 index 000000000..931275a9e --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num6_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num7_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num7_holo.png Binary files differnew file mode 100644 index 000000000..9396c4c8f --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num7_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num8_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num8_holo.png Binary files differnew file mode 100644 index 000000000..12e3eef45 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num8_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_num9_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num9_holo.png Binary files differnew file mode 100644 index 000000000..6911c2b4f --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_num9_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numbpound_holo.png Binary files differindex e3a8b4900..e3a8b4900 100644 --- a/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numbpound_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numbstar_holo.png Binary files differindex e80e9345f..e80e9345f 100644 --- a/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numbstar_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_numsymbol_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numsymbol_holo.png Binary files differnew file mode 100644 index 000000000..73153849c --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_numsymbol_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_return_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_return_holo.png Binary files differnew file mode 100644 index 000000000..d519ccecf --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_return_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_settings_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_settings_holo.png Binary files differnew file mode 100644 index 000000000..784a45054 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_settings_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_holo.png Binary files differnew file mode 100644 index 000000000..91d6e32f9 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_locked_holo.png Binary files differnew file mode 100644 index 000000000..2bd053656 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_shift_locked_holo.png diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_space_holo.png Binary files differindex 594fe211c..25e655d96 100644 --- a/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_space_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_tab_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_tab_holo.png Binary files differnew file mode 100644 index 000000000..5acd12cc4 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_tab_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_holo.png Binary files differnew file mode 100644 index 000000000..c1116dc17 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_holo.png diff --git a/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_off_holo.png b/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_off_holo.png Binary files differnew file mode 100644 index 000000000..081a13096 --- /dev/null +++ b/java/res/drawable-sw600dp-mdpi/sym_keyboard_voice_off_holo.png diff --git a/java/res/drawable-sw600dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw600dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png Binary files differnew file mode 100644 index 000000000..8b5d1b098 --- /dev/null +++ b/java/res/drawable-sw600dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png diff --git a/java/res/drawable-sw600dp-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw600dp-xhdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..bc37fa844 --- /dev/null +++ b/java/res/drawable-sw600dp-xhdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-sw600dp-xhdpi/sym_keyboard_numsymbol_holo.png b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_numsymbol_holo.png Binary files differnew file mode 100644 index 000000000..c7a8b286a --- /dev/null +++ b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_numsymbol_holo.png diff --git a/java/res/drawable-sw600dp-xhdpi/sym_keyboard_tab_holo.png b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_tab_holo.png Binary files differnew file mode 100644 index 000000000..fd9f8cce6 --- /dev/null +++ b/java/res/drawable-sw600dp-xhdpi/sym_keyboard_tab_holo.png diff --git a/java/res/drawable-sw768dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw768dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png Binary files differnew file mode 100644 index 000000000..544ed7f78 --- /dev/null +++ b/java/res/drawable-sw768dp-hdpi/btn_keyboard_key_popup_selected_holo.9.png diff --git a/java/res/drawable-sw768dp-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-hdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..2ffc6ea2b --- /dev/null +++ b/java/res/drawable-sw768dp-hdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-sw768dp-land-hdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-land-hdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..2b93014e1 --- /dev/null +++ b/java/res/drawable-sw768dp-land-hdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-mdpi/key_hint_minus_holo.9.png b/java/res/drawable-sw768dp-land-mdpi/hint_popup_holo.9.png Binary files differindex e59a31587..c409cea00 100644 --- a/java/res/drawable-mdpi/key_hint_minus_holo.9.png +++ b/java/res/drawable-sw768dp-land-mdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-sw768dp-land-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-land-xhdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..3cd20d34f --- /dev/null +++ b/java/res/drawable-sw768dp-land-xhdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png Binary files differnew file mode 100644 index 000000000..2ad73041e --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png Binary files differnew file mode 100644 index 000000000..fc21e79c4 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png Binary files differnew file mode 100644 index 000000000..76cfbb221 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png Binary files differnew file mode 100644 index 000000000..73748c2fb --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png Binary files differnew file mode 100644 index 000000000..059d4ac2e --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png Binary files differnew file mode 100644 index 000000000..e5cfdec88 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_normal_holo.9.png Binary files differnew file mode 100644 index 000000000..060524a53 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_normal_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png Binary files differnew file mode 100644 index 000000000..f4b061e07 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_light_pressed_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png Binary files differnew file mode 100644 index 000000000..ffa7386df --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/btn_keyboard_key_popup_selected_holo.9.png diff --git a/java/res/drawable-land-mdpi/key_hint_minus_large_holo.9.png b/java/res/drawable-sw768dp-mdpi/hint_popup_holo.9.png Binary files differindex 52c28dd87..01d1139d8 100644 --- a/java/res/drawable-land-mdpi/key_hint_minus_large_holo.9.png +++ b/java/res/drawable-sw768dp-mdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-sw768dp-mdpi/keyboard_background_holo.9.png Binary files differindex 06f3efb7e..a93966c92 100644 --- a/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png +++ b/java/res/drawable-sw768dp-mdpi/keyboard_background_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/keyboard_popup_panel_background_holo.9.png b/java/res/drawable-sw768dp-mdpi/keyboard_popup_panel_background_holo.9.png Binary files differnew file mode 100644 index 000000000..7be7ab7e2 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/keyboard_popup_panel_background_holo.9.png diff --git a/java/res/drawable-land-mdpi/key_hint_underscore_holo.9.png b/java/res/drawable-sw768dp-mdpi/keyboard_suggest_strip_holo.9.png Binary files differindex 52e871e0a..1f87a68e9 100644 --- a/java/res/drawable-land-mdpi/key_hint_underscore_holo.9.png +++ b/java/res/drawable-sw768dp-mdpi/keyboard_suggest_strip_holo.9.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_delete_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_delete_holo.png Binary files differnew file mode 100644 index 000000000..155579169 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_delete_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num0_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num0_holo.png Binary files differnew file mode 100644 index 000000000..e1d395b45 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num0_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num1_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num1_holo.png Binary files differnew file mode 100644 index 000000000..225436ac2 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num1_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num2_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num2_holo.png Binary files differnew file mode 100644 index 000000000..e513fa4a0 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num2_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num3_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num3_holo.png Binary files differnew file mode 100644 index 000000000..b91e005fc --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num3_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num4_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num4_holo.png Binary files differnew file mode 100644 index 000000000..65f88245b --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num4_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num5_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num5_holo.png Binary files differnew file mode 100644 index 000000000..b89ef07eb --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num5_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num6_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num6_holo.png Binary files differnew file mode 100644 index 000000000..931275a9e --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num6_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num7_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num7_holo.png Binary files differnew file mode 100644 index 000000000..9396c4c8f --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num7_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num8_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num8_holo.png Binary files differnew file mode 100644 index 000000000..12e3eef45 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num8_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_num9_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num9_holo.png Binary files differnew file mode 100644 index 000000000..6911c2b4f --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_num9_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbpound_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbpound_holo.png Binary files differnew file mode 100644 index 000000000..e3a8b4900 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbpound_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbstar_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbstar_holo.png Binary files differnew file mode 100644 index 000000000..e80e9345f --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_numbstar_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_return_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_return_holo.png Binary files differnew file mode 100644 index 000000000..d519ccecf --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_return_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_settings_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_settings_holo.png Binary files differnew file mode 100644 index 000000000..784a45054 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_settings_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_holo.png Binary files differnew file mode 100644 index 000000000..91d6e32f9 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_locked_holo.png Binary files differnew file mode 100644 index 000000000..2bd053656 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_shift_locked_holo.png diff --git a/java/res/drawable-land-mdpi/key_hint_minus_holo.9.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_space_holo.png Binary files differindex e59a31587..25e655d96 100644 --- a/java/res/drawable-land-mdpi/key_hint_minus_holo.9.png +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_space_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_holo.png Binary files differnew file mode 100644 index 000000000..c1116dc17 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_holo.png diff --git a/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_off_holo.png b/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_off_holo.png Binary files differnew file mode 100644 index 000000000..081a13096 --- /dev/null +++ b/java/res/drawable-sw768dp-mdpi/sym_keyboard_voice_off_holo.png diff --git a/java/res/drawable-sw768dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-sw768dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png Binary files differnew file mode 100644 index 000000000..8b5d1b098 --- /dev/null +++ b/java/res/drawable-sw768dp-xhdpi/btn_keyboard_key_popup_selected_holo.9.png diff --git a/java/res/drawable-sw768dp-xhdpi/hint_popup_holo.9.png b/java/res/drawable-sw768dp-xhdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..bc37fa844 --- /dev/null +++ b/java/res/drawable-sw768dp-xhdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_candidate_pressed.9.png b/java/res/drawable-xhdpi/btn_candidate_pressed.9.png Binary files differnew file mode 100644 index 000000000..41e126a73 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_candidate_pressed.9.png diff --git a/java/res/drawable-xhdpi/btn_center_default.9.png b/java/res/drawable-xhdpi/btn_center_default.9.png Binary files differnew file mode 100644 index 000000000..e847425f8 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_center_default.9.png diff --git a/java/res/drawable-xhdpi/btn_center_pressed.9.png b/java/res/drawable-xhdpi/btn_center_pressed.9.png Binary files differnew file mode 100644 index 000000000..facfd4323 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_center_pressed.9.png diff --git a/java/res/drawable-xhdpi/btn_center_selected.9.png b/java/res/drawable-xhdpi/btn_center_selected.9.png Binary files differnew file mode 100644 index 000000000..facfd4323 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_center_selected.9.png diff --git a/java/res/drawable-xhdpi/btn_close_candidates_pane.9.png b/java/res/drawable-xhdpi/btn_close_candidates_pane.9.png Binary files differnew file mode 100644 index 000000000..9d797ed0d --- /dev/null +++ b/java/res/drawable-xhdpi/btn_close_candidates_pane.9.png diff --git a/java/res/drawable-xhdpi/btn_expand_candidates_pane.9.png b/java/res/drawable-xhdpi/btn_expand_candidates_pane.9.png Binary files differnew file mode 100644 index 000000000..88d01c9c8 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_expand_candidates_pane.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png Binary files differnew file mode 100644 index 000000000..eae1e3a54 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png Binary files differnew file mode 100644 index 000000000..b9667be13 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png Binary files differnew file mode 100644 index 000000000..13bad8f1a --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png Binary files differnew file mode 100644 index 000000000..1719992e1 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png Binary files differnew file mode 100644 index 000000000..853b8bc6e --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_holo.9.png Binary files differnew file mode 100644 index 000000000..0eb9c9f93 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png Binary files differnew file mode 100644 index 000000000..1edfd64fe --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png Binary files differnew file mode 100644 index 000000000..5114bf5f1 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png Binary files differnew file mode 100644 index 000000000..dfdbfadd3 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png Binary files differnew file mode 100644 index 000000000..992395039 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png Binary files differnew file mode 100644 index 000000000..0e2733e17 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png Binary files differnew file mode 100644 index 000000000..474951c1d --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_normal.9.png Binary files differnew file mode 100644 index 000000000..f7e32f764 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_normal.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png Binary files differnew file mode 100644 index 000000000..00c447604 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png Binary files differnew file mode 100644 index 000000000..ea13a7fdf --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png Binary files differnew file mode 100644 index 000000000..4a255f7fb --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_normal.9.png Binary files differnew file mode 100644 index 000000000..2ed1b3447 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_normal.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png Binary files differnew file mode 100644 index 000000000..057c5716e --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png Binary files differnew file mode 100644 index 000000000..5d8e46de0 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png Binary files differnew file mode 100644 index 000000000..5bcd1c9c2 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png Binary files differnew file mode 100644 index 000000000..f53b40419 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png Binary files differnew file mode 100644 index 000000000..3c6ae6be8 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png Binary files differnew file mode 100644 index 000000000..eebe7d391 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png Binary files differnew file mode 100644 index 000000000..655bfb2c6 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png Binary files differnew file mode 100644 index 000000000..336248aae --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png Binary files differnew file mode 100644 index 000000000..bb1c72bb3 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.png Binary files differnew file mode 100644 index 000000000..10d788dfb --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png Binary files differnew file mode 100644 index 000000000..0a9a9e44d --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png Binary files differnew file mode 100644 index 000000000..f73911674 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png Binary files differnew file mode 100644 index 000000000..34a948f4e --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png Binary files differnew file mode 100644 index 000000000..520f12d3f --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png diff --git a/java/res/drawable-xhdpi/candidate_feedback_background.9.png b/java/res/drawable-xhdpi/candidate_feedback_background.9.png Binary files differnew file mode 100644 index 000000000..0ec90e5ea --- /dev/null +++ b/java/res/drawable-xhdpi/candidate_feedback_background.9.png diff --git a/java/res/drawable-xhdpi/caution.png b/java/res/drawable-xhdpi/caution.png Binary files differnew file mode 100644 index 000000000..cfc3f7547 --- /dev/null +++ b/java/res/drawable-xhdpi/caution.png diff --git a/java/res/drawable-xhdpi/hint_popup.9.png b/java/res/drawable-xhdpi/hint_popup.9.png Binary files differnew file mode 100644 index 000000000..add474337 --- /dev/null +++ b/java/res/drawable-xhdpi/hint_popup.9.png diff --git a/java/res/drawable-xhdpi/hint_popup_holo.9.png b/java/res/drawable-xhdpi/hint_popup_holo.9.png Binary files differnew file mode 100644 index 000000000..a2b114e14 --- /dev/null +++ b/java/res/drawable-xhdpi/hint_popup_holo.9.png diff --git a/java/res/drawable-xhdpi/ic_dialog_keyboard.png b/java/res/drawable-xhdpi/ic_dialog_keyboard.png Binary files differnew file mode 100644 index 000000000..f114c93b6 --- /dev/null +++ b/java/res/drawable-xhdpi/ic_dialog_keyboard.png diff --git a/java/res/drawable-xhdpi/ic_mic_dialog.png b/java/res/drawable-xhdpi/ic_mic_dialog.png Binary files differnew file mode 100644 index 000000000..5d6399c0a --- /dev/null +++ b/java/res/drawable-xhdpi/ic_mic_dialog.png diff --git a/java/res/drawable-xhdpi/ic_subtype_keyboard.png b/java/res/drawable-xhdpi/ic_subtype_keyboard.png Binary files differnew file mode 100644 index 000000000..a79bb3458 --- /dev/null +++ b/java/res/drawable-xhdpi/ic_subtype_keyboard.png diff --git a/java/res/drawable-xhdpi/ic_subtype_mic.png b/java/res/drawable-xhdpi/ic_subtype_mic.png Binary files differnew file mode 100644 index 000000000..fc8d18cc2 --- /dev/null +++ b/java/res/drawable-xhdpi/ic_subtype_mic.png diff --git a/java/res/drawable-xhdpi/ic_suggest_strip_microphone.png b/java/res/drawable-xhdpi/ic_suggest_strip_microphone.png Binary files differnew file mode 100644 index 000000000..d65d28708 --- /dev/null +++ b/java/res/drawable-xhdpi/ic_suggest_strip_microphone.png diff --git a/java/res/drawable-xhdpi/ic_suggest_strip_microphone_swipe.png b/java/res/drawable-xhdpi/ic_suggest_strip_microphone_swipe.png Binary files differnew file mode 100644 index 000000000..889378a6a --- /dev/null +++ b/java/res/drawable-xhdpi/ic_suggest_strip_microphone_swipe.png diff --git a/java/res/drawable-xhdpi/keyboard_background.9.png b/java/res/drawable-xhdpi/keyboard_background.9.png Binary files differnew file mode 100644 index 000000000..263996322 --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_background.9.png diff --git a/java/res/drawable-xhdpi/keyboard_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_background_holo.9.png Binary files differnew file mode 100644 index 000000000..58d15142b --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_background_holo.9.png diff --git a/java/res/drawable-xhdpi/keyboard_dark_background.9.png b/java/res/drawable-xhdpi/keyboard_dark_background.9.png Binary files differnew file mode 100644 index 000000000..27b7a108c --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_dark_background.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background.9.png Binary files differnew file mode 100644 index 000000000..16c76106c --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png Binary files differnew file mode 100644 index 000000000..44675ba00 --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png Binary files differnew file mode 100644 index 000000000..cfd1f5242 --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.png Binary files differnew file mode 100644 index 000000000..a01c1733d --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background.9.png Binary files differnew file mode 100644 index 000000000..e020e34b1 --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png Binary files differnew file mode 100644 index 000000000..1d2abc26b --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png Binary files differnew file mode 100644 index 000000000..5616d1988 --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png Binary files differnew file mode 100644 index 000000000..ecf9c2cbc --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background.9.png Binary files differnew file mode 100644 index 000000000..79f7ab00a --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_popup_panel_background.9.png diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip.9.png b/java/res/drawable-xhdpi/keyboard_suggest_strip.9.png Binary files differnew file mode 100644 index 000000000..1b568df03 --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_suggest_strip.9.png diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip_divider.png b/java/res/drawable-xhdpi/keyboard_suggest_strip_divider.png Binary files differnew file mode 100644 index 000000000..cd7c2c7a2 --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_suggest_strip_divider.png diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png Binary files differnew file mode 100644 index 000000000..f4ff7dc1c --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png diff --git a/java/res/drawable-xhdpi/mic_base.png b/java/res/drawable-xhdpi/mic_base.png Binary files differnew file mode 100644 index 000000000..5c060bec9 --- /dev/null +++ b/java/res/drawable-xhdpi/mic_base.png diff --git a/java/res/drawable-xhdpi/mic_full.png b/java/res/drawable-xhdpi/mic_full.png Binary files differnew file mode 100644 index 000000000..32ffe124e --- /dev/null +++ b/java/res/drawable-xhdpi/mic_full.png diff --git a/java/res/drawable-xhdpi/mic_slash.png b/java/res/drawable-xhdpi/mic_slash.png Binary files differnew file mode 100644 index 000000000..18b22542b --- /dev/null +++ b/java/res/drawable-xhdpi/mic_slash.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_123_mic.png b/java/res/drawable-xhdpi/sym_bkeyboard_123_mic.png Binary files differnew file mode 100644 index 000000000..0aefaa1c3 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_123_mic.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_delete.png b/java/res/drawable-xhdpi/sym_bkeyboard_delete.png Binary files differnew file mode 100644 index 000000000..b84ee76dc --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_delete.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_mic.png b/java/res/drawable-xhdpi/sym_bkeyboard_mic.png Binary files differnew file mode 100644 index 000000000..8c3f11dd4 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_mic.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num0.png b/java/res/drawable-xhdpi/sym_bkeyboard_num0.png Binary files differnew file mode 100644 index 000000000..da8d50a8c --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_num0.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num1.png b/java/res/drawable-xhdpi/sym_bkeyboard_num1.png Binary files differnew file mode 100644 index 000000000..62443eb1c --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_num1.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num2.png b/java/res/drawable-xhdpi/sym_bkeyboard_num2.png Binary files differnew file mode 100644 index 000000000..4b3ef7ecc --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_num2.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num3.png b/java/res/drawable-xhdpi/sym_bkeyboard_num3.png Binary files differnew file mode 100644 index 000000000..48315e499 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_num3.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num4.png b/java/res/drawable-xhdpi/sym_bkeyboard_num4.png Binary files differnew file mode 100644 index 000000000..17958d7cc --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_num4.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num5.png b/java/res/drawable-xhdpi/sym_bkeyboard_num5.png Binary files differnew file mode 100644 index 000000000..43716c424 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_num5.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num6.png b/java/res/drawable-xhdpi/sym_bkeyboard_num6.png Binary files differnew file mode 100644 index 000000000..09f2b428d --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_num6.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num7.png b/java/res/drawable-xhdpi/sym_bkeyboard_num7.png Binary files differnew file mode 100644 index 000000000..72438ec0f --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_num7.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num8.png b/java/res/drawable-xhdpi/sym_bkeyboard_num8.png Binary files differnew file mode 100644 index 000000000..403b53f71 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_num8.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_num9.png b/java/res/drawable-xhdpi/sym_bkeyboard_num9.png Binary files differnew file mode 100644 index 000000000..644c2a4df --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_num9.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_return.png b/java/res/drawable-xhdpi/sym_bkeyboard_return.png Binary files differnew file mode 100644 index 000000000..1632ecd8e --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_return.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_search.png b/java/res/drawable-xhdpi/sym_bkeyboard_search.png Binary files differnew file mode 100644 index 000000000..69d8b22d1 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_search.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_settings.png b/java/res/drawable-xhdpi/sym_bkeyboard_settings.png Binary files differnew file mode 100644 index 000000000..050154a3a --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_settings.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_shift.png b/java/res/drawable-xhdpi/sym_bkeyboard_shift.png Binary files differnew file mode 100644 index 000000000..d15d11a50 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_shift.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_shift_locked.png b/java/res/drawable-xhdpi/sym_bkeyboard_shift_locked.png Binary files differnew file mode 100644 index 000000000..83b287fea --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_shift_locked.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_space.png b/java/res/drawable-xhdpi/sym_bkeyboard_space.png Binary files differnew file mode 100644 index 000000000..5ca62c7b7 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_space.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_tab.png b/java/res/drawable-xhdpi/sym_bkeyboard_tab.png Binary files differnew file mode 100644 index 000000000..6ca199755 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_tab.png diff --git a/java/res/drawable-xhdpi/sym_bkeyboard_voice_off.png b/java/res/drawable-xhdpi/sym_bkeyboard_voice_off.png Binary files differnew file mode 100644 index 000000000..fc6a4eb59 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_bkeyboard_voice_off.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_123_mic.png b/java/res/drawable-xhdpi/sym_keyboard_123_mic.png Binary files differnew file mode 100644 index 000000000..bcb097967 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_123_mic.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete.png b/java/res/drawable-xhdpi/sym_keyboard_delete.png Binary files differnew file mode 100644 index 000000000..3c0b8b186 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_delete.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete_holo.png b/java/res/drawable-xhdpi/sym_keyboard_delete_holo.png Binary files differnew file mode 100644 index 000000000..5150073b8 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_delete_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_123_mic.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_123_mic.png Binary files differnew file mode 100644 index 000000000..5238c16d2 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_123_mic.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_delete.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_delete.png Binary files differnew file mode 100644 index 000000000..f0c29e7c8 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_delete.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_left.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_left.png Binary files differnew file mode 100644 index 000000000..a90b8dacf --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_left.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_right.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_right.png Binary files differnew file mode 100644 index 000000000..1123bf36e --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_right.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_mic.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_mic.png Binary files differnew file mode 100644 index 000000000..5ac27ebad --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_mic.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_numalt.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_numalt.png Binary files differnew file mode 100644 index 000000000..b68e6066a --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_numalt.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_return.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_return.png Binary files differnew file mode 100644 index 000000000..c777d00d6 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_return.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_search.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_search.png Binary files differnew file mode 100644 index 000000000..32e0789dd --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_search.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_settings.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_settings.png Binary files differnew file mode 100644 index 000000000..021cafacb --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_settings.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_shift.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_shift.png Binary files differnew file mode 100644 index 000000000..d8c0325c4 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_shift.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_space.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_space.png Binary files differnew file mode 100644 index 000000000..cee10568d --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_space.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png Binary files differnew file mode 100644 index 000000000..0650e01cb --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-xhdpi/sym_keyboard_language_arrows_left.png Binary files differnew file mode 100644 index 000000000..226f2e617 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_language_arrows_left.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-xhdpi/sym_keyboard_language_arrows_right.png Binary files differnew file mode 100644 index 000000000..1e02e7e46 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_language_arrows_right.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_mic.png b/java/res/drawable-xhdpi/sym_keyboard_mic.png Binary files differnew file mode 100644 index 000000000..1323b6d1e --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_mic.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num0.png b/java/res/drawable-xhdpi/sym_keyboard_num0.png Binary files differnew file mode 100644 index 000000000..06bd3bfc7 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num0.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num0_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num0_holo.png Binary files differnew file mode 100644 index 000000000..33e80bdc3 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num0_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num1.png b/java/res/drawable-xhdpi/sym_keyboard_num1.png Binary files differnew file mode 100644 index 000000000..dfa0cfe78 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num1.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num1_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num1_holo.png Binary files differnew file mode 100644 index 000000000..dce3ee801 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num1_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num2.png b/java/res/drawable-xhdpi/sym_keyboard_num2.png Binary files differnew file mode 100644 index 000000000..4bd2ead08 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num2.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num2_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num2_holo.png Binary files differnew file mode 100644 index 000000000..e776efb33 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num2_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num3.png b/java/res/drawable-xhdpi/sym_keyboard_num3.png Binary files differnew file mode 100644 index 000000000..39db11228 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num3.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num3_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num3_holo.png Binary files differnew file mode 100644 index 000000000..66e7b3735 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num3_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num4.png b/java/res/drawable-xhdpi/sym_keyboard_num4.png Binary files differnew file mode 100644 index 000000000..60356947e --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num4.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num4_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num4_holo.png Binary files differnew file mode 100644 index 000000000..bf70e2890 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num4_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num5.png b/java/res/drawable-xhdpi/sym_keyboard_num5.png Binary files differnew file mode 100644 index 000000000..3238b3f40 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num5.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num5_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num5_holo.png Binary files differnew file mode 100644 index 000000000..98d0b5cc9 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num5_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num6.png b/java/res/drawable-xhdpi/sym_keyboard_num6.png Binary files differnew file mode 100644 index 000000000..c8da5a9d0 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num6.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num6_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num6_holo.png Binary files differnew file mode 100644 index 000000000..67340ef6a --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num6_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num7.png b/java/res/drawable-xhdpi/sym_keyboard_num7.png Binary files differnew file mode 100644 index 000000000..553cf5f0d --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num7.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num7_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num7_holo.png Binary files differnew file mode 100644 index 000000000..843224954 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num7_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num8.png b/java/res/drawable-xhdpi/sym_keyboard_num8.png Binary files differnew file mode 100644 index 000000000..eaaf53390 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num8.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num8_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num8_holo.png Binary files differnew file mode 100644 index 000000000..6d520bca9 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num8_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num9.png b/java/res/drawable-xhdpi/sym_keyboard_num9.png Binary files differnew file mode 100644 index 000000000..b510d3774 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num9.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_num9_holo.png b/java/res/drawable-xhdpi/sym_keyboard_num9_holo.png Binary files differnew file mode 100644 index 000000000..158c87957 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_num9_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_return.png b/java/res/drawable-xhdpi/sym_keyboard_return.png Binary files differnew file mode 100644 index 000000000..ad061227e --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_return.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_return_holo.png b/java/res/drawable-xhdpi/sym_keyboard_return_holo.png Binary files differnew file mode 100644 index 000000000..6e2e1c0b9 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_return_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_search.png b/java/res/drawable-xhdpi/sym_keyboard_search.png Binary files differnew file mode 100644 index 000000000..aa785a221 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_search.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings.png b/java/res/drawable-xhdpi/sym_keyboard_settings.png Binary files differnew file mode 100644 index 000000000..50704255d --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_settings.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings_holo.png b/java/res/drawable-xhdpi/sym_keyboard_settings_holo.png Binary files differnew file mode 100644 index 000000000..018e45d9e --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_settings_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift.png b/java/res/drawable-xhdpi/sym_keyboard_shift.png Binary files differnew file mode 100644 index 000000000..290170619 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_shift.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_holo.png b/java/res/drawable-xhdpi/sym_keyboard_shift_holo.png Binary files differnew file mode 100644 index 000000000..41d4ca176 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_shift_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked.png Binary files differnew file mode 100644 index 000000000..a5deb60e9 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_shift_locked.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo.png Binary files differnew file mode 100644 index 000000000..b811b7464 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_space.png b/java/res/drawable-xhdpi/sym_keyboard_space.png Binary files differnew file mode 100644 index 000000000..66fc3e9d3 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_space.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_space_holo.png b/java/res/drawable-xhdpi/sym_keyboard_space_holo.png Binary files differnew file mode 100644 index 000000000..da8926496 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_space_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_space_led.9.png b/java/res/drawable-xhdpi/sym_keyboard_space_led.9.png Binary files differnew file mode 100644 index 000000000..6525fefab --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_space_led.9.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_tab.png b/java/res/drawable-xhdpi/sym_keyboard_tab.png Binary files differnew file mode 100644 index 000000000..0ef2ab5b9 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_tab.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_tab_holo.png b/java/res/drawable-xhdpi/sym_keyboard_tab_holo.png Binary files differnew file mode 100644 index 000000000..dd207ca3f --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_tab_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_holo.png b/java/res/drawable-xhdpi/sym_keyboard_voice_holo.png Binary files differnew file mode 100644 index 000000000..d73e49910 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_voice_holo.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo.png b/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo.png Binary files differnew file mode 100644 index 000000000..8d34a5ada --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo.png diff --git a/java/res/drawable-xhdpi/vs_dialog_blue.9.png b/java/res/drawable-xhdpi/vs_dialog_blue.9.png Binary files differnew file mode 100644 index 000000000..3284d78ef --- /dev/null +++ b/java/res/drawable-xhdpi/vs_dialog_blue.9.png diff --git a/java/res/drawable-xhdpi/vs_dialog_red.9.png b/java/res/drawable-xhdpi/vs_dialog_red.9.png Binary files differnew file mode 100644 index 000000000..5af2465b5 --- /dev/null +++ b/java/res/drawable-xhdpi/vs_dialog_red.9.png diff --git a/java/res/drawable-xhdpi/vs_dialog_yellow.9.png b/java/res/drawable-xhdpi/vs_dialog_yellow.9.png Binary files differnew file mode 100644 index 000000000..4f50439de --- /dev/null +++ b/java/res/drawable-xhdpi/vs_dialog_yellow.9.png diff --git a/java/res/drawable-xhdpi/vs_popup_mic_edge.png b/java/res/drawable-xhdpi/vs_popup_mic_edge.png Binary files differnew file mode 100644 index 000000000..1063cb464 --- /dev/null +++ b/java/res/drawable-xhdpi/vs_popup_mic_edge.png diff --git a/java/res/drawable-xlarge/caution.png b/java/res/drawable-xlarge/caution.png Binary files differdeleted file mode 100755 index eaef53425..000000000 --- a/java/res/drawable-xlarge/caution.png +++ /dev/null diff --git a/java/res/drawable-xlarge/mic_slash.png b/java/res/drawable-xlarge/mic_slash.png Binary files differdeleted file mode 100644 index 1dd05c5b4..000000000 --- a/java/res/drawable-xlarge/mic_slash.png +++ /dev/null diff --git a/java/res/drawable/btn_candidate_holo.xml b/java/res/drawable/btn_candidate_ics.xml index 66cd2460b..e4257e327 100644 --- a/java/res/drawable/btn_candidate_holo.xml +++ b/java/res/drawable/btn_candidate_ics.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. diff --git a/java/res/drawable/btn_center_default.9.png b/java/res/drawable/btn_center_default.9.png Binary files differdeleted file mode 100755 index d5ec36ba4..000000000 --- a/java/res/drawable/btn_center_default.9.png +++ /dev/null diff --git a/java/res/drawable/btn_center_pressed.9.png b/java/res/drawable/btn_center_pressed.9.png Binary files differdeleted file mode 100755 index 593a679d0..000000000 --- a/java/res/drawable/btn_center_pressed.9.png +++ /dev/null diff --git a/java/res/drawable/btn_center_selected.9.png b/java/res/drawable/btn_center_selected.9.png Binary files differdeleted file mode 100644 index f1914a886..000000000 --- a/java/res/drawable/btn_center_selected.9.png +++ /dev/null diff --git a/java/res/drawable/btn_keyboard_key2.xml b/java/res/drawable/btn_keyboard_key2.xml deleted file mode 100644 index bd745b76e..000000000 --- a/java/res/drawable/btn_keyboard_key2.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - - <!-- Toggle keys. Use checkable/checked state. --> - - <item android:state_checkable="true" android:state_checked="true" - android:state_pressed="true" - android:drawable="@drawable/btn_keyboard_key_pressed_on" /> - <item android:state_checkable="true" android:state_pressed="true" - android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" /> - <item android:state_checkable="true" android:state_checked="true" - android:drawable="@drawable/btn_keyboard_key_normal_on" /> - <item android:state_checkable="true" - android:drawable="@drawable/btn_keyboard_key_fulltrans_normal" /> - - <!-- Normal keys --> - - <item android:state_pressed="true" - android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" /> - <item android:drawable="@drawable/btn_keyboard_key_fulltrans_normal" /> -</selector> diff --git a/java/res/drawable/btn_keyboard_key_honeycomb.xml b/java/res/drawable/btn_keyboard_key_ics.xml index 3dab8430f..7335cc299 100644 --- a/java/res/drawable/btn_keyboard_key_honeycomb.xml +++ b/java/res/drawable/btn_keyboard_key_ics.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 The Android Open Source Project +<!-- Copyright (C) 2011 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,6 @@ limitations under the License. --> -<!-- TODO: Remove "gingerbread" from file name and rename this to "btn_keyboard_key.xml". --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Functional keys. --> diff --git a/java/res/drawable/btn_keyboard_key_gingerbread_popup.xml b/java/res/drawable/btn_keyboard_key_popup.xml index 9b6d23beb..860cfd5d5 100644 --- a/java/res/drawable/btn_keyboard_key_gingerbread_popup.xml +++ b/java/res/drawable/btn_keyboard_key_popup.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 The Android Open Source Project +<!-- Copyright (C) 2011 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml b/java/res/drawable/btn_keyboard_key_popup_ics.xml index 6c2713650..8f797ac3c 100644 --- a/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml +++ b/java/res/drawable/btn_keyboard_key_popup_ics.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 The Android Open Source Project +<!-- Copyright (C) 2011 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -17,4 +17,5 @@ <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/btn_keyboard_key_popup_selected_holo" /> + <item android:drawable="@drawable/btn_keyboard_key_popup_background_holo" /> </selector> diff --git a/java/res/drawable/btn_keyboard_key_stone.xml b/java/res/drawable/btn_keyboard_key_stone.xml index a6040a04e..27932e8da 100644 --- a/java/res/drawable/btn_keyboard_key_stone.xml +++ b/java/res/drawable/btn_keyboard_key_stone.xml @@ -16,6 +16,13 @@ <selector xmlns:android="http://schemas.android.com/apk/res/android"> + <!-- Functional keys. --> + + <item android:state_single="true" android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" /> + <item android:state_single="true" + android:drawable="@drawable/btn_keyboard_key_normal_stone" /> + <!-- Toggle keys. Use checkable/checked state. --> <item android:state_checkable="true" android:state_checked="true" diff --git a/java/res/drawable/caution.png b/java/res/drawable/caution.png Binary files differdeleted file mode 100755 index eaef53425..000000000 --- a/java/res/drawable/caution.png +++ /dev/null diff --git a/java/res/drawable/keyboard_key_feedback_honeycomb.xml b/java/res/drawable/keyboard_key_feedback_ics.xml index a3ea140cd..04c86794f 100644 --- a/java/res/drawable/keyboard_key_feedback_honeycomb.xml +++ b/java/res/drawable/keyboard_key_feedback_ics.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 The Android Open Source Project +<!-- Copyright (C) 2011 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/java/res/drawable/mic_base.png b/java/res/drawable/mic_base.png Binary files differdeleted file mode 100644 index 53e29ff4b..000000000 --- a/java/res/drawable/mic_base.png +++ /dev/null diff --git a/java/res/drawable/mic_full.png b/java/res/drawable/mic_full.png Binary files differdeleted file mode 100644 index e3e3dfac3..000000000 --- a/java/res/drawable/mic_full.png +++ /dev/null diff --git a/java/res/drawable/mic_slash.png b/java/res/drawable/mic_slash.png Binary files differdeleted file mode 100644 index 1dd05c5b4..000000000 --- a/java/res/drawable/mic_slash.png +++ /dev/null diff --git a/java/res/drawable/vs_dialog_blue.9.png b/java/res/drawable/vs_dialog_blue.9.png Binary files differdeleted file mode 100644 index cf27e8f43..000000000 --- a/java/res/drawable/vs_dialog_blue.9.png +++ /dev/null diff --git a/java/res/drawable/vs_dialog_red.9.png b/java/res/drawable/vs_dialog_red.9.png Binary files differdeleted file mode 100644 index 6c08d5a30..000000000 --- a/java/res/drawable/vs_dialog_red.9.png +++ /dev/null diff --git a/java/res/drawable/vs_dialog_yellow.9.png b/java/res/drawable/vs_dialog_yellow.9.png Binary files differdeleted file mode 100644 index 2fb06c263..000000000 --- a/java/res/drawable/vs_dialog_yellow.9.png +++ /dev/null diff --git a/java/res/layout-xlarge/recognition_status.xml b/java/res/layout-sw768dp/recognition_status.xml index 40bc09823..40bc09823 100644 --- a/java/res/layout-xlarge/recognition_status.xml +++ b/java/res/layout-sw768dp/recognition_status.xml diff --git a/java/res/layout-xlarge/candidate.xml b/java/res/layout-xlarge/candidate.xml deleted file mode 100644 index 582e64261..000000000 --- a/java/res/layout-xlarge/candidate.xml +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:orientation="horizontal" -> - <ImageView - android:id="@+id/candidate_divider" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:src="@drawable/keyboard_suggest_strip_divider" - android:paddingRight="@dimen/candidate_padding" - android:paddingLeft="@dimen/candidate_padding" - android:visibility="invisible" - android:focusable="false" - android:clickable="false" - android:gravity="center_vertical|center_horizontal" /> - <Button - android:id="@+id/candidate_word" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:minWidth="@dimen/candidate_min_width" - android:textSize="@dimen/candidate_text_size" - android:textColor="@color/candidate_normal" - android:background="@drawable/btn_candidate_holo" - android:focusable="true" - android:clickable="true" - android:gravity="center_vertical|center_horizontal" /> - <TextView - android:id="@+id/candidate_debug_info" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:visibility="gone" - android:textSize="10dip" - android:textColor="#ff808080" - android:focusable="false" - android:clickable="false" - android:gravity="bottom" /> -</LinearLayout> diff --git a/java/res/layout-xlarge/candidates.xml b/java/res/layout-xlarge/candidates.xml deleted file mode 100644 index 096a0adf1..000000000 --- a/java/res/layout-xlarge/candidates.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" - android:gravity="bottom" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="@dimen/candidate_strip_minimum_height" -> - <!-- On tablets, the candidate strip is centered with horizontal paddings on both sides because - width of the landscape mode is too long for the candidate strip. This LinearLayout is - required to hold the paddings. --> - <LinearLayout - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/keyboard_suggest_strip_holo" - android:paddingRight="@dimen/candidate_strip_padding" - android:paddingLeft="@dimen/candidate_strip_padding" - > - <HorizontalScrollView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:fadingEdge="horizontal" - android:fadingEdgeLength="@dimen/candidate_strip_fading_edge_length" - android:scrollbars="none" - > - <com.android.inputmethod.latin.CandidateView - android:id="@+id/candidates" - android:layout_width="match_parent" - android:layout_height="@dimen/candidate_strip_height" - android:gravity="center_vertical" /> - </HorizontalScrollView> - </LinearLayout> -</LinearLayout> diff --git a/java/res/layout/bubble_text.xml b/java/res/layout/bubble_text.xml deleted file mode 100644 index c3957b65e..000000000 --- a/java/res/layout/bubble_text.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2009, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<TextView xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textSize="14sp" - android:textColor="?android:attr/textColorPrimary" - android:minWidth="32dip" - android:gravity="center" - android:shadowRadius="2.75" - android:shadowColor="#BB000000" - /> diff --git a/java/res/layout/candidate.xml b/java/res/layout/candidate.xml deleted file mode 100644 index 5472a1dd1..000000000 --- a/java/res/layout/candidate.xml +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:orientation="horizontal" -> - <ImageView - android:id="@+id/candidate_divider" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:src="@drawable/keyboard_suggest_strip_divider" - android:paddingRight="@dimen/candidate_padding" - android:paddingLeft="@dimen/candidate_padding" - android:visibility="invisible" - android:focusable="false" - android:clickable="false" - android:gravity="center_vertical|center_horizontal" /> - <Button - android:id="@+id/candidate_word" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:minWidth="@dimen/candidate_min_width" - android:textSize="@dimen/candidate_text_size" - android:textColor="@color/candidate_normal" - android:background="@drawable/btn_candidate" - android:focusable="true" - android:clickable="true" - android:gravity="center_vertical|center_horizontal" /> - <TextView - android:id="@+id/candidate_debug_info" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:visibility="gone" - android:textSize="10dip" - android:textColor="#ff808080" - android:focusable="false" - android:clickable="false" - android:gravity="bottom" /> -</LinearLayout> diff --git a/java/res/layout/key_preview_honeycomb.xml b/java/res/layout/candidate_divider.xml index 2fbfbb517..1d75e52b3 100644 --- a/java/res/layout/key_preview_honeycomb.xml +++ b/java/res/layout/candidate_divider.xml @@ -18,12 +18,13 @@ */ --> -<TextView xmlns:android="http://schemas.android.com/apk/res/android" +<ImageView + xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" - android:layout_height="80sp" - android:textSize="40sp" - android:textColor="@color/latinkeyboard_key_color_white" - android:minWidth="32dip" - android:gravity="center" - android:background="@drawable/keyboard_key_feedback_honeycomb" - /> + android:layout_height="match_parent" + android:src="@drawable/keyboard_suggest_strip_divider" + android:paddingRight="@dimen/candidate_padding" + android:paddingLeft="@dimen/candidate_padding" + android:focusable="false" + android:clickable="false" + android:gravity="center_vertical|center_horizontal" /> diff --git a/java/res/layout/candidate_info.xml b/java/res/layout/candidate_info.xml new file mode 100644 index 000000000..f3557289c --- /dev/null +++ b/java/res/layout/candidate_info.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<TextView + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="6sp" + android:textColor="@android:color/white" + android:visibility="gone" + style="?attr/suggestionBackgroundStyle" /> diff --git a/java/res/layout/candidate_preview.xml b/java/res/layout/candidate_preview.xml index fe2002d46..32705c996 100644 --- a/java/res/layout/candidate_preview.xml +++ b/java/res/layout/candidate_preview.xml @@ -19,11 +19,10 @@ --> <TextView xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" + android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" android:textColor="?android:attr/textColorPrimaryInverse" android:minWidth="32dip" android:gravity="center" - android:background="@drawable/candidate_feedback_background" - /> + style="?attr/suggestionPreviewBackgroundStyle" /> diff --git a/java/res/layout-xlarge/candidate_preview.xml b/java/res/layout/candidate_word.xml index 61d5f8e7b..94ae2b44e 100644 --- a/java/res/layout-xlarge/candidate_preview.xml +++ b/java/res/layout/candidate_word.xml @@ -18,12 +18,10 @@ */ --> -<TextView +<Button xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textSize="18sp" - android:textColor="?android:attr/textColorPrimaryInverse" - android:minWidth="32dip" - android:gravity="center" - android:background="@drawable/keyboard_popup_panel_background_holo" /> + android:minWidth="@dimen/candidate_min_width" + android:textSize="@dimen/candidate_text_size" + style="?attr/suggestionBackgroundStyle" /> diff --git a/java/res/layout/candidates.xml b/java/res/layout/candidates.xml deleted file mode 100644 index 3d91c1d20..000000000 --- a/java/res/layout/candidates.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" - android:gravity="bottom" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="@dimen/candidate_strip_minimum_height" - android:paddingRight="@dimen/candidate_strip_padding" - android:paddingLeft="@dimen/candidate_strip_padding" -> - <HorizontalScrollView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/keyboard_suggest_strip" - android:fadingEdge="horizontal" - android:fadingEdgeLength="@dimen/candidate_strip_fading_edge_length" - android:scrollbars="none" - > - <com.android.inputmethod.latin.CandidateView - android:id="@+id/candidates" - android:layout_width="match_parent" - android:layout_height="@dimen/candidate_strip_height" - android:gravity="center_vertical" /> - </HorizontalScrollView> -</LinearLayout> diff --git a/java/res/layout/candidates_strip.xml b/java/res/layout/candidates_strip.xml new file mode 100644 index 000000000..c23c29cbe --- /dev/null +++ b/java/res/layout/candidates_strip.xml @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <RelativeLayout + android:layout_weight="1.0" + android:layout_width="0dp" + android:layout_height="match_parent" + android:gravity="center" + > + <include + android:id="@+id/word_left" + layout="@layout/candidate_word" /> + <include + android:id="@+id/info_left" + layout="@layout/candidate_info" /> + </RelativeLayout> + <include + layout="@layout/candidate_divider" /> + <RelativeLayout + android:layout_weight="1.0" + android:layout_width="0dp" + android:layout_height="match_parent" + android:gravity="center" + > + <include + android:id="@+id/word_center" + layout="@layout/candidate_word" /> + <include + android:id="@+id/info_center" + layout="@layout/candidate_info" /> + </RelativeLayout> + <include + layout="@layout/candidate_divider" /> + <LinearLayout + android:orientation="horizontal" + android:layout_weight="1.0" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:gravity="center_vertical" + > + <RelativeLayout + android:layout_weight="1.0" + android:layout_width="0dp" + android:layout_height="match_parent" + android:gravity="center" + > + <include + android:id="@+id/word_right" + layout="@layout/candidate_word" /> + <include + android:id="@+id/info_right" + layout="@layout/candidate_info" /> + </RelativeLayout> + <!-- Image drawables are set in CandidateView constructor --> + <ImageButton + android:id="@+id/expand_candidates_pane" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:visibility="gone" + style="?attr/suggestionsStripBackgroundStyle" /> + <ImageButton + android:id="@+id/close_candidates_pane" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:visibility="gone" + style="?attr/suggestionsStripBackgroundStyle" /> + </LinearLayout> +</merge> diff --git a/java/res/layout/input_basic.xml b/java/res/layout/input_basic.xml deleted file mode 100644 index 8666daece..000000000 --- a/java/res/layout/input_basic.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2008, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<com.android.inputmethod.keyboard.LatinKeyboardView - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - android:id="@+id/latin_keyboard_view" - android:layout_alignParentBottom="true" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="0dip" - android:background="@drawable/keyboard_background" - - latin:keyBackground="@drawable/btn_keyboard_key" - /> diff --git a/java/res/layout/input_gingerbread.xml b/java/res/layout/input_gingerbread.xml deleted file mode 100644 index ccca501af..000000000 --- a/java/res/layout/input_gingerbread.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<com.android.inputmethod.keyboard.LatinKeyboardView - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - android:id="@+id/latin_keyboard_view" - android:layout_alignParentBottom="true" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="0dip" - android:background="@drawable/keyboard_dark_background" - - latin:keyBackground="@drawable/btn_keyboard_key_gingerbread" - latin:keyLetterStyle="bold" - /> diff --git a/java/res/layout/input_honeycomb.xml b/java/res/layout/input_honeycomb.xml deleted file mode 100644 index 8dadafd81..000000000 --- a/java/res/layout/input_honeycomb.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<com.android.inputmethod.keyboard.LatinKeyboardView - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - android:id="@+id/latin_keyboard_view" - android:layout_alignParentBottom="true" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="0dip" - android:background="@drawable/keyboard_background_holo" - - latin:keyBackground="@drawable/btn_keyboard_key_honeycomb" - latin:keyPreviewLayout="@layout/key_preview_honeycomb" - latin:keyPreviewHeight="@dimen/key_preview_height_holo" - latin:keyPreviewOffset="@dimen/key_preview_offset_holo" - latin:popupLayout="@layout/keyboard_popup_honeycomb" - latin:keyTextColorDisabled="#FF63666D" - latin:keyLetterStyle="bold" - latin:shadowColor="#00000000" - latin:shadowRadius="0.0" - /> diff --git a/java/res/layout/input_stone_bold.xml b/java/res/layout/input_stone_bold.xml deleted file mode 100644 index a0b40684f..000000000 --- a/java/res/layout/input_stone_bold.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<com.android.inputmethod.keyboard.LatinKeyboardView - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - android:id="@+id/latin_keyboard_view" - android:layout_alignParentBottom="true" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="0dip" - android:background="@drawable/keyboard_background" - - latin:keyBackground="@drawable/btn_keyboard_key_stone" - latin:keyTextColor="@color/latinkeyboard_key_color_black" - latin:keyTextColorDisabled="#FF808080" - latin:shadowColor="@color/latinkeyboard_key_color_white" - latin:keyLetterStyle="bold" - latin:colorScheme="black" - latin:popupLayout="@layout/keyboard_popup_stone" - /> diff --git a/java/res/layout/input_stone_normal.xml b/java/res/layout/input_stone_normal.xml deleted file mode 100644 index 41cbc16fa..000000000 --- a/java/res/layout/input_stone_normal.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<com.android.inputmethod.keyboard.LatinKeyboardView - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - android:id="@+id/latin_keyboard_view" - android:layout_alignParentBottom="true" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="0dip" - android:background="@drawable/keyboard_background" - - latin:keyBackground="@drawable/btn_keyboard_key_stone" - latin:keyTextColor="@color/latinkeyboard_key_color_black" - latin:keyTextColorDisabled="#FF808080" - latin:shadowColor="@color/latinkeyboard_key_color_white" - latin:colorScheme="black" - latin:popupLayout="@layout/keyboard_popup_stone" - /> diff --git a/java/res/layout/input_view.xml b/java/res/layout/input_view.xml new file mode 100644 index 000000000..821082f91 --- /dev/null +++ b/java/res/layout/input_view.xml @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" +> + <!-- On tablets, the candidate strip is centered with horizontal paddings on both sides because + width of the landscape mode is too long for the candidate strip. This LinearLayout is + required to hold the paddings. --> + <LinearLayout + android:id="@+id/candidates_container" + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="@dimen/candidate_strip_minimum_height" + android:gravity="bottom" + > + <View + android:layout_width="@dimen/candidate_strip_padding" + android:layout_height="@dimen/candidate_strip_height" + style="?attr/suggestionsStripBackgroundStyle" /> + <com.android.inputmethod.latin.CandidateView + android:id="@+id/candidates" + android:layout_weight="1.0" + android:layout_width="0dp" + android:layout_height="@dimen/candidate_strip_height" + android:gravity="center_vertical" + style="?attr/candidateViewStyle" /> + <View + android:layout_width="@dimen/candidate_strip_padding" + android:layout_height="@dimen/candidate_strip_height" + style="?attr/suggestionsStripBackgroundStyle" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/candidates_pane_container" + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" + style="?attr/suggestionsStripBackgroundStyle" + > + <View + android:layout_width="@dimen/candidate_strip_padding" + android:layout_height="@dimen/candidate_strip_height" /> + <FrameLayout + android:id="@+id/candidates_pane" + android:layout_weight="1.0" + android:layout_width="0dp" + android:layout_height="match_parent" /> + <View + android:layout_width="@dimen/candidate_strip_padding" + android:layout_height="@dimen/candidate_strip_height" /> + </LinearLayout> + + <com.android.inputmethod.keyboard.LatinKeyboardView + android:id="@+id/keyboard_view" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> +</LinearLayout> diff --git a/java/res/layout/key_preview.xml b/java/res/layout/key_preview.xml index de03506ad..5332d15c6 100644 --- a/java/res/layout/key_preview.xml +++ b/java/res/layout/key_preview.xml @@ -22,8 +22,7 @@ android:layout_width="wrap_content" android:layout_height="80sp" android:textSize="40sp" - android:textColor="@color/latinkeyboard_key_color_white" android:minWidth="32dip" android:gravity="center" - android:background="@drawable/keyboard_key_feedback" + style="?attr/keyPreviewStyle" /> diff --git a/java/res/layout/keyboard_popup.xml b/java/res/layout/keyboard_popup.xml index 0317d8deb..e2508da78 100644 --- a/java/res/layout/keyboard_popup.xml +++ b/java/res/layout/keyboard_popup.xml @@ -22,9 +22,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" - android:background="@drawable/keyboard_popup_panel_background" - android:paddingLeft="@dimen/mini_keyboard_horizontal_padding" - android:paddingRight="@dimen/mini_keyboard_horizontal_padding" + style="?attr/popupMiniKeyboardPanelStyle" > <com.android.inputmethod.keyboard.PopupMiniKeyboardView xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" @@ -32,9 +30,5 @@ android:layout_alignParentBottom="true" android:layout_width="wrap_content" android:layout_height="wrap_content" - - latin:keyBackground="@drawable/btn_keyboard_key_gingerbread_popup" - latin:keyHysteresisDistance="0dip" - latin:verticalCorrection="@dimen/mini_keyboard_vertical_correction" /> </LinearLayout> diff --git a/java/res/layout/keyboard_popup_honeycomb.xml b/java/res/layout/keyboard_popup_honeycomb.xml deleted file mode 100644 index 2ddcbdc0c..000000000 --- a/java/res/layout/keyboard_popup_honeycomb.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:background="@drawable/keyboard_popup_panel_background_holo" - android:paddingLeft="@dimen/mini_keyboard_horizontal_padding_holo" - android:paddingRight="@dimen/mini_keyboard_horizontal_padding_holo" - > - <com.android.inputmethod.keyboard.PopupMiniKeyboardView - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - android:id="@+id/mini_keyboard_view" - android:layout_alignParentBottom="true" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - - latin:keyBackground="@drawable/btn_keyboard_key_honeycomb_popup" - latin:keyHysteresisDistance="0dip" - latin:verticalCorrection="@dimen/mini_keyboard_vertical_correction" - /> -</LinearLayout> diff --git a/java/res/layout/keyboard_popup_stone.xml b/java/res/layout/keyboard_popup_stone.xml deleted file mode 100644 index 94176b244..000000000 --- a/java/res/layout/keyboard_popup_stone.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:background="@drawable/keyboard_popup_panel_background" - > - <com.android.inputmethod.keyboard.PopupMiniKeyboardView - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - android:id="@+id/mini_keyboard_view" - android:layout_alignParentBottom="true" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/keyboard_background" - - latin:keyBackground="@drawable/btn_keyboard_key_stone" - latin:keyTextColor="@color/latinkeyboard_key_color_black" - latin:shadowColor="@color/latinkeyboard_key_color_white" - /> -</LinearLayout> diff --git a/java/res/raw/type3.ogg b/java/res/raw/type3.ogg Binary files differdeleted file mode 100644 index 20e670807..000000000 --- a/java/res/raw/type3.ogg +++ /dev/null diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml new file mode 100644 index 000000000..db6217315 --- /dev/null +++ b/java/res/values-af/strings.xml @@ -0,0 +1,177 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2008, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="english_ime_name" msgid="7252517407088836577">"Android-sleutelbord"</string> + <string name="english_ime_settings" msgid="6661589557206947774">"Android-sleutelbordinstellings"</string> + <string name="english_ime_input_options" msgid="3909945612939668554">"Invoeropsies"</string> + <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibreer met sleuteldruk"</string> + <string name="sound_on_keypress" msgid="6093592297198243644">"Klank met sleuteldruk"</string> + <string name="popup_on_keypress" msgid="123894815723512944">"Opspring by druk van sleutel"</string> + <!-- no translation found for general_category (1859088467017573195) --> + <skip /> + <!-- no translation found for correction_category (2236750915056607613) --> + <skip /> + <!-- no translation found for ngram_category (5337109164339320257) --> + <skip /> + <!-- no translation found for misc_category (6894192814868233453) --> + <skip /> + <!-- no translation found for advanced_settings (362895144495591463) --> + <skip /> + <!-- no translation found for advanced_settings_summary (5193513161106637254) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) --> + <skip /> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> + <string name="auto_cap" msgid="1719746674854628252">"Outohoofletters"</string> + <string name="quick_fixes" msgid="5353213327680897927">"Vinnige oplossings"</string> + <string name="quick_fixes_summary" msgid="3405028402510332373">"Korrigeer algemene tikfoute"</string> + <!-- no translation found for prefs_show_suggestions (8026799663445531637) --> + <skip /> + <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Wys voorgestelde woorde terwyl jy tik"</string> + <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Wys altyd"</string> + <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Wys in portretmodus"</string> + <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Versteek altyd"</string> + <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) --> + <skip /> + <string name="prefs_settings_key" msgid="4623341240804046498">"Wys instellingsleutel"</string> + <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Outomaties"</string> + <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Wys altyd"</string> + <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Versteek altyd"</string> + <string name="auto_correction" msgid="4979925752001319458">"Outokorrigering"</string> + <!-- outdated translation 6881047311475758267 --> <string name="auto_correction_summary" msgid="5625751551134658006">"Korrigeer outomaties die vorige woord"</string> + <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Af"</string> + <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Nederig"</string> + <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Aggressief"</string> + <!-- outdated translation 1323347224043514969 --> <string name="bigram_suggestion" msgid="2636414079905220518">"Bigram-voorstelle"</string> + <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Gebruik vorige woord om voorstel te verbeter"</string> + <!-- no translation found for bigram_prediction (8914273444762259739) --> + <skip /> + <!-- no translation found for bigram_prediction_summary (1747261921174300098) --> + <skip /> + <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Gestoor"</string> + <string name="label_go_key" msgid="1635148082137219148">"Gaan"</string> + <string name="label_next_key" msgid="362972844525672568">"Volgende"</string> + <string name="label_done_key" msgid="2441578748772529288">"Klaar"</string> + <string name="label_send_key" msgid="2815056534433717444">"Stuur"</string> + <string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string> + <string name="label_more_key" msgid="3760239494604948502">"Meer"</string> + <string name="label_pause_key" msgid="181098308428035340">"Laat wag"</string> + <string name="label_wait_key" msgid="6402152600878093134">"Wag"</string> + <string name="voice_warning_title" msgid="4419354150908395008">"Steminvoering"</string> + <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Steminvoering vir jou taal word nie tans ondersteun nie, maar werk wel in Engels."</string> + <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Steminvoer gebruik Google se spraakherkenning. "<a href="http://m.google.com/privacy">"Die Mobiel-privaatheidsbeleid"</a>" is van toepassing."</string> + <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Om steminvoer af te skakel, gaan na invoermetode-instellings."</string> + <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Om steminvoer te gebruik, druk die mikrofoonknoppie."</string> + <string name="voice_listening" msgid="467518160751321844">"Praat nou"</string> + <string name="voice_working" msgid="6666937792815731889">"Werkend"</string> + <string name="voice_initializing" msgid="661962047129906646"></string> + <string name="voice_error" msgid="5140896300312186162">"Fout. Probeer asseblief weer."</string> + <string name="voice_network_error" msgid="6649556447401862563">"Kon nie koppel nie"</string> + <string name="voice_too_much_speech" msgid="5746973620134227376">"Fout, te veel spraak."</string> + <string name="voice_audio_error" msgid="5072707727016414454">"Oudioprobleem"</string> + <string name="voice_server_error" msgid="7807129913977261644">"Bedienerfout"</string> + <string name="voice_speech_timeout" msgid="8461817525075498795">"Geen spraak gehoor nie"</string> + <string name="voice_no_match" msgid="4285117547030179174">"Geen passings gevind nie"</string> + <string name="voice_not_installed" msgid="5552450909753842415">"Stemsoek nie geïnstalleer nie"</string> + <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Wenk:"</b>" Sleep oor die sleutelbord om te praat"</string> + <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Wenk:"</b>" Probeer volgende keer om leestekens soos \"punt\", \"komma\" of \"vraagteken\" hardop te sê."</string> + <string name="cancel" msgid="6830980399865683324">"Kanselleer"</string> + <string name="ok" msgid="7898366843681727667">"OK"</string> + <string name="voice_input" msgid="2466640768843347841">"Steminvoering"</string> + <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Op hoofsleutelbord"</string> + <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Op simbolesleutelbord"</string> + <string name="voice_input_modes_off" msgid="3745699748218082014">"Af"</string> + <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofoon op hoofsleutelbord"</string> + <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofoon op simbolesleutelbord"</string> + <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Steminvoer is gedeaktiveer"</string> + <string name="selectInputMethod" msgid="315076553378705821">"Kies invoermetode"</string> + <string name="language_selection_title" msgid="1651299598555326750">"Invoertale"</string> + <string name="language_selection_summary" msgid="187110938289512256">"Gly vinger op spasiebalk om taal te verander"</string> + <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Raak weer om te stoor"</string> + <string name="has_dictionary" msgid="6071847973466625007">"Woordeboek beskikbaar"</string> + <string name="prefs_enable_log" msgid="6620424505072963557">"Aktiveer gebruikerterugvoer"</string> + <string name="prefs_description_log" msgid="5827825607258246003">"Help hierdie invoermetode-redigeerder te verbeter deur gebruikstatistiek en omvalverslae outomaties na Google te stuur."</string> + <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Raak om woorde reg te maak"</string> + <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Raak ingevoerde woorde om hulle te korrigeer, net wanneer voorstelle sigbaar is"</string> + <string name="keyboard_layout" msgid="437433231038683666">"Sleutelbordtema"</string> + <string name="subtype_mode_cs_keyboard" msgid="1141718931112377586">"Tsjeggiese sleutelbord"</string> + <!-- no translation found for subtype_mode_ar_keyboard (2655338636329774995) --> + <skip /> + <string name="subtype_mode_da_keyboard" msgid="1243570804427922104">"Deense sleutelbord"</string> + <string name="subtype_mode_de_keyboard" msgid="1990979135959462145">"Duitse sleutelbord"</string> + <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engelse (VK) sleutelbord"</string> + <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engelse (VS) sleutelbord"</string> + <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spaanse sleutelbord"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> + <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Franse sleutelbord"</string> + <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Franse (Kanada) sleutelbord"</string> + <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Franse (Switserland) sleutelbord"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> + <!-- no translation found for subtype_mode_iw_keyboard (1787536828253289950) --> + <skip /> + <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italiaanse sleutelbord"</string> + <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Noorweegse sleutelbord"</string> + <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Nederlandse sleutelbord"</string> + <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) --> + <skip /> + <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) --> + <skip /> + <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russiese sleutelbord"</string> + <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serwiese sleutelbord"</string> + <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Sweedse sleutelbord"</string> + <!-- no translation found for subtype_mode_af_voice (7542487489657902699) --> + <skip /> + <string name="subtype_mode_cs_voice" msgid="1136386688120958641">"Tsjeggiese stem"</string> + <string name="subtype_mode_de_voice" msgid="8378803143958089866">"Duitse stem"</string> + <!-- no translation found for subtype_mode_en_voice (6643420989651848728) --> + <skip /> + <string name="subtype_mode_es_voice" msgid="1323473601346507487">"Spaanse stem"</string> + <string name="subtype_mode_fr_voice" msgid="4675914209337824269">"Franse stem"</string> + <!-- no translation found for subtype_mode_it_voice (5077373057157441323) --> + <skip /> + <string name="subtype_mode_ja_voice" msgid="6604859132669646367">"Japannese stem"</string> + <string name="subtype_mode_ko_voice" msgid="4890391190762324561">"Koreaanse stem"</string> + <!-- no translation found for subtype_mode_nl_voice (2603552312869575021) --> + <skip /> + <string name="subtype_mode_pl_voice" msgid="2076196021014840487">"Poolse stem"</string> + <string name="subtype_mode_pt_voice" msgid="8036522712795994397">"Portugese stem"</string> + <string name="subtype_mode_ru_voice" msgid="8034596947963787529">"Russiese stem"</string> + <string name="subtype_mode_tr_voice" msgid="3402067436761140005">"Turkse stem"</string> + <!-- no translation found for subtype_mode_yue_voice (1576887891614624263) --> + <skip /> + <!-- no translation found for subtype_mode_zh_voice (4360533229467271152) --> + <skip /> + <!-- no translation found for subtype_mode_zu_voice (1146122571698884636) --> + <skip /> + <string name="prefs_usability_study_mode" msgid="6937813623647419810">"Bruikbaarheidsmodus"</string> +</resources> diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml new file mode 100644 index 000000000..740aefc2a --- /dev/null +++ b/java/res/values-am/strings.xml @@ -0,0 +1,177 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2008, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="english_ime_name" msgid="7252517407088836577">"የAndroid ቁልፍሰሌዳ"</string> + <string name="english_ime_settings" msgid="6661589557206947774">"የAndroid ቁልፍሰሌዳ ቅንብሮች"</string> + <string name="english_ime_input_options" msgid="3909945612939668554">"ግቤት አማራጮች"</string> + <string name="vibrate_on_keypress" msgid="5258079494276955460">"በቁልፍመጫንጊዜ አንዝር"</string> + <string name="sound_on_keypress" msgid="6093592297198243644">"በቁልፍ መጫን ላይ የሚወጣ ድምፅ"</string> + <string name="popup_on_keypress" msgid="123894815723512944">"ቁልፍ ጫን ላይ ብቅ ባይ"</string> + <!-- no translation found for general_category (1859088467017573195) --> + <skip /> + <!-- no translation found for correction_category (2236750915056607613) --> + <skip /> + <!-- no translation found for ngram_category (5337109164339320257) --> + <skip /> + <!-- no translation found for misc_category (6894192814868233453) --> + <skip /> + <!-- no translation found for advanced_settings (362895144495591463) --> + <skip /> + <!-- no translation found for advanced_settings_summary (5193513161106637254) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) --> + <skip /> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> + <string name="auto_cap" msgid="1719746674854628252">"ራስ-ሰር አቢይ ማድረግ"</string> + <string name="quick_fixes" msgid="5353213327680897927">"ፈጣንጥገና"</string> + <string name="quick_fixes_summary" msgid="3405028402510332373">" የተለመዱ የትየባ ስህተቶችንያስተካክላል"</string> + <!-- no translation found for prefs_show_suggestions (8026799663445531637) --> + <skip /> + <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"እየተየብክ ተመራጭ ቃላትን አሳይ"</string> + <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"ሁልጊዜ አሳይ"</string> + <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"በቁመት ሁነታ አሳይ"</string> + <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"ሁልጊዜ ደብቅ"</string> + <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) --> + <skip /> + <string name="prefs_settings_key" msgid="4623341240804046498">"የቅንብሮች ቁልፍ አሳይ"</string> + <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"ራስ ሰር"</string> + <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"ሁልጊዜ አሳይ"</string> + <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"ሁልጊዜ ደብቅ"</string> + <string name="auto_correction" msgid="4979925752001319458">"በራስ ማስተካከል"</string> + <!-- outdated translation 6881047311475758267 --> <string name="auto_correction_summary" msgid="5625751551134658006">"የቀደመውን ቃል በራስሰር አስተካክል"</string> + <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ውጪ"</string> + <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"መጠነኛ"</string> + <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"ኃይለኛ"</string> + <!-- outdated translation 1323347224043514969 --> <string name="bigram_suggestion" msgid="2636414079905220518">"ቢግራም ምክሮች"</string> + <string name="bigram_suggestion_summary" msgid="4383845146070101531">"ምክርን ለማሻሻል የቀደመ ቃልን ተጠቀም"</string> + <!-- no translation found for bigram_prediction (8914273444762259739) --> + <skip /> + <!-- no translation found for bigram_prediction_summary (1747261921174300098) --> + <skip /> + <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : ተቀምጧል"</string> + <string name="label_go_key" msgid="1635148082137219148">"ሂድ"</string> + <string name="label_next_key" msgid="362972844525672568">"በመቀጠል"</string> + <string name="label_done_key" msgid="2441578748772529288">"ተከናውኗል"</string> + <string name="label_send_key" msgid="2815056534433717444">" ይላኩ"</string> + <string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string> + <string name="label_more_key" msgid="3760239494604948502">"ተጨማሪ"</string> + <string name="label_pause_key" msgid="181098308428035340">"ላፍታ አቁም"</string> + <string name="label_wait_key" msgid="6402152600878093134">"ቆይ"</string> + <string name="voice_warning_title" msgid="4419354150908395008">"የድምፅ ግቤ ት"</string> + <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"የድምፅ ግቤት በአሁኑ ጊዜ ለእርስዎን ቋንቋ አይደግፍም፣ ግን በእንግሊዘኛ ይሰራል።"</string> + <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"የድምፅ ግቤት የGoogleን ንግግር ለይቶ ማወቂያ ይጠቀማል።"<a href="http://m.google.com/privacy">"የተንቀሳቃሽ ስልክ ግላዊ ፖሊሲ"</a>" ይተገበራል።"</string> + <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"የድምፅ ግቤት ለማጥፋት፣ወደ ግቤት ሜተድ ቅንብሮች ሂድ።"</string> + <string name="voice_hint_dialog_message" msgid="1420686286820661548">"የድምፅግቤት ለመጠቀም፣ የማይክራፎንየድምፅ ማጉያ አዝራር ተጫን።"</string> + <string name="voice_listening" msgid="467518160751321844">"አሁን ተናገር"</string> + <string name="voice_working" msgid="6666937792815731889">"ሥራ ላይ"</string> + <string name="voice_initializing" msgid="661962047129906646"></string> + <string name="voice_error" msgid="5140896300312186162">"ስህተት፣ እባክዎ እንደገና ይሞክሩ።"</string> + <string name="voice_network_error" msgid="6649556447401862563">"ማያያዝ አልተቻለም"</string> + <string name="voice_too_much_speech" msgid="5746973620134227376">"ስህተት፣ በጣም ብዙ ንግግር።"</string> + <string name="voice_audio_error" msgid="5072707727016414454">"የድምፅ ችግር"</string> + <string name="voice_server_error" msgid="7807129913977261644">"የአገልጋይ ስህተት"</string> + <string name="voice_speech_timeout" msgid="8461817525075498795">"ምንም ንግግር አልተሰማም"</string> + <string name="voice_no_match" msgid="4285117547030179174">"ምንም ተመሳሳይ አልተገኘም።"</string> + <string name="voice_not_installed" msgid="5552450909753842415">"የድምፅ ፍለጋአልተጫነም"</string> + <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"ምክር፡"</b>" ለመናገር በቁልፍሰሌዳ ላይ አንሸራት"</string> + <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"ምክር፡"</b>" ሌላ ጊዜ፣ እንደ \"period\", \"comma\", ወይም \"question mark\" ያሉ ስርዓተ ነጥቦችን ለመናገር ሞክር።"</string> + <string name="cancel" msgid="6830980399865683324">"ይቅር"</string> + <string name="ok" msgid="7898366843681727667">"እሺ"</string> + <string name="voice_input" msgid="2466640768843347841">"የድምፅ ግቤት"</string> + <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"በዋናቁልፍ ሰሌዳ ላይ"</string> + <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"በምልክቶች ቁልፍ ሰሌዳ ላይ"</string> + <string name="voice_input_modes_off" msgid="3745699748218082014">"ውጪ"</string> + <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"ድምፅ ማጉያ በዋናው ቁልፍሰሌዳው ላይ"</string> + <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"የድምፅ ማጉያ ምልክትበቁልፍ ሰሌዳላይ"</string> + <string name="voice_input_modes_summary_off" msgid="63875609591897607">"የድምፅ ግቤት ቦዝኗል"</string> + <string name="selectInputMethod" msgid="315076553378705821">"የግቤት ሜተድ ምረጥ"</string> + <string name="language_selection_title" msgid="1651299598555326750">"ቋንቋዎች አግቤት"</string> + <string name="language_selection_summary" msgid="187110938289512256">"ቋንቋ ለመለወጥ የቦታ ቁልፍ ላይ ጣትዎን ያንሸራቱ"</string> + <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← ለማስቀመጥ ድጋሚ ንካ"</string> + <string name="has_dictionary" msgid="6071847973466625007">"መዝገበ ቃላት አለ"</string> + <string name="prefs_enable_log" msgid="6620424505072963557">"የተጠቃሚ ግብረ ምላሽ አንቃ"</string> + <string name="prefs_description_log" msgid="5827825607258246003">"ወደ Google የተሰናከለ ሪፖርቶች እና አጠቃቀም ስታስቲክስ በራስ ሰር በመላክ ይህን ግቤት ሜተድ አርትኢ እገዛ ያሻሽላል።"</string> + <string name="prefs_enable_recorrection" msgid="4588408906649533582">"ቃላትን ለማስተካከል ንካ"</string> + <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"የገቡ ቃላትን ለማስተካከል ንካ፣ አማራጮች ሲታዩብቻ"</string> + <string name="keyboard_layout" msgid="437433231038683666">"የቁልፍ ሰሌዳ ገጽታ"</string> + <string name="subtype_mode_cs_keyboard" msgid="1141718931112377586">"የቼክ ቁልፍሰሌዳ"</string> + <!-- no translation found for subtype_mode_ar_keyboard (2655338636329774995) --> + <skip /> + <string name="subtype_mode_da_keyboard" msgid="1243570804427922104">"የዳኒሽኛ ቁልፍሰሌዳ"</string> + <string name="subtype_mode_de_keyboard" msgid="1990979135959462145">"የጀርመንኛ ቁልፍሰሌዳ"</string> + <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"የእንግሊዘኛ(ዩኬ) ቁልፍሰሌዳ"</string> + <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"የእንግሊዘኛ(ዩኤስ) ቁልፍሰሌዳ"</string> + <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"የስፖኒሽኛቁልፍ ሰሌዳ"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> + <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"የፈረንሳይኛ ቁልፍሰሌዳ"</string> + <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"የፈረንሳይኛ(ካናዳ) ቁልፍሰሌዳ"</string> + <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"የፈረንሳይኛ(ስዊዘርላንድ) ቁልፍሰሌዳ"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> + <!-- no translation found for subtype_mode_iw_keyboard (1787536828253289950) --> + <skip /> + <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"የጣሊያንኛ ቁልፍ ሰሌዳ"</string> + <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"የኖርዌጂኛ ቁልፍሰሌዳ"</string> + <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"የደች ቁልፍሰሌዳ"</string> + <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) --> + <skip /> + <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) --> + <skip /> + <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"የራሽኛቁልፍ ሰሌዳ"</string> + <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"የሩሲኪኛቁልፍ ሰሌዳ"</string> + <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"የሲውድናዊ ቁልፍሰሌዳ"</string> + <!-- no translation found for subtype_mode_af_voice (7542487489657902699) --> + <skip /> + <string name="subtype_mode_cs_voice" msgid="1136386688120958641">"የቼክ ድምፅ"</string> + <string name="subtype_mode_de_voice" msgid="8378803143958089866">"የጀርመናዊ ድምፅ"</string> + <!-- no translation found for subtype_mode_en_voice (6643420989651848728) --> + <skip /> + <string name="subtype_mode_es_voice" msgid="1323473601346507487">"የስፔናዊ ድምፅ"</string> + <string name="subtype_mode_fr_voice" msgid="4675914209337824269">"የፈረንሳዊ ድምፅ"</string> + <!-- no translation found for subtype_mode_it_voice (5077373057157441323) --> + <skip /> + <string name="subtype_mode_ja_voice" msgid="6604859132669646367">"የጃፓናዊ ድምፅ"</string> + <string name="subtype_mode_ko_voice" msgid="4890391190762324561">"የኮሪያዊ ድምፅ"</string> + <!-- no translation found for subtype_mode_nl_voice (2603552312869575021) --> + <skip /> + <string name="subtype_mode_pl_voice" msgid="2076196021014840487">"የፖሊሽኛ ድምፅ"</string> + <string name="subtype_mode_pt_voice" msgid="8036522712795994397">"የፖርቹጊኛ ድምፅ"</string> + <string name="subtype_mode_ru_voice" msgid="8034596947963787529">"የራሽኛድምፅ"</string> + <string name="subtype_mode_tr_voice" msgid="3402067436761140005">"የቱርካዊ ድምፅ"</string> + <!-- no translation found for subtype_mode_yue_voice (1576887891614624263) --> + <skip /> + <!-- no translation found for subtype_mode_zh_voice (4360533229467271152) --> + <skip /> + <!-- no translation found for subtype_mode_zu_voice (1146122571698884636) --> + <skip /> + <string name="prefs_usability_study_mode" msgid="6937813623647419810">"የተገልጋይነት ጥናት ሁነታ"</string> +</resources> diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml index df5b87ac1..455e9f5f2 100644 --- a/java/res/values-ar/strings.xml +++ b/java/res/values-ar/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"تصحيح النص"</string> <string name="ngram_category" msgid="5337109164339320257">"الاقتراحات بناءً على الكلمات السابقة"</string> <string name="misc_category" msgid="6894192814868233453">"خيارات أخرى"</string> + <string name="advanced_settings" msgid="362895144495591463">"الإعدادات المتقدمة"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"خيارات للمستخدمين الخبراء"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"تأخير إزالة النافذة المنبثقة الأساسية"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"بلا تأخير"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"افتراضي"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"استخدام الأحرف الكبيرة تلقائيًا"</string> <string name="quick_fixes" msgid="5353213327680897927">"إصلاحات سريعة"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"تصحيح الأخطاء المكتوبة الشائعة"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"لوحة مفاتيح إنجليزية (بريطانيا)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"لوحة مفاتيح إنجليزية (الولايات المتحدة)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"لوحة مفاتيح إسبانية"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"لوحة مفاتيح إسبانية (الولايات المتحدة)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"لوحة مفاتيح فرنسية"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"لوحة مفاتيح فرنسية (كندا)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"لوحة مفاتيح فرنسية (سويسرا)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"لوحة المفاتيح العبرية"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"لوحة مفاتيح إيطالية"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"لوحة مفاتيح نرويجية"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"لوحة مفاتيح بولندية"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"لوحة المفاتيح البولندية"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"لوحة المفاتيح البرتغالية"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"لوحة مفاتيح روسية"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"لوحة مفاتيح صربية"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"لوحة مفاتيح سويدية"</string> diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml index 7f59a13db..05af01668 100644 --- a/java/res/values-bg/strings.xml +++ b/java/res/values-bg/strings.xml @@ -28,8 +28,17 @@ <string name="popup_on_keypress" msgid="123894815723512944">"Изскачащ прозорец при натискане на клавиш"</string> <string name="general_category" msgid="1859088467017573195">"Общи"</string> <string name="correction_category" msgid="2236750915056607613">"Корекция на текста"</string> - <string name="ngram_category" msgid="5337109164339320257">"Предложения въз на основа на предишни думи"</string> + <string name="ngram_category" msgid="5337109164339320257">"Предложения въз основа на предишни думи"</string> <string name="misc_category" msgid="6894192814868233453">"Други опции"</string> + <string name="advanced_settings" msgid="362895144495591463">"Разширени настройки"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Опции за потребителите експерти"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Отхвърляне на подсказката"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Без задържане"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"По подразбиране"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Автоматично поставяне на главни букви"</string> <string name="quick_fixes" msgid="5353213327680897927">"Бързи корекции"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Коригира най-честите грешки при въвеждане"</string> @@ -38,7 +47,7 @@ <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Винаги да се показва"</string> <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Показване с вертикална ориентация"</string> <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Винаги да се скрива"</string> - <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Клавишът интервал да превкл. езика"</string> + <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Смяна на езика с клавиша за интервал"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Показване на клавиша за настройки"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Автоматично"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Да се показва винаги"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"английска (Великобрит.) клавиатура"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"английска (САЩ) клавиатура"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"испанска клавиатура"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"испанска (САЩ) клавиатура"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"френска клавиатура"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"френска (Канада) клавиатура"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"френска (Швейцария) клавиатура"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"клавиатура на иврит"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"италианска клавиатура"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"норвежка клавиатура"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"нидерландска клавиатура"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Полска клавиатура"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Португалска клавиатура"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"руска клавиатура"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"сръбска клавиатура"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"шведска клавиатура"</string> diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml index 36939fef7..01de93372 100644 --- a/java/res/values-ca/strings.xml +++ b/java/res/values-ca/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Correcció de text"</string> <string name="ngram_category" msgid="5337109164339320257">"Suggeriments basats en paraules anteriors"</string> <string name="misc_category" msgid="6894192814868233453">"Altres opcions"</string> + <string name="advanced_settings" msgid="362895144495591463">"Configuració avançada"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opcions per a usuaris experts"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Retard d\'om. em. de tecla"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sense retard"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predeterminat"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Majúscules automàtiques"</string> <string name="quick_fixes" msgid="5353213327680897927">"Correccions ràpides"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Corregeix els errors d\'ortografia habituals"</string> @@ -38,7 +47,7 @@ <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostra sempre"</string> <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Mostra en mode vertical"</string> <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Amaga sempre"</string> - <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Utilitza el canvi d\'idioma amb la barra espaiadora"</string> + <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Canvi d\'idioma amb la barra espaiadora"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Mostra la tecla de configuració"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automàtic"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostra sempre"</string> @@ -51,7 +60,7 @@ <string name="bigram_suggestion" msgid="2636414079905220518">"Suggeriments Bigram"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Utilitza la paraula anterior per millorar el suggeriment"</string> <string name="bigram_prediction" msgid="8914273444762259739">"Predicció Bigram"</string> - <string name="bigram_prediction_summary" msgid="1747261921174300098">"Utilitza la paraula anterior per a la predicció també"</string> + <string name="bigram_prediction_summary" msgid="1747261921174300098">"Utilitza també la paraula anterior per a la predicció"</string> <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: desada"</string> <string name="label_go_key" msgid="1635148082137219148">"Vés"</string> <string name="label_next_key" msgid="362972844525672568">"Següent"</string> @@ -63,7 +72,7 @@ <string name="label_wait_key" msgid="6402152600878093134">"Espera"</string> <string name="voice_warning_title" msgid="4419354150908395008">"Entrada de veu"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Actualment, l\'entrada de veu no és compatible amb el vostre idioma, però funciona en anglès."</string> - <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"L\'entrada de veu utilitza el reconeixement de veu de Google. S\'hi aplica la "<a href="http://m.google.com/privacy">"Política de privadesa de Google Mobile"</a>"."</string> + <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"L\'entrada de veu utilitza el reconeixement de veu de Google. S\'hi aplica la "<a href="http://m.google.com/privacy">"Política de privadesa de Google per a mòbils"</a>"."</string> <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Per desactivar l\'entada de veu, vés a la configuració del mètode d\'entrada."</string> <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Per utilitzar l\'entrada de veu, prem el botó del micròfon."</string> <string name="voice_listening" msgid="467518160751321844">"Parleu ara"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Teclat anglès (Regne Unit)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Teclat anglès (Estats Units)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Teclat espanyol"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Teclat espanyol (Estats Units)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Teclat francès"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Teclat francès (Canadà)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Teclat francès (Suïssa)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Teclat hebreu"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Teclat italià"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Teclat noruec"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Teclat holandès"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Teclat polonès"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Teclat portuguès"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Teclat rus"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Teclat serbi"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Teclat suec"</string> diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml index 132bc1c29..9dbe9ae4e 100644 --- a/java/res/values-cs/strings.xml +++ b/java/res/values-cs/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Oprava textu"</string> <string name="ngram_category" msgid="5337109164339320257">"Návrhy na základě předchozích slov"</string> <string name="misc_category" msgid="6894192814868233453">"Další možnosti"</string> + <string name="advanced_settings" msgid="362895144495591463">"Pokročilá nastavení"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Možnosti pro zkušené uživatele"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Prodleva vysk. okna kláv."</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez prodlevy"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Výchozí"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Velká písmena automaticky"</string> <string name="quick_fixes" msgid="5353213327680897927">"Rychlé opravy"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Opravuje nejčastější chyby při psaní"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Klávesnice – angličtina (VB)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Klávesnice – angličtina (USA)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Klávesnice – španělština"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Klávesnice – španělština (USA)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Klávesnice – francouzština"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Klávesnice – francouzština (Kanada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Klávesnice – francouzština (Švýc.)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Klávesnice – hebrejština"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Klávesnice – italština"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Klávesnice – norština"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Klávesnice – holandština"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polská klávesnice"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugalská klávesnice"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Klávesnice – ruština"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Klávesnice – srbština"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Klávesnice – švédština"</string> diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml index ad92b24d1..b4b4b5ad8 100644 --- a/java/res/values-da/strings.xml +++ b/java/res/values-da/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Tekstkorrigering"</string> <string name="ngram_category" msgid="5337109164339320257">"Forslag baseret på tidligere ord"</string> <string name="misc_category" msgid="6894192814868233453">"Andre valgmuligheder"</string> + <string name="advanced_settings" msgid="362895144495591463">"Avancerede indstillinger"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Muligheder for ekspertbrugere"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Forsink. afvis. af taste-popup"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Ingen forsink."</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Skriv aut. med stort"</string> <string name="quick_fixes" msgid="5353213327680897927">"Hurtige løsninger"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Retter almindelige stavefejl"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engelsk tastatur (Storbritannien)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engelsk tastatur (USA)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spansk tastatur"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spansk tastatur (USA)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Fransk tastatur"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Fransk tastatur (Canada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Fransk tastatur (Schweiz)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hebraisk tastatur"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italiensk tastatur"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norsk tastatur"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Hollandsk tastatur"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polsk tastatur"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugisisk tastatur"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russisk tastatur"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbisk tastatur"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Svensk tastatur"</string> diff --git a/java/res/values-de-rZZ/donottranslate-altchars.xml b/java/res/values-de-rZZ/donottranslate-altchars.xml new file mode 100644 index 000000000..a6f8fc810 --- /dev/null +++ b/java/res/values-de-rZZ/donottranslate-altchars.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="alternates_for_a">ä,â,à,á,æ,ã,å,ā</string> + <string name="alternates_for_e">3,ė</string> + <string name="alternates_for_o">9,ö,ô,ò,ó,õ,œ,ø,ō</string> + <string name="alternates_for_u">7,ü,û,ù,ú,ū</string> + <string name="alternates_for_s">ß,ś,š</string> + <string name="alternates_for_n">ñ,ń</string> + <string name="alternates_for_y">6</string> + <string name="alternates_for_z"></string> +</resources> diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml index 65f0faa32..01adc52d2 100644 --- a/java/res/values-de/strings.xml +++ b/java/res/values-de/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Textkorrektur"</string> <string name="ngram_category" msgid="5337109164339320257">"Vorschläge basieren auf bisherigen Wörtern"</string> <string name="misc_category" msgid="6894192814868233453">"Sonstige Optionen"</string> + <string name="advanced_settings" msgid="362895144495591463">"Erweiterte Einstellungen"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Optionen für Experten"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Verzög. Schlüssel-Pop-up"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Keine Verzögerung"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Autom. Groß-/Kleinschr."</string> <string name="quick_fixes" msgid="5353213327680897927">"Quick Fixes"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Korrigiert gängige Tippfehler"</string> @@ -62,7 +71,7 @@ <string name="label_pause_key" msgid="181098308428035340">"Pause"</string> <string name="label_wait_key" msgid="6402152600878093134">"Warten"</string> <string name="voice_warning_title" msgid="4419354150908395008">"Spracheingabe"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Spracheingaben werden derzeit nicht für Ihre Sprache unterstützt, funktionieren jedoch in Englisch."</string> + <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Spracheingaben werden zurzeit nicht für Ihre Sprache unterstützt, funktionieren jedoch in Englisch."</string> <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Die Spracheingabe verwendet die Spracherkennung von Google. Es gelten die "<a href="http://m.google.com/privacy">"Google Mobile-Datenschutzbestimmungen"</a>"."</string> <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Rufen Sie zum Deaktivieren der Spracheingabe die Einstellungen für die Eingabemethode auf."</string> <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Drücken Sie zur Verwendung der Spracheingabe die Mikrofonschaltfläche."</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Englische Tastatur (GB)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Englische Tastatur (USA)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spanische Tastatur"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spanische Tastatur (USA)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Französische Tastatur"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Französische Tastatur (Kanada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Französische Tastatur (Schweiz)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hebräische Tastatur"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italienische Tastatur"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norwegische Tastatur"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Niederländische Tastatur"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polnische Tastatur"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugiesische Tastatur"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russische Tastatur"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbische Tastatur"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Schwedische Tastatur"</string> diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml index 5cee959a0..9d8729ebe 100644 --- a/java/res/values-el/strings.xml +++ b/java/res/values-el/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Διόρθωση κειμένου"</string> <string name="ngram_category" msgid="5337109164339320257">"Προτάσεις που βασίζονται σε προηγούμενες λέξεις"</string> <string name="misc_category" msgid="6894192814868233453">"Άλλες επιλογές"</string> + <string name="advanced_settings" msgid="362895144495591463">"Σύνθετες ρυθμίσεις"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Επιλογές για έμπειρους χρήστες"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Χρόνος εξαφ. αναδ. παραθ."</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Χωρίς καθυστέρ."</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Προεπιλογή"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Αυτόματη χρήση κεφαλαίων"</string> <string name="quick_fixes" msgid="5353213327680897927">"Γρήγορες διορθώσεις"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Διορθώνει συνηθισμένα λάθη πληκτρολόγησης"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Αγγλικό (ΗΒ) πληκτρολόγιο"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Αγγλικό (ΗΠΑ) πληκτρολόγιο"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Ισπανικό πληκτρολόγιο"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Ισπανικό (ΗΠΑ) πληκτρολόγιο"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Γαλλικό πληκτρολόγιο"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Γαλλικό (Καναδάς) πληκτρολόγιο"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Γαλλικό (Ελβετία) πληκτρολόγιο"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Πληκτρολόγιο με εβραϊκή γραφή"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Ιταλικό πληκτρολόγιο"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Νορβηγικό πληκτρολόγιο"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Ολλανδικό πληκτρολόγιο"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Πληκτρολόγιο με πολωνικούς χαρακτήρες"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Πορτογαλικό πληκτρολόγιο"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Ρωσικό πληκτρολόγιο"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Σερβικό πληκτρολόγιο"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Σουηδικό πληκτρολόγιο"</string> diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml index 7d5d50177..3a488f4cc 100644 --- a/java/res/values-en-rGB/strings.xml +++ b/java/res/values-en-rGB/strings.xml @@ -30,6 +30,13 @@ <string name="correction_category" msgid="2236750915056607613">"Text correction"</string> <string name="ngram_category" msgid="5337109164339320257">"Suggestions based on previous words"</string> <string name="misc_category" msgid="6894192814868233453">"Other Options"</string> + <string name="advanced_settings" msgid="362895144495591463">"Advanced settings"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Options for expert users"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Key pop-up dismiss delay"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"No delay"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Default"</string> + <string name="use_contacts_dict" msgid="4435317977804180815">"Suggest Contact names"</string> + <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Use names from Contacts for suggestions and corrections"</string> <string name="auto_cap" msgid="1719746674854628252">"Auto-capitalisation"</string> <string name="quick_fixes" msgid="5353213327680897927">"Quick fixes"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Corrects commonly typed mistakes"</string> @@ -105,14 +112,18 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"English (UK) Keyboard"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"English (US) Keyboard"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spanish Keyboard"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spanish (US) Keyboard"</string> + <string name="subtype_mode_fi_keyboard" msgid="3198596464082614532">"Finnish Keyboard"</string> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"French Keyboard"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"French (Canada) Keyboard"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"French (Switzerland) Keyboard"</string> + <string name="subtype_mode_hr_keyboard" msgid="7177182405440070112">"Croatian Keyboard"</string> + <string name="subtype_mode_hu_keyboard" msgid="8843338355732633647">"Hungarian Keyboard"</string> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hebrew Keyboard"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italian Keyboard"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norwegian Keyboard"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Dutch Keyboard"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polish keyboard"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portuguese Keyboard"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russian Keyboard"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbian Keyboard"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Swedish Keyboard"</string> diff --git a/java/res/layout/input_basic_highcontrast.xml b/java/res/values-en/whitelist.xml index 4829c7d7c..9395f4c88 100644 --- a/java/res/layout/input_basic_highcontrast.xml +++ b/java/res/values-en/whitelist.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -17,16 +17,22 @@ ** limitations under the License. */ --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- + An entry of the whitelist word should be: + 1. (int)frequency + 2. (String)before + 3. (String)after + --> + <string-array name="wordlist_whitelist" translatable="false"> -<com.android.inputmethod.keyboard.LatinKeyboardView - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - android:id="@+id/latin_keyboard_view" - android:layout_alignParentBottom="true" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="0dip" - android:background="@android:color/black" + <item>255</item> + <item>ill</item> + <item>I\'ll</item> - latin:keyBackground="@drawable/btn_keyboard_key3" - /> + <item>255</item> + <item>thisd</item> + <item>this\'d</item> + + </string-array> +</resources> diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml index e40f98b3b..048f02eed 100644 --- a/java/res/values-es-rUS/strings.xml +++ b/java/res/values-es-rUS/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Corrección de texto"</string> <string name="ngram_category" msgid="5337109164339320257">"Sugerencias sobre la base de palabras anteriores"</string> <string name="misc_category" msgid="6894192814868233453">"Otras opciones"</string> + <string name="advanced_settings" msgid="362895144495591463">"Configuración avanzada"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opciones para usuarios expertos"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Demora en rechazo de ventana emergente de clave"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sin demora"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predeterminada"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Mayúsculas automáticas"</string> <string name="quick_fixes" msgid="5353213327680897927">"Arreglos rápidos"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige errores de escritura comunes"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Teclado en inglés (Reino Unido)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Teclado en inglés (EE.UU.)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Teclado en español"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Teclado en español (EE.UU.)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Teclado en francés"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Teclado en francés (Canadá)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Teclado en francés (Suiza)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Teclado hebreo"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Teclado en italiano"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Teclado en noruego"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Teclado en holandés"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Teclado polaco"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Teclado en portugués"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Teclado en ruso"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Teclado en serbio"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Teclado en sueco"</string> diff --git a/java/res/values-es/donottranslate-altchars.xml b/java/res/values-es/donottranslate-altchars.xml index 99f1663a1..16111ec42 100644 --- a/java/res/values-es/donottranslate-altchars.xml +++ b/java/res/values-es/donottranslate-altchars.xml @@ -25,4 +25,6 @@ <string name="alternates_for_u">7,ú,ü,ù,û,ū</string> <string name="alternates_for_n">ñ,ń</string> <string name="alternates_for_c">ç,ć,č</string> + <string name="alternates_for_punctuation">"\\,,\?,!,¿,¡,:,-,\',\",),(,/,;,+,&,\@"</string> + <string name="alternates_for_web_tab_punctuation">".,\\,,\?,!,¿,¡,:,-,\',\",),(,/,;,+,&,\@"</string> </resources> diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml index e1532427a..b7fbe96ec 100644 --- a/java/res/values-es/strings.xml +++ b/java/res/values-es/strings.xml @@ -27,11 +27,17 @@ <string name="sound_on_keypress" msgid="6093592297198243644">"Sonido al pulsar tecla"</string> <string name="popup_on_keypress" msgid="123894815723512944">"Popup al pulsar tecla"</string> <string name="general_category" msgid="1859088467017573195">"General"</string> - <!-- no translation found for correction_category (2236750915056607613) --> + <string name="correction_category" msgid="2236750915056607613">"Corrección ortográfica"</string> + <string name="ngram_category" msgid="5337109164339320257">"Sugerencias basadas en palabras anteriores"</string> + <string name="misc_category" msgid="6894192814868233453">"Otras opciones"</string> + <string name="advanced_settings" msgid="362895144495591463">"Ajustes avanzados"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opciones para usuarios expertos"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Retraso de rechazo"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sin retraso"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predeterminado"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> <skip /> - <!-- no translation found for ngram_category (5337109164339320257) --> - <skip /> - <!-- no translation found for misc_category (6894192814868233453) --> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> <skip /> <string name="auto_cap" msgid="1719746674854628252">"Mayúsculas automáticas"</string> <string name="quick_fixes" msgid="5353213327680897927">"Correcciones rápidas"</string> @@ -41,8 +47,7 @@ <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostrar siempre"</string> <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Mostrar en modo vertical"</string> <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ocultar siempre"</string> - <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) --> - <skip /> + <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Utilizar espacio para cambiar idioma"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Mostrar tecla de ajustes"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automáticamente"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostrar siempre"</string> @@ -52,12 +57,10 @@ <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desactivada"</string> <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Parcial"</string> <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Total"</string> - <!-- outdated translation 7146707435859263625 --> <string name="bigram_suggestion" msgid="2636414079905220518">"Sugerencias de bigramas"</string> + <string name="bigram_suggestion" msgid="2636414079905220518">"Sugerencias de bigramas"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Usar palabra anterior para mejorar sugerencias"</string> - <!-- no translation found for bigram_prediction (8914273444762259739) --> - <skip /> - <!-- no translation found for bigram_prediction_summary (1747261921174300098) --> - <skip /> + <string name="bigram_prediction" msgid="8914273444762259739">"Predicción de bigramas"</string> + <string name="bigram_prediction_summary" msgid="1747261921174300098">"Utilizar también la palabra anterior para realizar la predicción"</string> <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: guardada"</string> <string name="label_go_key" msgid="1635148082137219148">"Ir"</string> <string name="label_next_key" msgid="362972844525672568">"Sig."</string> @@ -111,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Teclado inglés (Reino Unido)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Teclado de inglés (EE.UU.)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Teclado español"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Teclado en español (EE.UU.)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Teclado francés"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Teclado francés (Canadá)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Teclado francés (Suiza)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Teclado hebreo"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Teclado italiano"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Teclado noruego"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Teclado holandés"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Teclado polaco"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Teclado portugués"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Teclado ruso"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Teclado serbio"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Teclado sueco"</string> diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml index 25ee9dff8..17347b20d 100644 --- a/java/res/values-fa/strings.xml +++ b/java/res/values-fa/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"تصحیح متن"</string> <string name="ngram_category" msgid="5337109164339320257">"پیشنهادهایی بر اساس کلمه های قبلی"</string> <string name="misc_category" msgid="6894192814868233453">"سایر گزینه ها"</string> + <string name="advanced_settings" msgid="362895144495591463">"تنظیمات پیشرفته"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"گزینه هایی برای کاربران حرفه ای"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"تأخیر در رد کردن کلید نمایشی"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"بدون تأخیر"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"پیش فرض"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"نوشتن با حروف بزرگ خودکار"</string> <string name="quick_fixes" msgid="5353213327680897927">"راه حل های سریع"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"تصحیح خطاهای تایپی رایج"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"صفحه کلید انگلیسی (بریتانیایی)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"صفحه کلید انگلیسی (آمریکایی)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"صفحه کلید اسپانیایی"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"صفحه کلید اسپانیایی (آمریکایی)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"صفحه کلید فرانسوی"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"صفحه کلید فرانسوی (کانادایی)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"صفحه کلید فرانسوی (سوئیس)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"صفحه کلید عبری"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"صفحه کلید ایتالیایی"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"صفحه کلید نروژی"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"صفحه کلید هلندی"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"صفحه کلید لهستانی"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"صفحه کلید پرتغالی"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"صفحه کلید روسی"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"صفحه کلید صربی"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"صفحه کلید سوئدی"</string> diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml index f02e8217d..7fda7c78a 100644 --- a/java/res/values-fi/strings.xml +++ b/java/res/values-fi/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Tekstin korjaus"</string> <string name="ngram_category" msgid="5337109164339320257">"Aiempiin sanoihin perustuvat ehdotukset"</string> <string name="misc_category" msgid="6894192814868233453">"Muut vaihtoehdot"</string> + <string name="advanced_settings" msgid="362895144495591463">"Lisäasetukset"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Valinnat kokeneille käyttäjille"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Näppäimen hylkäysviive"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Ei viivettä"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Oletus"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Automaattiset isot kirjaimet"</string> <string name="quick_fixes" msgid="5353213327680897927">"Pikakorjaukset"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Korjaa yleiset kirjoitusvirheet"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Näppäimistö: englanti (UK)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Näppäimistö: englanti (US)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Näppäimistö: espanja"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Näppäimistö: espanja (US)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Näppäimistö: ranska"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Näppäimistö: ranska (Kanada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Näppäimistö: ranska (Sveitsi)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hepreankielinen näppäimistö"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Näppäimistö: italia"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Näppäimistö: norja"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Näppäimistö: hollanti"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Näppäimistö: puola"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Näppäimistö: portugali"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Näppäimistö: venäjä"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Näppäimistö: serbia"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Näppäimistö: ruotsi"</string> diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml index 276aed2c5..2f09277b5 100644 --- a/java/res/values-fr/strings.xml +++ b/java/res/values-fr/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Correction du texte"</string> <string name="ngram_category" msgid="5337109164339320257">"Suggestions basées sur les mots précédents"</string> <string name="misc_category" msgid="6894192814868233453">"Autres options"</string> + <string name="advanced_settings" msgid="362895144495591463">"Paramètres avancés"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Options destinées aux utilisateurs expérimentés"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Délai masq. touche pop-up"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Aucun délai"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Par défaut"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Majuscules auto"</string> <string name="quick_fixes" msgid="5353213327680897927">"Corrections rapides"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige les fautes de frappe courantes"</string> @@ -38,7 +47,7 @@ <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Toujours afficher"</string> <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Afficher en mode Portrait"</string> <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Toujours masquer"</string> - <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Sélecteur langue barre d\'espace"</string> + <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Barre d\'espace pour changer langue"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Afficher touche param."</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatique"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Toujours afficher"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Clavier anglais (Royaume-Uni)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Clavier anglais (États-Unis)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Clavier espagnol"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Clavier espagnol (États-Unis)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Clavier français"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Clavier français (Canada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Clavier français (Suisse)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Clavier hébreu"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Clavier italien"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Clavier norvégien"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Clavier néerlandais"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Clavier polonais"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Clavier portugais"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Clavier russe"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Clavier serbe"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Clavier suédois"</string> diff --git a/java/res/values-hr/donottranslate-altchars.xml b/java/res/values-hr/donottranslate-altchars.xml new file mode 100644 index 000000000..d0c9d4049 --- /dev/null +++ b/java/res/values-hr/donottranslate-altchars.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="alternates_for_s">š,ś,ß</string> + <string name="alternates_for_n">ñ,ń</string> + <string name="alternates_for_y"></string> + <string name="alternates_for_z">6,ž,ź,ż</string> + <string name="alternates_for_c">č,ć,ç</string> + <string name="alternates_for_d">đ</string> +</resources> diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml index 6117821ee..b3df4ed05 100644 --- a/java/res/values-hr/strings.xml +++ b/java/res/values-hr/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Ispravak teksta"</string> <string name="ngram_category" msgid="5337109164339320257">"Prijedlozi na temelju prethodnih riječi"</string> <string name="misc_category" msgid="6894192814868233453">"Ostale opcije"</string> + <string name="advanced_settings" msgid="362895144495591463">"Napredne postavke"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opcije za stručne korisnike"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Bez odgode klj. skočnih"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez odgode"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Zadano"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Automatsko pisanje velikih slova"</string> <string name="quick_fixes" msgid="5353213327680897927">"Brzi popravci"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Ispravlja uobičajene pogreške u pisanju"</string> @@ -38,7 +47,7 @@ <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Uvijek prikaži"</string> <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Prikaži u portretnom načinu"</string> <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Uvijek sakrij"</string> - <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Koristite razmaknicu za prebacivanje jezika"</string> + <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Upotrijebite razmaknicu za prebacivanje jezika"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Prikaži tipku postavki"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatski"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Uvijek prikaži"</string> @@ -51,7 +60,7 @@ <string name="bigram_suggestion" msgid="2636414079905220518">"Bigram prijedlozi"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Upotrijebi prethodnu riječ radi poboljšanja prijedloga"</string> <string name="bigram_prediction" msgid="8914273444762259739">"Bigram predviđanje"</string> - <string name="bigram_prediction_summary" msgid="1747261921174300098">"Koristite prethodnu riječ i za predviđanje"</string> + <string name="bigram_prediction_summary" msgid="1747261921174300098">"Upotrijebite prethodnu riječ i za predviđanje"</string> <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Spremljeno"</string> <string name="label_go_key" msgid="1635148082137219148">"Idi"</string> <string name="label_next_key" msgid="362972844525672568">"Dalje"</string> @@ -61,7 +70,7 @@ <string name="label_more_key" msgid="3760239494604948502">"Više"</string> <string name="label_pause_key" msgid="181098308428035340">"Pauza"</string> <string name="label_wait_key" msgid="6402152600878093134">"Pričekaj"</string> - <string name="voice_warning_title" msgid="4419354150908395008">"Glasovni unos"</string> + <string name="voice_warning_title" msgid="4419354150908395008">"Glasovni ulaz"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Vaš jezik trenutno nije podržan za glasovni unos, ali radi za engleski."</string> <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Glasovni unos upotrebljava Googleovo prepoznavanje govora. Primjenjuju se "<a href="http://m.google.com/privacy">"Pravila o privatnosti za uslugu Mobile"</a>"."</string> <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Za isključivanje glasovnog unosa idite na postavke načina unosa."</string> @@ -81,7 +90,7 @@ <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Savjet:"</b>" Sljedeći put pokušajte izgovoriti znakove interpunkcije poput \"točka, \"zarez\" ili \"upitnik\"."</string> <string name="cancel" msgid="6830980399865683324">"Odustani"</string> <string name="ok" msgid="7898366843681727667">"U redu"</string> - <string name="voice_input" msgid="2466640768843347841">"Glasovni unos"</string> + <string name="voice_input" msgid="2466640768843347841">"Glasovni ulaz"</string> <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na glavnoj tipkovnici"</string> <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na tipkovnici simb."</string> <string name="voice_input_modes_off" msgid="3745699748218082014">"Isključeno"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engleska (UK) tipkovnica"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engleska (SAD) tipkovnica"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Španjolska tipkovnica"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Tipkovnica za španjolski (SAD)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Francuska tipkovnica"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Francuska (Kanada) tipkovnica"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Francuska (Švicarska) tipkovnica"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hebrejska tipkovnica"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Talijanska tipkovnica"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norveška tipkovnica"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Nizozemska tipkovnica"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Poljska tipkovnica"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugalska tipkovnica"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Ruska tipkovnica"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Srpska tipkovnica"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Švedska tipkovnica"</string> diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml index 81255d719..aed535ab0 100644 --- a/java/res/values-hu/strings.xml +++ b/java/res/values-hu/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Szövegjavítás"</string> <string name="ngram_category" msgid="5337109164339320257">"Javaslatok korábbi szavak alapján"</string> <string name="misc_category" msgid="6894192814868233453">"Egyéb beállítások"</string> + <string name="advanced_settings" msgid="362895144495591463">"Speciális beállítások"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Beállítások gyakorlott felhasználóknak"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Gombeltüntetés késése"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Nincs késés"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Alapbeállítás"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Automatikusan nagy kezdőbetű"</string> <string name="quick_fixes" msgid="5353213327680897927">"Gyorsjavítások"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Kijavítja a gyakori gépelési hibákat"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Angol (UK) billentyűzet"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Angol (US) billentyűzet"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spanyol billentyűzet"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spanyol (US) billentyűzet"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Francia billentyűzet"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Francia (kanadai) billentyűzet"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Francia (svájci) billentyűzet"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Héber billentyűzet"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Olasz billentyűzet"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norvég billentyűzet"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Holland billentyűzet"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Lengyel billentyűzet"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugál billentyűzet"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Orosz billentyűzet"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Szerb billentyűzet"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Svéd billentyűzet"</string> diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml index 32ef38d35..97706d031 100644 --- a/java/res/values-in/strings.xml +++ b/java/res/values-in/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Koreksi teks"</string> <string name="ngram_category" msgid="5337109164339320257">"Saran berdasarkan kata sebelumnya"</string> <string name="misc_category" msgid="6894192814868233453">"Opsi lain"</string> + <string name="advanced_settings" msgid="362895144495591463">"Setelan lanjutan"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Pilihan untuk pengguna ahli"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Tundaan singkir munculan kunci"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Tanpa penundaan"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Bawaan"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Kapitalisasi otomatis"</string> <string name="quick_fixes" msgid="5353213327680897927">"Perbaikan cepat"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Memperbaiki kesalahan ketik umum"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Keyboard Inggris (Britania Raya)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Keyboard Inggris (AS)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Keyboard Spanyol"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Keyboard Spanyol (AS)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Keyboard Prancis"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Keyboard Prancis (Kanada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Keyboard Prancis (Swiss)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Papan tombol Ibrani"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Keyboard Italia"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Keyboard Norwegia"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Keyboard Belanda"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Keyboard bahasa Polski"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Keyboard Portugis"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Keyboard Rusia"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Keyboard Serbia"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Keyboard Swedia"</string> diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml index 3a896fcd7..eb902e049 100644 --- a/java/res/values-it/strings.xml +++ b/java/res/values-it/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Correzione testo"</string> <string name="ngram_category" msgid="5337109164339320257">"Suggerimenti in base alle parole precedenti"</string> <string name="misc_category" msgid="6894192814868233453">"Altre opzioni"</string> + <string name="advanced_settings" msgid="362895144495591463">"Impostazioni avanzate"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opzioni per utenti esperti"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Ritardo eliminaz. popup tasto"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Nessun ritardo"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predefinito"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Maiuscole automatiche"</string> <string name="quick_fixes" msgid="5353213327680897927">"Correzioni veloci"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Corregge gli errori di digitazione più comuni"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Tastiera inglese (Regno Unito)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Tastiera inglese (Stati Uniti)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Tastiera spagnola"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Tastiera spagnola (Stati Uniti)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Tastiera francese"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Tastiera francese (Canada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Tastiera francese (Svizzera)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Tastiera ebraica"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Tastiera italiana"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Tastiera norvegese"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Tastiera olandese"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Tastiera polacca"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Tastiera portoghese"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Tastiera russa"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Tastiera serba"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Tastiera svedese"</string> diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml index 0b26ed9fe..c45351037 100644 --- a/java/res/values-iw/strings.xml +++ b/java/res/values-iw/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"תיקון טקסט"</string> <string name="ngram_category" msgid="5337109164339320257">"הצעות המבוססות על מילים קודמות"</string> <string name="misc_category" msgid="6894192814868233453">"אפשרויות אחרות"</string> + <string name="advanced_settings" msgid="362895144495591463">"הגדרות מתקדמות"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"אפשרויות עבור משתמשים מתקדמים"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"עיכוב דחייה של מוקפץ ראשי"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"ללא עיכוב"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"ברירת מחדל"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"הפיכה אוטומטית של אותיות לרישיות"</string> <string name="quick_fixes" msgid="5353213327680897927">"תיקונים מהירים"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"מתקן שגיאות הקלדה נפוצות"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"מקלדת אנגלית (בריטניה)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"מקלדת אנגלית (ארה\"ב)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"מקלדת ספרדית"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"מקלדת ספרדית (ארה\"ב)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"מקלדת צרפתית"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"מקלדת צרפתית (קנדה)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"מקלדת צרפתית (שוויץ)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"מקלדת בשפה העברית"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"מקלדת איטלקית"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"מקלדת נורווגית"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"מקלדת הולנדית"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"מקלדת פולנית"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"מקלדת פורטוגזית"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"מקלדת רוסית"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"מקלדת סרבית"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"מקלדת שוודית"</string> diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml index 402c35675..2aa55a7e0 100644 --- a/java/res/values-ja/strings.xml +++ b/java/res/values-ja/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"テキストの修正"</string> <string name="ngram_category" msgid="5337109164339320257">"前の語句に基づいた入力候補表示"</string> <string name="misc_category" msgid="6894192814868233453">"他のオプション"</string> + <string name="advanced_settings" msgid="362895144495591463">"詳細設定"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"上級ユーザー向けオプション"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"キーのポップアップ時間"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"すぐに消去"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"デフォルト"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"自動大文字変換"</string> <string name="quick_fixes" msgid="5353213327680897927">"クイックフィックス"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"よくある誤字・脱字を修正します"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"英語(英国)のキーボード"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"英語(米国)のキーボード"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"スペイン語のキーボード"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"スペイン語(米国)のキーボード"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"フランス語のキーボード"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"フランス語(カナダ)のキーボード"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"フランス語(スイス)のキーボード"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"ヘブライ語のキーボード"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"イタリア語のキーボード"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"ノルウェー語のキーボード"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"オランダ語のキーボード"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"ポーランド語のキーボード"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"ポルトガル語のキーボード"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"ロシア語のキーボード"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"セルビア語のキーボード"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"スウェーデン語のキーボード"</string> diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml index ca2f570a8..8f4747843 100644 --- a/java/res/values-ko/strings.xml +++ b/java/res/values-ko/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"텍스트 수정"</string> <string name="ngram_category" msgid="5337109164339320257">"이전 단어에 기반한 추천"</string> <string name="misc_category" msgid="6894192814868233453">"기타 옵션"</string> + <string name="advanced_settings" msgid="362895144495591463">"고급 설정"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"전문 사용자용 옵션"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"키 팝업 해제 지연"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"지연 없음"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"기본값"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"자동 대문자화"</string> <string name="quick_fixes" msgid="5353213327680897927">"빠른 수정"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"자주 발생하는 오타를 수정합니다."</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"영어(영국) 키보드"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"영어(미국) 키보드"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"스페인어 키보드"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"스페인어(미국) 키보드"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"프랑스어 키보드"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"프랑스어(캐나다) 키보드"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"프랑스어(스위스) 키보드"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"히브리어 키보드"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"이탈리아어 키보드"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"노르웨이어 키보드"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"네덜란드어 키보드"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"폴란드어 키보드"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"포르투갈어 키보드"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"러시아어 키보드"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"세르비아어 키보드"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"스웨덴어 키보드"</string> diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml index 8af3cb005..8f6eb2339 100644 --- a/java/res/values-land/dimens.xml +++ b/java/res/values-land/dimens.xml @@ -26,16 +26,22 @@ <!-- <dimen name="key_height">0.260in</dimen>--> <dimen name="key_bottom_gap">0.020in</dimen> <dimen name="popup_key_height">0.280in</dimen> - <dimen name="keyboard_top_padding">0.0in</dimen> - <dimen name="keyboard_bottom_padding">0.0in</dimen> + <dimen name="keyboard_top_padding">0.00in</dimen> + <dimen name="keyboard_bottom_padding">0.00in</dimen> + <dimen name="key_bottom_gap_ics">0.04in</dimen> + <dimen name="key_horizontal_gap_ics">0.01in</dimen> + <dimen name="keyboard_top_padding_ics">0.03in</dimen> + <dimen name="keyboard_bottom_padding_ics">0.00in</dimen> <dimen name="keyboard_horizontal_edges_padding">0.0in</dimen> <fraction name="key_letter_ratio">55%</fraction> - <fraction name="key_label_text_ratio">35%</fraction> - <dimen name="key_preview_offset">0.08in</dimen> + <fraction name="key_label_ratio">35%</fraction> + <fraction name="key_hint_letter_ratio">28%</fraction> + <fraction name="key_uppercase_letter_ratio">40%</fraction> <fraction name="key_preview_text_ratio">90%</fraction> + <dimen name="key_preview_offset">0.08in</dimen> + <dimen name="key_preview_offset_ics">0.01in</dimen> <dimen name="candidate_strip_height">38dip</dimen> <dimen name="candidate_strip_fading_edge_length">63dip</dimen> - <dimen name="spacebar_vertical_correction">2dip</dimen> <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. --> <!-- popup_key_height x 1.2 --> <dimen name="mini_keyboard_slide_allowance">0.336in</dimen> diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml index fbe50e005..ae32914ed 100644 --- a/java/res/values-lt/strings.xml +++ b/java/res/values-lt/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Teksto taisymas"</string> <string name="ngram_category" msgid="5337109164339320257">"Pasiūlymai pagal ankstesnius žodžius"</string> <string name="misc_category" msgid="6894192814868233453">"Kitos parinktys"</string> + <string name="advanced_settings" msgid="362895144495591463">"Išplėstiniai nustatymai"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Parinktys ekspertams"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Pagr. išš. l. atsis. d."</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Be delsos"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Numatytasis"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Automatinis didžiųjų raidžių rašymas"</string> <string name="quick_fixes" msgid="5353213327680897927">"Greiti pataisymai"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Taiso dažnai padarytas rašybos klaidas"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Angliška (JK) klaviatūra"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Angliška (JAV) klaviatūra"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Ispaniška klaviatūra"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Ispaniška (JAV) klaviatūra"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Prancūziška klaviatūra"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Prancūziška (Kanada) klaviatūra"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Prancūziška (Šveicarija) klaviatūra"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hebrajiška klaviatūra"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Itališka klaviatūra"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norvegiška klaviatūra"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Olandiška klaviatūra"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Lenkiška klaviatūra"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugališka klaviatūra"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Rusiška klaviatūra"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbiška klaviatūra"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Švediška klaviatūra"</string> diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml index 84bee5382..d455715e5 100644 --- a/java/res/values-lv/strings.xml +++ b/java/res/values-lv/strings.xml @@ -28,8 +28,17 @@ <string name="popup_on_keypress" msgid="123894815723512944">"Nospiežot taustiņu, parādīt uznirstošo izvēlni"</string> <string name="general_category" msgid="1859088467017573195">"Vispārīgi"</string> <string name="correction_category" msgid="2236750915056607613">"Teksta korekcija"</string> - <string name="ngram_category" msgid="5337109164339320257">"Ieteikumi, pamatojoties uz iepriekšējiem vārdiem"</string> + <string name="ngram_category" msgid="5337109164339320257">"Ieteikumi, kuru pamatā ir iepriekšējie vārdi"</string> <string name="misc_category" msgid="6894192814868233453">"Citas opcijas"</string> + <string name="advanced_settings" msgid="362895144495591463">"Papildu iestatījumi"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opcijas speciālistiem"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Taust. uzn. loga noraid. aizk."</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez aizkaves"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Noklusējums"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Automātiska lielo burtu lietošana"</string> <string name="quick_fixes" msgid="5353213327680897927">"Ātrie labojumi"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Nodrošina izplatītu drukas kļūdu labošanu."</string> @@ -38,7 +47,7 @@ <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Vienmēr rādīt"</string> <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Rādīt portreta režīmā"</string> <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Vienmēr slēpt"</string> - <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Izmantot atstarpēšanas taustiņu, lai pārslēgtu valodu"</string> + <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Izmantot valodu pārslēgšanai atstarpēšanas taustiņu"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Rādīt iestatījumu taustiņu"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automātiski"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vienmēr rādīt"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Angļu (Lielbritānija) tastatūra"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Angļu (ASV) tastatūra"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spāņu tastatūra"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spāņu (ASV) tastatūra"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Franču tastatūra"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Franču (Kanāda) tastatūra"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Franču (Šveices) tastatūra"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Ebreju tastatūra"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Itāļu tastatūra"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norvēģu tastatūra"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Holandiešu tastatūra"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Poļu valodas tastatūra"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugāļu valodas tastatūra"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Krievu tastatūra"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbu tastatūra"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Zviedru tastatūra"</string> diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml new file mode 100644 index 000000000..532a89539 --- /dev/null +++ b/java/res/values-ms/strings.xml @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2008, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="english_ime_name" msgid="7252517407088836577">"Papan kekunci Android"</string> + <string name="english_ime_settings" msgid="6661589557206947774">"Tetapan papan kekunci Android"</string> + <string name="english_ime_input_options" msgid="3909945612939668554">"Pilihan input"</string> + <string name="vibrate_on_keypress" msgid="5258079494276955460">"Getar pada tekanan kekunci"</string> + <string name="sound_on_keypress" msgid="6093592297198243644">"Bunyi pada tekanan kekunci"</string> + <string name="popup_on_keypress" msgid="123894815723512944">"Pop timbul pada tekanan kunci"</string> + <string name="general_category" msgid="1859088467017573195">"Umum"</string> + <string name="correction_category" msgid="2236750915056607613">"Pembetulan teks"</string> + <string name="ngram_category" msgid="5337109164339320257">"Cadangan berdasarkan pada perkataan sebelumnya"</string> + <string name="misc_category" msgid="6894192814868233453">"Pilihan lain"</string> + <!-- no translation found for advanced_settings (362895144495591463) --> + <skip /> + <!-- no translation found for advanced_settings_summary (5193513161106637254) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) --> + <skip /> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> + <string name="auto_cap" msgid="1719746674854628252">"Huruf besar auto"</string> + <string name="quick_fixes" msgid="5353213327680897927">"Pembaikan pantas"</string> + <string name="quick_fixes_summary" msgid="3405028402510332373">"Membetulkan kesalahan menaip yang biasa"</string> + <string name="prefs_show_suggestions" msgid="8026799663445531637">"Tunjukkan cadangan pembetulan"</string> + <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Paparkan cadangan perkataan semasa menaip"</string> + <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Sentiasa tunjukkan"</string> + <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Tunjukkan pada mod potret"</string> + <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Sentiasa sembunyikan"</string> + <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Bar ruang tukar bhs"</string> + <string name="prefs_settings_key" msgid="4623341240804046498">"Tunjukkan kekunci tetapan"</string> + <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatik"</string> + <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Sentiasa tunjukkan"</string> + <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Sentiasa sembunyikan"</string> + <string name="auto_correction" msgid="4979925752001319458">"Auto Pembetulan"</string> + <string name="auto_correction_summary" msgid="5625751551134658006">"Bar ruang dan tanda baca secara automatik membetulkan perkataan yang ditaip salah"</string> + <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Matikan"</string> + <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Sederhana"</string> + <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Agresif"</string> + <string name="bigram_suggestion" msgid="2636414079905220518">"Cadangan bigram"</string> + <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Gunakan perkataan sebelumnya untuk memperbaik cadangan"</string> + <string name="bigram_prediction" msgid="8914273444762259739">"Ramalan bigram"</string> + <string name="bigram_prediction_summary" msgid="1747261921174300098">"Gunakan juga perkataan sebelumnya untuk ramalan"</string> + <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Disimpan"</string> + <string name="label_go_key" msgid="1635148082137219148">"Pergi"</string> + <string name="label_next_key" msgid="362972844525672568">"Seterusnya"</string> + <string name="label_done_key" msgid="2441578748772529288">"Selesai"</string> + <string name="label_send_key" msgid="2815056534433717444">"Hantar"</string> + <string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string> + <string name="label_more_key" msgid="3760239494604948502">"Lagi"</string> + <string name="label_pause_key" msgid="181098308428035340">"Jeda"</string> + <string name="label_wait_key" msgid="6402152600878093134">"Tnggu"</string> + <string name="voice_warning_title" msgid="4419354150908395008">"Input suara"</string> + <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Input suara tidak disokong untuk bahasa anda pada masa ini tetapi ia berfungsi dalam bahasa Inggeris."</string> + <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Input suara menggunakan pengecaman pertuturan Google. "<a href="http://m.google.com/privacy">"Dasar Polisi Mudah Alih"</a>" digunakan."</string> + <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Untuk mematikan input suara, pergi ke tetapan kaedah input."</string> + <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Untuk menggunakan input suara, tekan butang mikrofon."</string> + <string name="voice_listening" msgid="467518160751321844">"Sebutkan sekarang"</string> + <string name="voice_working" msgid="6666937792815731889">"Berfungsi"</string> + <string name="voice_initializing" msgid="661962047129906646"></string> + <string name="voice_error" msgid="5140896300312186162">"Ralat. Sila cuba lagi."</string> + <string name="voice_network_error" msgid="6649556447401862563">"Tidak boleh disambungkan"</string> + <string name="voice_too_much_speech" msgid="5746973620134227376">"Ralat, terlalu banyak pertuturan."</string> + <string name="voice_audio_error" msgid="5072707727016414454">"Masalah audio"</string> + <string name="voice_server_error" msgid="7807129913977261644">"Ralat pelayan"</string> + <string name="voice_speech_timeout" msgid="8461817525075498795">"Tiada pertuturan didengari"</string> + <string name="voice_no_match" msgid="4285117547030179174">"Tiada padanan ditemui"</string> + <string name="voice_not_installed" msgid="5552450909753842415">"Carian suara tidak dipasang"</string> + <string name="voice_swipe_hint" msgid="6943546180310682021">"Petunjuk"<b>":"</b>" Leret merentasi papan kekunci untuk bercakap"</string> + <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Petunjuk:"</b>" Lain kali, cuba ucapkan tanda baca seperti \"titik\", \"koma\" atau \"tanda soal\"."</string> + <string name="cancel" msgid="6830980399865683324">"Batal"</string> + <string name="ok" msgid="7898366843681727667">"OK"</string> + <string name="voice_input" msgid="2466640768843347841">"Input suara"</string> + <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Hidpkn kekunci utama"</string> + <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Pd ppn kekunci simbl"</string> + <string name="voice_input_modes_off" msgid="3745699748218082014">"Matikan"</string> + <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mik. pd kekunci utma"</string> + <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. pd kekunci smbl"</string> + <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Input suara dilmphkn"</string> + <string name="selectInputMethod" msgid="315076553378705821">"Pilih kaedah input"</string> + <string name="language_selection_title" msgid="1651299598555326750">"Bahasa input"</string> + <string name="language_selection_summary" msgid="187110938289512256">"Luncurkan jari pada spacebar untuk menukar bahasa"</string> + <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Sentuh sekali lagi untuk menyimpan"</string> + <string name="has_dictionary" msgid="6071847973466625007">"Kamus tersedia"</string> + <string name="prefs_enable_log" msgid="6620424505072963557">"Dayakan maklum balas pengguna"</string> + <string name="prefs_description_log" msgid="5827825607258246003">"Bantu memperbaik editor input ini dengan menghantar statistik penggunaan dan laporan runtuhan kepada Google."</string> + <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Sentuh untuk membetulkan perkataan"</string> + <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Sentuh perkataan yang dimasukkan untuk membetulkannya, hanya apabila cadangan boleh dilihat"</string> + <string name="keyboard_layout" msgid="437433231038683666">"Tema Papan Kekunci"</string> + <string name="subtype_mode_cs_keyboard" msgid="1141718931112377586">"Papan kekunci Czech"</string> + <string name="subtype_mode_ar_keyboard" msgid="2655338636329774995">"Papan kekunci bahasa Arab"</string> + <string name="subtype_mode_da_keyboard" msgid="1243570804427922104">"Papan kekunci Denmark"</string> + <string name="subtype_mode_de_keyboard" msgid="1990979135959462145">"Papan kekunci Jerman"</string> + <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Papan kekunci Inggeris (UK)"</string> + <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Papan kekunci Inggeris (AS)"</string> + <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Papan kekunci Sepanyol"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> + <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Papan kekunci Perancis"</string> + <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Papan kekunci Perancis (Kanada)"</string> + <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Ppan kekunci Perancis (Switzerland)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> + <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Papan kekunci bahasa Ibrani"</string> + <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Papan kekunci Itali"</string> + <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Papan kekunci Norway"</string> + <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Papan kekunci Belanda"</string> + <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) --> + <skip /> + <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) --> + <skip /> + <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Papan kekunci Rusia"</string> + <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Papan kekunci Serbia"</string> + <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Papan kekunci Sweden"</string> + <string name="subtype_mode_af_voice" msgid="7542487489657902699">"Suara Bahasa Afrikaans"</string> + <string name="subtype_mode_cs_voice" msgid="1136386688120958641">"Suara Orang Czech"</string> + <string name="subtype_mode_de_voice" msgid="8378803143958089866">"Suara Orang Jerman"</string> + <string name="subtype_mode_en_voice" msgid="6643420989651848728">"Suara Bahasa Inggeris"</string> + <string name="subtype_mode_es_voice" msgid="1323473601346507487">"Suara Orang Sepanyol"</string> + <string name="subtype_mode_fr_voice" msgid="4675914209337824269">"Suara Orang Perancis"</string> + <string name="subtype_mode_it_voice" msgid="5077373057157441323">"Suara Bahasa Itali"</string> + <string name="subtype_mode_ja_voice" msgid="6604859132669646367">"Suara Orang Jepun"</string> + <string name="subtype_mode_ko_voice" msgid="4890391190762324561">"Suara Orang Korea"</string> + <string name="subtype_mode_nl_voice" msgid="2603552312869575021">"Suara Bahasa Belanda"</string> + <string name="subtype_mode_pl_voice" msgid="2076196021014840487">"Suara Orang Poland"</string> + <string name="subtype_mode_pt_voice" msgid="8036522712795994397">"Suara Orang Portugis"</string> + <string name="subtype_mode_ru_voice" msgid="8034596947963787529">"Suara Orang Rusia"</string> + <string name="subtype_mode_tr_voice" msgid="3402067436761140005">"Suara Orang Turki"</string> + <string name="subtype_mode_yue_voice" msgid="1576887891614624263">"Cina, Suara Bahasa Yue"</string> + <string name="subtype_mode_zh_voice" msgid="4360533229467271152">"Cina, Suara Bahasa Mandarin"</string> + <string name="subtype_mode_zu_voice" msgid="1146122571698884636">"Suara bahasa isiZulu"</string> + <string name="prefs_usability_study_mode" msgid="6937813623647419810">"Mod Kajian Kebolehgunaan"</string> +</resources> diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml index e20c9515e..af5dd3ce3 100644 --- a/java/res/values-nb/strings.xml +++ b/java/res/values-nb/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Tekstkorrigering"</string> <string name="ngram_category" msgid="5337109164339320257">"Forslag basert på tidligere ord"</string> <string name="misc_category" msgid="6894192814868233453">"Andre alternativer"</string> + <string name="advanced_settings" msgid="362895144495591463">"Avanserte innstillinger"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Alternativer for ekspertbrukere"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Tregt tastevindu"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"U/ forsinkelse"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Stor forbokstav"</string> <string name="quick_fixes" msgid="5353213327680897927">"Autokorrektur"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Retter vanlige stavefeil"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engelsk tastatur (Storbritannia)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engelsk tastatur (USA)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spansk tastatur"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spansk tastatur (USA)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Fransk tastatur"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Fransk tastatur (Canada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Fransk tastatur (Sveits)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hebraisk tastatur"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italiensk tastatur"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norsk tastatur"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Nederlandsk tastatur"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polsk tastatur"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugisisk tastatur"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russisk tastatur"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbisk tastatur"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Svensk tastatur"</string> diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml index 89b714bc8..6c4cb135c 100644 --- a/java/res/values-nl/strings.xml +++ b/java/res/values-nl/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Tekstcorrectie"</string> <string name="ngram_category" msgid="5337109164339320257">"Suggesties op basis van eerdere woorden"</string> <string name="misc_category" msgid="6894192814868233453">"Andere opties"</string> + <string name="advanced_settings" msgid="362895144495591463">"Geavanceerde instellingen"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opties voor ervaren gebruikers"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Afwijz.vertr. toetspop-up"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Geen vertraging"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standaard"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Auto-hoofdlettergebruik"</string> <string name="quick_fixes" msgid="5353213327680897927">"Snelle oplossingen"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Hiermee worden veelvoorkomende typefouten gecorrigeerd"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engels toetsenbord (VK)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engels toetsenbord (VS)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spaans toetsenbord"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spaans toetsenbord (VS)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Frans toetsenbord"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Frans toetsenbord (Canada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Frans toetsenbord (Zwitserland)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hebreeuws toetsenbord"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italiaans toetsenbord"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Noors toetsenbord"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Nederlands toetsenbord"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Pools toetsenbord"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugees toetsenbord"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russisch toetsenbord"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Servisch toetsenbord"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Zweeds toetsenbord"</string> diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml index 65240d748..2c39c532c 100644 --- a/java/res/values-pl/strings.xml +++ b/java/res/values-pl/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Poprawianie tekstu"</string> <string name="ngram_category" msgid="5337109164339320257">"Podpowiedzi na podstawie wcześniejszych słów"</string> <string name="misc_category" msgid="6894192814868233453">"Inne opcje"</string> + <string name="advanced_settings" msgid="362895144495591463">"Ustawienia zaawansowane"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opcje dla zaawansowanych użytkowników"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Opóźnienie wyłączenia wyskakującego okienka"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez opóźnienia"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Wartość domyślna"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Wstawiaj wielkie litery"</string> <string name="quick_fixes" msgid="5353213327680897927">"Szybkie poprawki"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Poprawia częste błędy wpisywania"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Klawiatura angielska (UK)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Klawiatura angielska (USA)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Klawiatura hiszpańska"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Klawiatura hiszpańska (USA)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Klawiatura francuska"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Klawiatura francuska (Kanada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Klawiatura francuska (Szwajcaria)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Klawiatura hebrajska"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Klawiatura włoska"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Klawiatura norweska"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Klawiatura holenderska"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Klawiatura polska"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Klawiatura portugalska"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Klawiatura rosyjska"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Klawiatura serbska"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Klawiatura szwedzka"</string> diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml index b972ce049..cae6f49f7 100644 --- a/java/res/values-pt-rPT/strings.xml +++ b/java/res/values-pt-rPT/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Correção de texto"</string> <string name="ngram_category" msgid="5337109164339320257">"Sugestões baseadas em palavras anteriores"</string> <string name="misc_category" msgid="6894192814868233453">"Outras opções"</string> + <string name="advanced_settings" msgid="362895144495591463">"Definições avançadas"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opções para utilizadores experientes"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Atraso p/ ignorar pop-up"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sem atraso"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predefinido"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Letras maiúsculas automáticas"</string> <string name="quick_fixes" msgid="5353213327680897927">"Correcções rápidas"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige os erros de escrita comuns"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Teclado inglês (Reino Unido)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Teclado inglês (EUA)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Teclado espanhol"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Teclado espanhol (EUA)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Teclado francês"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Teclado francês (Canadá)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Teclado francês (Suíça)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Teclado hebraico"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Teclado italiano"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Teclado norueguês"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Teclado holandês"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Teclado Polaco"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Teclado Português"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Teclado russo"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Teclado sérvio"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Teclado sueco"</string> diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml index a999dc67e..62c20eb82 100644 --- a/java/res/values-pt/strings.xml +++ b/java/res/values-pt/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Correção de texto"</string> <string name="ngram_category" msgid="5337109164339320257">"Sugestões baseadas em palavras anteriores"</string> <string name="misc_category" msgid="6894192814868233453">"Outras opções"</string> + <string name="advanced_settings" msgid="362895144495591463">"Configurações avançadas"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opções para usuários experientes"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Dispens. atraso chave princ."</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sem atraso"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Padrão"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Capitaliz. automática"</string> <string name="quick_fixes" msgid="5353213327680897927">"Reparos rápidos"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige erros comuns de digitação"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Teclado para inglês (Reino Unido)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Teclado para inglês (EUA)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Teclado para espanhol"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Teclado para espanhol"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Teclado para francês"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Teclado para francês (Canadá)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Teclado para francês (Suíça)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Teclado hebraico"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Teclado para italiano"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Teclado para norueguês"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Teclado para holandês"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Teclado polonês"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Teclado em português"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Teclado para russo"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Teclado para sérvio"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Teclado para sueco"</string> diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml index b0c1bea24..ddb40e809 100644 --- a/java/res/values-rm/strings.xml +++ b/java/res/values-rm/strings.xml @@ -35,6 +35,20 @@ <skip /> <!-- no translation found for misc_category (6894192814868233453) --> <skip /> + <!-- no translation found for advanced_settings (362895144495591463) --> + <skip /> + <!-- no translation found for advanced_settings_summary (5193513161106637254) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) --> + <skip /> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Maiusclas automaticas"</string> <string name="quick_fixes" msgid="5353213327680897927">"Correcturas sveltas"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Curregia sbagls da tippar currents"</string> @@ -145,7 +159,7 @@ <skip /> <!-- no translation found for subtype_mode_es_keyboard (1775125478866113148) --> <skip /> - <!-- no translation found for subtype_mode_es_US_keyboard (3702125193532262008) --> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> <skip /> <!-- no translation found for subtype_mode_fr_keyboard (8016515336759761014) --> <skip /> @@ -153,6 +167,10 @@ <skip /> <!-- no translation found for subtype_mode_fr_CH_keyboard (6742806653181621228) --> <skip /> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <!-- no translation found for subtype_mode_iw_keyboard (1787536828253289950) --> <skip /> <!-- no translation found for subtype_mode_it_keyboard (4934199655425394484) --> @@ -161,6 +179,10 @@ <skip /> <!-- no translation found for subtype_mode_nl_keyboard (5090278083256037936) --> <skip /> + <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) --> + <skip /> + <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) --> + <skip /> <!-- no translation found for subtype_mode_ru_keyboard (1383995915064277943) --> <skip /> <!-- no translation found for subtype_mode_sr_keyboard (5019440799612208168) --> diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml index 0fcefd1f2..960ced552 100644 --- a/java/res/values-ro/strings.xml +++ b/java/res/values-ro/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Corectare text"</string> <string name="ngram_category" msgid="5337109164339320257">"Sugestii bazate pe cuvinte anterioare"</string> <string name="misc_category" msgid="6894192814868233453">"Alte opţiuni"</string> + <string name="advanced_settings" msgid="362895144495591463">"Setări avansate"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Opţiuni pt. utiliz. experţi"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Înt. înch. pop-up esenţ."</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Fără întârziere"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Prestabilit"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Auto-capitalizare"</string> <string name="quick_fixes" msgid="5353213327680897927">"Remedieri rapide"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Corectează greşelile introduse frecvent"</string> @@ -38,7 +47,7 @@ <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Afişaţi întotdeauna"</string> <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Afişaţi în modul Portret"</string> <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ascundeţi întotdeauna"</string> - <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Sp. pt. comut. lb."</string> + <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Spacebar – selector limbă"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Afişaţi tasta setări"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automat"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Afişaţi întotdeauna"</string> @@ -48,10 +57,10 @@ <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Dezactivată"</string> <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Moderată"</string> <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Agresivă"</string> - <string name="bigram_suggestion" msgid="2636414079905220518">"Sugestii pentru cuvinte de două litere"</string> + <string name="bigram_suggestion" msgid="2636414079905220518">"Sugestii de tip bigram"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Utilizaţi cuvântul anterior pentru a îmbunătăţi sugestia"</string> - <string name="bigram_prediction" msgid="8914273444762259739">"Sugestii pentru cuvinte de două litere"</string> - <string name="bigram_prediction_summary" msgid="1747261921174300098">"De asemenea, utilizaţi pentru sugestii cuvântul precedent"</string> + <string name="bigram_prediction" msgid="8914273444762259739">"Predicţii de tip bigram"</string> + <string name="bigram_prediction_summary" msgid="1747261921174300098">"Se utilizează şi cuvântul precedent pentru predicţii"</string> <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: salvat"</string> <string name="label_go_key" msgid="1635148082137219148">"OK"</string> <string name="label_next_key" msgid="362972844525672568">"Înainte"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Tastatură engleză (Marea Britanie)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Tastatură engleză (S.U.A.)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Tastatură spaniolă"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Tastatură spaniolă (S.U.A.)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Tastatură franceză"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Tastatură franceză (Canada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Tastatură franceză (Elveţia)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Tastatură ebraică"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Tastatură italiană"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Tastatură norvegiană"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Tastatură olandeză"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Tastatură poloneză"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Tastatură portugheză"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Tastatură rusă"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Tastatură sârbă"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Tastatură suedeză"</string> diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml index 2e8577ea1..68ec65038 100644 --- a/java/res/values-ru/strings.xml +++ b/java/res/values-ru/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Исправление текста"</string> <string name="ngram_category" msgid="5337109164339320257">"Подсказки, основанные на предыдущих словах"</string> <string name="misc_category" msgid="6894192814868233453">"Другие варианты"</string> + <string name="advanced_settings" msgid="362895144495591463">"Расширенные настройки"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Для опытных пользователей"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Задержка закрытия"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Без задержки"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"По умолчанию"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Заглавные автоматически"</string> <string name="quick_fixes" msgid="5353213327680897927">"Быстрое исправление"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Исправлять распространенные опечатки"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Клавиатура: английская (Великобритания)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Клавиатура: английская (США)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Клавиатура: испанская"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Клавиатура: испанская (США)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Клавиатура: французская"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Клавиатура: французская"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Клавиатура: французская (Швейцария)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Клавиатура на иврите"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Клавиатура: итальянская"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Клавиатура: норвежская"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Клавиатура: голландская"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Польская клавиатура"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Португальская раскладка"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Клавиатура: русская"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Клавиатура: сербская"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Голос: шведский"</string> diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml index eeefa820f..3d5dd5878 100644 --- a/java/res/values-sk/strings.xml +++ b/java/res/values-sk/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Oprava textu"</string> <string name="ngram_category" msgid="5337109164339320257">"Návrhy na základe predchádzajúcich slov"</string> <string name="misc_category" msgid="6894192814868233453">"Ďalšie možnosti"</string> + <string name="advanced_settings" msgid="362895144495591463">"Rozšírené nastavenia"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Možnosti pre skúsených používateľov"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Onesk. zrušenia kľúč. kon. okna"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Bez oneskorenia"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predvolená"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Veľké písmená automaticky"</string> <string name="quick_fixes" msgid="5353213327680897927">"Rýchle opravy"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Opravuje najčastejšie chyby pri písaní"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"klávesnica – angličtina (br.)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"klávesnica – angličtina (am.)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"klávesnica – španielčina"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"klávesnica – španielčina (am.)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"klávesnica – francúzština"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"klávesnica – francúzština (Kanada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"klávesnica – francúzština (Švajč.)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"klávesnica – hebrejčina"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"klávesnica – taliančina"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"klávesnica – nórčina"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"klávesnica – holandčina"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Poľská klávesnica"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugalská klávesnica"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"klávesnica – ruština"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"hlas – srbčina"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"klávesnica – švédčina"</string> diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml index 91f9036e6..a747f4c66 100644 --- a/java/res/values-sl/strings.xml +++ b/java/res/values-sl/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Popravek besedila"</string> <string name="ngram_category" msgid="5337109164339320257">"Predlogi, ki temeljijo na prejšnjih besedah"</string> <string name="misc_category" msgid="6894192814868233453">"Druge možnosti"</string> + <string name="advanced_settings" msgid="362895144495591463">"Dodatne nastavitve"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Možnosti za izkušene uporabnike"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Zakas. okna za zavrnitev"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Brez zamude"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Privzeto"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Samodejne velike začetnice"</string> <string name="quick_fixes" msgid="5353213327680897927">"Hitri popravki"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Popravi pogoste tipkarske napake"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Tipkovnica za britansko angleščino"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Tipkovnica za ameriško angleščino"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Španska tipkovnica"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Tipkovnica za ameriško španščino"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Francoska tipkovnica"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Tipkovnica za kanadsko francoščino"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Tipkovnica za švicarsko francoščino"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hebrejska tipkovnica"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italijanska tipkovnica"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norveška tipkovnica"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Nizozemska tipkovnica"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Poljska tipkovnica"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugalska tipkovnica"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Ruska tipkovnica"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Srbska tipkovnica"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Švedska tipkovnica"</string> diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml index b20f1df2e..025ce91b5 100644 --- a/java/res/values-sr/strings.xml +++ b/java/res/values-sr/strings.xml @@ -29,7 +29,16 @@ <string name="general_category" msgid="1859088467017573195">"Опште"</string> <string name="correction_category" msgid="2236750915056607613">"Исправљање текста"</string> <string name="ngram_category" msgid="5337109164339320257">"Предлози на основу претходних речи"</string> - <string name="misc_category" msgid="6894192814868233453">"Друге опције:"</string> + <string name="misc_category" msgid="6894192814868233453">"Друге опције"</string> + <string name="advanced_settings" msgid="362895144495591463">"Напредна подешавања"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Опције за искусне кориснике"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Одложи одбац. иск. прозора тастера"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Без одлагања"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Подразумевано"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Аутоматски унос великих слова"</string> <string name="quick_fixes" msgid="5353213327680897927">"Брзе исправке"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Исправља честе грешке у куцању"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Језик тастатуре: енглески (УК)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Језик тастатуре: енглески (САД)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Језик тастатуре: шпански"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Језик тастатуре: шпански (САД)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Језик тастатуре: француски"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Језик тастатуре: француски (Канада)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Језик тастатуре: француски (Швајц.)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Језик тастатуре: хебрејски"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Језик тастатуре: италијански"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Језик тастатуре: норвешки"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Језик тастатуре: холандски"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Језик тастатуре: пољски"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Језик тастатуре: португалски"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Језик тастатуре: руски"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Језик тастатуре: српски"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Језик тастатуре: шведски"</string> diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml index 2d35fd87b..cf0fcf899 100644 --- a/java/res/values-sv/strings.xml +++ b/java/res/values-sv/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Textkorrigering"</string> <string name="ngram_category" msgid="5337109164339320257">"Förslag baserade på tidigare ord"</string> <string name="misc_category" msgid="6894192814868233453">"Andra alternativ"</string> + <string name="advanced_settings" msgid="362895144495591463">"Avancerade inställningar"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Alternativ för expertanvändare"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Ta bort popup-fördröjning"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Fördröj inte"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Automatiska versaler"</string> <string name="quick_fixes" msgid="5353213327680897927">"Snabba lösningar"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Åtgärdar automatiskt vanliga misstag"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Engelskt tangentbord (Storbrit.)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Engelskt tangentbord (USA)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spanskt tangentbord"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spanskt tangentbord (USA)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Franskt tangentbord"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Franskt tangentbord (Kanada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Franskt tangentbord (Schweiz)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hebreiskt tangentbord"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italienskt tangentbord"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norskt tangentbord"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Holländskt tangentbord"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polskt tangentbord"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portugisiskt tangentbord"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Ryskt tangentbord"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbiskt tangentbord"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Svenskt tangentbord"</string> diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml new file mode 100644 index 000000000..44f0722da --- /dev/null +++ b/java/res/values-sw/strings.xml @@ -0,0 +1,177 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2008, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="english_ime_name" msgid="7252517407088836577">"Kibodi ya Android"</string> + <string name="english_ime_settings" msgid="6661589557206947774">"Mipangilio ya kibodi ya Android"</string> + <string name="english_ime_input_options" msgid="3909945612939668554">"Chaguo za uingizaji"</string> + <string name="vibrate_on_keypress" msgid="5258079494276955460">"Tetema unabofya kitufe"</string> + <string name="sound_on_keypress" msgid="6093592297198243644">"Toa sauti unapobofya kitufe"</string> + <string name="popup_on_keypress" msgid="123894815723512944">"Ibuka kitufe kinapobonyezwa"</string> + <!-- no translation found for general_category (1859088467017573195) --> + <skip /> + <!-- no translation found for correction_category (2236750915056607613) --> + <skip /> + <!-- no translation found for ngram_category (5337109164339320257) --> + <skip /> + <!-- no translation found for misc_category (6894192814868233453) --> + <skip /> + <!-- no translation found for advanced_settings (362895144495591463) --> + <skip /> + <!-- no translation found for advanced_settings_summary (5193513161106637254) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) --> + <skip /> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> + <string name="auto_cap" msgid="1719746674854628252">"Uwekaji wa herufi kubwa kiotomatiki"</string> + <string name="quick_fixes" msgid="5353213327680897927">"Utatuzi wa haraka"</string> + <string name="quick_fixes_summary" msgid="3405028402510332373">"Husahihisha makosa ya kawaida yaliyoandikwa"</string> + <!-- no translation found for prefs_show_suggestions (8026799663445531637) --> + <skip /> + <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Onyesha maneno yaliyopendekezwa wakati unachapa"</string> + <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Onyesha kila wakati"</string> + <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Onyesha kwenye hali wima"</string> + <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ficha kila wakati"</string> + <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) --> + <skip /> + <string name="prefs_settings_key" msgid="4623341240804046498">"Onyesha kitufe cha mipangilio"</string> + <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Kiotomatiki"</string> + <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Onyesha kila wakati"</string> + <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">" Ficha kila mara"</string> + <string name="auto_correction" msgid="4979925752001319458">"Usahihishaji Kioto"</string> + <!-- outdated translation 6881047311475758267 --> <string name="auto_correction_summary" msgid="5625751551134658006">"Sahihisha neno lililotangulia kiotomatiki"</string> + <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Zima"</string> + <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Ya wastani"</string> + <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Ya hima"</string> + <!-- outdated translation 1323347224043514969 --> <string name="bigram_suggestion" msgid="2636414079905220518">"Mapendekezo ya Bigramu"</string> + <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Tumia neno la hapo awali ili kuboresha pendekezo"</string> + <!-- no translation found for bigram_prediction (8914273444762259739) --> + <skip /> + <!-- no translation found for bigram_prediction_summary (1747261921174300098) --> + <skip /> + <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Imehifadhiwa"</string> + <string name="label_go_key" msgid="1635148082137219148">"Nenda"</string> + <string name="label_next_key" msgid="362972844525672568">"Ifuatayo"</string> + <string name="label_done_key" msgid="2441578748772529288">"Kwisha"</string> + <string name="label_send_key" msgid="2815056534433717444">"Tuma"</string> + <string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string> + <string name="label_more_key" msgid="3760239494604948502">"Zaidi"</string> + <string name="label_pause_key" msgid="181098308428035340">"Pumzisha"</string> + <string name="label_wait_key" msgid="6402152600878093134">"Subiri"</string> + <string name="voice_warning_title" msgid="4419354150908395008">"Uingizaji wa sauti"</string> + <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Uingizaji wa sauti hauhimiliwi kwa lugha yako kwa sasa, lakini inafanya kazi kwa Kiingereza."</string> + <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Uingizaji wa sauti hutumia utambuaji wa usemi wa Google. "<a href="http://m.google.com/privacy">"Sera ya Faragha ya Simu za mkononi "</a>" hutumika."</string> + <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Ili kuzima uingizaji sauti, nenda kwa mipangilio ya mbinu ya uingizaji."</string> + <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Ili kutumia uingizaji wa sauti, bonyeza kitufe cha maikrofoni."</string> + <string name="voice_listening" msgid="467518160751321844">"Ongea sasa"</string> + <string name="voice_working" msgid="6666937792815731889">"Inafanya kazi"</string> + <string name="voice_initializing" msgid="661962047129906646"></string> + <string name="voice_error" msgid="5140896300312186162">"Hitilafu. Tafadhali jaribu tena."</string> + <string name="voice_network_error" msgid="6649556447401862563">"Haiwezi kuunganisha"</string> + <string name="voice_too_much_speech" msgid="5746973620134227376">"Hitilafu, usemi ni zaidi."</string> + <string name="voice_audio_error" msgid="5072707727016414454">"Tatizo la sauti"</string> + <string name="voice_server_error" msgid="7807129913977261644">"Hitilafu ya Seva"</string> + <string name="voice_speech_timeout" msgid="8461817525075498795">"Hakuna matamshi yaliyosikizwa"</string> + <string name="voice_no_match" msgid="4285117547030179174">"Hakuna zinazolingana zilizopatikana."</string> + <string name="voice_not_installed" msgid="5552450909753842415">"Utafutaji wa sauti haujawekwa"</string> + <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Kidokezo:"</b>" Telezesha kidole kwenye kibodi ili utamke"</string> + <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Kidokezo:"</b>" Wakati mwingine, jaribu kutamka uakifishaji kama vile \"kituo\", \"koma\", au \"kiulizio cha swali\"."</string> + <string name="cancel" msgid="6830980399865683324">"Ghairi"</string> + <string name="ok" msgid="7898366843681727667">"Sawa"</string> + <string name="voice_input" msgid="2466640768843347841">"Uingizaji wa sauti"</string> + <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Kwenye kibodi kuu"</string> + <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Kwenye kibodi ya ishara"</string> + <string name="voice_input_modes_off" msgid="3745699748218082014">"Zima"</string> + <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Maikrofoni kwenye kibodi kuu"</string> + <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Maikrofoni kwenye kibodi ya ishara"</string> + <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Uingizaji sauti umelemazwa"</string> + <string name="selectInputMethod" msgid="315076553378705821">"Chagua mtindo wa uingizaji"</string> + <string name="language_selection_title" msgid="1651299598555326750">"Lugha za uingizaji"</string> + <string name="language_selection_summary" msgid="187110938289512256">"Telezesha kidole kwenye kitufe cha nafasi ili kubadilisha lugha"</string> + <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Gusa tena ili kuhifadhi"</string> + <string name="has_dictionary" msgid="6071847973466625007">"Kamusi inapatikana"</string> + <string name="prefs_enable_log" msgid="6620424505072963557">"Wezesha maoni ya watumiaji"</string> + <string name="prefs_description_log" msgid="5827825607258246003">"Saidia kuimarisha mbinu ya uingizaji wa kihariri, kwa kutuma takwimu za matumizi na ripoti za kuvurugika kwa Google kiotomatiki."</string> + <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Gusa ili kurekebisha maneno"</string> + <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Gusa maneno yaliyoingizwa ili kuyasahihisha, wakati mapendekezo yanaonekana tu"</string> + <string name="keyboard_layout" msgid="437433231038683666">"Maandhari ya Kibodi"</string> + <string name="subtype_mode_cs_keyboard" msgid="1141718931112377586">"Kibodi ya Kicheki"</string> + <!-- no translation found for subtype_mode_ar_keyboard (2655338636329774995) --> + <skip /> + <string name="subtype_mode_da_keyboard" msgid="1243570804427922104">"Kibodi ya Kidenmaki"</string> + <string name="subtype_mode_de_keyboard" msgid="1990979135959462145">"Kibodi ya Kijerumani"</string> + <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Kibodi ya Kiingereza (Uingereza)"</string> + <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Kibodi ya Kiingereza (Marekani)"</string> + <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Kibodi ya Kihispania"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> + <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Kibodi ya Kifaransa"</string> + <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Kibodi ya Kifaransa (Kanada)"</string> + <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Kibodi ya Kifaransa (Uswizi)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> + <!-- no translation found for subtype_mode_iw_keyboard (1787536828253289950) --> + <skip /> + <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Kibodi ya Kiitaliano"</string> + <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Kibodi ya Kinorwe"</string> + <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Kibodi ya Kiholanzi"</string> + <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) --> + <skip /> + <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) --> + <skip /> + <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Kibodi ya Kirusi"</string> + <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Kibodi ya Kiserbia"</string> + <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Kibodi ya Kiswidi"</string> + <!-- no translation found for subtype_mode_af_voice (7542487489657902699) --> + <skip /> + <string name="subtype_mode_cs_voice" msgid="1136386688120958641">"Sauti ya Kicheki"</string> + <string name="subtype_mode_de_voice" msgid="8378803143958089866">"Sauti ya Kijerumani"</string> + <!-- no translation found for subtype_mode_en_voice (6643420989651848728) --> + <skip /> + <string name="subtype_mode_es_voice" msgid="1323473601346507487">"Sauti ya Kihispania"</string> + <string name="subtype_mode_fr_voice" msgid="4675914209337824269">"Sauti ya Kifaransa"</string> + <!-- no translation found for subtype_mode_it_voice (5077373057157441323) --> + <skip /> + <string name="subtype_mode_ja_voice" msgid="6604859132669646367">"Sauti ya Kijapani"</string> + <string name="subtype_mode_ko_voice" msgid="4890391190762324561">"Sauti ya Kikorea"</string> + <!-- no translation found for subtype_mode_nl_voice (2603552312869575021) --> + <skip /> + <string name="subtype_mode_pl_voice" msgid="2076196021014840487">"Sauti ya Kipolandi"</string> + <string name="subtype_mode_pt_voice" msgid="8036522712795994397">"Sauti ya Kireno"</string> + <string name="subtype_mode_ru_voice" msgid="8034596947963787529">"Sauti ya Kirusi"</string> + <string name="subtype_mode_tr_voice" msgid="3402067436761140005">"Sauti ya Kituruki"</string> + <!-- no translation found for subtype_mode_yue_voice (1576887891614624263) --> + <skip /> + <!-- no translation found for subtype_mode_zh_voice (4360533229467271152) --> + <skip /> + <!-- no translation found for subtype_mode_zu_voice (1146122571698884636) --> + <skip /> + <string name="prefs_usability_study_mode" msgid="6937813623647419810">"Hali ya Uchunguzi wa Utumizi"</string> +</resources> diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml new file mode 100644 index 000000000..6e583e3bf --- /dev/null +++ b/java/res/values-sw600dp-land/dimens.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources> + <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 --> + <dimen name="keyboardHeight">45.0mm</dimen> + <fraction name="minKeyboardHeight">45%p</fraction> + <!-- key_height + key_bottom_gap = popup_key_height --> + <!-- <dimen name="key_height">14.5mm</dimen> --> + <dimen name="key_bottom_gap">1.3mm</dimen> + <dimen name="key_horizontal_gap">1.3mm</dimen> + <dimen name="keyboard_top_padding">1.1mm</dimen> + <dimen name="keyboard_bottom_padding">0.0mm</dimen> + <dimen name="key_bottom_gap_ics">1.3mm</dimen> + <dimen name="key_horizontal_gap_ics">1.3mm</dimen> + <dimen name="keyboard_top_padding_ics">1.1mm</dimen> + <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen> + <dimen name="popup_key_height">13.0mm</dimen> + + <fraction name="key_letter_ratio">45%</fraction> + <fraction name="key_label_ratio">32%</fraction> + <fraction name="key_hint_letter_ratio">23%</fraction> + <fraction name="key_uppercase_letter_ratio">29%</fraction> + <!-- left or right padding of label alignment --> + <dimen name="key_label_horizontal_alignment_padding">18dip</dimen> + <dimen name="candidate_strip_padding">40.0mm</dimen> +</resources> diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml new file mode 100644 index 000000000..75c0edf87 --- /dev/null +++ b/java/res/values-sw600dp/config.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources> + <bool name="config_enable_show_settings_key_option">true</bool> + <bool name="config_enable_show_voice_key_option">false</bool> + <bool name="config_enable_show_popup_on_keypress_option">false</bool> + <bool name="config_enable_show_recorrection_option">false</bool> + <bool name="config_enable_quick_fixes_option">false</bool> + <bool name="config_enable_bigram_suggestions_option">false</bool> + <bool name="config_swipe_down_dismiss_keyboard_enabled">false</bool> + <bool name="config_sliding_key_input_enabled">false</bool> + <bool name="config_digit_popup_characters_enabled">false</bool> + <!-- Whether or not Popup on key press is enabled by default --> + <bool name="config_default_popup_preview">false</bool> + <bool name="config_default_sound_enabled">true</bool> + <bool name="config_auto_correction_spacebar_led_enabled">false</bool> + <bool name="config_use_spacebar_language_switcher">false</bool> + <!-- Showing mini keyboard, just above the touched point if true, aligned to the key if false --> + <bool name="config_show_mini_keyboard_at_touched_point">true</bool> + <!-- The language is never displayed if == 0, always displayed if < 0 --> + <integer name="config_delay_before_fadeout_language_on_spacebar">1200</integer> + <!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. --> + <string name="config_default_keyboard_theme_id" translatable="false">5</string> + <string name="config_text_size_of_language_on_spacebar" translatable="false">medium</string> + <integer name="config_max_popup_keyboard_column">5</integer> +</resources> diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml new file mode 100644 index 000000000..274b62b4c --- /dev/null +++ b/java/res/values-sw600dp/dimens.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources> + <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 --> + <dimen name="keyboardHeight">48.0mm</dimen> + <fraction name="maxKeyboardHeight">50%p</fraction> + <fraction name="minKeyboardHeight">-35.0%p</fraction> + <!-- key_height + key_bottom_gap = popup_key_height --> + <!-- <dimen name="key_height">14.5mm</dimen> --> + <dimen name="key_bottom_gap">1.0mm</dimen> + <dimen name="key_horizontal_gap">1.0mm</dimen> + <dimen name="popup_key_height">10.0mm</dimen> + <dimen name="keyboard_top_padding">1.1mm</dimen> + <dimen name="keyboard_bottom_padding">0.0mm</dimen> + <dimen name="key_bottom_gap_ics">1.0mm</dimen> + <dimen name="key_horizontal_gap_ics">1.0mm</dimen> + <dimen name="keyboard_top_padding_ics">1.1mm</dimen> + <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen> + <dimen name="mini_keyboard_key_horizontal_padding">12dip</dimen> + <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. --> + <!-- popup_key_height x 1.2 --> + <dimen name="mini_keyboard_slide_allowance">15.6mm</dimen> + <!-- popup_key_height x -1.0 --> + <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen> + + <fraction name="key_letter_ratio">37%</fraction> + <fraction name="key_label_ratio">22%</fraction> + <fraction name="key_hint_letter_ratio">23%</fraction> + <fraction name="key_uppercase_letter_ratio">25%</fraction> + <fraction name="key_preview_text_ratio">50%</fraction> + <dimen name="key_preview_height">15.0mm</dimen> + <dimen name="key_preview_offset">0.1in</dimen> + <dimen name="key_preview_offset_ics">0.05in</dimen> + <!-- left or right padding of label alignment --> + <dimen name="key_label_horizontal_alignment_padding">6dip</dimen> + + <dimen name="candidate_strip_height">46dip</dimen> + <dimen name="candidate_strip_padding">15.0mm</dimen> + <dimen name="candidate_min_width">0.3in</dimen> + <dimen name="candidate_padding">12dip</dimen> + <dimen name="candidate_text_size">22dip</dimen> +</resources> diff --git a/java/res/values/durations.xml b/java/res/values-sw600dp/donottranslate.xml index 92af68e39..6d94c2811 100644 --- a/java/res/values/durations.xml +++ b/java/res/values-sw600dp/donottranslate.xml @@ -1,25 +1,23 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -/* +/* ** -** Copyright 2008, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at ** -** http://www.apache.org/licenses/LICENSE-2.0 +** http://www.apache.org/licenses/LICENSE-2.0 ** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and ** limitations under the License. */ --> - -<resources> - <!-- Vibration duration in milliseconds, for key presses in the IME. This can be hardware - dependent and may require overriding with a device specific overlay. --> - <integer name="vibrate_duration_ms">40</integer> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Default value of the visibility of the suggestion strip --> + <string name="prefs_suggestion_visibility_default_value" translatable="false">1</string> </resources> diff --git a/java/res/values-xlarge-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml index ade125639..74eb08aa3 100644 --- a/java/res/values-xlarge-land/dimens.xml +++ b/java/res/values-sw768dp-land/dimens.xml @@ -21,17 +21,25 @@ <resources> <!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=14.5mm --> <dimen name="keyboardHeight">58.0mm</dimen> + <fraction name="minKeyboardHeight">45%p</fraction> <!-- key_height + key_bottom_gap = popup_key_height --> <!-- <dimen name="key_height">14.5mm</dimen> --> - <dimen name="key_bottom_gap">0.0mm</dimen> - <dimen name="key_horizontal_gap">0.0mm</dimen> - <dimen name="popup_key_height">13.0mm</dimen> + <dimen name="key_bottom_gap">1.6mm</dimen> + <dimen name="key_horizontal_gap">1.6mm</dimen> <dimen name="keyboard_top_padding">1.1mm</dimen> <dimen name="keyboard_bottom_padding">0.0mm</dimen> + <dimen name="key_bottom_gap_ics">1.6mm</dimen> + <dimen name="key_horizontal_gap_ics">1.6mm</dimen> + <dimen name="keyboard_top_padding_ics">1.1mm</dimen> + <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen> + <dimen name="popup_key_height">13.0mm</dimen> <dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen> - <fraction name="key_letter_ratio">30.7%</fraction> - <fraction name="key_label_text_ratio">21.9%</fraction> + <fraction name="key_letter_ratio">38%</fraction> + <fraction name="key_label_ratio">26%</fraction> + <fraction name="key_hint_letter_ratio">23%</fraction> + <fraction name="key_uppercase_letter_ratio">24%</fraction> + <dimen name="key_preview_height">17.0mm</dimen> <!-- left or right padding of label alignment --> <dimen name="key_label_horizontal_alignment_padding">18dip</dimen> <dimen name="key_preview_height_holo">26.5mm</dimen> diff --git a/java/res/values-xlarge/config.xml b/java/res/values-sw768dp/config.xml index 80ef3cd8e..4025b0e41 100644 --- a/java/res/values-xlarge/config.xml +++ b/java/res/values-sw768dp/config.xml @@ -20,20 +20,18 @@ <resources> <bool name="config_enable_show_settings_key_option">false</bool> - <bool name="config_enable_show_subtype_settings">false</bool> <bool name="config_enable_show_voice_key_option">false</bool> - <!-- TODO: This configuration value is temporary set true to check popup preview behavior. --> - <bool name="config_enable_show_popup_on_keypress_option">true</bool> + <bool name="config_enable_show_popup_on_keypress_option">false</bool> <bool name="config_enable_show_recorrection_option">false</bool> <bool name="config_enable_quick_fixes_option">false</bool> <bool name="config_enable_bigram_suggestions_option">false</bool> - <bool name="config_candidate_highlight_font_color_enabled">false</bool> <bool name="config_swipe_down_dismiss_keyboard_enabled">false</bool> <bool name="config_sliding_key_input_enabled">false</bool> <bool name="config_digit_popup_characters_enabled">false</bool> <!-- Whether or not Popup on key press is enabled by default --> <bool name="config_default_popup_preview">false</bool> <bool name="config_default_sound_enabled">true</bool> + <bool name="config_auto_correction_spacebar_led_enabled">false</bool> <bool name="config_use_spacebar_language_switcher">false</bool> <!-- Showing mini keyboard, just above the touched point if true, aligned to the key if false --> <bool name="config_show_mini_keyboard_at_touched_point">true</bool> diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-sw768dp/dimens.xml index 2796b6fcb..b5d5a8496 100644 --- a/java/res/values-xlarge/dimens.xml +++ b/java/res/values-sw768dp/dimens.xml @@ -21,13 +21,19 @@ <resources> <!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=12mm --> <dimen name="keyboardHeight">48.0mm</dimen> + <fraction name="maxKeyboardHeight">50%p</fraction> + <fraction name="minKeyboardHeight">-35.0%p</fraction> <!-- key_height + key_bottom_gap = popup_key_height --> <!-- <dimen name="key_height">14.5mm</dimen> --> - <dimen name="key_bottom_gap">0.0mm</dimen> - <dimen name="key_horizontal_gap">0.0mm</dimen> - <dimen name="popup_key_height">10.0mm</dimen> + <dimen name="key_bottom_gap">1.1mm</dimen> + <dimen name="key_horizontal_gap">1.1mm</dimen> <dimen name="keyboard_top_padding">1.1mm</dimen> <dimen name="keyboard_bottom_padding">0.0mm</dimen> + <dimen name="key_bottom_gap_ics">1.1mm</dimen> + <dimen name="key_horizontal_gap_ics">1.1mm</dimen> + <dimen name="keyboard_top_padding_ics">1.1mm</dimen> + <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen> + <dimen name="popup_key_height">10.0mm</dimen> <dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen> <dimen name="mini_keyboard_horizontal_padding_holo">40dip</dimen> <dimen name="mini_keyboard_key_horizontal_padding">12dip</dimen> @@ -37,13 +43,16 @@ <!-- popup_key_height x -1.0 --> <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen> - <fraction name="key_letter_ratio">34.4%</fraction> - <fraction name="key_label_text_ratio">21.2%</fraction> + <fraction name="key_letter_ratio">38%</fraction> + <fraction name="key_label_ratio">26%</fraction> + <fraction name="key_hint_letter_ratio">23%</fraction> + <fraction name="key_uppercase_letter_ratio">25%</fraction> + <fraction name="key_preview_text_ratio">50%</fraction> + <dimen name="key_preview_height">15.0mm</dimen> + <dimen name="key_preview_offset">0.1in</dimen> + <dimen name="key_preview_offset_ics">0.05in</dimen> <!-- left or right padding of label alignment --> <dimen name="key_label_horizontal_alignment_padding">6dip</dimen> - <fraction name="key_preview_text_ratio">26.3%</fraction> - <dimen name="key_preview_height_holo">23.0mm</dimen> - <dimen name="key_preview_offset_holo">8.0mm</dimen> <dimen name="candidate_strip_height">46dip</dimen> <!-- candidate_strip_minimum_height = diff --git a/java/res/values-xlarge/donottranslate.xml b/java/res/values-sw768dp/donottranslate.xml index 672dea589..672dea589 100644 --- a/java/res/values-xlarge/donottranslate.xml +++ b/java/res/values-sw768dp/donottranslate.xml diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml index cd7fe95c0..1cbc42e23 100644 --- a/java/res/values-th/strings.xml +++ b/java/res/values-th/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"การแก้ไขข้อความ"</string> <string name="ngram_category" msgid="5337109164339320257">"ข้อเสนอแนะตามคำก่อนหน้านี้"</string> <string name="misc_category" msgid="6894192814868233453">"ตัวเลือกอื่นๆ"</string> + <string name="advanced_settings" msgid="362895144495591463">"การตั้งค่าขั้นสูง"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"ตัวเลือกสำหรับผู้ใช้ที่มีความเชี่ยวชาญ"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"การหน่วงเวลาก่อนปิดป๊อปอัพหลัก"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"ไม่มีการหน่วงเวลา"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"ค่าเริ่มต้น"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"ปรับเป็นตัวพิมพ์ใหญ่อัตโนมัติ"</string> <string name="quick_fixes" msgid="5353213327680897927">"แก้ไขด่วน"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"แก้ไขข้อผิดพลาดในการพิมพ์ที่พบบ่อย"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"แป้นพิมพ์ภาษาอังกฤษ (สหราชอาณาจักร)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"แป้นพิมพ์ภาษาอังกฤษ (สหรัฐอเมริกา)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"แปันพิมพ์ภาษาสเปน"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"แป้นพิมพ์ภาษาสเปน (สหรัฐอเมริกา)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"แป้นพิมพ์ภาษาฝรั่งเศส"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"แป้นพิมพ์ภาษาฝรั่งเศส (แคนาดา)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"แป้นพิมพ์ภาษาฝรั่งเศส (สวิตเซอร์แลนด์)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"แป้นพิมพ์ภาษาฮิบรู"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"แป้นพิมพ์ภาษาอิตาลี"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"แป้นพิมพ์ภาษานอร์เวย์"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"แป้นพิมพ์ภาษาดัตช์"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"แป้นพิมพ์ภาษาโปแลนด์"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"แป้นพิมพ์ภาษาโปรตุเกส"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"แป้นพิมพ์ภาษารัสเซีย"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"แป้นพิมพ์ภาษาเซอร์เบีย"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"แป้นพิมพ์ภาษาสวีเดน"</string> diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml index da62eafc6..e5d968769 100644 --- a/java/res/values-tl/strings.xml +++ b/java/res/values-tl/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Pagwawasto ng teksto"</string> <string name="ngram_category" msgid="5337109164339320257">"Mga suhestiyon batay sa mga nakaraang salita"</string> <string name="misc_category" msgid="6894192814868233453">"Iba pang mga pagpipilian"</string> + <string name="advanced_settings" msgid="362895144495591463">"Mga advanced na setting"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Mga pagpipilian para sa mga ekspertong user"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Balewala antala key popup"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Walang antala"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Default"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Auto-capitalization"</string> <string name="quick_fixes" msgid="5353213327680897927">"Mga mabilisang pagsasaayos"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Itinatama ang mga karaniwang na-type na mali"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Ingles (UK) na Keyboard"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Ingles (US) na Keyboard"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Spanish na Keyboard"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Spanish (US) na Keyboard"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"French na Keyboard"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"French (Canada) na Keyboard"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"French (Switzerland) na Keyboard"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Hebrew na Keyboard"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Italian na Keyboard"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norwegian na Keyboard"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Dutch na Keyboard"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Polish na Keyboard"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portuguese na Keyboard"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Russian na Keyboard"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Serbian na Keyboard"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Swedish na Keyboard"</string> diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml index 2607ae257..8be9f7a6d 100644 --- a/java/res/values-tr/strings.xml +++ b/java/res/values-tr/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Metin düzeltme"</string> <string name="ngram_category" msgid="5337109164339320257">"Önceki kelimelere dayalı öneriler"</string> <string name="misc_category" msgid="6894192814868233453">"Diğer seçenekler"</string> + <string name="advanced_settings" msgid="362895144495591463">"Gelişmiş ayarlar"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Uzman kullanıcılar için seçenekler"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Tuş popup içn kaptm ertlm"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Gecikme yok"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Varsayılan"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Otomatik olarak büyük harf yap"</string> <string name="quick_fixes" msgid="5353213327680897927">"Hızlı onarımlar"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Yaygın olarak yapılan yazım hatalarını düzeltir"</string> @@ -38,7 +47,7 @@ <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Her zaman göster"</string> <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Dikey modda göster"</string> <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Her zaman gizle"</string> - <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Dil geçişi içn boşluk çubğn kullan"</string> + <string name="prefs_use_spacebar_language_switch" msgid="8828538114550634449">"Dil geçişi > boşluk çubuğuyla"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Ayarları göster tuşu"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Otomatik"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Her zaman göster"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"İngilizce (İngiltere) Klavye"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"İngilizce (ABD) Klavye"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"İspanyolca Klavye"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"İspanyolca (ABD) Klavye"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Fransızca Klavye"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Fransızca (Kanada) Klavye"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Fransızca (İsviçre) Klavye"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"İbranice Klavye"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"İtalyanca Klavye"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Norveççe Klavye"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Felemenkçe Klavye"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Lehçe Klavye"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Portekizce Klavye"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Rusça Klavye"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Sırpça Klavye"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"İsveççe Klavye"</string> diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml index a2f589d1d..e5d2b31e1 100644 --- a/java/res/values-uk/strings.xml +++ b/java/res/values-uk/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Виправлення тексту"</string> <string name="ngram_category" msgid="5337109164339320257">"Пропозиції на основі попередніх слів"</string> <string name="misc_category" msgid="6894192814868233453">"Інші опції"</string> + <string name="advanced_settings" msgid="362895144495591463">"Розширені налаштування"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Налаштування для досвідчених користувачів"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Затримка клавіши закриття"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Без затримки"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"За умовчанням"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Авто викор. вел. літер"</string> <string name="quick_fixes" msgid="5353213327680897927">"Шв. виправлення"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Виправляє поширені помилки"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Англ. розкладка (Великобританія)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Англійська розкладка (США)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Іспанська розкладка"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Іспанська розкладка (США)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Французька розкладка"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Французька розкладка (Канада)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Французька розкладка (Швейцарія)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Розкладка для івриту"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Італійська розкладка"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Норвезька розкладка"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Голланд. розклад."</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Польська розкладка"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Португальська розкладка"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Російська розкладка"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Сербська розкладка"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Шведська розкладка"</string> diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml index 81be8264e..a75f7e82e 100644 --- a/java/res/values-vi/strings.xml +++ b/java/res/values-vi/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"Sửa văn bản"</string> <string name="ngram_category" msgid="5337109164339320257">"Đề xuất dựa trên các từ trước đó"</string> <string name="misc_category" msgid="6894192814868233453">"Tùy chọn khác"</string> + <string name="advanced_settings" msgid="362895144495591463">"Cài đặt nâng cao"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"Tùy chọn cho người dùng chuyên gia"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Hlại việc l.bỏ csổ b.lên chính"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Không có tgian trễ"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Mặc định"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"Tự động viết hoa"</string> <string name="quick_fixes" msgid="5353213327680897927">"Sửa nhanh"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"Sửa lỗi nhập thông thường"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Bàn phím tiếng Anh (Anh)"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Bàn phím tiếng Anh (Mỹ)"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Bàn phím tiếng Tây Ban Nha"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"Bàn phím tiếng Tây Ban Nha (Mỹ)"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Bàn phím tiếng Pháp"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Bàn phím tiếng Pháp (Canada)"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Bàn phím tiếng Pháp (Thụy Sĩ)"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"Bàn phím tiếng Do Thái"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Bàn phím tiếng Ý"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Bàn phím tiếng Na Uy"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Bàn phím tiếng Hà Lan"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"Bàn phím tiếng Ba Lan"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"Bàn phím tiếng Bồ Đào Nha"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Bàn phím tiếng Nga"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Bàn phím tiếng Serbia"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Bàn phím tiếng Thụy Điển"</string> diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml index 1f15831b3..2db21f4d1 100644 --- a/java/res/values-zh-rCN/strings.xml +++ b/java/res/values-zh-rCN/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"文本更正"</string> <string name="ngram_category" msgid="5337109164339320257">"根据前面的字词提供建议"</string> <string name="misc_category" msgid="6894192814868233453">"其他选项"</string> + <string name="advanced_settings" msgid="362895144495591463">"高级设置"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"适合专家级用户的选项"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"关闭弹出式键盘的延迟"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"无延迟"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"默认"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"自动大写"</string> <string name="quick_fixes" msgid="5353213327680897927">"快速纠正"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"纠正常见的输入错误"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"英语(英国)键盘"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"英语(美国)键盘"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"西班牙语键盘"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"西班牙语(美国)键盘"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"法语键盘"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"法语(加拿大)键盘"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"法语(瑞士)键盘"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"希伯来语键盘"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"意大利语键盘"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"挪威语键盘"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"荷兰语键盘"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"波兰语键盘"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"葡萄牙语键盘"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"俄语键盘"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"塞尔维亚语键盘"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"瑞典语键盘"</string> diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml index 8a89aeb08..43a1f3770 100644 --- a/java/res/values-zh-rTW/strings.xml +++ b/java/res/values-zh-rTW/strings.xml @@ -30,6 +30,15 @@ <string name="correction_category" msgid="2236750915056607613">"文字修正"</string> <string name="ngram_category" msgid="5337109164339320257">"根據先前字詞產生的建議"</string> <string name="misc_category" msgid="6894192814868233453">"其他選項"</string> + <string name="advanced_settings" msgid="362895144495591463">"進階設定"</string> + <string name="advanced_settings_summary" msgid="5193513161106637254">"提供給專業使用者的選項"</string> + <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"關閉彈出式鍵盤的延遲時間"</string> + <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"不延遲"</string> + <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"預設"</string> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> <string name="auto_cap" msgid="1719746674854628252">"自動大寫"</string> <string name="quick_fixes" msgid="5353213327680897927">"快速修正"</string> <string name="quick_fixes_summary" msgid="3405028402510332373">"修正一般打字錯誤"</string> @@ -105,14 +114,21 @@ <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"英文 (英國) 鍵盤"</string> <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"英文 (美國) 鍵盤"</string> <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"西班牙文鍵盤"</string> - <string name="subtype_mode_es_US_keyboard" msgid="3702125193532262008">"西班牙文 (美國) 鍵盤"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"法文鍵盤"</string> <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"法文 (加拿大) 鍵盤"</string> <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"法文 (瑞士) 鍵盤"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> <string name="subtype_mode_iw_keyboard" msgid="1787536828253289950">"希伯來文鍵盤"</string> <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"義大利文鍵盤"</string> <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"挪威文鍵盤"</string> <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"荷蘭文鍵盤"</string> + <string name="subtype_mode_pl_keyboard" msgid="2225816414814396047">"波蘭文鍵盤"</string> + <string name="subtype_mode_pt_keyboard" msgid="7503997804861754840">"葡萄牙文鍵盤"</string> <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"俄文鍵盤"</string> <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"塞爾維亞文鍵盤"</string> <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"瑞典文語音"</string> diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml new file mode 100644 index 000000000..3c6f2ba75 --- /dev/null +++ b/java/res/values-zu/strings.xml @@ -0,0 +1,177 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2008, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="english_ime_name" msgid="7252517407088836577">"Ikhibhodi ye-Android"</string> + <string name="english_ime_settings" msgid="6661589557206947774">"Izilungiselelo zekhibhodi ye-Android"</string> + <string name="english_ime_input_options" msgid="3909945612939668554">"Okukhethwa kukho kokungenayo"</string> + <string name="vibrate_on_keypress" msgid="5258079494276955460">"Dlidlizelisa ngokucindezela inkinobho"</string> + <string name="sound_on_keypress" msgid="6093592297198243644">"Umsindo wokucindezela ukhiye"</string> + <string name="popup_on_keypress" msgid="123894815723512944">"Ugaxekile ngokucindezela ukhiye"</string> + <!-- no translation found for general_category (1859088467017573195) --> + <skip /> + <!-- no translation found for correction_category (2236750915056607613) --> + <skip /> + <!-- no translation found for ngram_category (5337109164339320257) --> + <skip /> + <!-- no translation found for misc_category (6894192814868233453) --> + <skip /> + <!-- no translation found for advanced_settings (362895144495591463) --> + <skip /> + <!-- no translation found for advanced_settings_summary (5193513161106637254) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) --> + <skip /> + <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) --> + <skip /> + <!-- no translation found for use_contacts_dict (4435317977804180815) --> + <skip /> + <!-- no translation found for use_contacts_dict_summary (6599983334507879959) --> + <skip /> + <string name="auto_cap" msgid="1719746674854628252">"Ukwenza ofeleba okuzenzakalelayo"</string> + <string name="quick_fixes" msgid="5353213327680897927">"Ukulungisa okusheshayo"</string> + <string name="quick_fixes_summary" msgid="3405028402510332373">"Ilungisa amaphutha athayiphwa ngokuvamile"</string> + <!-- no translation found for prefs_show_suggestions (8026799663445531637) --> + <skip /> + <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Bonisa amagama aphakamisiwe ngenkathi uthayipha"</string> + <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Bonisa njalo"</string> + <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Bonisa kwimodi emile"</string> + <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Fihla njalo"</string> + <!-- no translation found for prefs_use_spacebar_language_switch (8828538114550634449) --> + <skip /> + <string name="prefs_settings_key" msgid="4623341240804046498">"Bonisa ukhiye wezilungiselelo"</string> + <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Okuzenzakalelayo"</string> + <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Bonisa njalo"</string> + <string name="settings_key_mode_always_hide_name" msgid="7833948046716923994">"Fihla njalo"</string> + <string name="auto_correction" msgid="4979925752001319458">"Ukulungisa okuzenzakalelayo"</string> + <!-- outdated translation 6881047311475758267 --> <string name="auto_correction_summary" msgid="5625751551134658006">"Ngokuzenzakalelayo ilungisa igama elandulele"</string> + <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Valiwe"</string> + <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Thobekile"</string> + <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Bukhali"</string> + <!-- outdated translation 1323347224043514969 --> <string name="bigram_suggestion" msgid="2636414079905220518">"Iziphakamiso ze-Biagram"</string> + <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Sebenzisa igama elandulele ukuthuthukisa okusikiselwayo"</string> + <!-- no translation found for bigram_prediction (8914273444762259739) --> + <skip /> + <!-- no translation found for bigram_prediction_summary (1747261921174300098) --> + <skip /> + <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Kulondoloziwe"</string> + <string name="label_go_key" msgid="1635148082137219148">"Iya"</string> + <string name="label_next_key" msgid="362972844525672568">"Okulandelayo"</string> + <string name="label_done_key" msgid="2441578748772529288">"Kwenziwe"</string> + <string name="label_send_key" msgid="2815056534433717444">"Thumela"</string> + <string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string> + <string name="label_more_key" msgid="3760239494604948502">"Okungaphezulu"</string> + <string name="label_pause_key" msgid="181098308428035340">"Misa okwesikhashana"</string> + <string name="label_wait_key" msgid="6402152600878093134">"Linda"</string> + <string name="voice_warning_title" msgid="4419354150908395008">"Okungenayo kwezwi"</string> + <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Okungenayo kwezwi akusekelwa kolimi lwakho, kodwa kuyasebenza Ngesingisi."</string> + <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Okufakwayo kwezwi kusebenzisa ukuqaphela izwi le-Google. "<a href="http://m.google.com/privacy">"Inqubomgomo Yobumfihlo Yefoni"</a>" iyasebenza."</string> + <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Ukuvala okufakwayo kwezwi, iya kuzilungiselelo zendlela yokufakwayo"</string> + <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Ukusebenzisa okufakwayo kwezwi, cindezela inkinobho yemakrofoni."</string> + <string name="voice_listening" msgid="467518160751321844">"Khuluma manje"</string> + <string name="voice_working" msgid="6666937792815731889">"Kuyasebenza"</string> + <string name="voice_initializing" msgid="661962047129906646"></string> + <string name="voice_error" msgid="5140896300312186162">"Iphutha. Sicela uzame futhi."</string> + <string name="voice_network_error" msgid="6649556447401862563">"Ayikwazanga ukuxhuma"</string> + <string name="voice_too_much_speech" msgid="5746973620134227376">"Iphutha, kunamagama amaningi."</string> + <string name="voice_audio_error" msgid="5072707727016414454">"Inkinga yomsindo"</string> + <string name="voice_server_error" msgid="7807129913977261644">"Iphutha leseva"</string> + <string name="voice_speech_timeout" msgid="8461817525075498795">"Awekho amagama azwakele"</string> + <string name="voice_no_match" msgid="4285117547030179174">"Akukho okufanayo okutholiwe"</string> + <string name="voice_not_installed" msgid="5552450909753842415">"Ukusesha ngezwi akufakiwe"</string> + <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Isexwayiso:"</b>"Shintshela kwikhibhodi ukuze ukhulume"</string> + <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Isixwayiso: "</b>"Esikhathini esilandelayo, zama ukukhuluma izimpimiselo ezinjengo \"isikhathi, \"ikhefu\" noma \"uphawu lombuzo\"."</string> + <string name="cancel" msgid="6830980399865683324">"Khansela"</string> + <string name="ok" msgid="7898366843681727667">"KULUNGILE"</string> + <string name="voice_input" msgid="2466640768843347841">"Okungenayo kwezwi"</string> + <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Kwikhibhodi eyisisekelo"</string> + <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Ikhibhodi yezimpawu"</string> + <string name="voice_input_modes_off" msgid="3745699748218082014">"VALIWE"</string> + <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"I-mic kwikhibhodi eyisisekelo"</string> + <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Ikhibhodi yezimpawu ze-mic"</string> + <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Okufakwayo kwezwi kuvimbelwe"</string> + <string name="selectInputMethod" msgid="315076553378705821">"Khetha indlela yokungenayo"</string> + <string name="language_selection_title" msgid="1651299598555326750">"Izilimi zokufakwayo"</string> + <string name="language_selection_summary" msgid="187110938289512256">"Slayida umunwe kwibha yesikhala ukushintsha ulimi"</string> + <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Thinta futhi ukulondoloza"</string> + <string name="has_dictionary" msgid="6071847973466625007">"Isichazamazwi siyatholakala"</string> + <string name="prefs_enable_log" msgid="6620424505072963557">"Vumela impendulo yomsebenzisi"</string> + <string name="prefs_description_log" msgid="5827825607258246003">"Siza ukuthuthukisa umhleli wendlela yokungenayo ngokuthumela izibalo zokubala nokuphahlaza imibiko e-Google."</string> + <string name="prefs_enable_recorrection" msgid="4588408906649533582">"Thinta ukulungisa amagama"</string> + <string name="prefs_enable_recorrection_summary" msgid="5082041365862396329">"Thinta amagama afakiwe ukuwalungisa, kuphela lapho okusikiselwayo kubonakala"</string> + <string name="keyboard_layout" msgid="437433231038683666">"Indikimba Yekhibhodi"</string> + <string name="subtype_mode_cs_keyboard" msgid="1141718931112377586">"Ikhibhodi yesi-Czech"</string> + <!-- no translation found for subtype_mode_ar_keyboard (2655338636329774995) --> + <skip /> + <string name="subtype_mode_da_keyboard" msgid="1243570804427922104">"Ikhibhodi yesi-Danish"</string> + <string name="subtype_mode_de_keyboard" msgid="1990979135959462145">"Ikhobhodi yei-German"</string> + <string name="subtype_mode_en_GB_keyboard" msgid="7945856548410373708">"Ikhibhodi ye-English (UK)"</string> + <string name="subtype_mode_en_US_keyboard" msgid="3708655163769735410">"Ikhobhodi ye-English (US)"</string> + <string name="subtype_mode_es_keyboard" msgid="1775125478866113148">"Ikhobhodi yesi-Spanish"</string> + <!-- no translation found for subtype_mode_fi_keyboard (3198596464082614532) --> + <skip /> + <string name="subtype_mode_fr_keyboard" msgid="8016515336759761014">"Ikhibhodi yesi-French"</string> + <string name="subtype_mode_fr_CA_keyboard" msgid="2628517247158376263">"Ikhobhodi yesi-French (i-Canada)"</string> + <string name="subtype_mode_fr_CH_keyboard" msgid="6742806653181621228">"Ikhibhodi yesi-French (i-Switzerland"</string> + <!-- no translation found for subtype_mode_hr_keyboard (7177182405440070112) --> + <skip /> + <!-- no translation found for subtype_mode_hu_keyboard (8843338355732633647) --> + <skip /> + <!-- no translation found for subtype_mode_iw_keyboard (1787536828253289950) --> + <skip /> + <string name="subtype_mode_it_keyboard" msgid="4934199655425394484">"Ikhibhodi yesi-Italian"</string> + <string name="subtype_mode_nb_keyboard" msgid="1175783216100212360">"Ikhibhodi yesi-Norwegian"</string> + <string name="subtype_mode_nl_keyboard" msgid="5090278083256037936">"Ikhibhodi yesi-Dutch"</string> + <!-- no translation found for subtype_mode_pl_keyboard (2225816414814396047) --> + <skip /> + <!-- no translation found for subtype_mode_pt_keyboard (7503997804861754840) --> + <skip /> + <string name="subtype_mode_ru_keyboard" msgid="1383995915064277943">"Ikhobhodi yesi-Russian"</string> + <string name="subtype_mode_sr_keyboard" msgid="5019440799612208168">"Ikhibhodi yesi-Serbian"</string> + <string name="subtype_mode_sv_keyboard" msgid="4933838139861753401">"Ikhobhodi yesi-Swedish"</string> + <!-- no translation found for subtype_mode_af_voice (7542487489657902699) --> + <skip /> + <string name="subtype_mode_cs_voice" msgid="1136386688120958641">"Izwi le-Czech"</string> + <string name="subtype_mode_de_voice" msgid="8378803143958089866">"Izwi lesi-German"</string> + <!-- no translation found for subtype_mode_en_voice (6643420989651848728) --> + <skip /> + <string name="subtype_mode_es_voice" msgid="1323473601346507487">"Izwi lesi-Spanish"</string> + <string name="subtype_mode_fr_voice" msgid="4675914209337824269">"Izwi lesi-French"</string> + <!-- no translation found for subtype_mode_it_voice (5077373057157441323) --> + <skip /> + <string name="subtype_mode_ja_voice" msgid="6604859132669646367">"Izwi lesi-Japanese"</string> + <string name="subtype_mode_ko_voice" msgid="4890391190762324561">"Izwi lesi-Korean"</string> + <!-- no translation found for subtype_mode_nl_voice (2603552312869575021) --> + <skip /> + <string name="subtype_mode_pl_voice" msgid="2076196021014840487">"Izwi lesi-Polish"</string> + <string name="subtype_mode_pt_voice" msgid="8036522712795994397">"Izwi lesi-Portuguese"</string> + <string name="subtype_mode_ru_voice" msgid="8034596947963787529">"Izwi lesi-Russian"</string> + <string name="subtype_mode_tr_voice" msgid="3402067436761140005">"Izwi lesi-Turkish"</string> + <!-- no translation found for subtype_mode_yue_voice (1576887891614624263) --> + <skip /> + <!-- no translation found for subtype_mode_zh_voice (4360533229467271152) --> + <skip /> + <!-- no translation found for subtype_mode_zu_voice (1146122571698884636) --> + <skip /> + <string name="prefs_usability_study_mode" msgid="6937813623647419810">"Imodi Yesitadi Yokusebenziseka"</string> +</resources> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index f03da4f8f..e9b6354a5 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -15,36 +15,56 @@ --> <resources> - - <declare-styleable name="KeyboardView"> - <!-- Default KeyboardView style. --> + <declare-styleable name="KeyboardTheme"> + <!-- Keyboard style --> + <attr name="keyboardStyle" format="reference" /> + <!-- LatinKeyboard style --> + <attr name="latinKeyboardStyle" format="reference" /> + <!-- KeyboardView style --> <attr name="keyboardViewStyle" format="reference" /> + <attr name="keyPreviewStyle" format="reference" /> + <!-- PopupMiniKeyboardView style --> + <attr name="popupMiniKeyboardViewStyle" format="reference" /> + <attr name="popupMiniKeyboardPanelStyle" format="reference" /> + <!-- Suggestions strip style --> + <attr name="suggestionsStripBackgroundStyle" format="reference" /> + <attr name="suggestionBackgroundStyle" format="reference" /> + <attr name="suggestionPreviewBackgroundStyle" format="reference" /> + <attr name="candidateViewStyle" format="reference" /> + </declare-styleable> + <declare-styleable name="KeyboardView"> <!-- Image for the key. This image needs to be a StateListDrawable, with the following possible states: normal, pressed, checkable, checkable+pressed, checkable+checked, checkable+checked+pressed. --> <attr name="keyBackground" format="reference" /> - <!-- Size of the text for one letter character keys, in the proportion of key height. - --> + <!-- Size of the text for one letter keys, in the proportion of key height. --> <attr name="keyLetterRatio" format="float" /> - - <!-- Size of the text for custom keys with some text and no icon, in the proportion of key - height. --> - <attr name="labelTextRatio" format="float" /> + <!-- Size of the text for keys with some text, in the proportion of key height. --> + <attr name="keyLabelRatio" format="float" /> + <!-- Size of the text for hint letter, in the proportion of key height. --> + <attr name="keyHintLetterRatio" format="float" /> + <!-- Size of the text for upper case letter, in the proportion of key height. --> + <attr name="keyUppercaseLetterRatio" format="float" /> <!-- Color to use for the label in a key. --> <attr name="keyTextColor" format="color" /> + <!-- Color to use for the label in a key when in inactivated state. --> + <attr name="keyTextInactivatedColor" format="color" /> + <!-- Key hint letter color --> + <attr name="keyHintLetterColor" format="color" /> + <!-- Upper case letter colors --> + <attr name="keyUppercaseLetterInactivatedColor" format="color" /> + <attr name="keyUppercaseLetterActivatedColor" format="color" /> - <!-- Color to use for the label in a key when in disabled state. --> - <attr name="keyTextColorDisabled" format="color" /> + <!-- Popup hint icon "..." --> + <attr name="keyPopupHintIcon" format="reference" /> <!-- Layout resource for key press feedback.--> <attr name="keyPreviewLayout" format="reference" /> - <!-- Vertical offset of the key press feedback from the key. --> <attr name="keyPreviewOffset" format="dimension" /> - <!-- Height of the key press feedback popup. --> <attr name="keyPreviewHeight" format="dimension" /> @@ -61,20 +81,26 @@ <attr name="shadowRadius" format="float" /> <attr name="backgroundDimAmount" format="float" /> - <attr name="keyLetterStyle"> + <attr name="keyTextStyle" format="enum"> <!-- This should be aligned with Typeface.NORMAL etc. --> <enum name="normal" value="0" /> <enum name="bold" value="1" /> <enum name="italic" value="2" /> <enum name="boldItalic" value="3" /> </attr> + </declare-styleable> - <attr name="colorScheme"> - <!-- This should be aligned with KeyboardView.COLOR_SCHEME_* --> - <enum name="white" value="0" /> - <enum name="black" value="1" /> + <declare-styleable name="CandidateView"> + <attr name="autoCorrectHighlight" format="integer"> + <flag name="autoCorrectBold" value="0x01" /> + <flag name="autoCorrectUnderline" value="0x02" /> + <flag name="autoCorrectInvert" value="0x04" /> </attr> - + <attr name="colorTypedWord" format="color" /> + <attr name="colorAutoCorrect" format="color" /> + <attr name="colorSuggested" format="color" /> + <attr name="iconExpandPane" format="reference" /> + <attr name="iconClosePane" format="reference" /> </declare-styleable> <declare-styleable name="Keyboard"> @@ -85,8 +111,19 @@ <!-- Minimum keyboard height represented in pixels, percentage of display height if fraction is positive, or percentage of display width if fraction is negative. --> <attr name="minKeyboardHeight" format="dimension|fraction" /> - <!-- Default width of a key, in pixels or percentage of display width. --> - <attr name="keyWidth" format="dimension|fraction" /> + <!-- Keyboard top and bottom paddings. --> + <attr name="keyboardTopPadding" format="dimension" /> + <attr name="keyboardBottomPadding" format="dimension" /> + <!-- Default width of a key, in pixels or percentage of display width. + If the value is zero, the actual key width will be determined to fill out the area up + to the right edge of the keyboard. + If the value is negative, the actual key width will be determined to fill out the + area between the nearest key on the left hand side and the right edge of the keyboard. + --> + <attr name="keyWidth" format="dimension|fraction|enum"> + <enum name="fillRight" value="0" /> + <enum name="fillBoth" value="-1" /> + </attr> <!-- Default height of a row (key height + vertical gap), in pixels or percentage of keyboard height. --> <attr name="rowHeight" format="dimension|fraction" /> @@ -98,6 +135,32 @@ <attr name="popupKeyboardTemplate" format="reference" /> <!-- Locale of the keyboard layout --> <attr name="keyboardLocale" format="string" /> + <!-- Icon set for key top and key preview. --> + <attr name="iconShiftKey" format="reference" /> + <attr name="iconToSymbolKey" format="reference" /> + <attr name="iconToSymbolKeyWithShortcut" format="reference" /> + <attr name="iconDeleteKey" format="reference" /> + <attr name="iconSettingsKey" format="reference" /> + <attr name="iconShortcutKey" format="reference" /> + <attr name="iconSpaceKey" format="reference" /> + <attr name="iconReturnKey" format="reference" /> + <attr name="iconSearchKey" format="reference" /> + <attr name="iconTabKey" format="reference" /> + <attr name="iconNum1Key" format="reference" /> + <attr name="iconNum2Key" format="reference" /> + <attr name="iconNum3Key" format="reference" /> + <attr name="iconNum4Key" format="reference" /> + <attr name="iconNum5Key" format="reference" /> + <attr name="iconNum6Key" format="reference" /> + <attr name="iconNum7Key" format="reference" /> + <attr name="iconNum8Key" format="reference" /> + <attr name="iconNum9Key" format="reference" /> + <attr name="iconNum0Key" format="reference" /> + <attr name="iconShiftedShiftKey" format="reference" /> + <attr name="iconPreviewSpaceKey" format="reference" /> + <attr name="iconPreviewTabKey" format="reference" /> + <attr name="iconPreviewSettingsKey" format="reference" /> + <attr name="iconPreviewShortcutKey" format="reference" /> </declare-styleable> <declare-styleable name="Keyboard_Key"> @@ -108,7 +171,7 @@ <!-- Maximum column of popup keyboard --> <attr name="maxPopupKeyboardColumn" format="integer" /> <!-- Key edge flags. --> - <attr name="keyEdgeFlags"> + <attr name="keyEdgeFlags" format="integer"> <!-- Key is anchored to the left of the keyboard. --> <flag name="left" value="1" /> <!-- Key is anchored to the right of the keyboard. --> @@ -120,43 +183,76 @@ <attr name="isSticky" format="boolean" /> <!-- Whether long-pressing on this key will make it repeat. --> <attr name="isRepeatable" format="boolean" /> - <!-- The icon to show in the popup preview. --> - <attr name="iconPreview" format="reference" /> <!-- The string of characters to output when this key is pressed. --> <attr name="keyOutputText" format="string" /> <!-- The label to display on the key. --> <attr name="keyLabel" format="string" /> - <!-- The key label option --> - <attr name="keyLabelOption"> - <!-- This should be aligned with KeyboardView.KEY_LABEL_OPTION_* --> - <flag name="alignLeft" value="1" /> - <flag name="alignRight" value="2" /> - <flag name="alignBottom" value="8" /> - <flag name="fontNormal" value="16" /> + <!-- The hint letter to display on the key in conjunction with the label. --> + <attr name="keyHintLetter" format="string" /> + <!-- The key label option. --> + <attr name="keyLabelOption" format="integer"> + <!-- This should be aligned with Key.LABEL_OPTION_* --> + <flag name="alignLeft" value="0x01" /> + <flag name="alignRight" value="0x02" /> + <flag name="alignBottom" value="0x08" /> + <flag name="fontNormal" value="0x10" /> + <flag name="fontFixedWidth" value="0x20" /> + <flag name="followKeyLetterRatio" value="0x40" /> + <flag name="popupHint" value="0x80" /> + <flag name="hasUppercaseLetter" value="0x100" /> </attr> - <!-- The unicode that this key generates in manual temporary upper case mode. --> - <attr name="manualTemporaryUpperCaseCode" format="integer" /> <!-- The icon to display on the key instead of the label. --> - <attr name="keyIcon" format="reference" /> - <!-- The hint icon to display on the key in conjunction with the label --> - <attr name="keyHintIcon" format="reference" /> - <!-- The hint icon to display on the key when keyboard is in manual temporary upper case - mode. --> - <attr name="manualTemporaryUpperCaseHintIcon" format="reference" /> + <attr name="keyIcon" format="enum"> + <!-- This should be aligned with KeyboardIcons.ICON_* --> + <enum name="iconShiftKey" value="1" /> + <enum name="iconToSymbolKey" value="2" /> + <enum name="iconToSymbolKeyWithShortcut" value="3" /> + <enum name="iconDeleteKey" value="4" /> + <enum name="iconSettingsKey" value="5" /> + <enum name="iconShortcutKey" value="6" /> + <enum name="iconSpaceKey" value="7" /> + <enum name="iconReturnKey" value="8" /> + <enum name="iconSearchKey" value="9" /> + <enum name="iconTabKey" value="10" /> + <enum name="iconNum1Key" value="11" /> + <enum name="iconNum2Key" value="12" /> + <enum name="iconNum3Key" value="13" /> + <enum name="iconNum4Key" value="14" /> + <enum name="iconNum5Key" value="15" /> + <enum name="iconNum6Key" value="16" /> + <enum name="iconNum7Key" value="17" /> + <enum name="iconNum8Key" value="18" /> + <enum name="iconNum9Key" value="19" /> + <enum name="iconNum0Key" value="20" /> + </attr> + <!-- Shift key icon for shifted state --> + <attr name="keyIconShifted" format="enum"> + <!-- This should be aligned with KeyboardIcons.ICON_SHIFTED_* --> + <enum name="iconShiftedShiftKey" value="21" /> + </attr> + <!-- The icon to show in the popup preview. --> + <attr name="keyIconPreview" format="enum"> + <!-- This should be aligned with KeyboardIcons.ICON_PREVIEW_* --> + <enum name="iconPreviewSpaceKey" value="22" /> + <enum name="iconPreviewTabKey" value="23" /> + <enum name="iconPreviewSettingsKey" value="24" /> + <enum name="iconPreviewShortcutKey" value="25" /> + </attr> <!-- The key style to specify a set of key attributes defined by <key_style/> --> <attr name="keyStyle" format="string" /> - <!-- Shift key icon for shifted state --> - <attr name="shiftedIcon" format="reference" /> <!-- The key is enabled and responds on press. --> <attr name="enabled" format="boolean" /> <!-- Visual insets --> <attr name="visualInsetsLeft" format="dimension|fraction" /> <attr name="visualInsetsRight" format="dimension|fraction" /> + <!-- The X-coordinate of upper right corner of this key including horizontal gap. + If the value is negative, the origin is the right edge of the keyboard. --> + <attr name="keyXPos" format="dimension|fraction" /> </declare-styleable> <declare-styleable name="Keyboard_Row"> <!-- Row edge flags. --> - <attr name="rowEdgeFlags"> + <attr name="rowEdgeFlags" format="integer"> <!-- Row is anchored to the top of the keyboard. --> <flag name="top" value="4" /> <!-- Row is anchored to the bottom of the keyboard. --> @@ -170,29 +266,39 @@ <declare-styleable name="Keyboard_Case"> <!-- This should be aligned with KeyboardId.MODE_* --> - <attr name="mode"> + <attr name="mode" format="enum|string"> <enum name="text" value="0" /> <enum name="url" value="1" /> <enum name="email" value="2" /> <enum name="im" value="3" /> - <enum name="web" value="4" /> - <enum name="phone" value="5" /> + <enum name="phone" value="4" /> + <enum name="number" value="5" /> </attr> + <attr name="navigateAction" format="boolean" /> <attr name="passwordInput" format="boolean" /> - <attr name="hasSettingsKey" format="string" /> - <attr name="voiceKeyEnabled" format="string" /> - <attr name="hasVoiceKey" format="string" /> - <attr name="imeAction"> + <attr name="hasSettingsKey" format="boolean" /> + <!-- This should be aligned with KeyboardID.F2KEY_MODE_* --> + <attr name="f2KeyMode" format="enum"> + <enum name="none" value="0" /> + <enum name="settings" value="1" /> + <enum name="shortcutIme" value="2" /> + <enum name="shortcutImeOrSettings" value="3" /> + </attr> + <attr name="clobberSettingsKey" format="boolean" /> + <attr name="voiceKeyEnabled" format="boolean" /> + <attr name="hasVoiceKey" format="boolean" /> + <attr name="imeAction" format="enum"> <!-- This should be aligned with EditorInfo.IME_ACTION_* --> - <flag name="actionUnspecified" value="0" /> - <flag name="actionNone" value="1" /> - <flag name="actionGo" value="2" /> - <flag name="actionSearch" value="3" /> - <flag name="actionSend" value="4" /> - <flag name="actionNext" value="5" /> - <flag name="actionDone" value="6" /> - <flag name="actionPrevious" value="7" /> + <enum name="actionUnspecified" value="0" /> + <enum name="actionNone" value="1" /> + <enum name="actionGo" value="2" /> + <enum name="actionSearch" value="3" /> + <enum name="actionSend" value="4" /> + <enum name="actionNext" value="5" /> + <enum name="actionDone" value="6" /> + <enum name="actionPrevious" value="7" /> </attr> + <attr name="localeCode" format="string" /> <attr name="languageCode" format="string" /> <attr name="countryCode" format="string" /> </declare-styleable> @@ -201,4 +307,16 @@ <attr name="styleName" format="string" /> <attr name="parentStyle" format="string" /> </declare-styleable> + + <declare-styleable name="LatinKeyboard"> + <attr name="autoCorrectionSpacebarLedEnabled" format="boolean" /> + <attr name="autoCorrectionSpacebarLedIcon" format="reference" /> + <attr name="disabledShortcutIcon" format="reference" /> + <attr name="spacebarTextColor" format="color" /> + <attr name="spacebarTextShadowColor" format="color" /> + <attr name="spacebarArrowLeftIcon" format="reference" /> + <attr name="spacebarArrowRightIcon" format="reference" /> + <attr name="spacebarArrowPreviewLeftIcon" format="reference" /> + <attr name="spacebarArrowPreviewRightIcon" format="reference" /> + </declare-styleable> </resources> diff --git a/java/res/values/bools.xml b/java/res/values/bools.xml index 2a181e17d..889d8f784 100644 --- a/java/res/values/bools.xml +++ b/java/res/values/bools.xml @@ -21,6 +21,4 @@ <!-- Whether this input method should be used as the default for a locale. Override it for latin languages. --> <bool name="im_is_default">false</bool> - <!-- Whether or not voice input is enabled by default. --> - <bool name="voice_input_default">true</bool> </resources> diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml deleted file mode 100644 index 733a464cc..000000000 --- a/java/res/values/colors.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2008, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> -<resources> - <color name="candidate_normal">#FFFFFFFF</color> - <color name="candidate_recommended">#FFFCAE00</color> - <color name="candidate_other">#FFFCAE00</color> - <color name="latinkeyboard_bar_language_shadow_white">#80000000</color> - <color name="latinkeyboard_bar_language_shadow_black">#80FFFFFF</color> - <color name="latinkeyboard_bar_language_text">#FFC0C0C0</color> - <color name="latinkeyboard_feedback_language_text">#FFFFFFFF</color> - <color name="latinkeyboard_key_color_white">#FFFFFFFF</color> - <color name="latinkeyboard_key_color_black">#FF000000</color> -</resources> diff --git a/java/res/values/config.xml b/java/res/values/config.xml index 1d24b1088..ad580cc69 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -20,16 +20,13 @@ <resources> <bool name="config_swipeDisambiguation">true</bool> - <bool name="config_long_press_comma_for_settings_enabled">true</bool> <bool name="config_enable_show_settings_key_option">true</bool> - <bool name="config_enable_show_subtype_settings">true</bool> <bool name="config_enable_show_voice_key_option">true</bool> <bool name="config_enable_show_popup_on_keypress_option">true</bool> <bool name="config_enable_show_recorrection_option">true</bool> <bool name="config_enable_quick_fixes_option">true</bool> <bool name="config_enable_bigram_suggestions_option">true</bool> <bool name="config_enable_usability_study_mode_option">false</bool> - <bool name="config_candidate_highlight_font_color_enabled">true</bool> <bool name="config_swipe_down_dismiss_keyboard_enabled">true</bool> <bool name="config_sliding_key_input_enabled">true</bool> <bool name="config_digit_popup_characters_enabled">true</bool> @@ -45,6 +42,7 @@ <bool name="config_default_bigram_prediction">false</bool> <bool name="config_default_recorrection_enabled">true</bool> <bool name="config_default_sound_enabled">false</bool> + <bool name="config_auto_correction_spacebar_led_enabled">true</bool> <bool name="config_use_spacebar_language_switcher">true</bool> <!-- Showing mini keyboard, just above the touched point if true, aligned to the key if false --> <bool name="config_show_mini_keyboard_at_touched_point">false</bool> @@ -69,11 +67,9 @@ <integer name="config_double_spaces_turn_into_period_timeout">1100</integer> <dimen name="config_touch_noise_threshold_distance">2.0mm</dimen> <!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. --> - <string name="config_default_keyboard_theme_id" translatable="false">4</string> + <string name="config_default_keyboard_theme_id" translatable="false">5</string> <string name="config_text_size_of_language_on_spacebar" translatable="false">small</string> <integer name="config_max_popup_keyboard_column">5</integer> - <!-- Whether or not auto-correction should be enabled by default --> - <bool name="enable_autocorrect">true</bool> <string-array name="auto_correction_threshold_values" translatable="false"> <!-- Off, When auto correction setting is Off, this value is not used. --> <item></item> diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index 4708611e0..54256de3c 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -30,9 +30,15 @@ <dimen name="popup_key_height">0.330in</dimen> <dimen name="keyboard_top_padding">0.00in</dimen> <dimen name="keyboard_bottom_padding">0.06in</dimen> + <dimen name="key_bottom_gap_stone">0.00in</dimen> + <dimen name="key_horizontal_gap_stone">0.00in</dimen> + <dimen name="key_bottom_gap_ics">0.06in</dimen> + <dimen name="key_horizontal_gap_ics">0.01in</dimen> + <dimen name="keyboard_top_padding_ics">0.03in</dimen> + <dimen name="keyboard_bottom_padding_ics">0.06in</dimen> <dimen name="keyboard_horizontal_edges_padding">0.0in</dimen> <dimen name="mini_keyboard_horizontal_padding">16dip</dimen> - <dimen name="mini_keyboard_horizontal_padding_holo">32dip</dimen> + <dimen name="mini_keyboard_horizontal_padding_holo">38dip</dimen> <dimen name="mini_keyboard_key_horizontal_padding">8dip</dimen> <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. --> <!-- popup_key_height x 1.2 --> @@ -44,14 +50,15 @@ <dimen name="keyboard_vertical_correction">-0.05in</dimen> <fraction name="key_letter_ratio">45%</fraction> - <fraction name="key_label_text_ratio">29%</fraction> + <fraction name="key_label_ratio">29%</fraction> + <fraction name="key_hint_letter_ratio">23%</fraction> + <fraction name="key_uppercase_letter_ratio">35%</fraction> <!-- left or right padding of label alignment --> <dimen name="key_label_horizontal_alignment_padding">21dip</dimen> + <fraction name="key_preview_text_ratio">82%</fraction> <dimen name="key_preview_height">80sp</dimen> <dimen name="key_preview_offset">0.1in</dimen> - <fraction name="key_preview_text_ratio">82%</fraction> - <dimen name="key_preview_height_holo">130sp</dimen> - <dimen name="key_preview_offset_holo">0.193in</dimen> + <dimen name="key_preview_offset_ics">0.05in</dimen> <dimen name="candidate_strip_height">42dip</dimen> <!-- candidate_strip_minimum_height = @@ -62,11 +69,9 @@ <dimen name="candidate_min_width">32dip</dimen> <dimen name="candidate_padding">6dip</dimen> <dimen name="candidate_text_size">18dip</dimen> - <dimen name="spacebar_vertical_correction">4dip</dimen> <!-- If the screen height in landscape is larger than the below value, then the keyboard will not go into extract (fullscreen) mode. --> <dimen name="max_height_for_fullscreen">2.5in</dimen> - <dimen name="bubble_pointer_offset">22dip</dimen> <dimen name="key_hysteresis_distance">0.05in</dimen> </resources> diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml index 1cdae3d81..1c198d9cb 100644 --- a/java/res/values/donottranslate.xml +++ b/java/res/values/donottranslate.xml @@ -38,8 +38,10 @@ <string name="label_tab_key">Tab</string> <!-- Label for "switch to symbols" key. Must be short to fit on key! --> <string name="label_to_symbol_key">\?123</string> - <!-- Label for "switch to numeric" key. Must be short to fit on key! --> - <string name="label_to_numeric_key">123</string> + <!-- Label for "switch to phone numeric" key. Must be short to fit on key! --> + <string name="label_to_phone_numeric_key">123</string> + <!-- Label for "switch to phone symbols" key. Must be short to fit on key! --> + <string name="label_to_phone_symbols_key">\uff0a\uff03\uff08</string> <!-- Option values to show/hide the settings key in onscreen keyboard --> <!-- Automatically decide to show or hide the settings key --> @@ -126,7 +128,7 @@ <string name="layout_stone_bold">Stone (bold)</string> <string name="layout_stone_normal">Stone (normal)</string> <string name="layout_gingerbread">Gingerbread</string> - <string name="layout_honeycomb">Honeycomb</string> + <string name="layout_ics">IceCreamSandwich</string> <!-- For keyboard theme switcher dialog --> <string-array name="keyboard_layout_modes"> @@ -135,7 +137,7 @@ <item>@string/layout_stone_normal</item> <item>@string/layout_stone_bold</item> <item>@string/layout_gingerbread</item> - <item>@string/layout_honeycomb</item> + <item>@string/layout_ics</item> </string-array> <string-array name="keyboard_layout_modes_values"> <item>0</item> @@ -150,9 +152,11 @@ <string-array name="subtype_locale_exception_keys"> <item>en_US</item> <item>en_GB</item> + <item>de_ZZ</item> </string-array> <string-array name="subtype_locale_exception_values"> <item>English (US)</item> <item>English (UK)</item> + <item>Deutsch (QWERTY)</item> </string-array> </resources> diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml new file mode 100644 index 000000000..3ba345580 --- /dev/null +++ b/java/res/values/keyboard-icons-black.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="KeyboardIcons.Black" parent="android:Theme.Light"> + <!-- Keyboard icons --> + <item name="iconShiftKey">@drawable/sym_bkeyboard_shift</item> + <item name="iconToSymbolKeyWithShortcut">@drawable/sym_bkeyboard_123_mic</item> + <item name="iconDeleteKey">@drawable/sym_bkeyboard_delete</item> + <item name="iconSettingsKey">@drawable/sym_bkeyboard_settings</item> + <item name="iconShortcutKey">@drawable/sym_bkeyboard_mic</item> + <item name="iconSpaceKey">@drawable/sym_bkeyboard_space</item> + <item name="iconReturnKey">@drawable/sym_bkeyboard_return</item> + <item name="iconSearchKey">@drawable/sym_bkeyboard_search</item> + <item name="iconTabKey">@drawable/sym_bkeyboard_tab</item> + <item name="iconNum1Key">@drawable/sym_bkeyboard_num1</item> + <item name="iconNum2Key">@drawable/sym_bkeyboard_num2</item> + <item name="iconNum3Key">@drawable/sym_bkeyboard_num3</item> + <item name="iconNum4Key">@drawable/sym_bkeyboard_num4</item> + <item name="iconNum5Key">@drawable/sym_bkeyboard_num5</item> + <item name="iconNum6Key">@drawable/sym_bkeyboard_num6</item> + <item name="iconNum7Key">@drawable/sym_bkeyboard_num7</item> + <item name="iconNum8Key">@drawable/sym_bkeyboard_num8</item> + <item name="iconNum9Key">@drawable/sym_bkeyboard_num9</item> + <item name="iconNum0Key">@drawable/sym_bkeyboard_num0</item> + <item name="iconShiftedShiftKey">@drawable/sym_bkeyboard_shift_locked</item> + <item name="iconPreviewSpaceKey">@drawable/sym_keyboard_feedback_space</item> + <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item> + <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_feedback_settings</item> + <item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_mic</item> + <!-- LatinKeyboard icons --> + <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item> + <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item> + <item name="spacebarArrowLeftIcon">@drawable/sym_keyboard_language_arrows_left</item> + <item name="spacebarArrowRightIcon">@drawable/sym_keyboard_language_arrows_right</item> + <item name="spacebarArrowPreviewLeftIcon">@drawable/sym_keyboard_feedback_language_arrows_left</item> + <item name="spacebarArrowPreviewRightIcon">@drawable/sym_keyboard_feedback_language_arrows_right</item> + </style> +</resources> diff --git a/java/res/values/keyboard-icons-ics.xml b/java/res/values/keyboard-icons-ics.xml new file mode 100644 index 000000000..3029695e6 --- /dev/null +++ b/java/res/values/keyboard-icons-ics.xml @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="KeyboardIcons.IceCreamSandwich" parent="android:Theme.Holo"> + <!-- Keyboard icons --> +<!-- <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo</item> --> + <item name="iconShiftKey">@drawable/sym_keyboard_shift</item> +<!-- <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_voice_holo</item> --> + <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_mic</item> +<!-- <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo</item> --> + <item name="iconDeleteKey">@drawable/sym_keyboard_delete</item> +<!-- <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo</item> --> + <item name="iconSettingsKey">@drawable/sym_keyboard_settings</item> +<!-- <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo</item> --> + <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item> +<!-- <item name="iconSpaceKey">@drawable/sym_keyboard_space_holo</item> --> + <item name="iconSpaceKey">@drawable/sym_keyboard_space</item> +<!-- <item name="iconReturnKey">@drawable/sym_keyboard_return_holo</item> --> + <item name="iconReturnKey">@drawable/sym_keyboard_return</item> +<!-- <item name="iconSearchKey">@drawable/sym_keyboard_search_holo</item> --> + <item name="iconSearchKey">@drawable/sym_keyboard_search</item> +<!-- <item name="iconTabKey">@drawable/sym_keyboard_tab_holo</item> --> + <item name="iconTabKey">@drawable/sym_keyboard_tab</item> +<!-- <item name="iconNum1Key">@drawable/sym_keyboard_num1_holo</item> --> +<!-- <item name="iconNum2Key">@drawable/sym_keyboard_num2_holo</item> --> +<!-- <item name="iconNum3Key">@drawable/sym_keyboard_num3_holo</item> --> +<!-- <item name="iconNum4Key">@drawable/sym_keyboard_num4_holo</item> --> +<!-- <item name="iconNum5Key">@drawable/sym_keyboard_num5_holo</item> --> +<!-- <item name="iconNum6Key">@drawable/sym_keyboard_num6_holo</item> --> +<!-- <item name="iconNum7Key">@drawable/sym_keyboard_num7_holo</item> --> +<!-- <item name="iconNum8Key">@drawable/sym_keyboard_num8_holo</item> --> +<!-- <item name="iconNum9Key">@drawable/sym_keyboard_num9_holo</item> --> +<!-- <item name="iconNum0Key">@drawable/sym_keyboard_num0_holo</item> --> +<!-- <item name="iconNumStarKey">@drawable/sym_keyboard_numbstar_holo</item> --> +<!-- <item name="iconNumPoundKey">@drawable/sym_keyboard_numbpound_holo</item> --> +<!-- <item name="iconNumAltKey">@drawable/sym_keyboard_numalt_holo</item> --> + <item name="iconNum1Key">@drawable/sym_keyboard_num1</item> + <item name="iconNum2Key">@drawable/sym_keyboard_num2</item> + <item name="iconNum3Key">@drawable/sym_keyboard_num3</item> + <item name="iconNum4Key">@drawable/sym_keyboard_num4</item> + <item name="iconNum5Key">@drawable/sym_keyboard_num5</item> + <item name="iconNum6Key">@drawable/sym_keyboard_num6</item> + <item name="iconNum7Key">@drawable/sym_keyboard_num7</item> + <item name="iconNum8Key">@drawable/sym_keyboard_num8</item> + <item name="iconNum9Key">@drawable/sym_keyboard_num9</item> + <item name="iconNum0Key">@drawable/sym_keyboard_num0</item> +<!-- <item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked_holo</item> --> + <item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked</item> + <item name="iconPreviewSpaceKey">@drawable/sym_keyboard_space_holo</item> +<!-- <item name="iconPreviewTabKey">@drawable/sym_keyboard_tab_holo</item> --> + <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item> +<!-- <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_settings_holo</item> --> + <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_settings</item> +<!-- <item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_voice_holo</item> --> + <item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_mic</item> + <!-- LatinKeyboard icons --> + <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item> + <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item> + <item name="spacebarArrowLeftIcon">@drawable/sym_keyboard_language_arrows_left</item> + <item name="spacebarArrowRightIcon">@drawable/sym_keyboard_language_arrows_right</item> + <item name="spacebarArrowPreviewLeftIcon">@drawable/sym_keyboard_feedback_language_arrows_left</item> + <item name="spacebarArrowPreviewRightIcon">@drawable/sym_keyboard_feedback_language_arrows_right</item> + </style> +</resources> diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml new file mode 100644 index 000000000..9f5fb5a5b --- /dev/null +++ b/java/res/values/keyboard-icons-white.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="KeyboardIcons" parent="android:Theme"> + <!-- Keyboard icons --> + <item name="iconShiftKey">@drawable/sym_keyboard_shift</item> + <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_mic</item> + <item name="iconDeleteKey">@drawable/sym_keyboard_delete</item> + <item name="iconSettingsKey">@drawable/sym_keyboard_settings</item> + <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item> + <item name="iconSpaceKey">@drawable/sym_keyboard_space</item> + <item name="iconReturnKey">@drawable/sym_keyboard_return</item> + <item name="iconSearchKey">@drawable/sym_keyboard_search</item> + <item name="iconTabKey">@drawable/sym_keyboard_tab</item> + <item name="iconNum1Key">@drawable/sym_keyboard_num1</item> + <item name="iconNum2Key">@drawable/sym_keyboard_num2</item> + <item name="iconNum3Key">@drawable/sym_keyboard_num3</item> + <item name="iconNum4Key">@drawable/sym_keyboard_num4</item> + <item name="iconNum5Key">@drawable/sym_keyboard_num5</item> + <item name="iconNum6Key">@drawable/sym_keyboard_num6</item> + <item name="iconNum7Key">@drawable/sym_keyboard_num7</item> + <item name="iconNum8Key">@drawable/sym_keyboard_num8</item> + <item name="iconNum9Key">@drawable/sym_keyboard_num9</item> + <item name="iconNum0Key">@drawable/sym_keyboard_num0</item> + <item name="iconShiftedShiftKey">@drawable/sym_keyboard_shift_locked</item> + <item name="iconPreviewSpaceKey">@drawable/sym_keyboard_feedback_space</item> + <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item> + <item name="iconPreviewSettingsKey">@drawable/sym_keyboard_feedback_settings</item> + <item name="iconPreviewShortcutKey">@drawable/sym_keyboard_feedback_mic</item> + <!-- LatinKeyboard icons --> + <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item> + <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item> + <item name="spacebarArrowLeftIcon">@drawable/sym_keyboard_language_arrows_left</item> + <item name="spacebarArrowRightIcon">@drawable/sym_keyboard_language_arrows_right</item> + <item name="spacebarArrowPreviewLeftIcon">@drawable/sym_keyboard_feedback_language_arrows_left</item> + <item name="spacebarArrowPreviewRightIcon">@drawable/sym_keyboard_feedback_language_arrows_right</item> + </style> +</resources> diff --git a/java/res/values/keycodes.xml b/java/res/values/keycodes.xml index d5926ecfd..ee345291a 100644 --- a/java/res/values/keycodes.xml +++ b/java/res/values/keycodes.xml @@ -23,9 +23,6 @@ <integer name="key_tab">9</integer> <integer name="key_return">10</integer> <integer name="key_space">32</integer> - <integer name="key_dash">45</integer> - <integer name="key_single_quote">39</integer> - <integer name="key_double_quote">34</integer> <integer name="key_shift">-1</integer> <integer name="key_switch_alpha_symbol">-2</integer> <integer name="key_delete">-5</integer> diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index ac6082f22..75f4c50fb 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -58,6 +58,11 @@ <!-- Description for delay for dismissing a popup on screen: default value of the delay [CHAR LIMIT=15] --> <string name="key_preview_popup_dismiss_default_delay">Default</string> + <!-- Option name for enabling or disabling the use of names of people in Contacts for suggestion and correction [CHAR LIMIT=25] --> + <string name="use_contacts_dict">Suggest Contact names</string> + <!-- Description for option enabling or disabling the use of names of people in Contacts for suggestion and correction [CHAR LIMIT=65] --> + <string name="use_contacts_dict_summary">Use names from Contacts for suggestions and corrections</string> + <!-- Option to enable auto capitalization of sentences --> <string name="auto_cap">Auto-capitalization</string> @@ -126,6 +131,81 @@ <!-- Label for "Wait" key of phone number keyboard. Must be short to fit on key! [CHAR LIMIT=5]--> <string name="label_wait_key">Wait</string> + <!-- Spoken description for the currently entered text --> + <string name="spoken_current_text_is">Current text is "%s"</string> + <!-- Spoken description when there is no text entered --> + <string name="spoken_no_text_entered">No text entered</string> + + <!-- Spoken description for unknown keyboard keys. --> + <string name="spoken_description_unknown">Key code %d</string> + <!-- Spoken description for the "Shift" keyboard key. --> + <string name="spoken_description_shift">Shift</string> + <!-- Spoken description for the "Shift" keyboard key's pressed state. --> + <string name="spoken_description_shift_shifted">Shift enabled</string> + <!-- Spoken description for the "Shift" keyboard key's pressed state. --> + <string name="spoken_description_caps_lock">Caps lock enabled</string> + <!-- Spoken description for the "Delete" keyboard key. --> + <string name="spoken_description_delete">Delete</string> + <!-- Spoken description for the "To Symbol" keyboard key. --> + <string name="spoken_description_to_symbol">Symbols</string> + <!-- Spoken description for the "To Alpha" keyboard key. --> + <string name="spoken_description_to_alpha">Letters</string> + <!-- Spoken description for the "To Numbers" keyboard key. --> + <string name="spoken_description_to_numeric">Numbers</string> + <!-- Spoken description for the "Settings" keyboard key. --> + <string name="spoken_description_settings">Settings</string> + <!-- Spoken description for the "Tab" keyboard key. --> + <string name="spoken_description_tab">Tab</string> + <!-- Spoken description for the "Space" keyboard key. --> + <string name="spoken_description_space">Space</string> + <!-- Spoken description for the "Mic" keyboard key. --> + <string name="spoken_description_mic">Voice input</string> + <!-- Spoken description for the "Smiley" keyboard key. --> + <string name="spoken_description_smiley">Smiley face</string> + <!-- Spoken description for the "Return" keyboard key. --> + <string name="spoken_description_return">Return</string> + + <!-- Spoken description for the "," keyboard key. --> + <string name="spoken_description_comma">Comma</string> + <!-- Spoken description for the "." keyboard key. --> + <string name="spoken_description_period">Period</string> + <!-- Spoken description for the "(" keyboard key. --> + <string name="spoken_description_left_parenthesis">Left parenthesis</string> + <!-- Spoken description for the ")" keyboard key. --> + <string name="spoken_description_right_parenthesis">Right parenthesis</string> + <!-- Spoken description for the ":" keyboard key. --> + <string name="spoken_description_colon">Colon</string> + <!-- Spoken description for the ";" keyboard key. --> + <string name="spoken_description_semicolon">Semicolon</string> + <!-- Spoken description for the "!" keyboard key. --> + <string name="spoken_description_exclamation_mark">Exclamation mark</string> + <!-- Spoken description for the "?" keyboard key. --> + <string name="spoken_description_question_mark">Question mark</string> + <!-- Spoken description for the """ keyboard key. --> + <string name="spoken_description_double_quote">Double quote</string> + <!-- Spoken description for the "'" keyboard key. --> + <string name="spoken_description_single_quote">Single quote</string> + <!-- Spoken description for the "•" keyboard key. --> + <string name="spoken_description_dot">Dot</string> + <!-- Spoken description for the "√" keyboard key. --> + <string name="spoken_description_square_root">Square root</string> + <!-- Spoken description for the "π" keyboard key. --> + <string name="spoken_description_pi">Pi</string> + <!-- Spoken description for the "Δ" keyboard key. --> + <string name="spoken_description_delta">Delta</string> + <!-- Spoken description for the "™" keyboard key. --> + <string name="spoken_description_trademark">Trademark</string> + <!-- Spoken description for the "℅" keyboard key. --> + <string name="spoken_description_care_of">Care of</string> + <!-- Spoken description for the "*" keyboard key. --> + <string name="spoken_description_star">Star</string> + <!-- Spoken description for the "#" keyboard key. --> + <string name="spoken_description_pound">Pound</string> + <!-- Spoken description for the "…" keyboard key. --> + <string name="spoken_description_ellipsis">Ellipsis</string> + <!-- Spoken description for the "„" keyboard key. --> + <string name="spoken_description_low_double_quote">Low double quote</string> + <!-- Voice related labels --> <!-- Title of the warning dialog that shows when a user initiates voice input for @@ -247,20 +327,26 @@ <string name="subtype_mode_da_keyboard">Danish Keyboard</string> <!-- Description for German keyboard subtype [CHAR LIMIT=35] --> <string name="subtype_mode_de_keyboard">German Keyboard</string> + <!-- Description for German QWERTY keyboard subtype [CHAR LIMIT=35] --> + <string name="subtype_mode_de_qwerty_keyboard">German QWERTY Keyboard</string> <!-- Description for English (United Kingdom) keyboard subtype [CHAR LIMIT=35] --> <string name="subtype_mode_en_GB_keyboard">English (UK) Keyboard</string> <!-- Description for English (United States) keyboard subtype [CHAR LIMIT=35] --> <string name="subtype_mode_en_US_keyboard">English (US) Keyboard</string> <!-- Description for Spanish keyboard subtype [CHAR LIMIT=35] --> <string name="subtype_mode_es_keyboard">Spanish Keyboard</string> - <!-- Description for Spanish (United States) keyboard subtype [CHAR LIMIT=35] --> - <string name="subtype_mode_es_US_keyboard">Spanish (US) Keyboard</string> + <!-- Description for Finnish keyboard subtype [CHAR LIMIT=35] --> + <string name="subtype_mode_fi_keyboard">Finnish Keyboard</string> <!-- Description for French keyboard subtype [CHAR LIMIT=35] --> <string name="subtype_mode_fr_keyboard">French Keyboard</string> <!-- Description for French (Canada) keyboard subtype [CHAR LIMIT=35] --> <string name="subtype_mode_fr_CA_keyboard">French (Canada) Keyboard</string> <!-- Description for French (Switzerland) keyboard subtype [CHAR LIMIT=35] --> <string name="subtype_mode_fr_CH_keyboard">French (Switzerland) Keyboard</string> + <!-- Description for Croatian keyboard subtype [CHAR LIMIT=35] --> + <string name="subtype_mode_hr_keyboard">Croatian Keyboard</string> + <!-- Description for Hungarian keyboard subtype [CHAR LIMIT=35] --> + <string name="subtype_mode_hu_keyboard">Hungarian Keyboard</string> <!-- Description for Hebrew keyboard subtype [CHAR LIMIT=35] --> <!-- Java uses the deprecated "iw" code instead of the standard "he" code --> <string name="subtype_mode_iw_keyboard">Hebrew Keyboard</string> @@ -280,6 +366,8 @@ <string name="subtype_mode_sr_keyboard">Serbian Keyboard</string> <!-- Description for Swedish keyboard subtype [CHAR LIMIT=35] --> <string name="subtype_mode_sv_keyboard">Swedish Keyboard</string> + <!-- Description for Turkish keyboard subtype [CHAR LIMIT=35] --> + <string name="subtype_mode_tr_keyboard">Turkish Keyboard</string> <!-- Description for Afrikaans voice input subtype [CHAR LIMIT=35] --> <string name="subtype_mode_af_voice">Afrikaans Voice</string> <!-- Description for Czech voice input subtype [CHAR LIMIT=35] --> diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml index 3a389e57b..05defcb52 100644 --- a/java/res/values/styles.xml +++ b/java/res/values/styles.xml @@ -15,25 +15,169 @@ --> <resources> + <!-- Theme "Basic" --> + <style name="Keyboard"> + <item name="rowHeight">25%p</item> + <item name="keyboardHeight">@dimen/keyboardHeight</item> + <item name="maxKeyboardHeight">@fraction/maxKeyboardHeight</item> + <item name="minKeyboardHeight">@fraction/minKeyboardHeight</item> + <item name="popupKeyboardTemplate">@xml/kbd_popup_template</item> + <item name="keyboardTopPadding">@dimen/keyboard_top_padding</item> + <item name="keyboardBottomPadding">@dimen/keyboard_bottom_padding</item> + <item name="horizontalGap">@dimen/key_horizontal_gap</item> + <item name="verticalGap">@dimen/key_bottom_gap</item> + <item name="maxPopupKeyboardColumn">@integer/config_max_popup_keyboard_column</item> + </style> + <style name="LatinKeyboard"> + <item name="autoCorrectionSpacebarLedEnabled">@bool/config_auto_correction_spacebar_led_enabled</item> + <item name="spacebarTextColor">#FFC0C0C0</item> + <item name="spacebarTextShadowColor">#80000000</item> + </style> <style name="KeyboardView"> <item name="android:background">@drawable/keyboard_background</item> - <item name="keyBackground">@drawable/btn_keyboard_key</item> <item name="keyLetterRatio">@fraction/key_letter_ratio</item> - <item name="keyLetterStyle">normal</item> + <item name="keyLabelRatio">@fraction/key_label_ratio</item> + <item name="keyHintLetterRatio">@fraction/key_hint_letter_ratio</item> + <item name="keyUppercaseLetterRatio">@fraction/key_uppercase_letter_ratio</item> + <item name="keyTextStyle">normal</item> <item name="keyTextColor">#FFFFFFFF</item> - <item name="keyTextColorDisabled">#FFFFFFFF</item> + <item name="keyTextInactivatedColor">#FFFFFFFF</item> + <item name="keyHintLetterColor">#80000000</item> + <item name="keyUppercaseLetterInactivatedColor">#66E0E4E5</item> + <item name="keyUppercaseLetterActivatedColor">#CCE0E4E5</item> + <item name="keyPopupHintIcon">@drawable/hint_popup</item> <item name="keyPreviewLayout">@layout/key_preview</item> <item name="keyPreviewOffset">@dimen/key_preview_offset</item> <item name="keyPreviewHeight">@dimen/key_preview_height</item> - <item name="labelTextRatio">@fraction/key_label_text_ratio</item> <item name="popupLayout">@layout/keyboard_popup</item> <item name="keyHysteresisDistance">@dimen/key_hysteresis_distance</item> <item name="verticalCorrection">@dimen/keyboard_vertical_correction</item> <item name="shadowColor">#BB000000</item> <item name="shadowRadius">2.75</item> <item name="backgroundDimAmount">0.5</item> - <item name="colorScheme">white</item> + </style> + <style name="KeyPreviewStyle"> + <item name="android:background">@drawable/keyboard_key_feedback</item> + <item name="android:textColor">#FFFFFFFF</item> + </style> + <style name="PopupMiniKeyboardView" parent="KeyboardView"> + <item name="keyBackground">@drawable/btn_keyboard_key_popup</item> + <item name="keyHysteresisDistance">0dip</item> + <item name="verticalCorrection">@dimen/mini_keyboard_vertical_correction</item> + </style> + <style name="PopupMiniKeyboardPanelStyle"> + <item name="android:background">@drawable/keyboard_popup_panel_background</item> + <item name="android:paddingLeft">@dimen/mini_keyboard_horizontal_padding</item> + <item name="android:paddingRight">@dimen/mini_keyboard_horizontal_padding</item> + </style> + <style name="SuggestionsStripBackgroundStyle"> + <item name="android:background">@drawable/keyboard_suggest_strip</item> + </style> + <style name="SuggestionBackgroundStyle"> + <item name="android:background">@drawable/btn_candidate</item> + </style> + <style name="SuggestionPreviewBackgroundStyle"> + <item name="android:background">@drawable/candidate_feedback_background</item> + </style> + <style name="CandidateViewStyle" parent="SuggestionsStripBackgroundStyle"> + <item name="autoCorrectHighlight">autoCorrectBold</item> + <item name="colorTypedWord">#FFFFFFFF</item> + <item name="colorAutoCorrect">#FFFCAE00</item> + <item name="colorSuggested">#FFFCAE00</item> + <item name="iconExpandPane">@drawable/btn_expand_candidates_pane</item> + <item name="iconClosePane">@drawable/btn_close_candidates_pane</item>" + </style> + <!-- Theme "Basic high contrast" --> + <style name="KeyboardView.HighContrast" parent="KeyboardView"> + <item name="android:background">@android:color/black</item> + <item name="keyBackground">@drawable/btn_keyboard_key3</item> + </style> + <!-- Theme "Stone" --> + <style name="Keyboard.Stone" parent="Keyboard"> + <item name="horizontalGap">@dimen/key_horizontal_gap_stone</item> + <item name="verticalGap">@dimen/key_bottom_gap_stone</item> + </style> + <style name="LatinKeyboard.Stone" parent="LatinKeyboard"> + <item name="spacebarTextColor">#FF444444</item> + <item name="spacebarTextShadowColor">#80FFFFFF</item> + </style> + <style name="KeyboardView.Stone" parent="KeyboardView"> + <item name="keyBackground">@drawable/btn_keyboard_key_stone</item> + <item name="keyTextColor">#FF000000</item> + <item name="keyTextInactivatedColor">#FF808080</item> + <item name="shadowColor">#FFFFFFFF</item> + </style> + <style name="PopupMiniKeyboardView.Stone" parent="PopupMiniKeyboardView"> + <item name="keyBackground">@drawable/btn_keyboard_key_stone</item> + <item name="keyTextColor">#FF000000</item> + <item name="shadowColor">#FFFFFFFF</item> + </style> + <!-- Theme "Stone bold" --> + <style name="KeyboardView.Stone.Bold" parent="KeyboardView.Stone"> + <item name="keyTextStyle">bold</item> + </style> + <!-- Theme "Gingerbread" --> + <style name="KeyboardView.Gingerbread" parent="KeyboardView"> + <item name="android:background">@drawable/keyboard_dark_background</item> + <item name="keyBackground">@drawable/btn_keyboard_key_gingerbread</item> + <item name="keyTextStyle">bold</item> + </style> + <style name="PopupMiniKeyboardView.Gingerbread" parent="PopupMiniKeyboardView"> + <item name="android:background">@null</item> + </style> + <!-- Theme "IceCreamSandwich" --> + <style name="Keyboard.IceCreamSandwich" parent="Keyboard" > + <item name="keyboardTopPadding">@dimen/keyboard_top_padding_ics</item> + <item name="keyboardBottomPadding">@dimen/keyboard_bottom_padding_ics</item> + <item name="horizontalGap">@dimen/key_horizontal_gap_ics</item> + <item name="verticalGap">@dimen/key_bottom_gap_ics</item> + </style> + <style name="LatinKeyboard.IceCreamSandwich" parent="LatinKeyboard"> + <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item> + </style> + <style name="KeyboardView.IceCreamSandwich" parent="KeyboardView"> + <item name="android:background">@drawable/keyboard_background_holo</item> + <item name="keyBackground">@drawable/btn_keyboard_key_ics</item> + <item name="keyTextStyle">bold</item> + <item name="keyTextInactivatedColor">#66E0E4E5</item> + <item name="keyHintLetterColor">#80000000</item> + <item name="keyUppercaseLetterInactivatedColor">#66E0E4E5</item> + <item name="keyUppercaseLetterActivatedColor">#FFFFFFFF</item> + <item name="keyPopupHintIcon">@drawable/hint_popup</item> + <item name="keyPreviewHeight">@dimen/key_preview_height</item> + <item name="keyPreviewOffset">@dimen/key_preview_offset_ics</item> + <item name="shadowColor">#00000000</item> + <item name="shadowRadius">0.0</item> + </style> + <style name="KeyPreviewStyle.IceCreamSandwich"> + <item name="android:background">@drawable/keyboard_key_feedback_ics</item> + </style> + <style name="PopupMiniKeyboardView.IceCreamSandwich" parent="PopupMiniKeyboardView"> + <item name="android:background">@null</item> + <item name="keyBackground">@drawable/btn_keyboard_key_popup_ics</item> + </style> + <style name="PopupMiniKeyboardPanelStyle.IceCreamSandwich"> + <item name="android:background">@drawable/keyboard_popup_panel_background_holo</item> + <item name="android:paddingLeft">@dimen/mini_keyboard_horizontal_padding_holo</item> + <item name="android:paddingRight">@dimen/mini_keyboard_horizontal_padding_holo</item> + </style> + <style name="SuggestionsStripBackgroundStyle.IceCreamSandwich"> + <item name="android:background">@drawable/keyboard_suggest_strip_holo</item> + </style> + <style name="SuggestionBackgroundStyle.IceCreamSandwich"> + <item name="android:background">@drawable/btn_candidate_ics</item> + </style> + <style name="SuggestionPreviewBackgroundStyle.IceCreamSandwich"> + <item name="android:background">@drawable/keyboard_popup_panel_background_holo</item> + </style> + <style name="CandidateViewStyle.IceCreamSandwich" parent="SuggestionsStripBackgroundStyle.IceCreamSandwich"> + <item name="autoCorrectHighlight">autoCorrectUnderline|autoCorrectInvert</item> + <item name="colorTypedWord">#FFFFFFFF</item> + <item name="colorAutoCorrect">#FFFFFFFF</item> + <item name="colorSuggested">#FFFFFFFF</item> + <item name="iconExpandPane">@drawable/btn_expand_candidates_pane</item> + <item name="iconClosePane">@drawable/btn_close_candidates_pane</item>" </style> <style name="PopupMiniKeyboardAnimation"> <item name="android:windowEnterAnimation">@anim/mini_keyboard_fadein</item> diff --git a/java/res/values/themes-basic-highcontrast.xml b/java/res/values/themes-basic-highcontrast.xml new file mode 100644 index 000000000..8122e4eb0 --- /dev/null +++ b/java/res/values/themes-basic-highcontrast.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="KeyboardTheme.HighContrast" parent="KeyboardIcons"> + <item name="keyboardStyle">@style/Keyboard</item> + <item name="latinKeyboardStyle">@style/LatinKeyboard</item> + <item name="keyboardViewStyle">@style/KeyboardView.HighContrast</item> + <item name="keyPreviewStyle">@style/KeyPreviewStyle</item> + <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item> + <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item> + <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item> + <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item> + <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item> + <item name="candidateViewStyle">@style/CandidateViewStyle</item> + </style> +</resources> diff --git a/java/res/values/themes-basic.xml b/java/res/values/themes-basic.xml new file mode 100644 index 000000000..50b52de32 --- /dev/null +++ b/java/res/values/themes-basic.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="KeyboardTheme" parent="KeyboardIcons"> + <item name="keyboardStyle">@style/Keyboard</item> + <item name="latinKeyboardStyle">@style/LatinKeyboard</item> + <item name="keyboardViewStyle">@style/KeyboardView</item> + <item name="keyPreviewStyle">@style/KeyPreviewStyle</item> + <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item> + <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item> + <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item> + <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item> + <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item> + <item name="candidateViewStyle">@style/CandidateViewStyle</item> + </style> +</resources> diff --git a/java/res/values/themes-gingerbread.xml b/java/res/values/themes-gingerbread.xml new file mode 100644 index 000000000..cdb10c81a --- /dev/null +++ b/java/res/values/themes-gingerbread.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="KeyboardTheme.Gingerbread" parent="KeyboardIcons"> + <item name="keyboardStyle">@style/Keyboard</item> + <item name="latinKeyboardStyle">@style/LatinKeyboard</item> + <item name="keyboardViewStyle">@style/KeyboardView.Gingerbread</item> + <item name="keyPreviewStyle">@style/KeyPreviewStyle</item> + <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Gingerbread</item> + <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item> + <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item> + <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item> + <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item> + <item name="candidateViewStyle">@style/CandidateViewStyle</item> + </style> +</resources> diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml new file mode 100644 index 000000000..33c40816b --- /dev/null +++ b/java/res/values/themes-ics.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="KeyboardTheme.IceCreamSandwich" parent="KeyboardIcons.IceCreamSandwich"> + <item name="keyboardStyle">@style/Keyboard.IceCreamSandwich</item> + <item name="latinKeyboardStyle">@style/LatinKeyboard.IceCreamSandwich</item> + <item name="keyboardViewStyle">@style/KeyboardView.IceCreamSandwich</item> + <item name="keyPreviewStyle">@style/KeyPreviewStyle.IceCreamSandwich</item> + <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.IceCreamSandwich</item> + <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle.IceCreamSandwich</item> + <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.IceCreamSandwich</item> + <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle.IceCreamSandwich</item> + <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle.IceCreamSandwich</item> + <item name="candidateViewStyle">@style/CandidateViewStyle.IceCreamSandwich</item> + </style> +</resources> diff --git a/java/res/values/themes-stone-bold.xml b/java/res/values/themes-stone-bold.xml new file mode 100644 index 000000000..6589807ec --- /dev/null +++ b/java/res/values/themes-stone-bold.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="KeyboardTheme.Stone.Bold" parent="KeyboardIcons.Black"> + <item name="keyboardStyle">@style/Keyboard.Stone</item> + <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item> + <item name="keyboardViewStyle">@style/KeyboardView.Stone.Bold</item> + <item name="keyPreviewStyle">@style/KeyPreviewStyle</item> + <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item> + <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item> + <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item> + <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item> + <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item> + <item name="candidateViewStyle">@style/CandidateViewStyle</item> + </style> +</resources> diff --git a/java/res/values/themes-stone.xml b/java/res/values/themes-stone.xml new file mode 100644 index 000000000..a8608f6b3 --- /dev/null +++ b/java/res/values/themes-stone.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="KeyboardTheme.Stone" parent="KeyboardIcons.Black"> + <item name="keyboardStyle">@style/Keyboard.Stone</item> + <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item> + <item name="keyboardViewStyle">@style/KeyboardView.Stone</item> + <item name="keyPreviewStyle">@style/KeyPreviewStyle</item> + <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item> + <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item> + <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item> + <item name="suggestionBackgroundStyle">@style/SuggestionBackgroundStyle</item> + <item name="suggestionPreviewBackgroundStyle">@style/SuggestionPreviewBackgroundStyle</item> + <item name="candidateViewStyle">@style/CandidateViewStyle</item> + </style> +</resources> diff --git a/java/res/values/whitelist.xml b/java/res/values/whitelist.xml index ced52e70e..d4ecbfaa4 100644 --- a/java/res/values/whitelist.xml +++ b/java/res/values/whitelist.xml @@ -25,14 +25,5 @@ 3. (String)after --> <string-array name="wordlist_whitelist"> - - <item>255</item> - <item>ill</item> - <item>I\'ll</item> - - <item>255</item> - <item>thisd</item> - <item>this\'d</item> - </string-array> </resources> diff --git a/java/res/xml-ar/kbd_qwerty.xml b/java/res/xml-ar/kbd_qwerty.xml index 93310bf9c..57a6d2caf 100644 --- a/java/res/xml-ar/kbd_qwerty.xml +++ b/java/res/xml-ar/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="ar" > <include - latin:keyboardLayout="@xml/kbd_ar_rows" /> + latin:keyboardLayout="@xml/kbd_rows_arabic" /> </Keyboard> diff --git a/java/res/xml-cs/kbd_qwerty.xml b/java/res/xml-cs/kbd_qwerty.xml index a74f7fa84..9991ea2d2 100644 --- a/java/res/xml-cs/kbd_qwerty.xml +++ b/java/res/xml-cs/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="cs" > <include - latin:keyboardLayout="@xml/kbd_qwertz_rows" /> + latin:keyboardLayout="@xml/kbd_rows_qwertz" /> </Keyboard> diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml index 12ea33c13..37a50fdfd 100644 --- a/java/res/xml-da/kbd_qwerty.xml +++ b/java/res/xml-da/kbd_qwerty.xml @@ -20,16 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="da" > <include - latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" /> + latin:keyboardLayout="@xml/kbd_rows_scandinavian" /> </Keyboard> diff --git a/java/res/xml-de-rZZ/kbd_qwerty.xml b/java/res/xml-de-rZZ/kbd_qwerty.xml new file mode 100644 index 000000000..d5fd8ef7a --- /dev/null +++ b/java/res/xml-de-rZZ/kbd_qwerty.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardLocale="de" +> + <include + latin:keyboardLayout="@xml/kbd_rows_qwerty" /> +</Keyboard> diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml index cc7722a44..89e10b26d 100644 --- a/java/res/xml-de/kbd_qwerty.xml +++ b/java/res/xml-de/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="de" > <include - latin:keyboardLayout="@xml/kbd_qwertz_rows" /> + latin:keyboardLayout="@xml/kbd_rows_qwertz" /> </Keyboard> diff --git a/java/res/xml-es/kbd_qwerty.xml b/java/res/xml-es/kbd_qwerty.xml index 3906bde38..568f4d652 100644 --- a/java/res/xml-es/kbd_qwerty.xml +++ b/java/res/xml-es/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="es,es_US" > <include - latin:keyboardLayout="@xml/kbd_qwerty_rows" /> + latin:keyboardLayout="@xml/kbd_rows_spanish" /> </Keyboard> diff --git a/java/res/xml-fi/kbd_qwerty.xml b/java/res/xml-fi/kbd_qwerty.xml index e35ab2b41..75721e057 100644 --- a/java/res/xml-fi/kbd_qwerty.xml +++ b/java/res/xml-fi/kbd_qwerty.xml @@ -20,16 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="fi" > <include - latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" /> + latin:keyboardLayout="@xml/kbd_rows_scandinavian" /> </Keyboard> diff --git a/java/res/xml-fr-rCA/kbd_qwerty.xml b/java/res/xml-fr-rCA/kbd_qwerty.xml index e649a1e9c..7bdfbadf1 100644 --- a/java/res/xml-fr-rCA/kbd_qwerty.xml +++ b/java/res/xml-fr-rCA/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="fr_CA" > <include - latin:keyboardLayout="@xml/kbd_qwerty_rows" /> + latin:keyboardLayout="@xml/kbd_rows_qwerty" /> </Keyboard> diff --git a/java/res/xml-fr-rCH/kbd_qwerty.xml b/java/res/xml-fr-rCH/kbd_qwerty.xml index f82becb48..41b701d83 100644 --- a/java/res/xml-fr-rCH/kbd_qwerty.xml +++ b/java/res/xml-fr-rCH/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="fr_CH" > <include - latin:keyboardLayout="@xml/kbd_qwertz_rows" /> + latin:keyboardLayout="@xml/kbd_rows_qwertz" /> </Keyboard> diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml index 5d1f10c6b..8c730a24f 100644 --- a/java/res/xml-fr/kbd_qwerty.xml +++ b/java/res/xml-fr/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="fr" > <include - latin:keyboardLayout="@xml/kbd_azerty_rows" /> + latin:keyboardLayout="@xml/kbd_rows_azerty" /> </Keyboard> diff --git a/java/res/xml-hr/kbd_qwerty.xml b/java/res/xml-hr/kbd_qwerty.xml new file mode 100644 index 000000000..ca92e86a7 --- /dev/null +++ b/java/res/xml-hr/kbd_qwerty.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardLocale="hr" +> + <!-- TODO: Dedicated Croatian layout especially for tablet. --> + <include + latin:keyboardLayout="@xml/kbd_rows_qwertz" /> +</Keyboard> diff --git a/java/res/xml-hu/kbd_qwerty.xml b/java/res/xml-hu/kbd_qwerty.xml index 952ad9a0f..3195d5b1f 100644 --- a/java/res/xml-hu/kbd_qwerty.xml +++ b/java/res/xml-hu/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="hu" > <include - latin:keyboardLayout="@xml/kbd_qwertz_rows" /> + latin:keyboardLayout="@xml/kbd_rows_qwertz" /> </Keyboard> diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml index cfe404c9d..dc2c5d35a 100644 --- a/java/res/xml-iw/kbd_qwerty.xml +++ b/java/res/xml-iw/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="iw" > <include - latin:keyboardLayout="@xml/kbd_iw_rows" /> + latin:keyboardLayout="@xml/kbd_rows_hebrew" /> </Keyboard> diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml index e7a743ca9..1f4e86e89 100644 --- a/java/res/xml-nb/kbd_qwerty.xml +++ b/java/res/xml-nb/kbd_qwerty.xml @@ -20,16 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="nb" > <include - latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" /> + latin:keyboardLayout="@xml/kbd_rows_scandinavian" /> </Keyboard> diff --git a/java/res/xml-pl/kbd_qwerty.xml b/java/res/xml-pl/kbd_qwerty.xml index ab5b88728..44312c52c 100644 --- a/java/res/xml-pl/kbd_qwerty.xml +++ b/java/res/xml-pl/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="pl" > <include - latin:keyboardLayout="@xml/kbd_qwerty_rows" /> + latin:keyboardLayout="@xml/kbd_rows_qwerty" /> </Keyboard> diff --git a/java/res/xml-pt/kbd_qwerty.xml b/java/res/xml-pt/kbd_qwerty.xml index 83fb5b4c1..f5dcbc61b 100644 --- a/java/res/xml-pt/kbd_qwerty.xml +++ b/java/res/xml-pt/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="pt" > <include - latin:keyboardLayout="@xml/kbd_qwerty_rows" /> + latin:keyboardLayout="@xml/kbd_rows_qwerty" /> </Keyboard> diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml index 826818c46..aee1b1bfc 100644 --- a/java/res/xml-ru/kbd_qwerty.xml +++ b/java/res/xml-ru/kbd_qwerty.xml @@ -20,16 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="ru" > <include - latin:keyboardLayout="@xml/kbd_ru_rows" /> + latin:keyboardLayout="@xml/kbd_rows_russian" /> </Keyboard> diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml index 6116c7536..58fc187c2 100644 --- a/java/res/xml-sr/kbd_qwerty.xml +++ b/java/res/xml-sr/kbd_qwerty.xml @@ -20,16 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="sr" > <include - latin:keyboardLayout="@xml/kbd_sr_rows" /> + latin:keyboardLayout="@xml/kbd_rows_serbian" /> </Keyboard> diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml index 69f0b3fa0..e29d9abce 100644 --- a/java/res/xml-sv/kbd_qwerty.xml +++ b/java/res/xml-sv/kbd_qwerty.xml @@ -20,16 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="sv" > <include - latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" /> + latin:keyboardLayout="@xml/kbd_rows_scandinavian" /> </Keyboard> diff --git a/java/res/xml-sw600dp-land/kbd_popup_template.xml b/java/res/xml-sw600dp-land/kbd_popup_template.xml new file mode 100644 index 000000000..2c1d1902e --- /dev/null +++ b/java/res/xml-sw600dp-land/kbd_popup_template.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="5%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:rowHeight="@dimen/popup_key_height" + > +</Keyboard> diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml new file mode 100644 index 000000000..e8e80ac03 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_key_styles.xml @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <!-- Base key style for the functional key --> + <key-style + latin:styleName="functionalKeyStyle" + latin:isFunctional="true" /> + <!-- Base key style for the key which may have settings key as popup key --> + <switch> + <case + latin:clobberSettingsKey="true" + > + <key-style + latin:styleName="settingsPopupStyle" + latin:parentStyle="functionalKeyStyle" /> + </case> + <default> + <key-style + latin:styleName="settingsPopupStyle" + latin:keyLabelOption="popupHint" + latin:popupCharacters="\@icon/5|\@integer/key_settings" + latin:parentStyle="functionalKeyStyle" /> + </default> + </switch> + <!-- Functional key styles --> + <key-style + latin:styleName="shiftKeyStyle" + latin:code="@integer/key_shift" + latin:keyIcon="iconShiftKey" + latin:keyIconShifted="iconShiftedShiftKey" + latin:parentStyle="functionalKeyStyle" + latin:isSticky="true" /> + <key-style + latin:styleName="deleteKeyStyle" + latin:code="@integer/key_delete" + latin:keyIcon="iconDeleteKey" + latin:parentStyle="functionalKeyStyle" + latin:isRepeatable="true" /> + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyIcon="iconReturnKey" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="spaceKeyStyle" + latin:code="@integer/key_space" + latin:keyIconPreview="iconPreviewSpaceKey" /> + <key-style + latin:styleName="nonSpecialBackgroundSpaceKeyStyle" + latin:code="@integer/key_space" + latin:keyIconPreview="iconPreviewSpaceKey" /> + <key-style + latin:styleName="smileyKeyStyle" + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyLabelOption="popupHint" + latin:popupCharacters="@string/alternates_for_smiley" + latin:maxPopupKeyboardColumn="5" /> + <key-style + latin:styleName="shortcutKeyStyle" + latin:code="@integer/key_shortcut" + latin:keyIcon="iconShortcutKey" + latin:keyIconPreview="iconPreviewShortcutKey" + latin:parentStyle="settingsPopupStyle" /> + <key-style + latin:styleName="settingsKeyStyle" + latin:code="@integer/key_settings" + latin:keyIcon="iconSettingsKey" + latin:keyIconPreview="iconPreviewSettingsKey" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="tabKeyStyle" + latin:code="@integer/key_tab" + latin:keyIcon="iconTabKey" + latin:keyIconPreview="iconPreviewTabKey" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="toSymbolKeyStyle" + latin:code="@integer/key_switch_alpha_symbol" + latin:keyLabel="@string/label_to_symbol_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="toAlphaKeyStyle" + latin:code="@integer/key_switch_alpha_symbol" + latin:keyLabel="@string/label_to_alpha_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="moreKeyStyle" + latin:code="@integer/key_shift" + latin:keyLabel="@string/label_more_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" + latin:isSticky="true" /> + <key-style + latin:styleName="comKeyStyle" + latin:keyLabel="@string/keylabel_for_popular_domain" + latin:keyLabelOption="fontNormal|popupHint" + latin:keyOutputText="@string/keylabel_for_popular_domain" + latin:popupCharacters="@string/alternates_for_popular_domain" /> + <switch> + <case + latin:passwordInput="true" + > + <key-style + latin:styleName="nonPasswordSymbolKeyStyle" + latin:enabled="false" /> + </case> + <!-- latin:passwordInput="false" --> + <default> + <key-style + latin:styleName="nonPasswordSymbolKeyStyle" + latin:enabled="true" /> + </default> + </switch> +</merge> diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml new file mode 100644 index 000000000..2c7af0ae2 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_number.xml @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="16.75%p" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <include + latin:keyboardLayout="@xml/kbd_numkey_styles" /> + <switch> + <case + latin:passwordInput="true" + > + <!-- This row is intentionally not marked as a top row --> + <Row> + <Key + latin:keyStyle="num1KeyStyle" + latin:keyXPos="24.875%p" /> + <Key + latin:keyStyle="num2KeyStyle" /> + <Key + latin:keyStyle="num3KeyStyle" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-11.00%p" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyStyle="num4KeyStyle" + latin:keyXPos="24.875%p" /> + <Key + latin:keyStyle="num5KeyStyle" /> + <Key + latin:keyStyle="num6KeyStyle" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-11.00%p" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyStyle="num7KeyStyle" + latin:keyXPos="24.875%p" /> + <Key + latin:keyStyle="num8KeyStyle" /> + <Key + latin:keyStyle="num9KeyStyle" /> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row> + <Key + latin:keyStyle="tabKeyStyle" + latin:keyWidth="11.00%p" + latin:keyEdgeFlags="left" /> + <Spacer + latin:keyXPos="24.875%p" /> + <Key + latin:keyStyle="num0KeyStyle" /> + <Spacer + latin:keyXPos="-11.00%p" + latin:keyWidth="0%p" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_f2" /> + </Row> + </case> + <!-- latin:passwordInput="false" --> + <default> + <!-- This row is intentionally not marked as a top row --> + <Row> + <Key + latin:keyLabel="-" + latin:keyStyle="numLabelStyle" + latin:keyXPos="11.00%p" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="+" + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="." + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="1" + latin:keyXPos="38.75%p" /> + <Key + latin:keyLabel="2" /> + <Key + latin:keyLabel="3" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-11.00%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyLabel="*" + latin:keyStyle="numLabelStyle" + latin:keyXPos="11.00%p" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="/" + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="," + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="4" + latin:keyXPos="38.75%p" /> + <Key + latin:keyLabel="5" /> + <Key + latin:keyLabel="6" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-11.00%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <!-- There is an empty area below the "More" key and left of the "(" key. To + ignore the touch event on the area, "(" is intentionally not marked as a left + edge key. --> + <Key + latin:keyLabel="(" + latin:keyStyle="numLabelStyle" + latin:keyXPos="11.00%p" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel=")" + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="=" + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="7" + latin:keyXPos="38.75%p" /> + <Key + latin:keyLabel="8" /> + <Key + latin:keyLabel="9" /> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row> + <Key + latin:keyStyle="tabKeyStyle" + latin:keyWidth="11.00%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" + latin:keyWidth="27.75%p" /> + <Key + latin:keyStyle="numStarKeyStyle" + latin:keyXPos="38.75%p" /> + <Key + latin:keyLabel="0" /> + <Key + latin:keyLabel="#" + latin:keyStyle="numLabelStyle" /> + <Spacer + latin:keyXPos="-11.00%p" + latin:keyWidth="0%p" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_f2" /> + </Row> + </default> + </switch> +</Keyboard> diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml new file mode 100644 index 000000000..4dee882e9 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_phone.xml @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="16.75%p" +> + <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:keyLabel="-" + latin:keyStyle="numLabelStyle" + latin:keyXPos="15.625%p" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="+" + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyStyle="num1KeyStyle" + latin:keyXPos="38.867%p" /> + <Key + latin:keyStyle="num2KeyStyle" /> + <Key + latin:keyStyle="num3KeyStyle" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-11.00%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyLabel="," + latin:keyStyle="numLabelStyle" + latin:keyXPos="15.625%p" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="." + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyStyle="num4KeyStyle" + latin:keyXPos="38.867%p" /> + <Key + latin:keyStyle="num5KeyStyle" /> + <Key + latin:keyStyle="num6KeyStyle" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-11.00%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyStyle="moreKeyStyle" + latin:keyWidth="11.0%p" + latin:keyEdgeFlags="left" /> + <!-- There is an empty area below the "More" key and left of the "(" key. To ignore + the touch event on the area, "(" is intentionally not marked as a left edge key. --> + <Key + latin:keyLabel="(" + latin:keyStyle="numLabelStyle" + latin:keyXPos="15.625%p" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel=")" + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyStyle="num7KeyStyle" + latin:keyXPos="38.867%p" /> + <Key + latin:keyStyle="num8KeyStyle" /> + <Key + latin:keyStyle="num9KeyStyle" /> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row> + <Key + latin:keyStyle="tabKeyStyle" + latin:keyWidth="11.00%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" + latin:keyXPos="15.625%p" + latin:keyWidth="18.67%p" /> + <Key + latin:keyStyle="numStarKeyStyle" + latin:keyXPos="38.867%p" /> + <Key + latin:keyStyle="num0KeyStyle" /> + <Key + latin:keyLabel="#" + latin:keyStyle="numLabelStyle" /> + <Spacer + latin:keyXPos="-11.00%p" + latin:keyWidth="0%p" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_f2" /> + </Row> +</Keyboard> diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml new file mode 100644 index 000000000..87de880d9 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="16.75%p" +> + <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:keyLabel="-" + latin:keyStyle="numLabelStyle" + latin:keyXPos="11.00%p" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="+" + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:code="44" + latin:keyLabel="@string/label_pause_key" + latin:keyWidth="9.25%p" /> + <Key + latin:keyStyle="num1KeyStyle" + latin:keyXPos="38.867%p" /> + <Key + latin:keyStyle="num2KeyStyle" /> + <Key + latin:keyStyle="num3KeyStyle" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-11.00%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyLabel="," + latin:keyStyle="numLabelStyle" + latin:keyXPos="11.00%p" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="." + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:code="59" + latin:keyLabel="@string/label_wait_key" + latin:keyWidth="9.25%p" /> + <Key + latin:keyStyle="num4KeyStyle" + latin:keyXPos="38.867%p" /> + <Key + latin:keyStyle="num5KeyStyle" /> + <Key + latin:keyStyle="num6KeyStyle" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-11.00%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyStyle="moreKeyStyle" + latin:keyWidth="11.00%p" + latin:keyEdgeFlags="left" /> + <!-- There is an empty area below the "More" key and left of the "(" key. To ignore + the touch event on the area, "(" is intentionally not marked as a left edge key. --> + <Key + latin:keyLabel="(" + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel=")" + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyLabel="N" + latin:keyStyle="numLabelStyle" + latin:keyWidth="9.25%p" /> + <Key + latin:keyStyle="num7KeyStyle" + latin:keyXPos="38.867%p" /> + <Key + latin:keyStyle="num8KeyStyle" /> + <Key + latin:keyStyle="num9KeyStyle" /> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row> + <Key + latin:keyStyle="tabKeyStyle" + latin:keyWidth="11.00%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" + latin:keyWidth="27.75%p" /> + <Key + latin:keyStyle="numStarKeyStyle" + latin:keyXPos="38.867%p" /> + <Key + latin:keyStyle="num0KeyStyle" /> + <Key + latin:keyLabel="#" + latin:keyStyle="numLabelStyle" /> + <Spacer + latin:keyXPos="-11.00%p" + latin:keyWidth="0%p" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_f2" /> + </Row> +</Keyboard> diff --git a/java/res/xml-sw600dp/kbd_popup_template.xml b/java/res/xml-sw600dp/kbd_popup_template.xml new file mode 100644 index 000000000..fff2659be --- /dev/null +++ b/java/res/xml-sw600dp/kbd_popup_template.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="8%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="0px" + latin:rowHeight="@dimen/popup_key_height" + > +</Keyboard> diff --git a/java/res/xml-sw600dp/kbd_qwerty_f2.xml b/java/res/xml-sw600dp/kbd_qwerty_f2.xml new file mode 100644 index 000000000..7638ee4b4 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_qwerty_f2.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <switch> + <case + latin:f2KeyMode="settings" + > + <Key + latin:keyStyle="settingsKeyStyle" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </case> + <case + latin:f2KeyMode="shortcutIme" + > + <switch> + <case + latin:voiceKeyEnabled="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </case> + <!-- voiceKeyEnabled="false" --> + <default> + <Spacer /> + </default> + </switch> + </case> + <case + latin:f2KeyMode="shortcutImeOrSettings" + > + <switch> + <case + latin:voiceKeyEnabled="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </case> + <!-- voiceKeyEnabled="false" --> + <default> + <Key + latin:keyStyle="settingsKeyStyle" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </default> + </switch> + </case> + <!-- f2KeyMode="none" --> + <default> + <Spacer /> + </default> + </switch> +</merge> diff --git a/java/res/xml-sw600dp/kbd_qwerty_row1.xml b/java/res/xml-sw600dp/kbd_qwerty_row1.xml new file mode 100644 index 000000000..b781d681e --- /dev/null +++ b/java/res/xml-sw600dp/kbd_qwerty_row1.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Row + latin:keyWidth="9.0%p" + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel="q" + latin:popupCharacters="@string/alternates_for_q" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="w" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-10.0%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> +</merge> diff --git a/java/res/xml-sw600dp/kbd_qwerty_row2.xml b/java/res/xml-sw600dp/kbd_qwerty_row2.xml new file mode 100644 index 000000000..05b005af1 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_qwerty_row2.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Row + latin:keyWidth="9.0%p" + > + <Key + latin:keyLabel="a" + latin:popupCharacters="@string/alternates_for_a" + latin:keyXPos="4.5%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="s" + latin:popupCharacters="@string/alternates_for_s" /> + <Key + latin:keyLabel="d" + latin:popupCharacters="@string/alternates_for_d" /> + <Key + latin:keyLabel="f" /> + <Key + latin:keyLabel="g" + latin:popupCharacters="@string/alternates_for_g" /> + <Key + latin:keyLabel="h" /> + <Key + latin:keyLabel="j" /> + <Key + latin:keyLabel="k" + latin:popupCharacters="@string/alternates_for_k" /> + <Key + latin:keyLabel="l" + latin:popupCharacters="@string/alternates_for_l" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-14.6%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> +</merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row3.xml b/java/res/xml-sw600dp/kbd_qwerty_row3.xml index b7e9bcff9..0dbc5cf66 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row3.xml +++ b/java/res/xml-sw600dp/kbd_qwerty_row3.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -22,11 +22,11 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row - latin:keyWidth="8.042%p" + latin:keyWidth="8.9%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="15.192%p" + latin:keyWidth="10.0%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="z" @@ -58,21 +58,17 @@ <default> <Key latin:keyLabel="," - latin:manualTemporaryUpperCaseCode="33" - latin:keyHintIcon="@drawable/key_hint_exclamation_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="!" latin:popupCharacters="!" /> <Key latin:keyLabel="." - latin:manualTemporaryUpperCaseCode="63" - latin:keyHintIcon="@drawable/key_hint_question_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\?" latin:popupCharacters="\?" /> </default> </switch> - <Key - latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.530%p" - latin:keyEdgeFlags="right" /> + <include + latin:keyboardLayout="@xml/kbd_row3_right" /> </Row> </merge> diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml new file mode 100644 index 000000000..8fd65fe0e --- /dev/null +++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml @@ -0,0 +1,163 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <!-- This row is intentionally not marked as a bottom row --> + <Row + latin:keyWidth="8.9%p" + > + <Key + latin:keyStyle="toSymbolKeyStyle" + latin:keyLabelOption="alignLeft" + latin:keyWidth="13.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="tabKeyStyle" /> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyStyle="comKeyStyle" /> + </case> + <case + latin:mode="url" + > + <Key + latin:keyStyle="comKeyStyle" /> + </case> + <default> + <Key + latin:keyLabel="/" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\@" + latin:popupCharacters="\@" /> + </default> + </switch> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyXPos="30.750%p" + latin:keyWidth="39.750%p" /> + <switch> + <case + latin:languageCode="ru" + > + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="-" + latin:keyWidth="9.750%p" /> + </case> + <case + latin:mode="url" + > + <Key + latin:keyLabel="/" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter=":" + latin:popupCharacters=":" + latin:keyWidth="9.750%p" /> + </case> + <default> + <Key + latin:keyLabel="\?" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="_" + latin:popupCharacters="_" + latin:keyWidth="9.750%p" /> + </default> + </switch> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="_" + latin:keyWidth="9.750%p" /> + </case> + <default> + <Key + latin:keyLabel="!" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\'" + latin:popupCharacters="\'" + latin:keyWidth="9.750%p" /> + </default> + </switch> + </case> + <!-- not languageCode="ru" --> + <default> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="-" + latin:keyWidth="9.750%p" /> + </case> + <case + latin:mode="url" + > + <Key + latin:keyLabel="/" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter=":" + latin:popupCharacters=":" + latin:keyWidth="9.750%p" /> + </case> + <default> + <Key + latin:keyLabel="\'" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter=""" + latin:popupCharacters=""" + latin:keyWidth="9.750%p" /> + </default> + </switch> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="_" + latin:keyWidth="9.750%p" /> + </case> + <default> + <Key + latin:keyLabel="-" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="_" + latin:popupCharacters="_" + latin:keyWidth="9.750%p" /> + </default> + </switch> + </default> + </switch> + <Spacer + latin:keyXPos="-10.00%p" + latin:keyWidth="0%p" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_f2" /> + </Row> +</merge> diff --git a/java/res/xml-sw600dp/kbd_row3_right.xml b/java/res/xml-sw600dp/kbd_row3_right.xml new file mode 100644 index 000000000..a9c5eb371 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_row3_right.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="\@" + latin:keyXPos="-8.9%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </case> + <case + latin:mode="url" + > + <Key + latin:keyLabel="-" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="_" + latin:popupCharacters="_" + latin:keyXPos="-8.9%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </case> + <case + latin:imeAction="actionSearch" + > + <Key + latin:keyLabel=":" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="+" + latin:popupCharacters="+" + latin:keyXPos="-8.9%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </case> + <default> + <Key + latin:keyStyle="smileyKeyStyle" + latin:keyXPos="-8.9%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </default> + </switch> +</merge> diff --git a/java/res/xml-sw600dp/kbd_rows_arabic.xml b/java/res/xml-sw600dp/kbd_rows_arabic.xml new file mode 100644 index 000000000..bc37d5a9f --- /dev/null +++ b/java/res/xml-sw600dp/kbd_rows_arabic.xml @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<!-- This file for Arabic layout is an alpha version. It allows to enter --> +<!-- some right-to-left text, but it has gone through no study whatsoever, --> +<!-- and needs to be run through UX. --> +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <Row + latin:keyWidth="8.0%p" + > + <Key + latin:keyLabel="ض" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="ص" /> + <Key + latin:keyLabel="ث" /> + <Key + latin:keyLabel="ق" /> + <Key + latin:keyLabel="ف" + latin:popupCharacters="ف,ڤ" /> + <Key + latin:keyLabel="غ" /> + <Key + latin:keyLabel="ع" /> + <Key + latin:keyLabel="ه" + latin:popupCharacters="ه,هـ" /> + <Key + latin:keyLabel="خ" /> + <Key + latin:keyLabel="ح" /> + <Key + latin:keyLabel="ج" + latin:popupCharacters="ج,چ" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-10.0%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="8.0%p" + > + <Key + latin:keyLabel="ش" + latin:keyXPos="3.0%p" /> + <Key + latin:keyLabel="س" /> + <Key + latin:keyLabel="ي" /> + <Key + latin:keyLabel="ب" + latin:popupCharacters="ب,پ" /> + <Key + latin:keyLabel="ل" + latin:popupCharacters="ل,لا" /> + <Key + latin:keyLabel="ا" + latin:popupCharacters="ا,أ,إ,آ" /> + <Key + latin:keyLabel="ت" /> + <Key + latin:keyLabel="ن" /> + <Key + latin:keyLabel="م" /> + <Key + latin:keyLabel="ك" + latin:popupCharacters="ك,گ" /> + <Key + latin:keyLabel="ط" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-14.6%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="7.65%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="8.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="ئ" /> + <Key + latin:keyLabel="ء" /> + <Key + latin:keyLabel="ؤ" /> + <Key + latin:keyLabel="ر" /> + <Key + latin:keyLabel="ذ" /> + <Key + latin:keyLabel="ى" /> + <Key + latin:keyLabel="ة" /> + <Key + latin:keyLabel="و" /> + <Key + latin:keyLabel="ز" + latin:popupCharacters="ز,ژ" /> + <Key + latin:keyLabel="ظ" /> + <Key + latin:keyLabel="د" /> + <include + latin:keyboardLayout="@xml/kbd_row3_right" /> + </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml-sw600dp/kbd_rows_azerty.xml b/java/res/xml-sw600dp/kbd_rows_azerty.xml new file mode 100644 index 000000000..b53bbbbf9 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_rows_azerty.xml @@ -0,0 +1,156 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <Row + latin:keyWidth="8.5%p" + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel="a" + latin:popupCharacters="@string/alternates_for_a" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="z" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="e" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-10.0%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="8.5%p" + > + <Key + latin:keyLabel="q" + latin:popupCharacters="@string/alternates_for_q" + latin:keyXPos="5.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="s" + latin:popupCharacters="@string/alternates_for_s" /> + <Key + latin:keyLabel="d" + latin:popupCharacters="@string/alternates_for_d" /> + <Key + latin:keyLabel="f" /> + <Key + latin:keyLabel="g" + latin:popupCharacters="@string/alternates_for_g" /> + <Key + latin:keyLabel="h" /> + <Key + latin:keyLabel="j" /> + <Key + latin:keyLabel="k" + latin:popupCharacters="@string/alternates_for_k" /> + <Key + latin:keyLabel="l" + latin:popupCharacters="@string/alternates_for_l" /> + <Key + latin:keyLabel="m" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-14.6%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="8.5%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="10.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="w" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="x" /> + <Key + latin:keyLabel="c" + latin:popupCharacters="@string/alternates_for_c" /> + <Key + latin:keyLabel="v" + latin:popupCharacters="@string/alternates_for_v" /> + <Key + latin:keyLabel="b" /> + <Key + latin:keyLabel="n" + latin:popupCharacters="@string/alternates_for_n" /> + <Key + latin:keyLabel="\'" /> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="," /> + <Key + latin:keyLabel="." /> + </case> + <default> + <Key + latin:keyLabel="," + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="!" + latin:popupCharacters="!" /> + <Key + latin:keyLabel="." + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\?" + latin:popupCharacters="\?" /> + </default> + </switch> + <include + latin:keyboardLayout="@xml/kbd_row3_right" /> + </Row> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml-sw600dp/kbd_rows_hebrew.xml b/java/res/xml-sw600dp/kbd_rows_hebrew.xml new file mode 100644 index 000000000..a1475376b --- /dev/null +++ b/java/res/xml-sw600dp/kbd_rows_hebrew.xml @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <Row + latin:keyWidth="8.600%p" + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel="," /> + <Key + latin:keyLabel="." /> + <Key + latin:keyLabel="ק" /> + <Key + latin:keyLabel="ר" /> + <Key + latin:keyLabel="א" /> + <Key + latin:keyLabel="ט" /> + <Key + latin:keyLabel="ו" /> + <Key + latin:keyLabel="ן" /> + <Key + latin:keyLabel="ם" /> + <Key + latin:keyLabel="פ" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-12.000%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="8.600%p" + > + <Key + latin:keyLabel="ש" + latin:keyXPos="4.000%p" /> + <Key + latin:keyLabel="ד" /> + <Key + latin:keyLabel="ג" + latin:popupCharacters="ג,ג׳" /> + <Key + latin:keyLabel="כ" /> + <Key + latin:keyLabel="ע" /> + <Key + latin:keyLabel="י" + latin:popupCharacters="י,ײַ" /> + <Key + latin:keyLabel="ח" + latin:popupCharacters="ח,ח׳" /> + <Key + latin:keyLabel="ל" /> + <Key + latin:keyLabel="ך" /> + <Key + latin:keyLabel="ף" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-10.400%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="8.600%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="10.000%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="ז" + latin:popupCharacters="ז,ז׳" /> + <Key + latin:keyLabel="ס" /> + <Key + latin:keyLabel="ב" /> + <Key + latin:keyLabel="ה" /> + <Key + latin:keyLabel="נ" /> + <Key + latin:keyLabel="מ" /> + <Key + latin:keyLabel="צ" + latin:popupCharacters="צ,צ׳" /> + <Key + latin:keyLabel="ת" + latin:popupCharacters="ת,ת׳" /> + <Key + latin:keyLabel="ץ" + latin:popupCharacters="ץ,ץ׳" /> + <include + latin:keyboardLayout="@xml/kbd_row3_right" /> + </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml-sw600dp/kbd_rows_qwerty.xml b/java/res/xml-sw600dp/kbd_rows_qwerty.xml new file mode 100644 index 000000000..a2d26b3de --- /dev/null +++ b/java/res/xml-sw600dp/kbd_rows_qwerty.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row1" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row2" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row3" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml-sw600dp/kbd_rows_qwertz.xml b/java/res/xml-sw600dp/kbd_rows_qwertz.xml new file mode 100644 index 000000000..7ea9b0f37 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_rows_qwertz.xml @@ -0,0 +1,121 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <Row + latin:keyWidth="9.0%p" + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel="q" + latin:popupCharacters="@string/alternates_for_q" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="w" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="z" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="u" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-10.0%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row2" /> + <Row + latin:keyWidth="8.9%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="10.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="y" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="x" /> + <Key + latin:keyLabel="c" + latin:popupCharacters="@string/alternates_for_c" /> + <Key + latin:keyLabel="v" + latin:popupCharacters="@string/alternates_for_v" /> + <Key + latin:keyLabel="b" /> + <Key + latin:keyLabel="n" + latin:popupCharacters="@string/alternates_for_n" /> + <Key + latin:keyLabel="m" /> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="," /> + <Key + latin:keyLabel="." /> + </case> + <default> + <Key + latin:keyLabel="," + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="!" + latin:popupCharacters="!" /> + <Key + latin:keyLabel="." + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\?" + latin:popupCharacters="\?" /> + </default> + </switch> + <include + latin:keyboardLayout="@xml/kbd_row3_right" /> + </Row> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml-sw600dp/kbd_rows_russian.xml b/java/res/xml-sw600dp/kbd_rows_russian.xml new file mode 100644 index 000000000..43fa665e6 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_rows_russian.xml @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <Row + latin:keyWidth="8.0%p" + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel="й" + latin:keyXPos="2.15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="ц" /> + <Key + latin:keyLabel="у" /> + <Key + latin:keyLabel="к" /> + <Key + latin:keyLabel="е" + latin:popupCharacters="@string/alternates_for_cyrillic_e" /> + <Key + latin:keyLabel="н" /> + <Key + latin:keyLabel="г" /> + <Key + latin:keyLabel="ш" /> + <Key + latin:keyLabel="щ" /> + <Key + latin:keyLabel="з" /> + <Key + latin:keyLabel="х" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-10.0%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="8.0%p" + > + <Key + latin:keyLabel="ф" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="ы" /> + <Key + latin:keyLabel="в" /> + <Key + latin:keyLabel="а" /> + <Key + latin:keyLabel="п" /> + <Key + latin:keyLabel="р" /> + <Key + latin:keyLabel="о" /> + <Key + latin:keyLabel="л" /> + <Key + latin:keyLabel="д" /> + <Key + latin:keyLabel="ж" /> + <Key + latin:keyLabel="э" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-14.6%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="8.0%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="10.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="я" /> + <Key + latin:keyLabel="ч" /> + <Key + latin:keyLabel="с" /> + <Key + latin:keyLabel="м" /> + <Key + latin:keyLabel="и" /> + <Key + latin:keyLabel="т" /> + <Key + latin:keyLabel="ь" + latin:popupCharacters="@string/alternates_for_cyrillic_soft_sign" /> + <Key + latin:keyLabel="б" /> + <Key + latin:keyLabel="ю" /> + <Key + latin:keyLabel="." + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="," + latin:popupCharacters="," /> + <include + latin:keyboardLayout="@xml/kbd_row3_right" /> + </Row> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml-sw600dp/kbd_rows_scandinavian.xml b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml new file mode 100644 index 000000000..3666ead51 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml @@ -0,0 +1,166 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <Row + latin:keyWidth="7.9%p" + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel="q" + latin:popupCharacters="@string/alternates_for_q" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="w" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyLabel="å" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-10.0%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="7.9%p" + > + <Key + latin:keyLabel="a" + latin:keyXPos="3.5%p" + latin:popupCharacters="@string/alternates_for_a" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="s" + latin:popupCharacters="@string/alternates_for_s" /> + <Key + latin:keyLabel="d" + latin:popupCharacters="@string/alternates_for_d" /> + <Key + latin:keyLabel="f" /> + <Key + latin:keyLabel="g" + latin:popupCharacters="@string/alternates_for_g" /> + <Key + latin:keyLabel="h" /> + <Key + latin:keyLabel="j" /> + <Key + latin:keyLabel="k" + latin:popupCharacters="@string/alternates_for_k" /> + <Key + latin:keyLabel="l" + latin:popupCharacters="@string/alternates_for_l" /> + <Key + latin:keyLabel="@string/keylabel_for_scandinavia_row2_10" + latin:popupCharacters="@string/alternates_for_scandinavia_row2_10" /> + <Key + latin:keyLabel="@string/keylabel_for_scandinavia_row2_11" + latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-14.6%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="7.9%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="10.0%p" + latin:keyEdgeFlags="left" /> + <Spacer + latin:keyWidth="4.35%p" /> + <Key + latin:keyLabel="z" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="x" /> + <Key + latin:keyLabel="c" + latin:popupCharacters="@string/alternates_for_c" /> + <Key + latin:keyLabel="v" + latin:popupCharacters="@string/alternates_for_v" /> + <Key + latin:keyLabel="b" /> + <Key + latin:keyLabel="n" + latin:popupCharacters="@string/alternates_for_n" /> + <Key + latin:keyLabel="m" /> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="," /> + <Key + latin:keyLabel="." /> + </case> + <default> + <Key + latin:keyLabel="," + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="!" + latin:popupCharacters="!" /> + <Key + latin:keyLabel="." + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\?" + latin:popupCharacters="\?" /> + </default> + </switch> + <Spacer + latin:keyWidth="4.35%p" /> + <include + latin:keyboardLayout="@xml/kbd_row3_right" /> + </Row> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml-sw600dp/kbd_rows_serbian.xml b/java/res/xml-sw600dp/kbd_rows_serbian.xml new file mode 100644 index 000000000..80debdadb --- /dev/null +++ b/java/res/xml-sw600dp/kbd_rows_serbian.xml @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <Row + latin:keyWidth="8.0%p" + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel="љ" + latin:keyXPos="2.15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="њ" /> + <Key + latin:keyLabel="е" /> + <Key + latin:keyLabel="р" /> + <Key + latin:keyLabel="т" /> + <Key + latin:keyLabel="з" /> + <Key + latin:keyLabel="у" /> + <Key + latin:keyLabel="и" /> + <Key + latin:keyLabel="о" /> + <Key + latin:keyLabel="п" /> + <Key + latin:keyLabel="ш" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-10.0%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="7.9%p" + > + <Key + latin:keyLabel="а" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="с" /> + <Key + latin:keyLabel="д" /> + <Key + latin:keyLabel="ф" /> + <Key + latin:keyLabel="г" /> + <Key + latin:keyLabel="х" /> + <Key + latin:keyLabel="ј" /> + <Key + latin:keyLabel="к" /> + <Key + latin:keyLabel="л" /> + <Key + latin:keyLabel="ч" /> + <Key + latin:keyLabel="ћ" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-14.6%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="7.5%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="8.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="ѕ" /> + <Key + latin:keyLabel="џ" /> + <Key + latin:keyLabel="ц" /> + <Key + latin:keyLabel="в" /> + <Key + latin:keyLabel="б" /> + <Key + latin:keyLabel="н" /> + <Key + latin:keyLabel="м" /> + <Key + latin:keyLabel="ђ" /> + <Key + latin:keyLabel="ж" /> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="," /> + <Key + latin:keyLabel="." /> + </case> + <default> + <Key + latin:keyLabel="," + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="!" + latin:popupCharacters="!" /> + <Key + latin:keyLabel="." + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\?" + latin:popupCharacters="\?" /> + </default> + </switch> + <include + latin:keyboardLayout="@xml/kbd_row3_right" /> + </Row> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml-sw600dp/kbd_rows_spanish.xml b/java/res/xml-sw600dp/kbd_rows_spanish.xml new file mode 100644 index 000000000..7ef44bb53 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_rows_spanish.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row1" /> + <Row + latin:keyWidth="8.5%p" + > + <Key + latin:keyLabel="a" + latin:popupCharacters="@string/alternates_for_a" + latin:keyXPos="5.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="s" + latin:popupCharacters="@string/alternates_for_s" /> + <Key + latin:keyLabel="d" + latin:popupCharacters="@string/alternates_for_d" /> + <Key + latin:keyLabel="f" /> + <Key + latin:keyLabel="g" + latin:popupCharacters="@string/alternates_for_g" /> + <Key + latin:keyLabel="h" /> + <Key + latin:keyLabel="j" /> + <Key + latin:keyLabel="k" + latin:popupCharacters="@string/alternates_for_k" /> + <Key + latin:keyLabel="l" + latin:popupCharacters="@string/alternates_for_l" /> + <Key + latin:keyLabel="ñ" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-14.6%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row3" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml index 41e8522dc..77849f6fd 100644 --- a/java/res/xml-xlarge/kbd_symbols.xml +++ b/java/res/xml-sw600dp/kbd_symbols.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -20,14 +20,6 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> @@ -35,14 +27,9 @@ latin:keyboardLayout="@xml/kbd_currency_key_styles" /> <!-- This row is intentionally not marked as a top row --> <Row - latin:keyWidth="8.272%p" + latin:keyWidth="9.0%p" > <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" - latin:keyEdgeFlags="left" /> - <Key latin:keyLabel="1" latin:popupCharacters="¹,½,⅓,¼,⅛" /> <Key @@ -71,19 +58,16 @@ latin:popupCharacters="ⁿ,∅" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyXPos="-10.0%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.157%p" + latin:keyWidth="9.0%p" > <Key - latin:keyStyle="toAlphaKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="11.167%p" - latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="#" /> + latin:keyLabel="#" + latin:keyXPos="4.5%p" /> <Key latin:keyStyle="currencyKeyStyle" /> <Key @@ -108,15 +92,16 @@ latin:popupCharacters="],},>" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="15.750%p" + latin:keyXPos="-14.6%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="8.9%p" > <Key latin:keyStyle="moreKeyStyle" - latin:keyWidth="15.192%p" + latin:keyWidth="10.0%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="<" @@ -155,7 +140,8 @@ <Key latin:keyLabel="\'" latin:popupCharacters="‘,’,‚,‛" /> - <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. --> + <!-- Note: DroidSans doesn't have double-high-reversed-quotation + '\u201f' glyph. --> <!-- latin:popupCharacters="“,”,„,‟,«,»" --> <Key latin:keyLabel=""" @@ -179,59 +165,54 @@ </default> </switch> <Key - latin:keyStyle="moreKeyStyle" - latin:keyWidth="12.530%p" - latin:keyEdgeFlags="right" /> + latin:keyLabel="/" + latin:keyWidth="fillRight" /> </Row> <!-- This row is intentionally not marked as a bottom row --> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="8.9%p" > - <Spacer - latin:horizontalGap="8.362%p" /> - <switch> - <case latin:hasSettingsKey="true"> - <Key - latin:keyStyle="settingsKeyStyle" /> - </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> - </switch> <Key - latin:keyLabel="/" /> + latin:keyStyle="toAlphaKeyStyle" + latin:keyLabelOption="alignLeft" + latin:keyWidth="13.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="tabKeyStyle" /> <Key latin:keyLabel="\@" /> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="37.454%p" /> + latin:keyXPos="30.750%p" + latin:keyWidth="39.750%p" /> <switch> <case latin:languageCode="ru" > <Key - latin:keyLabel="_" /> + latin:keyLabel="_" + latin:keyWidth="9.750%p" /> <Key - latin:keyLabel="-" /> + latin:keyLabel="-" + latin:keyWidth="9.750%p" /> </case> <default> - <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. --> + <!-- Note: DroidSans doesn't have double-high-reversed-quotation + '\u201f' glyph. --> <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" --> <Key latin:keyLabel=""" - latin:popupCharacters="“,”,«,»,‘,’,‚,‛" /> + latin:popupCharacters="“,”,«,»,‘,’,‚,‛" + latin:keyWidth="9.750%p" /> <Key - latin:keyLabel="_" /> + latin:keyLabel="_" + latin:keyWidth="9.750%p" /> </default> </switch> - <switch> - <case - latin:voiceKeyEnabled="true" - > - <Key - latin:keyStyle="micKeyStyle" /> - </case> - </switch> + <Spacer + latin:keyXPos="-10.00%p" + latin:keyWidth="0%p" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_f2" /> </Row> </Keyboard> diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_symbols_shift.xml new file mode 100644 index 000000000..b25292f27 --- /dev/null +++ b/java/res/xml-sw600dp/kbd_symbols_shift.xml @@ -0,0 +1,156 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <!-- This row is intentionally not marked as a top row --> + <Row + latin:keyWidth="9.0%p" + > + <Key + latin:keyLabel="~" /> + <Key + latin:keyLabel="`" /> + <Key + latin:keyLabel="|" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="•" + latin:popupCharacters="♪,♥,♠,♦,♣" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="√" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="π" + latin:popupCharacters="Π" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="÷" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="×" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="§" + latin:popupCharacters="¶" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="Δ" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-10.0%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="9.0%p" + > + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="£" + latin:keyXPos="4.5%p" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="¢" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="€" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="¥" /> + <Key + latin:keyLabel="^" + latin:popupCharacters="↑,↓,←,→" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="°" + latin:popupCharacters="′,″" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="±" + latin:popupCharacters="∞" /> + <Key + latin:keyLabel="{" /> + <Key + latin:keyLabel="}" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-14.6%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="8.9%p" + > + <Key + latin:keyStyle="moreKeyStyle" + latin:keyWidth="10.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="\\" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="©" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="®" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="™" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="℅" /> + <Key + latin:keyLabel="[" /> + <Key + latin:keyLabel="]" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="¡" /> + <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="¿" /> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row + latin:keyWidth="8.9%p" + > + <Key + latin:keyStyle="toAlphaKeyStyle" + latin:keyLabelOption="alignLeft" + latin:keyWidth="13.0%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="tabKeyStyle" /> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyXPos="30.750%p" + latin:keyWidth="39.750%p" /> + <Spacer + latin:keyXPos="-10.00%p" + latin:keyWidth="0%p" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_f2" /> + </Row> +</Keyboard> diff --git a/java/res/xml-xlarge-land/kbd_popup_template.xml b/java/res/xml-sw768dp-land/kbd_popup_template.xml index 3caae1a60..3caae1a60 100644 --- a/java/res/xml-xlarge-land/kbd_popup_template.xml +++ b/java/res/xml-sw768dp-land/kbd_popup_template.xml diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml new file mode 100644 index 000000000..5d8c081a6 --- /dev/null +++ b/java/res/xml-sw768dp/kbd_key_styles.xml @@ -0,0 +1,119 @@ +<?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 --> + <key-style + latin:styleName="functionalKeyStyle" + latin:isFunctional="true" /> + <key-style + latin:styleName="shiftKeyStyle" + latin:code="@integer/key_shift" + latin:keyIcon="iconShiftKey" + latin:keyIconShifted="iconShiftedShiftKey" + latin:parentStyle="functionalKeyStyle" + latin:isSticky="true" /> + <key-style + latin:styleName="deleteKeyStyle" + latin:code="@integer/key_delete" + latin:keyIcon="iconDeleteKey" + latin:parentStyle="functionalKeyStyle" + latin:isRepeatable="true" /> + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyIcon="iconReturnKey" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="spaceKeyStyle" + latin:code="@integer/key_space" + latin:keyIconPreview="iconPreviewSpaceKey" /> + <key-style + latin:styleName="nonSpecialBackgroundSpaceKeyStyle" + latin:code="@integer/key_space" + latin:keyIconPreview="iconPreviewSpaceKey" /> + <key-style + latin:styleName="smileyKeyStyle" + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyLabelOption="popupHint" + latin:popupCharacters="@string/alternates_for_smiley" + latin:maxPopupKeyboardColumn="5" /> + <key-style + latin:styleName="settingsKeyStyle" + latin:code="@integer/key_settings" + latin:keyIcon="iconSettingsKey" + latin:keyIconPreview="iconPreviewSettingsKey" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="shortcutKeyStyle" + latin:code="@integer/key_shortcut" + latin:keyIcon="iconShortcutKey" + latin:keyIconPreview="iconPreviewShortcutKey" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="tabKeyStyle" + latin:code="@integer/key_tab" + latin:keyLabel="@string/label_tab_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="toSymbolKeyStyle" + latin:code="@integer/key_switch_alpha_symbol" + latin:keyLabel="@string/label_to_symbol_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="toAlphaKeyStyle" + latin:code="@integer/key_switch_alpha_symbol" + latin:keyLabel="@string/label_to_alpha_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="moreKeyStyle" + latin:code="@integer/key_shift" + latin:keyLabel="@string/label_more_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" + latin:isSticky="true" /> + <key-style + latin:styleName="comKeyStyle" + latin:keyLabel="@string/keylabel_for_popular_domain" + latin:keyLabelOption="fontNormal|popupHint" + latin:keyOutputText="@string/keylabel_for_popular_domain" + latin:popupCharacters="@string/alternates_for_popular_domain" /> + <switch> + <case + latin:passwordInput="true" + > + <key-style + latin:styleName="nonPasswordSymbolKeyStyle" + latin:enabled="false" /> + </case> + <!-- latin:passwordInput="false" --> + <default> + <key-style + latin:styleName="nonPasswordSymbolKeyStyle" + latin:enabled="true" /> + </default> + </switch> +</merge> diff --git a/java/res/xml-xlarge/kbd_number.xml b/java/res/xml-sw768dp/kbd_number.xml index 7cb77ea00..1ae6984a5 100644 --- a/java/res/xml-xlarge/kbd_number.xml +++ b/java/res/xml-sw768dp/kbd_number.xml @@ -20,15 +20,7 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="11.949%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" + latin:keyWidth="13.250%p" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> @@ -40,42 +32,42 @@ > <!-- This row is intentionally not marked as a top row --> <Row> - <Spacer - latin:horizontalGap="32.076%p" /> <Key - latin:keyStyle="num1KeyStyle" /> + latin:keyStyle="tabKeyStyle" + latin:keyLabelOption="alignLeft" + latin:keyWidth="11.172%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="num1KeyStyle" + latin:keyXPos="32.076%p" /> <Key latin:keyStyle="num2KeyStyle" /> <Key latin:keyStyle="num3KeyStyle" /> - <Spacer - latin:horizontalGap="22.272%p" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.804%p" + latin:keyXPos="-11.172%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> - <Spacer - latin:horizontalGap="32.076%p" /> <Key - latin:keyStyle="num4KeyStyle" /> + latin:keyStyle="num4KeyStyle" + latin:keyXPos="32.076%p" /> <Key latin:keyStyle="num5KeyStyle" /> <Key latin:keyStyle="num6KeyStyle" /> - <Spacer - latin:horizontalGap="17.371%p" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="14.706%p" + latin:keyXPos="-11.172%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> - <Spacer - latin:horizontalGap="32.076%p" /> <Key - latin:keyStyle="num7KeyStyle" /> + latin:keyStyle="num7KeyStyle" + latin:keyXPos="32.076%p" /> <Key latin:keyStyle="num8KeyStyle" /> <Key @@ -87,7 +79,7 @@ <!-- This row is intentionally not marked as a bottom row --> <Row> <Spacer - latin:horizontalGap="44.026%p" /> + latin:keyXPos="32.076%p" /> <Key latin:keyStyle="num0KeyStyle" /> <!-- There is an empty area below the "Enter" key and right of the "#" key. To @@ -102,79 +94,81 @@ <Key latin:keyStyle="tabKeyStyle" latin:keyLabelOption="alignLeft" + latin:keyWidth="11.172%p" latin:keyEdgeFlags="left" /> - <Spacer - latin:horizontalGap="4.458%p" /> <Key latin:keyLabel="-" - latin:keyWidth="8.042%p" /> + latin:keyStyle="numLabelStyle" + latin:keyXPos="13.829%p" + latin:keyWidth="8.047%p" /> <Key latin:keyLabel="+" - latin:keyWidth="8.042%p" /> + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> <Key latin:keyLabel="." - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> <Key - latin:keyLabel="1" /> + latin:keyLabel="1" + latin:keyXPos="43.125%p" /> <Key latin:keyLabel="2" /> <Key latin:keyLabel="3" /> - <Spacer - latin:horizontalGap="9.360%p" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.804%p" + latin:keyXPos="-11.172%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> - <Spacer - latin:horizontalGap="16.406%p" /> <Key latin:keyLabel="*" - latin:keyWidth="8.042%p" /> + latin:keyStyle="numLabelStyle" + latin:keyXPos="13.829%p" + latin:keyWidth="8.047%p" /> <Key latin:keyLabel="/" - latin:keyWidth="8.042%p" /> + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> <Key latin:keyLabel="," - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> <Key - latin:keyLabel="4" /> + latin:keyLabel="4" + latin:keyXPos="43.125%p" /> <Key latin:keyLabel="5" /> <Key latin:keyLabel="6" /> - <Spacer - latin:horizontalGap="4.458%p" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="14.706%p" + latin:keyXPos="-11.172%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> <!-- There is an empty area below the "More" key and left of the "(" key. To ignore the touch event on the area, "(" is intentionally not marked as a left edge key. --> - <Spacer - latin:horizontalGap="16.406%p" /> <Key latin:keyLabel="(" - latin:keyWidth="8.042%p" /> + latin:keyStyle="numLabelStyle" + latin:keyXPos="13.829%p" + latin:keyWidth="8.047%p" /> <Key latin:keyLabel=")" - latin:keyWidth="8.042%p" /> + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> <Key latin:keyLabel="=" - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> <Key - latin:keyLabel="7" /> + latin:keyLabel="7" + latin:keyXPos="43.125%p" /> <Key latin:keyLabel="8" /> <Key @@ -185,45 +179,36 @@ </Row> <!-- This row is intentionally not marked as a bottom row --> <Row> - <!-- There is an empty area below the "More" key and left of the "space" key. To - ignore the touch event on the area, "space" is intentionally not marked as a - left edge key. --> - <Spacer - latin:horizontalGap="8.362%p" /> <switch> <case latin:hasSettingsKey="true"> <Key latin:keyStyle="settingsKeyStyle" - latin:keyWidth="8.042%p" /> + latin:keyWidth="8.047%p" /> </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> </switch> <Key latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" - latin:keyWidth="24.127%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> + latin:keyXPos="13.829%p" + latin:keyWidth="24.140%p" /> <Key - latin:keyLabel="*" /> + latin:keyLabel="*" + latin:keyStyle="numLabelStyle" + latin:keyXPos="43.125%p" /> <Key latin:keyLabel="0" /> <Key - latin:keyLabel="#" /> + latin:keyLabel="#" + latin:keyStyle="numLabelStyle" /> <switch> <case latin:voiceKeyEnabled="true" > <Key - latin:keyStyle="micKeyStyle" - latin:keyWidth="8.042%p" /> + latin:keyStyle="shortcutKeyStyle" + latin:keyXPos="-8.047%p" + latin:keyWidth="fillRight" /> </case> </switch> - <!-- There is an empty area below the "Enter" key and right of the "#" key. To - ignore the touch event on the area, "#" is intentionally not marked as a right - edge key. --> </Row> </default> </switch> diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml new file mode 100644 index 000000000..6801ac5cc --- /dev/null +++ b/java/res/xml-sw768dp/kbd_phone.xml @@ -0,0 +1,139 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="13.250%p" +> + <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:keyStyle="tabKeyStyle" + latin:keyLabelOption="alignLeft" + latin:keyWidth="11.172%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="-" + latin:keyStyle="numLabelStyle" + latin:keyXPos="20.400%p" + latin:keyWidth="8.047%p" /> + <Key + latin:keyLabel="+" + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> + <Key + latin:keyStyle="num1KeyStyle" + latin:keyXPos="43.125%p" /> + <Key + latin:keyStyle="num2KeyStyle" /> + <Key + latin:keyStyle="num3KeyStyle" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-11.172%p" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyStyle="moreKeyStyle" + latin:keyWidth="11.172%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="," + latin:keyStyle="numLabelStyle" + latin:keyXPos="20.400%p" + latin:keyWidth="8.047%p" /> + <Key + latin:keyLabel="." + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> + <Key + latin:keyStyle="num4KeyStyle" + latin:keyXPos="43.125%p" /> + <Key + latin:keyStyle="num5KeyStyle" /> + <Key + latin:keyStyle="num6KeyStyle" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-11.172%p" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <!-- There is an empty area below the "More" key and left of the "(" key. To ignore + the touch event on the area, "(" is intentionally not marked as a left edge key. --> + <Key + latin:keyLabel="(" + latin:keyStyle="numLabelStyle" + latin:keyXPos="20.400%p" + latin:keyWidth="8.047%p" /> + <Key + latin:keyLabel=")" + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> + <Key + latin:keyStyle="num7KeyStyle" + latin:keyXPos="43.125%p" /> + <Key + latin:keyStyle="num8KeyStyle" /> + <Key + latin:keyStyle="num9KeyStyle" /> + <!-- There is an empty area below the "Enter" key and right of the "9" key. To ignore + the touch event on the area, "9" is intentionally not marked as a right edge key. --> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row> + <switch> + <case latin:hasSettingsKey="true"> + <Key + latin:keyStyle="settingsKeyStyle" + latin:keyWidth="8.047%p" /> + </case> + </switch> + <Key + latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" + latin:keyXPos="20.400%p" + latin:keyWidth="16.084%p" /> + <Key + latin:keyStyle="numStarKeyStyle" + latin:keyXPos="43.125%p" /> + <Key + latin:keyStyle="num0KeyStyle" /> + <Key + latin:keyLabel="#" + latin:keyStyle="numLabelStyle" /> + <switch> + <case + latin:voiceKeyEnabled="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" + latin:keyXPos="-8.047%p" + latin:keyWidth="fillRight" /> + </case> + </switch> + </Row> +</Keyboard> diff --git a/java/res/xml-sw768dp/kbd_phone_symbols.xml b/java/res/xml-sw768dp/kbd_phone_symbols.xml new file mode 100644 index 000000000..22f78b6d3 --- /dev/null +++ b/java/res/xml-sw768dp/kbd_phone_symbols.xml @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="13.250%p" +> + <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:keyStyle="tabKeyStyle" + latin:keyLabelOption="alignLeft" + latin:keyWidth="11.172%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="-" + latin:keyStyle="numLabelStyle" + latin:keyXPos="13.829%p" + latin:keyWidth="8.047%p" /> + <Key + latin:keyLabel="+" + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> + <Key + latin:code="44" + latin:keyLabel="@string/label_pause_key" + latin:keyWidth="8.047%p" /> + <Key + latin:keyStyle="num1KeyStyle" + latin:keyXPos="43.125%p" /> + <Key + latin:keyStyle="num2KeyStyle" /> + <Key + latin:keyStyle="num3KeyStyle" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-11.172%p" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyStyle="moreKeyStyle" + latin:keyWidth="11.172%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="," + latin:keyStyle="numLabelStyle" + latin:keyXPos="13.829%p" + latin:keyWidth="8.047%p" /> + <Key + latin:keyLabel="." + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> + <Key + latin:code="59" + latin:keyLabel="@string/label_wait_key" + latin:keyWidth="8.047%p" /> + <Key + latin:keyStyle="num4KeyStyle" + latin:keyXPos="43.125%p" /> + <Key + latin:keyStyle="num5KeyStyle" /> + <Key + latin:keyStyle="num6KeyStyle" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-11.172%p" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <!-- There is an empty area below the "More" key and left of the "(" key. To ignore + the touch event on the area, "(" is intentionally not marked as a left edge key. --> + <Key + latin:keyLabel="(" + latin:keyStyle="numLabelStyle" + latin:keyXPos="13.829%p" + latin:keyWidth="8.047%p" /> + <Key + latin:keyLabel=")" + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> + <Key + latin:keyLabel="N" + latin:keyStyle="numLabelStyle" + latin:keyWidth="8.047%p" /> + <Key + latin:keyStyle="num7KeyStyle" + latin:keyXPos="43.125%p" /> + <Key + latin:keyStyle="num8KeyStyle" /> + <Key + latin:keyStyle="num9KeyStyle" /> + <!-- There is an empty area below the "Enter" key and right of the "9" key. To ignore + the touch event on the area, "9" is intentionally not marked as a right edge key. --> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row> + <switch> + <case latin:hasSettingsKey="true"> + <Key + latin:keyStyle="settingsKeyStyle" + latin:keyWidth="8.047%p" /> + </case> + </switch> + <Key + latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" + latin:keyXPos="13.829%p" + latin:keyWidth="24.140%p" /> + <Key + latin:keyStyle="numStarKeyStyle" + latin:keyXPos="43.125%p" /> + <Key + latin:keyStyle="num0KeyStyle" /> + <Key + latin:keyLabel="#" + latin:keyStyle="numLabelStyle" /> + <switch> + <case + latin:voiceKeyEnabled="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" + latin:keyXPos="-8.047%p" + latin:keyWidth="fillRight" /> + </case> + </switch> + </Row> +</Keyboard> diff --git a/java/res/xml-xlarge/kbd_popup_template.xml b/java/res/xml-sw768dp/kbd_popup_template.xml index 7d39d1a3a..7d39d1a3a 100644 --- a/java/res/xml-xlarge/kbd_popup_template.xml +++ b/java/res/xml-sw768dp/kbd_popup_template.xml diff --git a/java/res/xml-xlarge/kbd_qwerty_row1.xml b/java/res/xml-sw768dp/kbd_qwerty_row1.xml index f5135591c..3727cf34e 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row1.xml +++ b/java/res/xml-sw768dp/kbd_qwerty_row1.xml @@ -23,12 +23,12 @@ > <!-- This row is intentionally not marked as a top row --> <Row - latin:keyWidth="8.272%p" + latin:keyWidth="8.282%p" > <Key latin:keyStyle="tabKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyWidth="7.969%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="q" @@ -62,7 +62,8 @@ latin:popupCharacters="@string/alternates_for_p" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyXPos="-9.219%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> </merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row2.xml b/java/res/xml-sw768dp/kbd_qwerty_row2.xml index 02bd0a6c9..45af120e2 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row2.xml +++ b/java/res/xml-sw768dp/kbd_qwerty_row2.xml @@ -22,12 +22,12 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row - latin:keyWidth="8.157%p" + latin:keyWidth="8.125%p" > <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="11.167%p" + latin:keyWidth="11.172%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="a" @@ -55,7 +55,8 @@ latin:popupCharacters="@string/alternates_for_l" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="15.750%p" + latin:keyXPos="-15.704%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> </merge> diff --git a/java/res/xml-sw768dp/kbd_qwerty_row3.xml b/java/res/xml-sw768dp/kbd_qwerty_row3.xml new file mode 100644 index 000000000..7297ea512 --- /dev/null +++ b/java/res/xml-sw768dp/kbd_qwerty_row3.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Row + latin:keyWidth="8.047%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="13.829%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="z" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="x" /> + <Key + latin:keyLabel="c" + latin:popupCharacters="@string/alternates_for_c" /> + <Key + latin:keyLabel="v" + latin:popupCharacters="@string/alternates_for_v" /> + <Key + latin:keyLabel="b" /> + <Key + latin:keyLabel="n" + latin:popupCharacters="@string/alternates_for_n" /> + <Key + latin:keyLabel="m" /> + <include + latin:keyboardLayout="@xml/kbd_row3_right2" /> + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyXPos="-13.750%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> +</merge> diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml new file mode 100644 index 000000000..00eabab9e --- /dev/null +++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <!-- This row is intentionally not marked as a bottom row --> + <Row + latin:keyWidth="8.047%p" + > + <switch> + <case + latin:hasSettingsKey="true" + > + <Key + latin:keyStyle="settingsKeyStyle" + latin:keyWidth="8.047%p" /> + </case> + </switch> + <Spacer + latin:keyXPos="15.157%p" + latin:keyWidth="fillRight" /> + <switch> + <case + latin:mode="url" + > + <Key + latin:keyStyle="comKeyStyle" + latin:keyWidth="16.084%p" /> + </case> + <default> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyStyle="comKeyStyle" /> + </case> + <case + latin:imeAction="actionSearch" + > + <Key + latin:keyLabel=":" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="+" + latin:popupCharacters="+" /> + </case> + <default> + <Key + latin:keyStyle="smileyKeyStyle" /> + </default> + </switch> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="\@" /> + </case> + <default> + <Key + latin:keyLabel="/" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\@" + latin:popupCharacters="\@" /> + </default> + </switch> + </default> + </switch> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyXPos="31.250%p" + latin:keyWidth="37.500%p" /> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="-" /> + </case> + <case + latin:mode="url" + > + <Key + latin:keyLabel="/" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter=":" + latin:popupCharacters=":" /> + </case> + <default> + <Key + latin:keyLabel="\'" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter=""" + latin:popupCharacters=""" /> + </default> + </switch> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="_" /> + </case> + <default> + <Key + latin:keyLabel="-" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="_" + latin:popupCharacters="_" /> + </default> + </switch> + <switch> + <case + latin:voiceKeyEnabled="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" + latin:keyXPos="-8.047%p" + latin:keyWidth="fillRight" /> + </case> + </switch> + </Row> +</merge> diff --git a/java/res/xml-sw768dp/kbd_row3_right2.xml b/java/res/xml-sw768dp/kbd_row3_right2.xml new file mode 100644 index 000000000..e90de8eec --- /dev/null +++ b/java/res/xml-sw768dp/kbd_row3_right2.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="," /> + <Key + latin:keyLabel="." /> + </case> + <default> + <Key + latin:keyLabel="," + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="!" + latin:popupCharacters="!" /> + <Key + latin:keyLabel="." + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\?" + latin:popupCharacters="\?" /> + </default> + </switch> +</merge> diff --git a/java/res/xml-xlarge/kbd_ar_rows.xml b/java/res/xml-sw768dp/kbd_rows_arabic.xml index e84aae6b5..c1810026b 100644 --- a/java/res/xml-xlarge/kbd_ar_rows.xml +++ b/java/res/xml-sw768dp/kbd_rows_arabic.xml @@ -27,12 +27,12 @@ <include latin:keyboardLayout="@xml/kbd_key_styles" /> <Row - latin:keyWidth="7.49%p" + latin:keyWidth="7.375%p" > <Key latin:keyStyle="tabKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyWidth="7.500%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="ض" /> @@ -61,16 +61,17 @@ latin:popupCharacters="ج,چ" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyXPos="-11.500%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="7.49%p" + latin:keyWidth="7.375%p" > <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyWidth="9.375%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="ش" /> @@ -100,16 +101,20 @@ latin:keyLabel="ط" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="8.593%p" + latin:keyXPos="-9.375%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="7.375%p" > <Key - latin:keyLabel="ئ" + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="12.750%p" latin:keyEdgeFlags="left" /> <Key + latin:keyLabel="ئ" /> + <Key latin:keyLabel="ء" /> <Key latin:keyLabel="ؤ" /> @@ -130,10 +135,6 @@ latin:keyLabel="ظ" /> <Key latin:keyLabel="د" /> - <Key - latin:keyStyle="shiftKeyStyle" - latin:keyWidth="11.736%p" - latin:keyEdgeFlags="right" /> </Row> <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </merge> diff --git a/java/res/xml-xlarge/kbd_azerty_rows.xml b/java/res/xml-sw768dp/kbd_rows_azerty.xml index 564f77629..3bcba0042 100644 --- a/java/res/xml-xlarge/kbd_azerty_rows.xml +++ b/java/res/xml-sw768dp/kbd_rows_azerty.xml @@ -24,12 +24,12 @@ <include latin:keyboardLayout="@xml/kbd_key_styles" /> <Row - latin:keyWidth="8.272%p" + latin:keyWidth="8.282%p" > <Key latin:keyStyle="tabKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyWidth="7.969%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="a" @@ -63,11 +63,12 @@ latin:popupCharacters="@string/alternates_for_p" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyXPos="-9.219%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.157%p" + latin:keyWidth="8.125%p" > <Key latin:keyStyle="toSymbolKeyStyle" @@ -103,15 +104,16 @@ latin:keyEdgeFlags="right" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="8.593%p" + latin:keyXPos="-15.704%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="8.047%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="15.192%p" + latin:keyWidth="13.829%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="w" @@ -131,9 +133,8 @@ latin:popupCharacters="@string/alternates_for_n" /> <Key latin:keyLabel="\'" - latin:manualTemporaryUpperCaseCode="58" - latin:keyHintIcon="@drawable/key_hint_colon_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter=":" latin:popupCharacters=":" /> <switch> <case @@ -147,21 +148,20 @@ <default> <Key latin:keyLabel="," - latin:manualTemporaryUpperCaseCode="33" - latin:keyHintIcon="@drawable/key_hint_exclamation_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="!" latin:popupCharacters="!" /> <Key latin:keyLabel="." - latin:manualTemporaryUpperCaseCode="63" - latin:keyHintIcon="@drawable/key_hint_question_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\?" latin:popupCharacters="\?" /> </default> </switch> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.530%p" + latin:keyXPos="-13.750%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml-xlarge/kbd_iw_rows.xml b/java/res/xml-sw768dp/kbd_rows_hebrew.xml index a3a239dbf..5275a1f15 100644 --- a/java/res/xml-xlarge/kbd_iw_rows.xml +++ b/java/res/xml-sw768dp/kbd_rows_hebrew.xml @@ -24,12 +24,11 @@ <include latin:keyboardLayout="@xml/kbd_key_styles" /> <Row - latin:keyWidth="8.272%p" + latin:keyWidth="8.000%p" > <Key latin:keyStyle="tabKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="," /> @@ -53,16 +52,17 @@ latin:keyLabel="פ" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyXPos="-12.000%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.157%p" + latin:keyWidth="8.000%p" > <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="10.167%p" + latin:keyWidth="9.600%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="ש" /> @@ -89,15 +89,16 @@ latin:keyLabel="ף" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="8.593%p" + latin:keyXPos="-10.400%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="8.000%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="15.192%p" + latin:keyWidth="13.200%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="ז" @@ -121,10 +122,6 @@ <Key latin:keyLabel="ץ" latin:popupCharacters="ץ,ץ׳" /> - <Key - latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.530%p" - latin:keyEdgeFlags="right" /> </Row> <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_rows.xml b/java/res/xml-sw768dp/kbd_rows_qwerty.xml index 6237712f6..6237712f6 100644 --- a/java/res/xml-xlarge/kbd_qwerty_rows.xml +++ b/java/res/xml-sw768dp/kbd_rows_qwerty.xml diff --git a/java/res/xml-xlarge/kbd_qwertz_rows.xml b/java/res/xml-sw768dp/kbd_rows_qwertz.xml index 3e99f0511..8d5f1e6d4 100644 --- a/java/res/xml-xlarge/kbd_qwertz_rows.xml +++ b/java/res/xml-sw768dp/kbd_rows_qwertz.xml @@ -24,12 +24,12 @@ <include latin:keyboardLayout="@xml/kbd_key_styles" /> <Row - latin:keyWidth="8.272%p" + latin:keyWidth="8.282%p" > <Key latin:keyStyle="tabKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyWidth="7.969%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="q" @@ -63,17 +63,18 @@ latin:popupCharacters="@string/alternates_for_p" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyXPos="-9.219%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <include latin:keyboardLayout="@xml/kbd_qwerty_row2" /> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="8.047%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="15.192%p" + latin:keyWidth="13.829%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="y" @@ -105,21 +106,20 @@ <default> <Key latin:keyLabel="," - latin:manualTemporaryUpperCaseCode="33" - latin:keyHintIcon="@drawable/key_hint_exclamation_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="!" latin:popupCharacters="!" /> <Key latin:keyLabel="." - latin:manualTemporaryUpperCaseCode="63" - latin:keyHintIcon="@drawable/key_hint_question_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo" + latin:keyLabelOption="hasUppercaseLetter" + latin:keyHintLetter="\?" latin:popupCharacters="\?" /> </default> </switch> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.530%p" + latin:keyXPos="-13.750%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml-xlarge/kbd_ru_rows.xml b/java/res/xml-sw768dp/kbd_rows_russian.xml index c5cd04371..ee91481c1 100644 --- a/java/res/xml-xlarge/kbd_ru_rows.xml +++ b/java/res/xml-sw768dp/kbd_rows_russian.xml @@ -25,57 +25,49 @@ latin:keyboardLayout="@xml/kbd_key_styles" /> <!-- This row is intentionally not marked as a top row --> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="7.125%p" > <Key latin:keyStyle="tabKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" latin:keyEdgeFlags="left" /> <Key - latin:keyLabel="й" - latin:popupCharacters="1" /> + latin:keyLabel="й" /> <Key - latin:keyLabel="ц" - latin:popupCharacters="2" /> + latin:keyLabel="ц" /> <Key - latin:keyLabel="у" - latin:popupCharacters="3" /> + latin:keyLabel="у" /> <Key - latin:keyLabel="к" - latin:popupCharacters="4" /> + latin:keyLabel="к" /> <Key latin:keyLabel="е" latin:popupCharacters="@string/alternates_for_cyrillic_e" /> <Key - latin:keyLabel="н" - latin:popupCharacters="6" /> + latin:keyLabel="н" /> <Key - latin:keyLabel="г" - latin:popupCharacters="7" /> + latin:keyLabel="г" /> <Key - latin:keyLabel="ш" - latin:popupCharacters="8" /> + latin:keyLabel="ш" /> <Key - latin:keyLabel="щ" - latin:popupCharacters="9" /> + latin:keyLabel="щ" /> <Key - latin:keyLabel="з" - latin:popupCharacters="0" /> + latin:keyLabel="з" /> <Key latin:keyLabel="х" /> <Key + latin:keyLabel="ъ" /> + <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="7.125%p" > <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyWidth="9.375%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="ф" /> @@ -101,15 +93,16 @@ latin:keyLabel="э" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="9.331%p" + latin:keyXPos="-9.375%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="7.125%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.400%p" + latin:keyWidth="12.750%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="я" /> @@ -124,21 +117,16 @@ <Key latin:keyLabel="т" /> <Key - latin:keyLabel="ь" - latin:popupCharacters="@string/alternates_for_cyrillic_soft_sign" /> + latin:keyLabel="ь" /> <Key latin:keyLabel="б" /> <Key latin:keyLabel="ю" /> - <Key - latin:keyLabel="." - latin:manualTemporaryUpperCaseCode="44" - latin:keyHintIcon="@drawable/key_hint_comma_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_comma_large_holo" - latin:popupCharacters="," /> + <include + latin:keyboardLayout="@xml/kbd_row3_right2" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.400%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml-xlarge/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml index fb2034fb7..7e9f604f5 100644 --- a/java/res/xml-xlarge/kbd_qwerty_rows_scandinavia.xml +++ b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml @@ -24,12 +24,12 @@ <include latin:keyboardLayout="@xml/kbd_key_styles" /> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="7.375%p" > <Key latin:keyStyle="tabKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyWidth="7.500%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="q" @@ -65,16 +65,17 @@ latin:keyLabel="å" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyXPos="-11.500%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="7.375%p" > <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyWidth="9.375%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="a" @@ -108,11 +109,43 @@ latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="9.331%p" + latin:keyXPos="-9.375%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="7.375%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="12.750%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="z" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="x" /> + <Key + latin:keyLabel="c" + latin:popupCharacters="@string/alternates_for_c" /> + <Key + latin:keyLabel="v" + latin:popupCharacters="@string/alternates_for_v" /> + <Key + latin:keyLabel="b" /> + <Key + latin:keyLabel="n" + latin:popupCharacters="@string/alternates_for_n" /> + <Key + latin:keyLabel="m" /> + <include + latin:keyboardLayout="@xml/kbd_row3_right2" /> + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyXPos="-12.750%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> - <include - latin:keyboardLayout="@xml/kbd_qwerty_row3" /> <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </merge> diff --git a/java/res/xml-xlarge/kbd_sr_rows.xml b/java/res/xml-sw768dp/kbd_rows_serbian.xml index be0058505..4997dabb9 100644 --- a/java/res/xml-xlarge/kbd_sr_rows.xml +++ b/java/res/xml-sw768dp/kbd_rows_serbian.xml @@ -25,57 +25,48 @@ latin:keyboardLayout="@xml/kbd_key_styles" /> <!-- This row is intentionally not marked as a top row --> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="7.125%p" > <Key latin:keyStyle="tabKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="8.640%p" latin:keyEdgeFlags="left" /> <Key - latin:keyLabel="љ" - latin:popupCharacters="1" /> + latin:keyLabel="љ" /> <Key - latin:keyLabel="њ" - latin:popupCharacters="2" /> + latin:keyLabel="њ" /> <Key - latin:keyLabel="е" - latin:popupCharacters="3" /> + latin:keyLabel="е" /> <Key - latin:keyLabel="р" - latin:popupCharacters="4" /> + latin:keyLabel="р" /> <Key - latin:keyLabel="т" - latin:popupCharacters="5" /> + latin:keyLabel="т" /> <Key - latin:keyLabel="з" - latin:popupCharacters="6" /> + latin:keyLabel="з" /> <Key - latin:keyLabel="у" - latin:popupCharacters="7" /> + latin:keyLabel="у" /> <Key - latin:keyLabel="и" - latin:popupCharacters="8" /> + latin:keyLabel="и" /> <Key - latin:keyLabel="о" - latin:popupCharacters="9" /> + latin:keyLabel="о" /> <Key - latin:keyLabel="п" - latin:popupCharacters="0" /> + latin:keyLabel="п" /> <Key latin:keyLabel="ш" /> <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="8.640%p" - latin:keyEdgeFlags="right" /> + latin:keyLabel="ђ" /> + <Key + latin:keyLabel="ж" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right"/> </Row> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="7.250%p" > <Key latin:keyStyle="toSymbolKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="8.640%p" + latin:keyWidth="11.172%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="а" /> @@ -100,16 +91,17 @@ <Key latin:keyLabel="ћ" /> <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="8.640%p" + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-9.219%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="7.250%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="8.640%p" + latin:keyWidth="13.829%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="ѕ" /> @@ -125,25 +117,12 @@ latin:keyLabel="н" /> <Key latin:keyLabel="м" /> + <include + latin:keyboardLayout="@xml/kbd_row3_right2" /> <Key - latin:keyLabel="ђ" /> - <Key - latin:keyLabel="ж" /> - <Key - latin:keyLabel="," - latin:manualTemporaryUpperCaseCode="33" - latin:keyHintIcon="@drawable/key_hint_exclamation_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo" - latin:popupCharacters="!" /> - <Key - latin:keyLabel="." - latin:manualTemporaryUpperCaseCode="63" - latin:keyHintIcon="@drawable/key_hint_question_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo" - latin:popupCharacters="\?" /> - <Key - latin:keyStyle="shiftKeyStyle" - latin:keyWidth="8.640%p" + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-13.750%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml-sw768dp/kbd_rows_spanish.xml b/java/res/xml-sw768dp/kbd_rows_spanish.xml new file mode 100644 index 000000000..300592e6a --- /dev/null +++ b/java/res/xml-sw768dp/kbd_rows_spanish.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row1" /> + <Row + latin:keyWidth="8.125%p" + > + <Key + latin:keyStyle="toSymbolKeyStyle" + latin:keyLabelOption="alignLeft" + latin:keyWidth="10.167%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="a" + latin:popupCharacters="@string/alternates_for_a" /> + <Key + latin:keyLabel="s" + latin:popupCharacters="@string/alternates_for_s" /> + <Key + latin:keyLabel="d" + latin:popupCharacters="@string/alternates_for_d" /> + <Key + latin:keyLabel="f" /> + <Key + latin:keyLabel="g" + latin:popupCharacters="@string/alternates_for_g" /> + <Key + latin:keyLabel="h" /> + <Key + latin:keyLabel="j" /> + <Key + latin:keyLabel="k" + latin:popupCharacters="@string/alternates_for_k" /> + <Key + latin:keyLabel="l" + latin:popupCharacters="@string/alternates_for_l" /> + <Key + latin:keyLabel="ñ" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-15.704%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row3" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_symbols.xml new file mode 100644 index 000000000..0e6103ab9 --- /dev/null +++ b/java/res/xml-sw768dp/kbd_symbols.xml @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <include + latin:keyboardLayout="@xml/kbd_currency_key_styles" /> + <!-- This row is intentionally not marked as a top row --> + <Row + latin:keyWidth="8.282%p" + > + <Key + latin:keyStyle="tabKeyStyle" + latin:keyLabelOption="alignLeft" + latin:keyWidth="7.969%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="1" + latin:popupCharacters="¹,½,⅓,¼,⅛" /> + <Key + latin:keyLabel="2" + latin:popupCharacters="²,⅔" /> + <Key + latin:keyLabel="3" + latin:popupCharacters="³,¾,⅜" /> + <Key + latin:keyLabel="4" + latin:popupCharacters="⁴" /> + <Key + latin:keyLabel="5" + latin:popupCharacters="⅝" /> + <Key + latin:keyLabel="6" /> + <Key + latin:keyLabel="7" + latin:popupCharacters="⅞" /> + <Key + latin:keyLabel="8" /> + <Key + latin:keyLabel="9" /> + <Key + latin:keyLabel="0" + latin:popupCharacters="ⁿ,∅" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyXPos="-9.219%p" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="8.125%p" + > + <Key + latin:keyStyle="toAlphaKeyStyle" + latin:keyLabelOption="alignLeft" + latin:keyWidth="11.172%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="#" /> + <Key + latin:keyStyle="currencyKeyStyle" /> + <Key + latin:keyLabel="%" + latin:popupCharacters="‰" /> + <Key + latin:keyLabel="&" /> + <Key + latin:keyLabel="*" + latin:popupCharacters="†,‡,★" /> + <Key + latin:keyLabel="-" + latin:popupCharacters="_,–,—" /> + <Key + latin:keyLabel="+" + latin:popupCharacters="±" /> + <Key + latin:keyLabel="(" + latin:popupCharacters="[,{,<" /> + <Key + latin:keyLabel=")" + latin:popupCharacters="],},>" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyXPos="-15.704%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyWidth="8.047%p" + > + <Key + latin:keyStyle="moreKeyStyle" + latin:keyWidth="13.829%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="<" + latin:popupCharacters="≤,«,‹" /> + <Key + latin:keyLabel=">" + latin:popupCharacters="≥,»,›" /> + <Key + latin:keyLabel="=" + latin:popupCharacters="≠,≈" /> + <switch> + <case + latin:mode="url" + > + <Key + latin:keyLabel="\'" + latin:popupCharacters="‘,’,‚,‛" /> + </case> + <default> + <Key + latin:keyLabel=":" /> + </default> + </switch> + <Key + latin:keyLabel=";" /> + <Key + latin:keyLabel="," /> + <Key + latin:keyLabel="." /> + <Key + latin:keyLabel="!" + latin:popupCharacters="¡" /> + <Key + latin:keyLabel="\?" + latin:popupCharacters="¿" /> + <Key + latin:keyStyle="moreKeyStyle" + latin:keyXPos="-13.750%p" + latin:keyWidth="fillBoth" + latin:keyEdgeFlags="right" /> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row + latin:keyWidth="8.047%p" + > + <switch> + <case + latin:hasSettingsKey="true" + > + <Key + latin:keyStyle="settingsKeyStyle" + latin:keyWidth="8.047%p" /> + </case> + </switch> + <Key + latin:keyLabel="/" + latin:keyXPos="15.157%p" /> + <Key + latin:keyLabel="\@" /> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyXPos="31.250%p" + latin:keyWidth="37.500%p" /> + <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. --> + <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" --> + <Key + latin:keyLabel=""" + latin:popupCharacters="“,”,«,»,‘,’,‚,‛" /> + <Key + latin:keyLabel="_" /> + <switch> + <case + latin:voiceKeyEnabled="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" + latin:keyXPos="-8.047%p" + latin:keyWidth="fillRight" /> + </case> + </switch> + </Row> +</Keyboard> diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-sw768dp/kbd_symbols_shift.xml index d7f5958b7..b36814104 100644 --- a/java/res/xml-xlarge/kbd_symbols_shift.xml +++ b/java/res/xml-sw768dp/kbd_symbols_shift.xml @@ -20,25 +20,17 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> <!-- This row is intentionally not marked as a top row --> <Row - latin:keyWidth="8.272%p" + latin:keyWidth="8.282%p" > <Key latin:keyStyle="tabKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyWidth="7.969%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="~" /> @@ -72,16 +64,17 @@ latin:keyLabel="Δ" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyXPos="-9.219%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.157%p" + latin:keyWidth="8.125%p" > <Key latin:keyStyle="toAlphaKeyStyle" latin:keyLabelOption="alignLeft" - latin:keyWidth="11.167%p" + latin:keyWidth="11.172%p" latin:keyEdgeFlags="left" /> <Key latin:keyStyle="nonPasswordSymbolKeyStyle" @@ -112,15 +105,16 @@ latin:keyLabel="}" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="15.750%p" + latin:keyXPos="-15.704%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="8.047%p" > <Key latin:keyStyle="moreKeyStyle" - latin:keyWidth="15.192%p" + latin:keyWidth="13.829%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="\\" /> @@ -148,34 +142,33 @@ latin:keyLabel="¿" /> <Key latin:keyStyle="moreKeyStyle" - latin:keyWidth="12.530%p" + latin:keyXPos="-13.750%p" + latin:keyWidth="fillBoth" latin:keyEdgeFlags="right" /> </Row> <!-- This row is intentionally not marked as a bottom row --> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="8.047%p" > - <Spacer - latin:horizontalGap="24.446%p" /> <switch> <case latin:hasSettingsKey="true"> <Key - latin:keyStyle="settingsKeyStyle" /> + latin:keyStyle="settingsKeyStyle" + latin:keyWidth="8.047%p" /> </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> </switch> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="37.454%p" /> + latin:keyXPos="31.250%p" + latin:keyWidth="37.500%p" /> <switch> <case latin:voiceKeyEnabled="true" > <Key - latin:keyStyle="micKeyStyle" /> + latin:keyStyle="shortcutKeyStyle" + latin:keyXPos="-8.047%p" + latin:keyWidth="fillRight" /> </case> </switch> </Row> diff --git a/java/res/xml-tr/kbd_qwerty.xml b/java/res/xml-tr/kbd_qwerty.xml new file mode 100644 index 000000000..d2c38f60a --- /dev/null +++ b/java/res/xml-tr/kbd_qwerty.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<Keyboard + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardLocale="tr" +> + <include + latin:keyboardLayout="@xml/kbd_rows_qwerty" /> +</Keyboard> diff --git a/java/res/xml-xlarge/kbd_key_styles.xml b/java/res/xml-xlarge/kbd_key_styles.xml deleted file mode 100644 index 57eaccbae..000000000 --- a/java/res/xml-xlarge/kbd_key_styles.xml +++ /dev/null @@ -1,183 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<merge - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" -> - <!-- Functional key styles --> - <switch> - <case - latin:colorScheme="white" - > - <key-style - latin:styleName="functionalKeyStyle" - latin:isFunctional="true" /> - <key-style - latin:styleName="shiftKeyStyle" - latin:code="@integer/key_shift" - latin:keyIcon="@drawable/sym_keyboard_shift_holo" - latin:shiftedIcon="@drawable/sym_keyboard_shift_locked_holo" - latin:iconPreview="@drawable/sym_keyboard_feedback_shift" - latin:parentStyle="functionalKeyStyle" - latin:isSticky="true" /> - <key-style - latin:styleName="deleteKeyStyle" - latin:code="@integer/key_delete" - latin:keyIcon="@drawable/sym_keyboard_delete_holo" - latin:iconPreview="@drawable/sym_keyboard_feedback_delete" - latin:parentStyle="functionalKeyStyle" - latin:isRepeatable="true" /> - <key-style - latin:styleName="returnKeyStyle" - latin:code="@integer/key_return" - latin:keyIcon="@drawable/sym_keyboard_return_holo" - latin:iconPreview="@drawable/sym_keyboard_feedback_return" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="spaceKeyStyle" - latin:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - <key-style - latin:styleName="nonSpecialBackgroundSpaceKeyStyle" - latin:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - <key-style - latin:styleName="smileyKeyStyle" - latin:keyLabel=":-)" - latin:keyOutputText=":-) " - latin:keyHintIcon="@drawable/hint_popup_holo" - latin:popupCharacters="@string/alternates_for_smiley" - latin:maxPopupKeyboardColumn="5" /> - <key-style - latin:styleName="settingsKeyStyle" - latin:code="@integer/key_settings" - latin:keyIcon="@drawable/sym_keyboard_settings_holo" - latin:iconPreview="@drawable/sym_keyboard_feedback_settings" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="micKeyStyle" - latin:code="@integer/key_shortcut" - latin:keyIcon="@drawable/sym_keyboard_voice_holo" - latin:iconPreview="@drawable/sym_keyboard_feedback_mic" - latin:parentStyle="functionalKeyStyle" /> - </case> - <case - latin:colorScheme="black" - > - <key-style - latin:styleName="functionalKeyStyle" /> - <key-style - latin:styleName="shiftKeyStyle" - latin:code="@integer/key_shift" - latin:keyIcon="@drawable/sym_bkeyboard_shift" - latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked" - latin:iconPreview="@drawable/sym_keyboard_feedback_shift" - latin:parentStyle="functionalKeyStyle" - latin:isSticky="true" /> - <key-style - latin:styleName="deleteKeyStyle" - latin:code="@integer/key_delete" - latin:keyIcon="@drawable/sym_bkeyboard_delete" - latin:iconPreview="@drawable/sym_keyboard_feedback_delete" - latin:parentStyle="functionalKeyStyle" - latin:isRepeatable="true" /> - <key-style - latin:styleName="returnKeyStyle" - latin:code="@integer/key_return" - latin:keyIcon="@drawable/sym_bkeyboard_return" - latin:iconPreview="@drawable/sym_keyboard_feedback_return" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="spaceKeyStyle" - latin:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - <key-style - latin:styleName="nonSpecialBackgroundSpaceKeyStyle" - latin:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - <key-style - latin:styleName="smileyKeyStyle" - latin:keyLabel=":-)" - latin:keyOutputText=":-) " - latin:keyHintIcon="@drawable/hint_popup_holo" - latin:popupCharacters="@string/alternates_for_smiley" - latin:maxPopupKeyboardColumn="5" /> - <key-style - latin:styleName="settingsKeyStyle" - latin:code="@integer/key_settings" - latin:keyIcon="@drawable/sym_bkeyboard_settings" - latin:iconPreview="@drawable/sym_keyboard_feedback_settings" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="micKeyStyle" - latin:code="@integer/key_shortcut" - latin:keyIcon="@drawable/sym_bkeyboard_mic" - latin:iconPreview="@drawable/sym_keyboard_feedback_mic" - latin:parentStyle="functionalKeyStyle" /> - </case> - </switch> - <key-style - latin:styleName="tabKeyStyle" - latin:code="@integer/key_tab" - latin:keyLabel="@string/label_tab_key" - latin:keyLabelOption="fontNormal" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="toSymbolKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_symbol_key" - latin:keyLabelOption="fontNormal" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="toAlphaKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_alpha_key" - latin:keyLabelOption="fontNormal" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="moreKeyStyle" - latin:code="@integer/key_shift" - latin:keyLabel="@string/label_more_key" - latin:keyLabelOption="fontNormal" - latin:parentStyle="functionalKeyStyle" - latin:isSticky="true" /> - <key-style - latin:styleName="comKeyStyle" - latin:keyLabel="@string/keylabel_for_popular_domain" - latin:keyLabelOption="fontNormal" - latin:keyOutputText="@string/keylabel_for_popular_domain" - latin:keyHintIcon="@drawable/hint_popup_holo" - latin:popupCharacters="@string/alternates_for_popular_domain" /> - <switch> - <case - latin:passwordInput="true" - > - <key-style - latin:styleName="nonPasswordSymbolKeyStyle" - latin:enabled="false" /> - </case> - <!-- latin:passwordInput="false" --> - <default> - <key-style - latin:styleName="nonPasswordSymbolKeyStyle" - latin:enabled="true" /> - </default> - </switch> -</merge> diff --git a/java/res/xml-xlarge/kbd_numkey_styles.xml b/java/res/xml-xlarge/kbd_numkey_styles.xml deleted file mode 100644 index e27db94c7..000000000 --- a/java/res/xml-xlarge/kbd_numkey_styles.xml +++ /dev/null @@ -1,148 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<merge - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" -> - <switch> - <case - latin:colorScheme="white" - > - <key-style - latin:styleName="num0KeyStyle" - latin:code="48" - latin:keyIcon="@drawable/sym_keyboard_num0_holo" /> - <key-style - latin:styleName="num1KeyStyle" - latin:code="49" - latin:keyIcon="@drawable/sym_keyboard_num1_holo" /> - <key-style - latin:styleName="num2KeyStyle" - latin:code="50" - latin:keyIcon="@drawable/sym_keyboard_num2_holo" /> - <key-style - latin:styleName="num3KeyStyle" - latin:code="51" - latin:keyIcon="@drawable/sym_keyboard_num3_holo" /> - <key-style - latin:styleName="num4KeyStyle" - latin:code="52" - latin:keyIcon="@drawable/sym_keyboard_num4_holo" /> - <key-style - latin:styleName="num5KeyStyle" - latin:code="53" - latin:keyIcon="@drawable/sym_keyboard_num5_holo" /> - <key-style - latin:styleName="num6KeyStyle" - latin:code="54" - latin:keyIcon="@drawable/sym_keyboard_num6_holo" /> - <key-style - latin:styleName="num7KeyStyle" - latin:code="55" - latin:keyIcon="@drawable/sym_keyboard_num7_holo" /> - <key-style - latin:styleName="num8KeyStyle" - latin:code="56" - latin:keyIcon="@drawable/sym_keyboard_num8_holo" /> - <key-style - latin:styleName="num9KeyStyle" - latin:code="57" - latin:keyIcon="@drawable/sym_keyboard_num9_holo" /> - <key-style - latin:styleName="numStarKeyStyle" - latin:code="42" - latin:keyIcon="@drawable/sym_keyboard_numbstar_holo" /> - <key-style - latin:styleName="numPoundKeyStyle" - latin:code="35" - latin:keyIcon="@drawable/sym_keyboard_numbpound_holo" /> - <key-style - latin:styleName="numAltKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyIcon="@drawable/sym_keyboard_numalt" - latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> - <key-style - latin:styleName="numSpaceKeyStyle" - latin:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - </case> - <case - latin:colorScheme="black" - > - <key-style - latin:styleName="num0KeyStyle" - latin:code="48" - latin:keyIcon="@drawable/sym_bkeyboard_num0" /> - <key-style - latin:styleName="num1KeyStyle" - latin:code="49" - latin:keyIcon="@drawable/sym_bkeyboard_num1" /> - <key-style - latin:styleName="num2KeyStyle" - latin:code="50" - latin:keyIcon="@drawable/sym_bkeyboard_num2" /> - <key-style - latin:styleName="num3KeyStyle" - latin:code="51" - latin:keyIcon="@drawable/sym_bkeyboard_num3" /> - <key-style - latin:styleName="num4KeyStyle" - latin:code="52" - latin:keyIcon="@drawable/sym_bkeyboard_num4" /> - <key-style - latin:styleName="num5KeyStyle" - latin:code="53" - latin:keyIcon="@drawable/sym_bkeyboard_num5" /> - <key-style - latin:styleName="num6KeyStyle" - latin:code="54" - latin:keyIcon="@drawable/sym_bkeyboard_num6" /> - <key-style - latin:styleName="num7KeyStyle" - latin:code="55" - latin:keyIcon="@drawable/sym_bkeyboard_num7" /> - <key-style - latin:styleName="num8KeyStyle" - latin:code="56" - latin:keyIcon="@drawable/sym_bkeyboard_num8" /> - <key-style - latin:styleName="num9KeyStyle" - latin:code="57" - latin:keyIcon="@drawable/sym_bkeyboard_num9" /> - <key-style - latin:styleName="numStarKeyStyle" - latin:code="42" - latin:keyIcon="@drawable/sym_bkeyboard_numstar" /> - <key-style - latin:styleName="numPoundKeyStyle" - latin:code="35" - latin:keyIcon="@drawable/sym_bkeyboard_numpound" /> - <key-style - latin:styleName="numAltKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyIcon="@drawable/sym_bkeyboard_numalt" - latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> - <key-style - latin:styleName="numSpaceKeyStyle" - latin:code="@integer/key_space" - latin: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 deleted file mode 100644 index 60edcf2bd..000000000 --- a/java/res/xml-xlarge/kbd_phone.xml +++ /dev/null @@ -1,167 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<Keyboard - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="11.949%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" -> - <include - latin:keyboardLayout="@xml/kbd_key_styles" /> - <include - latin:keyboardLayout="@xml/kbd_numkey_styles" /> - <!-- This row is intentionally not marked as a top row --> - <Row> - <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyEdgeFlags="left" /> - <!-- To match one character label size with "Tab", I placed spaces around the char '-' - and '+'. --> - <Spacer - latin:horizontalGap="8.470%p" /> - <Key - latin:code="45" - latin:keyLabel=" - " - latin:keyWidth="8.042%p" /> - <Key - latin:code="43" - latin:keyLabel=" + " - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="8.479%p" /> - <Key - latin:keyStyle="num1KeyStyle" /> - <Key - latin:keyStyle="num2KeyStyle" /> - <Key - latin:keyStyle="num3KeyStyle" /> - <Spacer - latin:horizontalGap="9.360%p" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.804%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <Key - latin:keyStyle="moreKeyStyle" - latin:keyEdgeFlags="left" /> - <!-- To match one character label size with "More", I placed spaces around the char ',' - and '.'. --> - <Spacer - latin:horizontalGap="8.470%p" /> - <Key - latin:code="44" - latin:keyLabel=" , " - latin:keyWidth="8.042%p" /> - <Key - latin:code="46" - latin:keyLabel=" . " - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="8.479%p" /> - <Key - latin:keyStyle="num4KeyStyle" /> - <Key - latin:keyStyle="num5KeyStyle" /> - <Key - latin:keyStyle="num6KeyStyle" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="14.706%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <!-- To match one character label size with "More", I placed spaces around the char '(' - and ')'. --> - <!-- There is an empty area bellow the "More" key and left of the "(" key. To ignore - the touch event on the area, "(" is intentionally not marked as a left edge key. --> - <Spacer - latin:horizontalGap="20.427%p" /> - <Key - latin:code="40" - latin:keyLabel=" ( " - latin:keyWidth="8.042%p" /> - <Key - latin:code="41" - latin:keyLabel=" ) " - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="8.479%p" /> - <Key - latin:keyStyle="num7KeyStyle" /> - <Key - latin:keyStyle="num8KeyStyle" /> - <Key - latin:keyStyle="num9KeyStyle" /> - <!-- There is an empty area bellow the "Enter" key and right of the "9" key. To ignore - the touch event on the area, "9" is intentionally not marked as a right edge key. --> - </Row> - <!-- This row is intentionally not marked as a bottom row --> - <Row> - <!-- There is an empty area bellow the "More" key and left of the "space" key. To ignore - the touch event on the area, "space" is intentionally not marked as a left edge key. --> - <Spacer - latin:horizontalGap="12.340%p" /> - <switch> - <case latin:hasSettingsKey="true"> - <Key - latin:keyStyle="settingsKeyStyle" - latin:keyWidth="8.042%p" /> - </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> - </switch> - <Key - latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" - latin:keyWidth="16.084%p" /> - <Spacer - latin:horizontalGap="8.479%p" /> - <Key - latin:keyStyle="numStarKeyStyle" /> - <Key - latin:keyStyle="num0KeyStyle" /> - <Key - latin:keyStyle="numPoundKeyStyle" /> - <switch> - <case - latin:voiceKeyEnabled="true" - > - <Key - latin:keyStyle="micKeyStyle" - latin:keyWidth="8.042%p" /> - </case> - </switch> - <!-- There is an empty area bellow the "Enter" key and right of the "#" key. To ignore - the touch event on the area, "#" is intentionally not marked as a right edge key. --> - </Row> -</Keyboard> diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-xlarge/kbd_phone_symbols.xml deleted file mode 100644 index c388a4667..000000000 --- a/java/res/xml-xlarge/kbd_phone_symbols.xml +++ /dev/null @@ -1,179 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<Keyboard - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="11.949%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" -> - <include - latin:keyboardLayout="@xml/kbd_key_styles" /> - <include - latin:keyboardLayout="@xml/kbd_numkey_styles" /> - <!-- This row is intentionally not marked as a top row --> - <Row> - <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyEdgeFlags="left" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:code="45" - latin:keyLabel=" - " - latin:keyWidth="8.042%p" /> - <Key - latin:code="43" - latin:keyLabel=" + " - latin:keyWidth="8.042%p" /> - <Key - latin:code="44" - latin:keyLabel="@string/label_pause_key" - latin:keyWidth="8.042%p" /> - <!-- To match one character label size with "Tab" and "Pause, I placed spaces around the - char '-' and '+'. --> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="num1KeyStyle" /> - <Key - latin:keyStyle="num2KeyStyle" /> - <Key - latin:keyStyle="num3KeyStyle" /> - <Spacer - latin:horizontalGap="9.360%p" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.804%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <Key - latin:keyStyle="moreKeyStyle" - latin:keyEdgeFlags="left" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:code="44" - latin:keyLabel=" , " - latin:keyWidth="8.042%p" /> - <Key - latin:code="46" - latin:keyLabel=" . " - latin:keyWidth="8.042%p" /> - <Key - latin:code="59" - latin:keyLabel="@string/label_wait_key" - latin:keyWidth="8.042%p" /> - <!-- To match one character label size with "More" and "Wait", I placed spaces around the - char ',' and '.'. --> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="num4KeyStyle" /> - <Key - latin:keyStyle="num5KeyStyle" /> - <Key - latin:keyStyle="num6KeyStyle" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="14.706%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <!-- To match one character label size with "More" and etc., I placed spaces around the - char 'N', '(' and ')'. --> - <!-- There is an empty area bellow the "More" key and left of the "(" key. To ignore - the touch event on the area, "(" is intentionally not marked as a left edge key. --> - <Spacer - latin:horizontalGap="16.406%p" /> - <Key - latin:code="40" - latin:keyLabel=" ( " - latin:keyWidth="8.042%p" /> - <Key - latin:code="41" - latin:keyLabel=" ) " - latin:keyWidth="8.042%p" /> - <Key - latin:code="78" - latin:keyLabel=" N " - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="num7KeyStyle" /> - <Key - latin:keyStyle="num8KeyStyle" /> - <Key - latin:keyStyle="num9KeyStyle" /> - <!-- There is an empty area bellow the "Enter" key and right of the "9" key. To ignore - the touch event on the area, "9" is intentionally not marked as a right edge key. --> - </Row> - <!-- This row is intentionally not marked as a bottom row --> - <Row> - <!-- There is an empty area bellow the "More" key and left of the "space" key. To ignore - the touch event on the area, "space" is intentionally not marked as a left edge key. --> - <Spacer - latin:horizontalGap="8.362%p" /> - <switch> - <case latin:hasSettingsKey="true"> - <Key - latin:keyStyle="settingsKeyStyle" - latin:keyWidth="8.042%p" /> - </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> - </switch> - <Key - latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" - latin:keyWidth="24.127%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="numStarKeyStyle" /> - <Key - latin:keyStyle="num0KeyStyle" /> - <Key - latin:keyStyle="numPoundKeyStyle" /> - <switch> - <case - latin:voiceKeyEnabled="true" - > - <Key - latin:keyStyle="micKeyStyle" - latin:keyWidth="8.042%p" /> - </case> - </switch> - <!-- There is an empty area bellow the "Enter" key and right of the "#" key. To ignore - the touch event on the area, "#" is intentionally not marked as a right edge key. --> - </Row> -</Keyboard> diff --git a/java/res/xml-xlarge/kbd_qwerty_row4.xml b/java/res/xml-xlarge/kbd_qwerty_row4.xml deleted file mode 100644 index f36b61fc7..000000000 --- a/java/res/xml-xlarge/kbd_qwerty_row4.xml +++ /dev/null @@ -1,258 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<merge - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" -> - <!-- This row is intentionally not marked as a bottom row --> - <Row - latin:keyWidth="8.042%p" - > - <Spacer - latin:horizontalGap="8.362%p" /> - <switch> - <case latin:hasSettingsKey="true"> - <Key - latin:keyStyle="settingsKeyStyle" /> - </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> - </switch> - <switch> - <case - latin:languageCode="ru" - > - <switch> - <!-- TODO: implement logical OR for <case> attribute --> - <case - latin:mode="email" - > - <Key - latin:keyStyle="comKeyStyle" /> - </case> - <case - latin:mode="url" - > - <Key - latin:keyStyle="comKeyStyle" /> - </case> - <case - latin:imeAction="actionSearch" - > - <Key - latin:keyLabel=":" - latin:manualTemporaryUpperCaseCode="43" - latin:keyHintIcon="@drawable/key_hint_plus_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo" - latin:popupCharacters="+" /> - </case> - <default> - <Key - latin:keyStyle="smileyKeyStyle" /> - </default> - </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="\@" /> - </case> - <case - latin:mode="url" - > - <Key - latin:keyLabel="-" - latin:manualTemporaryUpperCaseCode="95" - latin:keyHintIcon="@drawable/key_hint_underline_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo" - latin:popupCharacters="_" /> - </case> - <default> - <Key - latin:keyLabel="/" - latin:manualTemporaryUpperCaseCode="64" - latin:keyHintIcon="@drawable/key_hint_at_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo" - latin:popupCharacters="\@" /> - </default> - </switch> - </case> - <!-- not languageCode="ru" --> - <default> - <switch> - <case - latin:mode="url" - > - <Key - latin:keyStyle="comKeyStyle" - latin:keyWidth="16.084%p" /> - </case> - <default> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyStyle="comKeyStyle" /> - </case> - <case - latin:imeAction="actionSearch" - > - <Key - latin:keyLabel=":" - latin:manualTemporaryUpperCaseCode="43" - latin:keyHintIcon="@drawable/key_hint_plus_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo" - latin:popupCharacters="+" /> - </case> - <default> - <Key - latin:keyStyle="smileyKeyStyle" /> - </default> - </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="\@" /> - </case> - <default> - <Key - latin:keyLabel="/" - latin:manualTemporaryUpperCaseCode="64" - latin:keyHintIcon="@drawable/key_hint_at_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo" - latin:popupCharacters="\@" /> - </default> - </switch> - </default> - </switch> - </default> - </switch> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyWidth="37.454%p" /> - <switch> - <case - latin:languageCode="ru" - > - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="-" /> - </case> - <case - latin:mode="url" - > - <Key - latin:keyLabel="/" - latin:manualTemporaryUpperCaseCode="58" - latin:keyHintIcon="@drawable/key_hint_colon_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo" - latin:popupCharacters=":" /> - </case> - <default> - <Key - latin:keyLabel="\?" - latin:manualTemporaryUpperCaseCode="95" - latin:keyHintIcon="@drawable/key_hint_underline_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo" - latin:popupCharacters="_" /> - </default> - </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="_" /> - </case> - <default> - <Key - latin:keyLabel="!" - latin:manualTemporaryUpperCaseCode="39" - latin:keyHintIcon="@drawable/key_hint_quote_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo" - latin:popupCharacters="\'" /> - </default> - </switch> - </case> - <!-- not languageCode="ru" --> - <default> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="-" /> - </case> - <case - latin:mode="url" - > - <Key - latin:keyLabel="/" - latin:manualTemporaryUpperCaseCode="58" - latin:keyHintIcon="@drawable/key_hint_colon_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo" - latin:popupCharacters=":" /> - </case> - <default> - <Key - latin:keyLabel="\'" - latin:manualTemporaryUpperCaseCode="34" - latin:keyHintIcon="@drawable/key_hint_quote_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo" - latin:popupCharacters=""" /> - </default> - </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="_" /> - </case> - <default> - <Key - latin:keyLabel="-" - latin:manualTemporaryUpperCaseCode="95" - latin:keyHintIcon="@drawable/key_hint_underline_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo" - latin:popupCharacters="_" /> - </default> - </switch> - </default> - </switch> - <switch> - <case - latin:voiceKeyEnabled="true" - > - <Key - latin:keyStyle="micKeyStyle" /> - </case> - </switch> - </Row> -</merge> diff --git a/java/res/xml/kbd_currency_key_styles.xml b/java/res/xml/kbd_currency_key_styles.xml index b30dd6451..9d3bb4725 100644 --- a/java/res/xml/kbd_currency_key_styles.xml +++ b/java/res/xml/kbd_currency_key_styles.xml @@ -27,229 +27,59 @@ > <key-style latin:styleName="currencyKeyStyle" - latin:keyLabel="$" - latin:popupCharacters="@string/alternates_for_currency_dollar" /> + latin:keyLabel="$" /> </case> <!-- Countries using Euro currency, 23 countries as for January 2011. --> - <!-- 1. Andorra (ca_AD, ca_ES) --> - <case - latin:languageCode="ca" - latin:countryCode="" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 2. Austria (de_AT) --> -<!-- <case--> -<!-- latin:countryCode="AT"--> -<!-- >--> -<!-- <key-style--> -<!-- latin:styleName="currencyKeyStyle"--> -<!-- latin:keyLabel="€"--> -<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />--> -<!-- </case>--> - <!-- 3. Belgium (nl_BE, fr_BE, de_BE) --> -<!-- <case--> -<!-- latin:countryCode="BE"--> -<!-- >--> -<!-- <key-style--> -<!-- latin:styleName="currencyKeyStyle"--> -<!-- latin:keyLabel="€"--> -<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />--> -<!-- </case>--> - <!-- 4. Cyprus (el_CY, tr_CY) --> - <case - latin:countryCode="CY" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 5. Estonia (et_EE) --> -<!-- <case--> -<!-- latin:languageCode="et"--> -<!-- latin:countryCode=""--> -<!-- >--> -<!-- <key-style--> -<!-- latin:styleName="currencyKeyStyle"--> -<!-- latin:keyLabel="€"--> -<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />--> -<!-- </case>--> - <!-- 6. Finland (fi_FI, sv_FI) --> - <case - latin:languageCode="fi" - latin:countryCode="" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 7. France (fr_FR) --> - <case - latin:languageCode="fr" - latin:countryCode="" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 8. Germany (de_DE) --> - <case - latin:languageCode="de" - latin:countryCode="" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 9. Greece (el_GR) --> - <case - latin:languageCode="el" - latin:countryCode="" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 10. Ireland (ga_IE, en_IE) --> - <case - latin:countryCode="IE" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 11. Italy (it_IT) --> - <case - latin:languageCode="it" - latin:countryCode="" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 12. Kosovo --> -<!-- <case--> -<!-- latin:countryCode="XK"--> -<!-- >--> -<!-- <key-style--> -<!-- latin:styleName="currencyKeyStyle"--> -<!-- latin:keyLabel="€"--> -<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />--> -<!-- </case>--> - <!-- 13. Luxembourg (lb_LU, fr_LU, de_LU) --> - <case - latin:countryCode="LU" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 14. Malta (mt_MT, en_MT) --> - <case - latin:countryCode="MT" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 15. Monaco (fr_MO) --> -<!-- <case--> -<!-- latin:countryCode="MO"--> -<!-- >--> -<!-- <key-style--> -<!-- latin:styleName="currencyKeyStyle"--> -<!-- latin:keyLabel="€"--> -<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />--> -<!-- </case>--> - <!-- 16. Montenegro (sla_ME) --> - <case - latin:countryCode="ME" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 17. Netherlands (nl_NL) --> - <case - latin:languageCode="nl" - latin:countryCode="" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 18. Portugal (pt_PT) --> - <case - latin:languageCode="pt" - latin:countryCode="" - > - <key-style - latin:styleName="currencyKeyStyle" - latin:keyLabel="€" - latin:popupCharacters="@string/alternates_for_currency_euro" /> - </case> - <!-- 19. San Marino (it_SM) --> -<!-- <case--> -<!-- latin:countryCode="SM"--> -<!-- >--> -<!-- <key-style--> -<!-- latin:styleName="currencyKeyStyle"--> -<!-- latin:keyLabel="€"--> -<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />--> -<!-- </case>--> - <!-- 20. Slovakia (sk_SK) --> + 1. Andorra (ca_AD, ca_ES) + 2. Austria (de_AT) + 3. Belgium (nl_BE, fr_BE, de_BE) + 4. Cyprus (el_CY, tr_CY) + 5. Estonia (et_EE) + 6. Finland (fi_FI, sv_FI) + 7. France (fr_FR) + 8. Germany (de_DE) + 9. Greece (el_GR) + 10. Ireland (ga_IE, en_IE) + 11. Italy (it_IT) + 12. Kosovo (??_XK) ?? + 13. Luxembourg (lb_LU, fr_LU, de_LU) + 14. Malta (mt_MT, en_MT) + 15. Monaco (fr_MO) + 16. Montenegro (sla_ME) + 17. Netherlands (nl_NL) + 18. Portugal (pt_PT) + 19. San Marino (it_SM) + 20. Slovakia (sk_SK) + 21. Slovenia (sl_SI) + 22. Spain (es_ES, ca_ES) + 23. Vatican City (it_VA) + --> + <!-- Note: Some locales may not have country code, and it it supposed to indicate the + country where the language originally/mainly spoken. --> <case - latin:languageCode="sk" - latin:countryCode="" + latin:localeCode="de|es|el|fi|fr|it|nl|sk|sl|pt_PT" > <key-style latin:styleName="currencyKeyStyle" latin:keyLabel="€" latin:popupCharacters="@string/alternates_for_currency_euro" /> </case> - <!-- 21. Slovenia (sl_SI) --> <case - latin:languageCode="sl" - latin:countryCode="" + latin:languageCode="ca|et|lb|mt|sla" > <key-style latin:styleName="currencyKeyStyle" latin:keyLabel="€" latin:popupCharacters="@string/alternates_for_currency_euro" /> </case> - <!-- 22. Spain (es_ES, ca_ES) --> <case - latin:languageCode="es" - latin:countryCode="" + latin:countryCode="AD|AT|BE|CY|EE|FI|FR|DE|GR|IE|IT|XK|LU|MT|MO|ME|NL|PT|SM|SK|SI|ES|VA" > <key-style latin:styleName="currencyKeyStyle" latin:keyLabel="€" latin:popupCharacters="@string/alternates_for_currency_euro" /> </case> - <!-- 23. Vatican City (it_VA) --> -<!-- <case--> -<!-- latin:countryCode="VA"--> -<!-- >--> -<!-- <key-style--> -<!-- latin:styleName="currencyKeyStyle"--> -<!-- latin:keyLabel="€"--> -<!-- latin:popupCharacters="@string/alternates_for_currency_euro" />--> -<!-- </case>--> <!-- United Kingdom --> <case latin:countryCode="GB" @@ -266,4 +96,4 @@ latin:popupCharacters="@string/alternates_for_currency_dollar" /> </default> </switch> -</merge>
\ No newline at end of file +</merge> diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml index d4d25d4a2..63d519c4c 100644 --- a/java/res/xml/kbd_key_styles.xml +++ b/java/res/xml/kbd_key_styles.xml @@ -22,188 +22,49 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <!-- Base key style for the functional key --> + <key-style + latin:styleName="functionalKeyStyle" + latin:isFunctional="true" /> + <!-- Base key style for the key which may have settings key as popup key --> <switch> - <case - latin:colorScheme="white" - > - <key-style - latin:styleName="functionalKeyStyle" - latin:isFunctional="true" /> - </case> <case - latin:colorScheme="black" + latin:clobberSettingsKey="true" > <key-style - latin:styleName="functionalKeyStyle" /> + latin:styleName="settingsPopupStyle" + latin:parentStyle="functionalKeyStyle" /> </case> - </switch> - <!-- Base key style for the key which may have settings key as popup key --> - <switch> <case + latin:clobberSettingsKey="false" latin:hasSettingsKey="true" > <key-style latin:styleName="settingsPopupStyle" latin:parentStyle="functionalKeyStyle" /> </case> - <!-- latin:hasSettingsKey="false" --> + <!-- clobberSettingsKey="false" and hasSettingsKey="false" --> <default> <key-style latin:styleName="settingsPopupStyle" - latin:keyHintIcon="@drawable/hint_popup" - latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings" + latin:keyLabelOption="popupHint" + latin:popupCharacters="\@icon/5|\@integer/key_settings" latin:parentStyle="functionalKeyStyle" /> </default> </switch> <!-- Functional key styles --> - <switch> - <case - latin:colorScheme="white" - > - <key-style - latin:styleName="shiftKeyStyle" - latin:code="@integer/key_shift" - latin:keyIcon="@drawable/sym_keyboard_shift" - latin:shiftedIcon="@drawable/sym_keyboard_shift_locked" - latin:iconPreview="@drawable/sym_keyboard_feedback_shift" - latin:parentStyle="functionalKeyStyle" - latin:isSticky="true" /> - <key-style - latin:styleName="deleteKeyStyle" - latin:code="@integer/key_delete" - latin:keyIcon="@drawable/sym_keyboard_delete" - latin:iconPreview="@drawable/sym_keyboard_feedback_delete" - latin:parentStyle="functionalKeyStyle" - latin:isRepeatable="true" /> - <switch> - <!-- When this qwerty keyboard has no voice key but voice key is enabled, then - symbol keyboard will have mic key. That means we should use "?123mic" key - here. --> - <case - latin:voiceKeyEnabled="true" - latin:hasVoiceKey="false" - > - <key-style - latin:styleName="toSymbolKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyIcon="@drawable/sym_keyboard_123_mic" - latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic" - latin:parentStyle="functionalKeyStyle" /> - </case> - <default> - <key-style - latin:styleName="toSymbolKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_symbol_key" - latin:parentStyle="functionalKeyStyle" /> - </default> - </switch> - <key-style - latin:styleName="settingsKeyStyle" - latin:code="@integer/key_settings" - latin:keyIcon="@drawable/sym_keyboard_settings" - latin:iconPreview="@drawable/sym_keyboard_feedback_settings" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="spaceKeyStyle" - latin:code="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="tabKeyStyle" - latin:code="@integer/key_tab" - latin:keyIcon="@drawable/sym_keyboard_tab" - latin:iconPreview="@drawable/sym_keyboard_feedback_tab" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="micKeyStyle" - latin:code="@integer/key_shortcut" - latin:keyIcon="@drawable/sym_keyboard_mic" - latin:iconPreview="@drawable/sym_keyboard_feedback_mic" - latin:parentStyle="settingsPopupStyle" /> - <!-- Note: This key style is not for functional tab key. This is used for the tab key - which is laid out as normal letter key. --> - <key-style - latin:styleName="nonSpecialBackgroundTabKeyStyle" - latin:code="@integer/key_tab" - latin:keyIcon="@drawable/sym_keyboard_tab" - latin:iconPreview="@drawable/sym_keyboard_feedback_tab" /> - </case> - <case - latin:colorScheme="black" - > - <key-style - latin:styleName="shiftKeyStyle" - latin:code="@integer/key_shift" - latin:keyIcon="@drawable/sym_bkeyboard_shift" - latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked" - latin:iconPreview="@drawable/sym_keyboard_feedback_shift" - latin:parentStyle="functionalKeyStyle" - latin:isSticky="true" /> - <key-style - latin:styleName="deleteKeyStyle" - latin:code="@integer/key_delete" - latin:keyIcon="@drawable/sym_bkeyboard_delete" - latin:iconPreview="@drawable/sym_keyboard_feedback_delete" - latin:parentStyle="functionalKeyStyle" - latin:isRepeatable="true" /> - <switch> - <!-- When this qwerty keyboard has no voice key but voice key is enabled, then - symbol keyboard will have mic key. That means we should use "?123mic" key - here. --> - <case - latin:voiceKeyEnabled="true" - latin:hasVoiceKey="false" - > - <key-style - latin:styleName="toSymbolKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyIcon="@drawable/sym_bkeyboard_123_mic" - latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic" - latin:parentStyle="functionalKeyStyle" /> - </case> - <default> - <key-style - latin:styleName="toSymbolKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_symbol_key" - latin:parentStyle="functionalKeyStyle" /> - </default> - </switch> - <key-style - latin:styleName="settingsKeyStyle" - latin:code="@integer/key_settings" - latin:keyIcon="@drawable/sym_bkeyboard_settings" - latin:iconPreview="@drawable/sym_keyboard_feedback_settings" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="spaceKeyStyle" - latin:code="@integer/key_space" - latin:keyIcon="@drawable/sym_bkeyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="tabKeyStyle" - latin:code="@integer/key_tab" - latin:keyIcon="@drawable/sym_bkeyboard_tab" - latin:iconPreview="@drawable/sym_keyboard_feedback_tab" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="micKeyStyle" - latin:code="@integer/key_shortcut" - latin:keyIcon="@drawable/sym_bkeyboard_mic" - latin:iconPreview="@drawable/sym_keyboard_feedback_mic" - latin:parentStyle="settingsPopupStyle" /> - <!-- Note: This key style is not for functional tab key. This is used for the tab key - which is laid out as normal letter key. --> - <key-style - latin:styleName="nonSpecialBackgroundTabKeyStyle" - latin:code="@integer/key_tab" - latin:keyIcon="@drawable/sym_bkeyboard_tab" - latin:iconPreview="@drawable/sym_keyboard_feedback_tab" /> - </case> - </switch> + <key-style + latin:styleName="shiftKeyStyle" + latin:code="@integer/key_shift" + latin:keyIcon="iconShiftKey" + latin:keyIconShifted="iconShiftedShiftKey" + latin:parentStyle="functionalKeyStyle" + latin:isSticky="true" /> + <key-style + latin:styleName="deleteKeyStyle" + latin:code="@integer/key_delete" + latin:keyIcon="iconDeleteKey" + latin:parentStyle="functionalKeyStyle" + latin:isRepeatable="true" /> <!-- Return key style --> <switch> <case @@ -245,52 +106,77 @@ <case latin:imeAction="actionSearch" > - <switch> - <case - latin:colorScheme="white" - > - <key-style - latin:styleName="returnKeyStyle" - latin:code="@integer/key_return" - latin:keyIcon="@drawable/sym_keyboard_search" - latin:iconPreview="@drawable/sym_keyboard_feedback_search" - latin:parentStyle="functionalKeyStyle" /> - </case> - <case - latin:colorScheme="black" - > - <key-style - latin:styleName="returnKeyStyle" - latin:code="@integer/key_return" - latin:keyIcon="@drawable/sym_bkeyboard_search" - latin:iconPreview="@drawable/sym_keyboard_feedback_search" - latin:parentStyle="functionalKeyStyle" /> - </case> - </switch> + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyIcon="iconSearchKey" + latin:parentStyle="functionalKeyStyle" /> + </case> + <default> + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyIcon="iconReturnKey" + latin:parentStyle="functionalKeyStyle" /> + </default> + </switch> + <key-style + latin:styleName="spaceKeyStyle" + latin:code="@integer/key_space" + latin:keyIconPreview="iconPreviewSpaceKey" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="smileyKeyStyle" + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyLabelOption="popupHint" + latin:popupCharacters="@string/alternates_for_smiley" + latin:maxPopupKeyboardColumn="5" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="shortcutKeyStyle" + latin:code="@integer/key_shortcut" + latin:keyIcon="iconShortcutKey" + latin:keyIconPreview="iconPreviewShortcutKey" + latin:parentStyle="settingsPopupStyle" /> + <key-style + latin:styleName="settingsKeyStyle" + latin:code="@integer/key_settings" + latin:keyIcon="iconSettingsKey" + latin:keyIconPreview="iconPreviewSettingsKey" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="tabKeyStyle" + latin:code="@integer/key_tab" + latin:keyIcon="iconTabKey" + latin:keyIconPreview="iconPreviewTabKey" + latin:parentStyle="functionalKeyStyle" /> + <!-- Note: This key style is not for functional tab key. This is used for the tab key which is + laid out as normal letter key. --> + <key-style + latin:styleName="nonSpecialBackgroundTabKeyStyle" + latin:code="@integer/key_tab" + latin:keyIcon="iconTabKey" + latin:keyIconPreview="iconPreviewTabKey" /> + <switch> + <!-- When this qwerty keyboard has no voice key but voice key is enabled, then symbol + keyboard will have mic key. That means we should use "?123mic" key here. --> + <case + latin:voiceKeyEnabled="true" + latin:hasVoiceKey="false" + > + <key-style + latin:styleName="toSymbolKeyStyle" + latin:code="@integer/key_switch_alpha_symbol" + latin:keyIcon="iconToSymbolKeyWithShortcut" + latin:parentStyle="functionalKeyStyle" /> </case> <default> - <switch> - <case - latin:colorScheme="white" - > - <key-style - latin:styleName="returnKeyStyle" - latin:code="@integer/key_return" - latin:keyIcon="@drawable/sym_keyboard_return" - latin:iconPreview="@drawable/sym_keyboard_feedback_return" - latin:parentStyle="functionalKeyStyle" /> - </case> - <case - latin:colorScheme="black" - > - <key-style - latin:styleName="returnKeyStyle" - latin:code="@integer/key_return" - latin:keyIcon="@drawable/sym_bkeyboard_return" - latin:iconPreview="@drawable/sym_keyboard_feedback_return" - latin:parentStyle="functionalKeyStyle" /> - </case> - </switch> + <key-style + latin:styleName="toSymbolKeyStyle" + latin:code="@integer/key_switch_alpha_symbol" + latin:keyLabel="@string/label_to_symbol_key" + latin:parentStyle="functionalKeyStyle" /> </default> </switch> <key-style @@ -304,14 +190,6 @@ latin:keyLabel="@string/label_alt_key" latin:parentStyle="functionalKeyStyle" latin:isSticky="true" /> - <key-style - latin:styleName="smileyKeyStyle" - latin:keyLabel=":-)" - latin:keyOutputText=":-) " - latin:keyHintIcon="@drawable/hint_popup" - latin:popupCharacters="@string/alternates_for_smiley" - latin:maxPopupKeyboardColumn="5" - latin:parentStyle="functionalKeyStyle" /> <switch> <case latin:passwordInput="true" @@ -335,4 +213,4 @@ latin:parentStyle="functionalKeyStyle" /> </default> </switch> -</merge>
\ No newline at end of file +</merge> diff --git a/java/res/xml/kbd_number.xml b/java/res/xml/kbd_number.xml index 2556f6830..429b81846 100644 --- a/java/res/xml/kbd_number.xml +++ b/java/res/xml/kbd_number.xml @@ -20,95 +20,122 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" latin:keyWidth="26.67%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> - <!-- TODO: Should add number password layout just like the xlarge layout does. --> + <include + latin:keyboardLayout="@xml/kbd_numkey_styles" /> <switch> <case - latin:colorScheme="white" - > - <key-style - latin:styleName="numSpaceKeyStyle" - latin:code="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - </case> - <case - latin:colorScheme="black" + latin:passwordInput="true" > - <key-style - latin:styleName="numSpaceKeyStyle" - latin:code="@integer/key_space" - latin:keyIcon="@drawable/sym_bkeyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> + <Row + latin:rowEdgeFlags="top" + > + <Key + latin:keyStyle="num1KeyStyle" + latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="num2KeyStyle" /> + <Key + latin:keyStyle="num3KeyStyle" /> + </Row> + <Row> + <Key + latin:keyStyle="num4KeyStyle" + latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="num5KeyStyle" /> + <Key + latin:keyStyle="num6KeyStyle" /> + </Row> + <Row> + <Key + latin:keyStyle="num7KeyStyle" + latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="num8KeyStyle" /> + <Key + latin:keyStyle="num9KeyStyle" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:rowEdgeFlags="bottom" + > + <Spacer /> + <Key + latin:keyStyle="num0KeyStyle" /> + <Spacer /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> </case> + <!-- latin:passwordInput="false" --> + <default> + <Row + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel="1" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="2" /> + <Key + latin:keyLabel="3" /> + <Key + latin:keyLabel="-" + latin:keyStyle="functionalKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyLabel="4" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="5" /> + <Key + latin:keyLabel="6" /> + <Key + latin:keyLabel="," + latin:keyStyle="functionalKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyLabel="7" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="8" /> + <Key + latin:keyLabel="9" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:rowEdgeFlags="bottom" + > + <Key + latin:keyStyle="numSpaceKeyStyle" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="0" /> + <Key + latin:keyLabel="." /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </Row> + </default> </switch> - <Row - latin:rowEdgeFlags="top" - > - <Key - latin:keyLabel="1" - latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="2" /> - <Key - latin:keyLabel="3" /> - <Key - latin:keyLabel="-" - latin:keyStyle="functionalKeyStyle" - latin:keyWidth="20%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <Key - latin:keyLabel="4" - latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="5" /> - <Key - latin:keyLabel="6" /> - <Key - latin:keyLabel="," - latin:keyStyle="functionalKeyStyle" - latin:keyWidth="20%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <Key - latin:keyLabel="7" - latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="8" /> - <Key - latin:keyLabel="9" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="20%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row - latin:rowEdgeFlags="bottom" - > - <Key - latin:keyStyle="numSpaceKeyStyle" - latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="0" /> - <Key - latin:keyLabel="." /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="20%p" - latin:keyEdgeFlags="right" /> - </Row> </Keyboard> diff --git a/java/res/xml/kbd_numkey_styles.xml b/java/res/xml/kbd_numkey_styles.xml index 2f9ae325a..3a26a022b 100644 --- a/java/res/xml/kbd_numkey_styles.xml +++ b/java/res/xml/kbd_numkey_styles.xml @@ -21,130 +21,75 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <switch> - <case - latin:colorScheme="white" - > - <key-style - latin:styleName="num0KeyStyle" - latin:code="48" - latin:keyIcon="@drawable/sym_keyboard_num0" /> - <key-style - latin:styleName="num1KeyStyle" - latin:code="49" - latin:keyIcon="@drawable/sym_keyboard_num1" /> - <key-style - latin:styleName="num2KeyStyle" - latin:code="50" - latin:keyIcon="@drawable/sym_keyboard_num2" /> - <key-style - latin:styleName="num3KeyStyle" - latin:code="51" - latin:keyIcon="@drawable/sym_keyboard_num3" /> - <key-style - latin:styleName="num4KeyStyle" - latin:code="52" - latin:keyIcon="@drawable/sym_keyboard_num4" /> - <key-style - latin:styleName="num5KeyStyle" - latin:code="53" - latin:keyIcon="@drawable/sym_keyboard_num5" /> - <key-style - latin:styleName="num6KeyStyle" - latin:code="54" - latin:keyIcon="@drawable/sym_keyboard_num6" /> - <key-style - latin:styleName="num7KeyStyle" - latin:code="55" - latin:keyIcon="@drawable/sym_keyboard_num7" /> - <key-style - latin:styleName="num8KeyStyle" - latin:code="56" - latin:keyIcon="@drawable/sym_keyboard_num8" /> - <key-style - latin:styleName="num9KeyStyle" - latin:code="57" - latin:keyIcon="@drawable/sym_keyboard_num9" /> - <key-style - latin:styleName="numStarKeyStyle" - latin:code="42" - latin:keyIcon="@drawable/sym_keyboard_numstar" /> - <key-style - latin:styleName="numPoundKeyStyle" - latin:code="35" - latin:keyIcon="@drawable/sym_keyboard_numpound" /> - <key-style - latin:styleName="numAltKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyIcon="@drawable/sym_keyboard_numalt" - latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> - <key-style - latin:styleName="numSpaceKeyStyle" - latin:code="@integer/key_space" - latin:keyIcon="@drawable/sym_keyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - </case> - <case - latin:colorScheme="black" - > - <key-style - latin:styleName="num0KeyStyle" - latin:code="48" - latin:keyIcon="@drawable/sym_bkeyboard_num0" /> - <key-style - latin:styleName="num1KeyStyle" - latin:code="49" - latin:keyIcon="@drawable/sym_bkeyboard_num1" /> - <key-style - latin:styleName="num2KeyStyle" - latin:code="50" - latin:keyIcon="@drawable/sym_bkeyboard_num2" /> - <key-style - latin:styleName="num3KeyStyle" - latin:code="51" - latin:keyIcon="@drawable/sym_bkeyboard_num3" /> - <key-style - latin:styleName="num4KeyStyle" - latin:code="52" - latin:keyIcon="@drawable/sym_bkeyboard_num4" /> - <key-style - latin:styleName="num5KeyStyle" - latin:code="53" - latin:keyIcon="@drawable/sym_bkeyboard_num5" /> - <key-style - latin:styleName="num6KeyStyle" - latin:code="54" - latin:keyIcon="@drawable/sym_bkeyboard_num6" /> - <key-style - latin:styleName="num7KeyStyle" - latin:code="55" - latin:keyIcon="@drawable/sym_bkeyboard_num7" /> - <key-style - latin:styleName="num8KeyStyle" - latin:code="56" - latin:keyIcon="@drawable/sym_bkeyboard_num8" /> - <key-style - latin:styleName="num9KeyStyle" - latin:code="57" - latin:keyIcon="@drawable/sym_bkeyboard_num9" /> - <key-style - latin:styleName="numStarKeyStyle" - latin:code="42" - latin:keyIcon="@drawable/sym_bkeyboard_numstar" /> - <key-style - latin:styleName="numPoundKeyStyle" - latin:code="35" - latin:keyIcon="@drawable/sym_bkeyboard_numpound" /> - <key-style - latin:styleName="numAltKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyIcon="@drawable/sym_bkeyboard_numalt" - latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> - <key-style - latin:styleName="numSpaceKeyStyle" - latin:code="@integer/key_space" - latin:keyIcon="@drawable/sym_bkeyboard_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - </case> - </switch> + <key-style + latin:styleName="num0KeyStyle" + latin:code="48" + latin:keyIcon="iconNum0Key" /> + <key-style + latin:styleName="num1KeyStyle" + latin:code="49" + latin:keyIcon="iconNum1Key" /> + <key-style + latin:styleName="num2KeyStyle" + latin:code="50" + latin:keyIcon="iconNum2Key" /> + <key-style + latin:styleName="num3KeyStyle" + latin:code="51" + latin:keyIcon="iconNum3Key" /> + <key-style + latin:styleName="num4KeyStyle" + latin:code="52" + latin:keyIcon="iconNum4Key" /> + <key-style + latin:styleName="num5KeyStyle" + latin:code="53" + latin:keyIcon="iconNum5Key" /> + <key-style + latin:styleName="num6KeyStyle" + latin:code="54" + latin:keyIcon="iconNum6Key" /> + <key-style + latin:styleName="num7KeyStyle" + latin:code="55" + latin:keyIcon="iconNum7Key" /> + <key-style + latin:styleName="num8KeyStyle" + latin:code="56" + latin:keyIcon="iconNum8Key" /> + <key-style + latin:styleName="num9KeyStyle" + latin:code="57" + latin:keyIcon="iconNum9Key" /> + <key-style + latin:styleName="numLabelStyle" + latin:keyLabelOption="fontFixedWidth|followKeyLetterRatio" /> + <key-style + latin:styleName="numLabelFunctionalStyle" + latin:keyLabelOption="fontFixedWidth|followKeyLetterRatio" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="numStarKeyStyle" + latin:code="42" + latin:keyLabel="\uff0a" + latin:parentStyle="numLabelStyle" /> + <key-style + latin:styleName="numPoundKeyStyle" + latin:keyLabel="#" + latin:parentStyle="numLabelStyle" /> + <key-style + latin:styleName="numSwitchToAltKeyStyle" + latin:code="@integer/key_switch_alpha_symbol" + latin:keyLabel="@string/label_to_phone_symbols_key" + latin:parentStyle="numLabelStyle" /> + <key-style + latin:styleName="numSwitchToNumericKeyStyle" + latin:code="@integer/key_switch_alpha_symbol" + latin:keyLabel="@string/label_to_phone_numeric_key" + latin:parentStyle="numLabelStyle" /> + <key-style + latin:styleName="numSpaceKeyStyle" + latin:code="@integer/key_space" + latin:keyIcon="iconSpaceKey" + latin:keyIconPreview="iconPreviewSpaceKey" /> </merge> diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml index ca591c72d..794528c2b 100644 --- a/java/res/xml/kbd_phone.xml +++ b/java/res/xml/kbd_phone.xml @@ -20,15 +20,7 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" latin:keyWidth="26.67%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> @@ -46,8 +38,8 @@ latin:keyStyle="num3KeyStyle" /> <Key latin:keyLabel="-" - latin:keyStyle="functionalKeyStyle" - latin:keyWidth="20%p" + latin:keyStyle="numLabelFunctionalStyle" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -60,8 +52,8 @@ latin:keyStyle="num6KeyStyle" /> <Key latin:keyLabel="." - latin:keyStyle="functionalKeyStyle" - latin:keyWidth="20%p" + latin:keyStyle="numLabelFunctionalStyle" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -74,14 +66,14 @@ latin:keyStyle="num9KeyStyle" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="20%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row latin:rowEdgeFlags="bottom" > <Key - latin:keyStyle="numAltKeyStyle" + latin:keyStyle="numSwitchToAltKeyStyle" latin:keyEdgeFlags="left" /> <Key latin:keyStyle="num0KeyStyle" /> @@ -89,7 +81,7 @@ latin:keyStyle="numSpaceKeyStyle" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="20%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml index 99db23ef1..1405c3c21 100644 --- a/java/res/xml/kbd_phone_symbols.xml +++ b/java/res/xml/kbd_phone_symbols.xml @@ -20,15 +20,7 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" latin:keyWidth="26.67%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> @@ -39,20 +31,24 @@ > <Key latin:keyLabel="(" + latin:keyStyle="numLabelStyle" latin:keyEdgeFlags="left" /> <Key - latin:keyLabel="/" /> + latin:keyLabel="/" + latin:keyStyle="numLabelStyle" /> <Key - latin:keyLabel=")" /> + latin:keyLabel=")" + latin:keyStyle="numLabelStyle" /> <Key latin:keyLabel="-" - latin:keyStyle="functionalKeyStyle" - latin:keyWidth="20%p" + latin:keyStyle="numLabelFunctionalStyle" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> <Key latin:keyLabel="N" + latin:keyStyle="numLabelStyle" latin:keyEdgeFlags="left" /> <!-- Pause is a comma. Check PhoneNumberUtils.java to see if this has changed. --> @@ -60,11 +56,12 @@ latin:code="44" latin:keyLabel="Pause" /> <Key - latin:keyLabel="," /> + latin:keyLabel="," + latin:keyStyle="numLabelStyle" /> <Key latin:keyLabel="." - latin:keyStyle="functionalKeyStyle" - latin:keyWidth="20%p" + latin:keyStyle="numLabelFunctionalStyle" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -76,26 +73,27 @@ latin:code="59" latin:keyLabel="Wait" /> <Key - latin:keyStyle="numPoundKeyStyle" /> + latin:keyLabel="#" + latin:keyStyle="numLabelStyle" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="20%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row latin:rowEdgeFlags="bottom" > <Key - latin:code="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_numeric_key" + latin:keyStyle="numSwitchToNumericKeyStyle" latin:keyEdgeFlags="left" /> <Key - latin:keyLabel="+" /> + latin:keyLabel="+" + latin:keyStyle="numLabelStyle" /> <Key latin:keyStyle="numSpaceKeyStyle" /> <Key latin:keyStyle="returnKeyStyle" - latin:keyWidth="20%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml index fd43740a7..40917b921 100644 --- a/java/res/xml/kbd_qwerty.xml +++ b/java/res/xml/kbd_qwerty.xml @@ -20,17 +20,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" - latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" latin:keyboardLocale="en_GB,en_US" > <include - latin:keyboardLayout="@xml/kbd_qwerty_rows" /> + latin:keyboardLayout="@xml/kbd_rows_qwerty" /> </Keyboard> diff --git a/java/res/xml/kbd_qwerty_f1.xml b/java/res/xml/kbd_qwerty_f1.xml index d0e2884e1..51b9800e0 100644 --- a/java/res/xml/kbd_qwerty_f1.xml +++ b/java/res/xml/kbd_qwerty_f1.xml @@ -23,39 +23,92 @@ > <switch> <case - latin:mode="url" + latin:hasSettingsKey="true" > - <Key - latin:keyLabel="/" - latin:keyStyle="settingsPopupStyle" /> - </case> - <case - latin:mode="email" - > - <Key - latin:keyLabel="\@" - latin:keyStyle="settingsPopupStyle" /> - </case> - <default> <switch> <case - latin:hasVoiceKey="true" + latin:mode="url" > <Key - latin:keyStyle="micKeyStyle" /> + latin:keyLabel="/" + latin:keyWidth="9.2%p" + latin:keyStyle="settingsPopupStyle" /> </case> - <!-- latin:hasVoiceKey="false" --> <case - latin:mode="web" + latin:mode="email" > <Key - latin:keyLabel="." + latin:keyLabel="\@" + latin:keyWidth="9.2%p" latin:keyStyle="settingsPopupStyle" /> </case> <default> + <switch> + <case + latin:hasVoiceKey="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" + latin:keyWidth="9.2%p" /> + </case> + <!-- latin:hasVoiceKey="false" --> + <case + latin:navigateAction="true" + > + <Key + latin:keyLabel="." + latin:keyWidth="9.2%p" + latin:keyStyle="settingsPopupStyle" /> + </case> + <default> + <Key + latin:keyLabel="," + latin:keyWidth="9.2%p" + latin:keyStyle="settingsPopupStyle" /> + </default> + </switch> + </default> + </switch> + </case> + <!-- hasSettingsKey="false" --> + <default> + <switch> + <case + latin:mode="url" + > + <Key + latin:keyLabel="/" + latin:keyStyle="settingsPopupStyle" /> + </case> + <case + latin:mode="email" + > <Key - latin:keyLabel="," + latin:keyLabel="\@" latin:keyStyle="settingsPopupStyle" /> + </case> + <default> + <switch> + <case + latin:hasVoiceKey="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" /> + </case> + <!-- latin:hasVoiceKey="false" --> + <case + latin:navigateAction="true" + > + <Key + latin:keyLabel="." + latin:keyStyle="settingsPopupStyle" /> + </case> + <default> + <Key + latin:keyLabel="," + latin:keyStyle="settingsPopupStyle" /> + </default> + </switch> </default> </switch> </default> diff --git a/java/res/xml/kbd_qwerty_row1.xml b/java/res/xml/kbd_qwerty_row1.xml index d9249657e..8c3669de0 100644 --- a/java/res/xml/kbd_qwerty_row1.xml +++ b/java/res/xml/kbd_qwerty_row1.xml @@ -27,45 +27,46 @@ > <Key latin:keyLabel="q" - latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:keyHintLetter="1" latin:popupCharacters="@string/alternates_for_q" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="w" - latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:keyHintLetter="2" latin:popupCharacters="@string/alternates_for_w" /> <Key latin:keyLabel="e" - latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:keyHintLetter="3" latin:popupCharacters="@string/alternates_for_e" /> <Key latin:keyLabel="r" - latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:keyHintLetter="4" latin:popupCharacters="@string/alternates_for_r" /> <Key latin:keyLabel="t" - latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:keyHintLetter="5" latin:popupCharacters="@string/alternates_for_t" /> <Key latin:keyLabel="y" - latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:keyHintLetter="6" latin:popupCharacters="@string/alternates_for_y" /> <Key latin:keyLabel="u" - latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:keyHintLetter="7" latin:popupCharacters="@string/alternates_for_u" /> <Key latin:keyLabel="i" - latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:keyHintLetter="8" latin:popupCharacters="@string/alternates_for_i" /> <Key latin:keyLabel="o" - latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:keyHintLetter="9" latin:popupCharacters="@string/alternates_for_o" /> <Key latin:keyLabel="p" - latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:keyHintLetter="0" latin:popupCharacters="@string/alternates_for_p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> </merge> diff --git a/java/res/xml/kbd_qwerty_row2.xml b/java/res/xml/kbd_qwerty_row2.xml index 9ed4553c4..57bbad75a 100644 --- a/java/res/xml/kbd_qwerty_row2.xml +++ b/java/res/xml/kbd_qwerty_row2.xml @@ -24,11 +24,10 @@ <Row latin:keyWidth="10%p" > - <Spacer - latin:horizontalGap="5%p" /> <Key latin:keyLabel="a" latin:popupCharacters="@string/alternates_for_a" + latin:keyXPos="5%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="s" @@ -52,5 +51,6 @@ latin:keyLabel="l" latin:popupCharacters="@string/alternates_for_l" latin:keyEdgeFlags="right" /> + <!-- Here is 5%p space --> </Row> </merge> diff --git a/java/res/xml/kbd_qwerty_row3.xml b/java/res/xml/kbd_qwerty_row3.xml index 3d106e615..98f0404c0 100644 --- a/java/res/xml/kbd_qwerty_row3.xml +++ b/java/res/xml/kbd_qwerty_row3.xml @@ -49,7 +49,7 @@ latin:keyLabel="m" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="15%p" + latin:keyWidth="fillBoth" latin:visualInsetsLeft="1%p" latin:keyEdgeFlags="right" /> </Row> diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml index 82f5a4a92..095133929 100644 --- a/java/res/xml/kbd_qwerty_row4.xml +++ b/java/res/xml/kbd_qwerty_row4.xml @@ -27,103 +27,89 @@ > <switch> <case - latin:hasSettingsKey="false" + latin:hasSettingsKey="true" > <Key latin:keyStyle="toSymbolKeyStyle" - latin:keyWidth="20%p" + latin:keyWidth="13.75%p" latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="settingsKeyStyle" + latin:keyWidth="9.2%p" /> <include latin:keyboardLayout="@xml/kbd_qwerty_f1" /> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="40%p" /> + latin:keyWidth="35.83%p" /> <switch> <case - latin:mode="web" + latin:navigateAction="true" > - <Key - latin:keyHintIcon="@drawable/hint_popup" + <Key + latin:keyStyle="tabKeyStyle" + latin:keyLabelOption="popupHint" latin:popupCharacters="@string/alternates_for_web_tab_punctuation" - latin:maxPopupKeyboardColumn="8" - latin:keyStyle="tabKeyStyle" /> + latin:keyWidth="9.2%p" + latin:maxPopupKeyboardColumn="8" /> </case> <default> <Key latin:keyLabel="." - latin:keyHintIcon="@drawable/hint_popup" + latin:keyLabelOption="popupHint" latin:popupCharacters="@string/alternates_for_punctuation" + latin:keyWidth="9.2%p" latin:maxPopupKeyboardColumn="7" latin:keyStyle="functionalKeyStyle" /> </default> </switch> - <switch> - <case - latin:mode="im" - > - <Key - latin:keyStyle="smileyKeyStyle" - latin:keyWidth="20%p" - latin:keyEdgeFlags="right" /> - </case> - <default> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="20%p" - latin:keyEdgeFlags="right" /> - </default> - </switch> </case> - <case - latin:hasSettingsKey="true" - > + <!-- latin:hasSettingsKey="false" --> + <default> <Key latin:keyStyle="toSymbolKeyStyle" latin:keyWidth="15%p" latin:keyEdgeFlags="left" /> - <Key - latin:keyStyle="settingsKeyStyle" /> <include latin:keyboardLayout="@xml/kbd_qwerty_f1" /> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="30%p" /> + latin:keyWidth="50%p" /> <switch> <case - latin:mode="web" + latin:navigateAction="true" > - <Key - latin:keyHintIcon="@drawable/hint_popup" + <Key + latin:keyStyle="tabKeyStyle" + latin:keyLabelOption="popupHint" latin:popupCharacters="@string/alternates_for_web_tab_punctuation" - latin:maxPopupKeyboardColumn="8" - latin:keyStyle="tabKeyStyle" /> + latin:maxPopupKeyboardColumn="8" /> </case> <default> <Key latin:keyLabel="." - latin:keyHintIcon="@drawable/hint_popup" + latin:keyLabelOption="popupHint" latin:popupCharacters="@string/alternates_for_punctuation" latin:maxPopupKeyboardColumn="7" latin:keyStyle="functionalKeyStyle" /> </default> </switch> - <switch> - <case - latin:mode="im" - > - <Key - latin:keyStyle="smileyKeyStyle" - latin:keyWidth="25%p" - latin:keyEdgeFlags="right" /> - </case> - <default> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="25%p" - latin:keyEdgeFlags="right" /> - </default> - </switch> + </default> + </switch> + <switch> + <case + latin:mode="im" + > + <Key + latin:keyStyle="smileyKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> </case> + <default> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </default> </switch> </Row> </merge> diff --git a/java/res/xml/kbd_ar_rows.xml b/java/res/xml/kbd_rows_arabic.xml index b2ea45701..a548775a4 100644 --- a/java/res/xml/kbd_ar_rows.xml +++ b/java/res/xml/kbd_rows_arabic.xml @@ -53,6 +53,7 @@ <Key latin:keyLabel="ج" latin:popupCharacters="چ" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row @@ -84,6 +85,7 @@ <Key latin:keyLabel="ك" latin:popupCharacters="گ" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row @@ -112,7 +114,8 @@ latin:keyLabel="ث" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="12%p" + latin:keyWidth="fillRight" + latin:visualInsetsLeft="1%p" latin:keyEdgeFlags="right" /> </Row> <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> diff --git a/java/res/xml/kbd_azerty_rows.xml b/java/res/xml/kbd_rows_azerty.xml index e805d5b1b..9825c4a10 100644 --- a/java/res/xml/kbd_azerty_rows.xml +++ b/java/res/xml/kbd_rows_azerty.xml @@ -29,45 +29,46 @@ > <Key latin:keyLabel="a" - latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:keyHintLetter="1" latin:popupCharacters="@string/alternates_for_a" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="z" - latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:keyHintLetter="2" latin:popupCharacters="@string/alternates_for_z" /> <Key latin:keyLabel="e" - latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:keyHintLetter="3" latin:popupCharacters="@string/alternates_for_e" /> <Key latin:keyLabel="r" - latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:keyHintLetter="4" latin:popupCharacters="@string/alternates_for_r" /> <Key latin:keyLabel="t" - latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:keyHintLetter="5" latin:popupCharacters="@string/alternates_for_t" /> <Key latin:keyLabel="y" - latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:keyHintLetter="6" latin:popupCharacters="@string/alternates_for_y" /> <Key latin:keyLabel="u" - latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:keyHintLetter="7" latin:popupCharacters="@string/alternates_for_u" /> <Key latin:keyLabel="i" - latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:keyHintLetter="8" latin:popupCharacters="@string/alternates_for_i" /> <Key latin:keyLabel="o" - latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:keyHintLetter="9" latin:popupCharacters="@string/alternates_for_o" /> <Key latin:keyLabel="p" - latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:keyHintLetter="0" latin:popupCharacters="@string/alternates_for_p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row @@ -100,6 +101,7 @@ latin:popupCharacters="@string/alternates_for_l" /> <Key latin:keyLabel="m" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row @@ -132,7 +134,7 @@ latin:popupCharacters="‘,’,‚,‛" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="15%p" + latin:keyWidth="fillRight" latin:visualInsetsLeft="1%p" latin:keyEdgeFlags="right" /> </Row> diff --git a/java/res/xml/kbd_iw_rows.xml b/java/res/xml/kbd_rows_hebrew.xml index fb0c2a915..c3c8f7d3e 100644 --- a/java/res/xml/kbd_iw_rows.xml +++ b/java/res/xml/kbd_rows_hebrew.xml @@ -27,12 +27,12 @@ <include latin:keyboardLayout="@xml/kbd_key_styles" /> <Row + latin:keyWidth="10%p" latin:rowEdgeFlags="top" > - <Spacer - latin:horizontalGap="5%p" /> <Key latin:keyLabel="ק" + latin:keyXPos="5%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="ר" /> @@ -50,11 +50,13 @@ latin:keyLabel="פ" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="15%p" + latin:keyWidth="fillRight" latin:visualInsetsLeft="1%p" latin:keyEdgeFlags="right" /> </Row> - <Row> + <Row + latin:keyWidth="10%p" + > <Key latin:keyLabel="ש" latin:keyEdgeFlags="left" /> @@ -76,13 +78,15 @@ latin:keyLabel="ך" /> <Key latin:keyLabel="ף" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> - <Row> - <Spacer - latin:horizontalGap="5%p" /> + <Row + latin:keyWidth="10%p" + > <Key latin:keyLabel="ז" + latin:keyXPos="5%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="ס" /> @@ -101,6 +105,7 @@ <Key latin:keyLabel="ץ" latin:keyEdgeFlags="right" /> + <!-- Here is 5%p space --> </Row> <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </merge> diff --git a/java/res/xml/kbd_qwerty_rows.xml b/java/res/xml/kbd_rows_qwerty.xml index 6237712f6..6237712f6 100644 --- a/java/res/xml/kbd_qwerty_rows.xml +++ b/java/res/xml/kbd_rows_qwerty.xml diff --git a/java/res/xml/kbd_qwertz_rows.xml b/java/res/xml/kbd_rows_qwertz.xml index bb41f067a..0d70b2637 100644 --- a/java/res/xml/kbd_qwertz_rows.xml +++ b/java/res/xml/kbd_rows_qwertz.xml @@ -29,45 +29,46 @@ > <Key latin:keyLabel="q" - latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:keyHintLetter="1" latin:popupCharacters="@string/alternates_for_q" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="w" - latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:keyHintLetter="2" latin:popupCharacters="@string/alternates_for_w" /> <Key latin:keyLabel="e" - latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:keyHintLetter="3" latin:popupCharacters="@string/alternates_for_e" /> <Key latin:keyLabel="r" - latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:keyHintLetter="4" latin:popupCharacters="@string/alternates_for_r" /> <Key latin:keyLabel="t" - latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:keyHintLetter="5" latin:popupCharacters="@string/alternates_for_t" /> <Key latin:keyLabel="z" - latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:keyHintLetter="6" latin:popupCharacters="@string/alternates_for_z" /> <Key latin:keyLabel="u" - latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:keyHintLetter="7" latin:popupCharacters="@string/alternates_for_u" /> <Key latin:keyLabel="i" - latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:keyHintLetter="8" latin:popupCharacters="@string/alternates_for_i" /> <Key latin:keyLabel="o" - latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:keyHintLetter="9" latin:popupCharacters="@string/alternates_for_o" /> <Key latin:keyLabel="p" - latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:keyHintLetter="0" latin:popupCharacters="@string/alternates_for_p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <include @@ -100,7 +101,7 @@ latin:keyLabel="m" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="15%p" + latin:keyWidth="fillRight" latin:visualInsetsLeft="1%p" latin:keyEdgeFlags="right" /> </Row> diff --git a/java/res/xml/kbd_ru_rows.xml b/java/res/xml/kbd_rows_russian.xml index fa2af3be0..ff9fef409 100644 --- a/java/res/xml/kbd_ru_rows.xml +++ b/java/res/xml/kbd_rows_russian.xml @@ -29,49 +29,49 @@ > <Key latin:keyLabel="й" - latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:keyHintLetter="1" latin:popupCharacters="1" latin:keyWidth="8.75%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="ц" - latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:keyHintLetter="2" latin:popupCharacters="2" /> <Key latin:keyLabel="у" - latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:keyHintLetter="3" latin:popupCharacters="3" /> <Key latin:keyLabel="к" - latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:keyHintLetter="4" latin:popupCharacters="4" /> <Key latin:keyLabel="е" - latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:keyHintLetter="5" latin:popupCharacters="@string/alternates_for_cyrillic_e" /> <Key latin:keyLabel="н" - latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:keyHintLetter="6" latin:popupCharacters="6" /> <Key latin:keyLabel="г" - latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:keyHintLetter="7" latin:popupCharacters="7" /> <Key latin:keyLabel="ш" - latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:keyHintLetter="8" latin:popupCharacters="8" /> <Key latin:keyLabel="щ" - latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:keyHintLetter="9" latin:popupCharacters="9" /> <Key latin:keyLabel="з" - latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:keyHintLetter="0" latin:popupCharacters="0" /> <Key latin:keyLabel="х" - latin:keyWidth="8.75%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row @@ -101,7 +101,7 @@ latin:keyLabel="ж" /> <Key latin:keyLabel="э" - latin:keyWidth="8.75%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row @@ -132,7 +132,7 @@ latin:keyLabel="ю" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="11.75%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml/kbd_qwerty_rows_scandinavia.xml b/java/res/xml/kbd_rows_scandinavian.xml index 1aae5a0a8..2d7dcde7a 100644 --- a/java/res/xml/kbd_qwerty_rows_scandinavia.xml +++ b/java/res/xml/kbd_rows_scandinavian.xml @@ -29,49 +29,49 @@ > <Key latin:keyLabel="q" - latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:keyHintLetter="1" latin:popupCharacters="@string/alternates_for_q" latin:keyWidth="8.75%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="w" - latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:keyHintLetter="2" latin:popupCharacters="@string/alternates_for_w" /> <Key latin:keyLabel="e" - latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:keyHintLetter="3" latin:popupCharacters="@string/alternates_for_e" /> <Key latin:keyLabel="r" - latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:keyHintLetter="4" latin:popupCharacters="@string/alternates_for_r" /> <Key latin:keyLabel="t" - latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:keyHintLetter="5" latin:popupCharacters="@string/alternates_for_t" /> <Key latin:keyLabel="y" - latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:keyHintLetter="6" latin:popupCharacters="@string/alternates_for_y" /> <Key latin:keyLabel="u" - latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:keyHintLetter="7" latin:popupCharacters="@string/alternates_for_u" /> <Key latin:keyLabel="i" - latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:keyHintLetter="8" latin:popupCharacters="@string/alternates_for_i" /> <Key latin:keyLabel="o" - latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:keyHintLetter="9" latin:popupCharacters="@string/alternates_for_o" /> <Key latin:keyLabel="p" - latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:keyHintLetter="0" latin:popupCharacters="@string/alternates_for_p" /> <Key latin:keyLabel="å" - latin:keyWidth="8.75%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row @@ -109,7 +109,7 @@ <Key latin:keyLabel="@string/keylabel_for_scandinavia_row2_11" latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" - latin:keyWidth="8.75%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml/kbd_sr_rows.xml b/java/res/xml/kbd_rows_serbian.xml index 8d6b070b2..9f4b6a203 100644 --- a/java/res/xml/kbd_sr_rows.xml +++ b/java/res/xml/kbd_rows_serbian.xml @@ -29,47 +29,48 @@ > <Key latin:keyLabel="љ" - latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:keyHintLetter="1" latin:popupCharacters="1" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="њ" - latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:keyHintLetter="2" latin:popupCharacters="2" /> <Key latin:keyLabel="е" - latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:keyHintLetter="3" latin:popupCharacters="3" /> <Key latin:keyLabel="р" - latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:keyHintLetter="4" latin:popupCharacters="4" /> <Key latin:keyLabel="т" - latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:keyHintLetter="5" latin:popupCharacters="5" /> <Key latin:keyLabel="з" - latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:keyHintLetter="6" latin:popupCharacters="6" /> <Key latin:keyLabel="у" - latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:keyHintLetter="7" latin:popupCharacters="7" /> <Key latin:keyLabel="и" - latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:keyHintLetter="8" latin:popupCharacters="8" /> <Key latin:keyLabel="о" - latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:keyHintLetter="9" latin:popupCharacters="9" /> <Key latin:keyLabel="п" - latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:keyHintLetter="0" latin:popupCharacters="0" /> <Key latin:keyLabel="ш" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row @@ -98,6 +99,7 @@ latin:keyLabel="ч" /> <Key latin:keyLabel="ћ" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row @@ -126,7 +128,7 @@ latin:keyLabel="ж" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="11.00%p" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml/kbd_rows_spanish.xml b/java/res/xml/kbd_rows_spanish.xml new file mode 100644 index 000000000..c5ead10da --- /dev/null +++ b/java/res/xml/kbd_rows_spanish.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/kbd_key_styles" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row1" /> + <Row + latin:keyWidth="10%p" + > + <Key + latin:keyLabel="a" + latin:popupCharacters="@string/alternates_for_a" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="s" + latin:popupCharacters="@string/alternates_for_s" /> + <Key + latin:keyLabel="d" + latin:popupCharacters="@string/alternates_for_d" /> + <Key + latin:keyLabel="f" /> + <Key + latin:keyLabel="g" + latin:popupCharacters="@string/alternates_for_g" /> + <Key + latin:keyLabel="h" /> + <Key + latin:keyLabel="j" /> + <Key + latin:keyLabel="k" + latin:popupCharacters="@string/alternates_for_k" /> + <Key + latin:keyLabel="l" + latin:popupCharacters="@string/alternates_for_l" /> + <Key + latin:keyLabel="ñ" + latin:keyEdgeFlags="right" /> + </Row> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row3" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_row4" /> +</merge> diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml index 0a8068991..8e9124f74 100644 --- a/java/res/xml/kbd_symbols.xml +++ b/java/res/xml/kbd_symbols.xml @@ -20,15 +20,7 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> @@ -65,6 +57,7 @@ <Key latin:keyLabel="0" latin:popupCharacters="ⁿ,∅" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -95,6 +88,7 @@ <Key latin:keyLabel=")" latin:popupCharacters="],},>" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -126,7 +120,7 @@ latin:popupCharacters="¿" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="15%p" + latin:keyWidth="fillRight" latin:visualInsetsLeft="1%p" latin:keyEdgeFlags="right" /> </Row> diff --git a/java/res/xml/kbd_symbols_f1.xml b/java/res/xml/kbd_symbols_f1.xml index 0fb7136b9..da5b5fc8d 100644 --- a/java/res/xml/kbd_symbols_f1.xml +++ b/java/res/xml/kbd_symbols_f1.xml @@ -23,16 +23,41 @@ > <switch> <case - latin:hasVoiceKey="true" + latin:hasSettingsKey="true" > - <Key - latin:keyStyle="micKeyStyle" /> + <switch> + <case + latin:hasVoiceKey="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" + latin:keyWidth="9.2%p" /> + </case> + <!-- latin:hasVoiceKey="false" --> + <default> + <Key + latin:keyLabel="," + latin:keyWidth="9.2%p" + latin:keyStyle="settingsPopupStyle" /> + </default> + </switch> </case> - <!-- latin:hasVoiceKey="false" --> + <!-- hasSettingsKey="false" --> <default> - <Key - latin:keyLabel="," - latin:keyStyle="settingsPopupStyle" /> + <switch> + <case + latin:hasVoiceKey="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" /> + </case> + <!-- latin:hasVoiceKey="false" --> + <default> + <Key + latin:keyLabel="," + latin:keyStyle="settingsPopupStyle" /> + </default> + </switch> </default> </switch> </merge> diff --git a/java/res/xml/kbd_symbols_row4.xml b/java/res/xml/kbd_symbols_row4.xml index b330095af..9323d4fd1 100644 --- a/java/res/xml/kbd_symbols_row4.xml +++ b/java/res/xml/kbd_symbols_row4.xml @@ -22,81 +22,67 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row + latin:keyWidth="10%p" latin:rowEdgeFlags="bottom" > <switch> <case - latin:hasSettingsKey="false" + latin:hasSettingsKey="true" > <Key latin:keyStyle="toAlphaKeyStyle" - latin:keyWidth="20%p" + latin:keyWidth="13.75%p" latin:keyEdgeFlags="left" /> + <Key + latin:keyStyle="settingsKeyStyle" + latin:keyWidth="9.2%p" /> <include - latin:keyboardLayout="@xml/kbd_symbols_f1" /> + latin:keyboardLayout="@xml/kbd_qwerty_f1" /> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="40%p" /> + latin:keyWidth="35.83%p" /> <Key latin:keyLabel="." - latin:keyHintIcon="@drawable/hint_popup" + latin:keyLabelOption="popupHint" latin:popupCharacters="@string/alternates_for_punctuation" + latin:keyWidth="9.2%p" latin:maxPopupKeyboardColumn="7" latin:keyStyle="functionalKeyStyle" /> - <switch> - <case - latin:mode="im" - > - <Key - latin:keyStyle="smileyKeyStyle" - latin:keyWidth="20%p" - latin:keyEdgeFlags="right" /> - </case> - <default> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="20%p" - latin:keyEdgeFlags="right" /> - </default> - </switch> </case> - <case - latin:hasSettingsKey="true" - > + <!-- latin:hasSettingsKey="false" --> + <default> <Key latin:keyStyle="toAlphaKeyStyle" latin:keyWidth="15%p" latin:keyEdgeFlags="left" /> - <Key - latin:keyStyle="settingsKeyStyle" /> <include latin:keyboardLayout="@xml/kbd_symbols_f1" /> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="30%p" /> + latin:keyWidth="50%p" /> <Key latin:keyLabel="." - latin:keyHintIcon="@drawable/hint_popup" + latin:keyLabelOption="popupHint" latin:popupCharacters="@string/alternates_for_punctuation" latin:maxPopupKeyboardColumn="7" latin:keyStyle="functionalKeyStyle" /> - <switch> - <case - latin:mode="im" - > - <Key - latin:keyStyle="smileyKeyStyle" - latin:keyWidth="25%p" - latin:keyEdgeFlags="right" /> - </case> - <default> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="25%p" - latin:keyEdgeFlags="right" /> - </default> - </switch> + </default> + </switch> + <switch> + <case + latin:mode="im" + > + <Key + latin:keyStyle="smileyKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> </case> + <default> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </default> </switch> </Row> </merge> diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml index cde07333b..f22d45aff 100644 --- a/java/res/xml/kbd_symbols_shift.xml +++ b/java/res/xml/kbd_symbols_shift.xml @@ -20,15 +20,7 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" - latin:minKeyboardHeight="@fraction/minKeyboardHeight" - latin:rowHeight="25%p" latin:keyWidth="10%p" - latin:horizontalGap="@dimen/key_horizontal_gap" - latin:verticalGap="@dimen/key_bottom_gap" - latin:popupKeyboardTemplate="@xml/kbd_popup_template" - latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> @@ -63,6 +55,7 @@ latin:keyLabel="{" /> <Key latin:keyLabel="}" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -94,6 +87,7 @@ latin:keyLabel="[" /> <Key latin:keyLabel="]" + latin:keyWidth="fillRight" latin:keyEdgeFlags="right" /> </Row> <Row> @@ -125,7 +119,7 @@ latin:popupCharacters="≥,»,›" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="15%p" + latin:keyWidth="fillRight" latin:visualInsetsLeft="1%p" latin:keyEdgeFlags="right" /> </Row> diff --git a/java/res/xml/kbd_symbols_shift_row4.xml b/java/res/xml/kbd_symbols_shift_row4.xml index 4f8567d58..90a96e4bc 100644 --- a/java/res/xml/kbd_symbols_shift_row4.xml +++ b/java/res/xml/kbd_symbols_shift_row4.xml @@ -22,79 +22,66 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row + latin:keyWidth="10%p" latin:rowEdgeFlags="bottom" > <switch> <case - latin:hasSettingsKey="false" + latin:hasSettingsKey="true" > <Key latin:keyStyle="toAlphaKeyStyle" - latin:keyWidth="20%p" + latin:keyWidth="13.75%p" latin:keyEdgeFlags="left" /> <Key + latin:keyStyle="settingsKeyStyle" + latin:keyWidth="9.2%p" /> + <Key latin:keyLabel="„" latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" + latin:keyWidth="9.2%p" latin:keyStyle="nonPasswordFunctionalKeyStyle" /> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="40%p" /> + latin:keyWidth="35.83%p" /> <Key latin:keyLabel="…" + latin:keyWidth="9.2%p" latin:keyStyle="nonPasswordFunctionalKeyStyle" /> - <switch> - <case - latin:mode="im" - > - <Key - latin:keyStyle="smileyKeyStyle" - latin:keyWidth="20%p" - latin:keyEdgeFlags="right" /> - </case> - <default> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="20%p" - latin:keyEdgeFlags="right" /> - </default> - </switch> </case> - <case - latin:hasSettingsKey="true" - > + <!-- latin:hasSettingsKey="false" --> + <default> <Key latin:keyStyle="toAlphaKeyStyle" latin:keyWidth="15%p" latin:keyEdgeFlags="left" /> <Key - latin:keyStyle="settingsKeyStyle" /> - <Key latin:keyLabel="„" latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" latin:keyStyle="nonPasswordFunctionalKeyStyle" /> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="30%p" /> + latin:keyWidth="50%p" /> <Key latin:keyLabel="…" latin:keyStyle="nonPasswordFunctionalKeyStyle" /> - <switch> - <case - latin:mode="im" - > - <Key - latin:keyStyle="smileyKeyStyle" - latin:keyWidth="25%p" - latin:keyEdgeFlags="right" /> - </case> - <default> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="25%p" - latin:keyEdgeFlags="right" /> - </default> - </switch> + </default> + </switch> + <switch> + <case + latin:mode="im" + > + <Key + latin:keyStyle="smileyKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> </case> + <default> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="fillRight" + latin:keyEdgeFlags="right" /> + </default> </switch> </Row> </merge> diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml index 31ba650f1..3b700b136 100644 --- a/java/res/xml/method.xml +++ b/java/res/xml/method.xml @@ -20,7 +20,7 @@ <!-- The attributes in this XML file provide configuration information --> <!-- for the Input Method Manager. --> -<!-- Keyboard: en_US, en_GB, cs, da, de, es, es_US, fr, fr_CA, fr_CH, it, nb, nl, sr, sv --> +<!-- Keyboard: en_US, en_GB, ar, cs, da, de, es, es_US, fi, fr, fr_CA, fr_CH, hr, hu, it, iw, nb, nl, pl, pt, ru, sr, sv, tr --> <!-- Voice: af, cs, da, de, en, es, fr, it, ja, ko, nl, pl, pt, ru, tr, yue, zh, zu --> <!-- TODO: use <lang>_keyboard icon instead of a common keyboard icon. --> <!-- TODO: use <lang>_mic icon instead of a common mic icon. --> diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml index b0497a51c..5f4a27d91 100644 --- a/java/res/xml/prefs.xml +++ b/java/res/xml/prefs.xml @@ -138,6 +138,12 @@ <ListPreference android:key="pref_key_preview_popup_dismiss_delay" android:title="@string/key_preview_popup_dismiss_delay" /> + <CheckBoxPreference + android:key="pref_key_use_contacts_dict" + android:title="@string/use_contacts_dict" + android:summary="@string/use_contacts_dict_summary" + android:persistent="true" + android:defaultValue="true" /> </PreferenceScreen> <!-- <Preference android:title="Debug Settings" diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java new file mode 100644 index 000000000..ae614b7e0 --- /dev/null +++ b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.accessibility; + +import android.accessibilityservice.AccessibilityServiceInfo; +import android.content.Context; +import android.content.SharedPreferences; +import android.inputmethodservice.InputMethodService; +import android.os.SystemClock; +import android.util.Log; +import android.view.MotionEvent; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; + +import com.android.inputmethod.compat.AccessibilityEventCompatUtils; +import com.android.inputmethod.compat.AccessibilityManagerCompatWrapper; +import com.android.inputmethod.compat.MotionEventCompatUtils; + +public class AccessibilityUtils { + private static final String TAG = AccessibilityUtils.class.getSimpleName(); + private static final String CLASS = AccessibilityUtils.class.getClass().getName(); + private static final String PACKAGE = AccessibilityUtils.class.getClass().getPackage() + .getName(); + + private static final AccessibilityUtils sInstance = new AccessibilityUtils(); + + private AccessibilityManager mAccessibilityManager; + private AccessibilityManagerCompatWrapper mCompatManager; + + /* + * Setting this constant to {@code false} will disable all keyboard + * accessibility code, regardless of whether Accessibility is turned on in + * the system settings. It should ONLY be used in the event of an emergency. + */ + private static final boolean ENABLE_ACCESSIBILITY = true; + + public static void init(InputMethodService inputMethod, SharedPreferences prefs) { + if (!ENABLE_ACCESSIBILITY) + return; + + // These only need to be initialized if the kill switch is off. + sInstance.initInternal(inputMethod, prefs); + KeyCodeDescriptionMapper.init(inputMethod, prefs); + AccessibleInputMethodServiceProxy.init(inputMethod, prefs); + AccessibleKeyboardViewProxy.init(inputMethod, prefs); + } + + public static AccessibilityUtils getInstance() { + return sInstance; + } + + private AccessibilityUtils() { + // This class is not publicly instantiable. + } + + private void initInternal(Context context, SharedPreferences prefs) { + mAccessibilityManager = (AccessibilityManager) context + .getSystemService(Context.ACCESSIBILITY_SERVICE); + mCompatManager = new AccessibilityManagerCompatWrapper(mAccessibilityManager); + } + + /** + * Returns {@code true} if touch exploration is enabled. Currently, this + * means that the kill switch is off, the device supports touch exploration, + * and a spoken feedback service is turned on. + * + * @return {@code true} if touch exploration is enabled. + */ + public boolean isTouchExplorationEnabled() { + return ENABLE_ACCESSIBILITY + && AccessibilityEventCompatUtils.supportsTouchExploration() + && mAccessibilityManager.isEnabled() + && !mCompatManager.getEnabledAccessibilityServiceList( + AccessibilityServiceInfo.FEEDBACK_SPOKEN).isEmpty(); + } + + /** + * Returns {@true} if the provided event is a touch exploration (e.g. hover) + * event. This is used to determine whether the event should be processed by + * the touch exploration code within the keyboard. + * + * @param event The event to check. + * @return {@true} is the event is a touch exploration event + */ + public boolean isTouchExplorationEvent(MotionEvent event) { + final int action = event.getAction(); + + return action == MotionEventCompatUtils.ACTION_HOVER_ENTER + || action == MotionEventCompatUtils.ACTION_HOVER_EXIT + || action == MotionEventCompatUtils.ACTION_HOVER_MOVE; + } + + /** + * Sends the specified text to the {@link AccessibilityManager} to be + * spoken. + * + * @param text the text to speak + */ + public void speak(CharSequence text) { + if (!mAccessibilityManager.isEnabled()) { + Log.e(TAG, "Attempted to speak when accessibility was disabled!"); + return; + } + + // The following is a hack to avoid using the heavy-weight TextToSpeech + // class. Instead, we're just forcing a fake AccessibilityEvent into + // the screen reader to make it speak. + final AccessibilityEvent event = AccessibilityEvent + .obtain(AccessibilityEventCompatUtils.TYPE_VIEW_HOVER_ENTER); + + event.setPackageName(PACKAGE); + event.setClassName(CLASS); + event.setEventTime(SystemClock.uptimeMillis()); + event.setEnabled(true); + event.getText().add(text); + + mAccessibilityManager.sendAccessibilityEvent(event); + } +} diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleInputMethodServiceProxy.java b/java/src/com/android/inputmethod/accessibility/AccessibleInputMethodServiceProxy.java new file mode 100644 index 000000000..043266c70 --- /dev/null +++ b/java/src/com/android/inputmethod/accessibility/AccessibleInputMethodServiceProxy.java @@ -0,0 +1,129 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.accessibility; + +import android.content.SharedPreferences; +import android.inputmethodservice.InputMethodService; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; +import android.text.TextUtils; +import android.view.inputmethod.ExtractedText; +import android.view.inputmethod.ExtractedTextRequest; + +import com.android.inputmethod.latin.R; + +public class AccessibleInputMethodServiceProxy implements AccessibleKeyboardActionListener { + private static final AccessibleInputMethodServiceProxy sInstance = + new AccessibleInputMethodServiceProxy(); + + /* + * Delay for the handler event that's fired when Accessibility is on and the + * user hovers outside of any valid keys. This is used to let the user know + * that if they lift their finger, nothing will be typed. + */ + private static final long DELAY_NO_HOVER_SELECTION = 250; + + private InputMethodService mInputMethod; + + private AccessibilityHandler mAccessibilityHandler; + + private class AccessibilityHandler extends Handler { + private static final int MSG_NO_HOVER_SELECTION = 0; + + public AccessibilityHandler(Looper looper) { + super(looper); + } + + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_NO_HOVER_SELECTION: + notifyNoHoverSelection(); + break; + } + } + + public void postNoHoverSelection() { + removeMessages(MSG_NO_HOVER_SELECTION); + sendEmptyMessageDelayed(MSG_NO_HOVER_SELECTION, DELAY_NO_HOVER_SELECTION); + } + + public void cancelNoHoverSelection() { + removeMessages(MSG_NO_HOVER_SELECTION); + } + } + + public static void init(InputMethodService inputMethod, SharedPreferences prefs) { + sInstance.initInternal(inputMethod, prefs); + } + + public static AccessibleInputMethodServiceProxy getInstance() { + return sInstance; + } + + private AccessibleInputMethodServiceProxy() { + // Not publicly instantiable. + } + + private void initInternal(InputMethodService inputMethod, SharedPreferences prefs) { + mInputMethod = inputMethod; + mAccessibilityHandler = new AccessibilityHandler(inputMethod.getMainLooper()); + } + + /** + * If touch exploration is enabled, cancels the event sent by + * {@link AccessibleInputMethodServiceProxy#onHoverExit(int)} because the + * user is currently hovering above a key. + */ + @Override + public void onHoverEnter(int primaryCode) { + mAccessibilityHandler.cancelNoHoverSelection(); + } + + /** + * If touch exploration is enabled, sends a delayed event to notify the user + * that they are not currently hovering above a key. + */ + @Override + public void onHoverExit(int primaryCode) { + mAccessibilityHandler.postNoHoverSelection(); + } + + /** + * When Accessibility is turned on, notifies the user that they are not + * currently hovering above a key. By default this will speak the currently + * entered text. + */ + private void notifyNoHoverSelection() { + final ExtractedText extracted = mInputMethod.getCurrentInputConnection().getExtractedText( + new ExtractedTextRequest(), 0); + + if (extracted == null) + return; + + final CharSequence text; + + if (TextUtils.isEmpty(extracted.text)) { + text = mInputMethod.getString(R.string.spoken_no_text_entered); + } else { + text = mInputMethod.getString(R.string.spoken_current_text_is, extracted.text); + } + + AccessibilityUtils.getInstance().speak(text); + } +} diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardActionListener.java b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardActionListener.java new file mode 100644 index 000000000..12c59d0fc --- /dev/null +++ b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardActionListener.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.accessibility; + +public interface AccessibleKeyboardActionListener { + /** + * Called when the user hovers inside a key. This is sent only when + * Accessibility is turned on. For keys that repeat, this is only called + * once. + * + * @param primaryCode the code of the key that was hovered over + */ + public void onHoverEnter(int primaryCode); + + /** + * Called when the user hovers outside a key. This is sent only when + * Accessibility is turned on. For keys that repeat, this is only called + * once. + * + * @param primaryCode the code of the key that was hovered over + */ + public void onHoverExit(int primaryCode); +} diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java new file mode 100644 index 000000000..96f7fc9f2 --- /dev/null +++ b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java @@ -0,0 +1,201 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.android.inputmethod.accessibility; + +import android.content.Context; +import android.content.SharedPreferences; +import android.graphics.Color; +import android.graphics.Paint; +import android.util.Log; +import android.view.MotionEvent; +import android.view.ViewConfiguration; +import android.view.accessibility.AccessibilityEvent; + +import com.android.inputmethod.compat.AccessibilityEventCompatUtils; +import com.android.inputmethod.compat.MotionEventCompatUtils; +import com.android.inputmethod.keyboard.Key; +import com.android.inputmethod.keyboard.KeyDetector; +import com.android.inputmethod.keyboard.KeyboardView; +import com.android.inputmethod.keyboard.PointerTracker; + +public class AccessibleKeyboardViewProxy { + private static final String TAG = AccessibleKeyboardViewProxy.class.getSimpleName(); + private static final AccessibleKeyboardViewProxy sInstance = new AccessibleKeyboardViewProxy(); + + // Delay in milliseconds between key press DOWN and UP events + private static final long DELAY_KEY_PRESS = 10; + + private int mScaledEdgeSlop; + private KeyboardView mView; + private AccessibleKeyboardActionListener mListener; + + private int mLastHoverKeyIndex = KeyDetector.NOT_A_KEY; + private int mLastX = -1; + private int mLastY = -1; + + public static void init(Context context, SharedPreferences prefs) { + sInstance.initInternal(context, prefs); + sInstance.mListener = AccessibleInputMethodServiceProxy.getInstance(); + } + + public static AccessibleKeyboardViewProxy getInstance() { + return sInstance; + } + + public static void setView(KeyboardView view) { + sInstance.mView = view; + } + + private AccessibleKeyboardViewProxy() { + // Not publicly instantiable. + } + + private void initInternal(Context context, SharedPreferences prefs) { + final Paint paint = new Paint(); + paint.setTextAlign(Paint.Align.LEFT); + paint.setTextSize(14.0f); + paint.setAntiAlias(true); + paint.setColor(Color.YELLOW); + + mScaledEdgeSlop = ViewConfiguration.get(context).getScaledEdgeSlop(); + } + + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event, + PointerTracker tracker) { + if (mView == null) { + Log.e(TAG, "No keyboard view set!"); + return false; + } + + switch (event.getEventType()) { + case AccessibilityEventCompatUtils.TYPE_VIEW_HOVER_ENTER: + final Key key = tracker.getKey(mLastHoverKeyIndex); + + if (key == null) + break; + + final CharSequence description = KeyCodeDescriptionMapper.getInstance() + .getDescriptionForKey(mView.getContext(), mView.getKeyboard(), key); + + if (description == null) + return false; + + event.getText().add(description); + + break; + } + + return true; + } + + /** + * Receives hover events when accessibility is turned on in API > 11. In + * earlier API levels, events are manually routed from onTouchEvent. + * + * @param event The hover event. + * @return {@code true} if the event is handled + */ + public boolean onHoverEvent(MotionEvent event, PointerTracker tracker) { + return onTouchExplorationEvent(event, tracker); + } + + public boolean dispatchTouchEvent(MotionEvent event) { + // Since touch exploration translates hover double-tap to a regular + // single-tap, we're going to drop non-touch exploration events. + if (!AccessibilityUtils.getInstance().isTouchExplorationEvent(event)) + return true; + + return false; + } + + /** + * Handles touch exploration events when Accessibility is turned on. + * + * @param event The touch exploration hover event. + * @return {@code true} if the event was handled + */ + private boolean onTouchExplorationEvent(MotionEvent event, PointerTracker tracker) { + final int x = (int) event.getX(); + final int y = (int) event.getY(); + + switch (event.getAction()) { + case MotionEventCompatUtils.ACTION_HOVER_ENTER: + case MotionEventCompatUtils.ACTION_HOVER_MOVE: + final int keyIndex = tracker.getKeyIndexOn(x, y); + + if (keyIndex != mLastHoverKeyIndex) { + fireKeyHoverEvent(tracker, mLastHoverKeyIndex, false); + mLastHoverKeyIndex = keyIndex; + mLastX = x; + mLastY = y; + fireKeyHoverEvent(tracker, mLastHoverKeyIndex, true); + } + + return true; + case MotionEventCompatUtils.ACTION_HOVER_EXIT: + final int width = mView.getWidth(); + final int height = mView.getHeight(); + + if (x < mScaledEdgeSlop || y < mScaledEdgeSlop || x >= (width - mScaledEdgeSlop) + || y >= (height - mScaledEdgeSlop)) { + fireKeyHoverEvent(tracker, mLastHoverKeyIndex, false); + mLastHoverKeyIndex = KeyDetector.NOT_A_KEY; + mLastX = -1; + mLastY = -1; + } else if (mLastHoverKeyIndex != KeyDetector.NOT_A_KEY) { + fireKeyPressEvent(tracker, mLastX, mLastY, event.getEventTime()); + } + + return true; + } + + return false; + } + + private void fireKeyHoverEvent(PointerTracker tracker, int keyIndex, boolean entering) { + if (mListener == null) { + Log.e(TAG, "No accessible keyboard action listener set!"); + return; + } + + if (mView == null) { + Log.e(TAG, "No keyboard view set!"); + return; + } + + if (keyIndex == KeyDetector.NOT_A_KEY) + return; + + final Key key = tracker.getKey(keyIndex); + + if (key == null) + return; + + if (entering) { + mListener.onHoverEnter(key.mCode); + mView.sendAccessibilityEvent(AccessibilityEventCompatUtils.TYPE_VIEW_HOVER_ENTER); + } else { + mListener.onHoverExit(key.mCode); + mView.sendAccessibilityEvent(AccessibilityEventCompatUtils.TYPE_VIEW_HOVER_EXIT); + } + } + + private void fireKeyPressEvent(PointerTracker tracker, int x, int y, long eventTime) { + tracker.onDownEvent(x, y, eventTime, null); + tracker.onUpEvent(x, y, eventTime + DELAY_KEY_PRESS, null); + } +} diff --git a/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java b/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java new file mode 100644 index 000000000..154f4af91 --- /dev/null +++ b/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java @@ -0,0 +1,226 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.accessibility; + +import android.content.Context; +import android.content.SharedPreferences; +import android.text.TextUtils; + +import com.android.inputmethod.keyboard.Key; +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.keyboard.KeyboardId; +import com.android.inputmethod.latin.R; + +import java.util.HashMap; + +public class KeyCodeDescriptionMapper { + private static KeyCodeDescriptionMapper sInstance = new KeyCodeDescriptionMapper(); + + // Map of key labels to spoken description resource IDs + private final HashMap<CharSequence, Integer> mKeyLabelMap; + + // Map of key codes to spoken description resource IDs + private final HashMap<Integer, Integer> mKeyCodeMap; + + // Map of shifted key codes to spoken description resource IDs + private final HashMap<Integer, Integer> mShiftedKeyCodeMap; + + // Map of shift-locked key codes to spoken description resource IDs + private final HashMap<Integer, Integer> mShiftLockedKeyCodeMap; + + public static void init(Context context, SharedPreferences prefs) { + sInstance.initInternal(context, prefs); + } + + public static KeyCodeDescriptionMapper getInstance() { + return sInstance; + } + + private KeyCodeDescriptionMapper() { + mKeyLabelMap = new HashMap<CharSequence, Integer>(); + mKeyCodeMap = new HashMap<Integer, Integer>(); + mShiftedKeyCodeMap = new HashMap<Integer, Integer>(); + mShiftLockedKeyCodeMap = new HashMap<Integer, Integer>(); + } + + private void initInternal(Context context, SharedPreferences prefs) { + // Manual label substitutions for key labels with no string resource + mKeyLabelMap.put(":-)", R.string.spoken_description_smiley); + + // Symbols that most TTS engines can't speak + mKeyCodeMap.put((int) '.', R.string.spoken_description_period); + mKeyCodeMap.put((int) ',', R.string.spoken_description_comma); + mKeyCodeMap.put((int) '(', R.string.spoken_description_left_parenthesis); + mKeyCodeMap.put((int) ')', R.string.spoken_description_right_parenthesis); + mKeyCodeMap.put((int) ':', R.string.spoken_description_colon); + mKeyCodeMap.put((int) ';', R.string.spoken_description_semicolon); + mKeyCodeMap.put((int) '!', R.string.spoken_description_exclamation_mark); + mKeyCodeMap.put((int) '?', R.string.spoken_description_question_mark); + mKeyCodeMap.put((int) '\"', R.string.spoken_description_double_quote); + mKeyCodeMap.put((int) '\'', R.string.spoken_description_single_quote); + mKeyCodeMap.put((int) '*', R.string.spoken_description_star); + mKeyCodeMap.put((int) '#', R.string.spoken_description_pound); + mKeyCodeMap.put((int) ' ', R.string.spoken_description_space); + + // Non-ASCII symbols (must use escape codes!) + mKeyCodeMap.put((int) '\u2022', R.string.spoken_description_dot); + mKeyCodeMap.put((int) '\u221A', R.string.spoken_description_square_root); + mKeyCodeMap.put((int) '\u03C0', R.string.spoken_description_pi); + mKeyCodeMap.put((int) '\u0394', R.string.spoken_description_delta); + mKeyCodeMap.put((int) '\u2122', R.string.spoken_description_trademark); + mKeyCodeMap.put((int) '\u2105', R.string.spoken_description_care_of); + mKeyCodeMap.put((int) '\u2026', R.string.spoken_description_ellipsis); + mKeyCodeMap.put((int) '\u201E', R.string.spoken_description_low_double_quote); + + // Special non-character codes defined in Keyboard + mKeyCodeMap.put(Keyboard.CODE_DELETE, R.string.spoken_description_delete); + mKeyCodeMap.put(Keyboard.CODE_ENTER, R.string.spoken_description_return); + mKeyCodeMap.put(Keyboard.CODE_SETTINGS, R.string.spoken_description_settings); + mKeyCodeMap.put(Keyboard.CODE_SHIFT, R.string.spoken_description_shift); + mKeyCodeMap.put(Keyboard.CODE_SHORTCUT, R.string.spoken_description_mic); + mKeyCodeMap.put(Keyboard.CODE_SWITCH_ALPHA_SYMBOL, R.string.spoken_description_to_symbol); + mKeyCodeMap.put(Keyboard.CODE_TAB, R.string.spoken_description_tab); + + // Shifted versions of non-character codes defined in Keyboard + mShiftedKeyCodeMap.put(Keyboard.CODE_SHIFT, R.string.spoken_description_shift_shifted); + + // Shift-locked versions of non-character codes defined in Keyboard + mShiftLockedKeyCodeMap.put(Keyboard.CODE_SHIFT, R.string.spoken_description_caps_lock); + } + + /** + * Returns the localized description of the action performed by a specified + * key based on the current keyboard state. + * <p> + * The order of precedence for key descriptions is: + * <ol> + * <li>Manually-defined based on the key label</li> + * <li>Automatic or manually-defined based on the key code</li> + * <li>Automatically based on the key label</li> + * <li>{code null} for keys with no label or key code defined</li> + * </p> + * + * @param context The package's context. + * @param keyboard The keyboard on which the key resides. + * @param key The key from which to obtain a description. + * @return a character sequence describing the action performed by pressing + * the key + */ + public CharSequence getDescriptionForKey(Context context, Keyboard keyboard, Key key) { + if (key.mCode == Keyboard.CODE_SWITCH_ALPHA_SYMBOL) { + final CharSequence description = getDescriptionForSwitchAlphaSymbol(context, keyboard); + if (description != null) + return description; + } + + if (!TextUtils.isEmpty(key.mLabel)) { + final String label = key.mLabel.toString().trim(); + + if (mKeyLabelMap.containsKey(label)) { + return context.getString(mKeyLabelMap.get(label)); + } else if (label.length() == 1 + || (keyboard.isManualTemporaryUpperCase() && !TextUtils + .isEmpty(key.mHintLetter))) { + return getDescriptionForKeyCode(context, keyboard, key); + } else { + return label; + } + } else if (key.mCode != Keyboard.CODE_DUMMY) { + return getDescriptionForKeyCode(context, keyboard, key); + } + + return null; + } + + /** + * Returns a context-specific description for the CODE_SWITCH_ALPHA_SYMBOL + * key or {@code null} if there is not a description provided for the + * current keyboard context. + * + * @param context The package's context. + * @param keyboard The keyboard on which the key resides. + * @return a character sequence describing the action performed by pressing + * the key + */ + private CharSequence getDescriptionForSwitchAlphaSymbol(Context context, Keyboard keyboard) { + final KeyboardId id = keyboard.mId; + + if (id.isAlphabetKeyboard()) { + return context.getString(R.string.spoken_description_to_symbol); + } else if (id.isSymbolsKeyboard()) { + return context.getString(R.string.spoken_description_to_alpha); + } else if (id.isPhoneSymbolsKeyboard()) { + return context.getString(R.string.spoken_description_to_numeric); + } else if (id.isPhoneKeyboard()) { + return context.getString(R.string.spoken_description_to_symbol); + } else { + return null; + } + } + + /** + * Returns the keycode for the specified key given the current keyboard + * state. + * + * @param keyboard The keyboard on which the key resides. + * @param key The key from which to obtain a key code. + * @return the key code for the specified key + */ + private int getCorrectKeyCode(Keyboard keyboard, Key key) { + if (keyboard.isManualTemporaryUpperCase() && !TextUtils.isEmpty(key.mHintLetter)) { + return key.mHintLetter.charAt(0); + } else { + return key.mCode; + } + } + + /** + * Returns a localized character sequence describing what will happen when + * the specified key is pressed based on its key code. + * <p> + * The order of precedence for key code descriptions is: + * <ol> + * <li>Manually-defined shift-locked description</li> + * <li>Manually-defined shifted description</li> + * <li>Manually-defined normal description</li> + * <li>Automatic based on the character represented by the key code</li> + * <li>Fall-back for undefined or control characters</li> + * </ol> + * </p> + * + * @param context The package's context. + * @param keyboard The keyboard on which the key resides. + * @param key The key from which to obtain a description. + * @return a character sequence describing the action performed by pressing + * the key + */ + private CharSequence getDescriptionForKeyCode(Context context, Keyboard keyboard, Key key) { + final int code = getCorrectKeyCode(keyboard, key); + + if (keyboard.isShiftLocked() && mShiftLockedKeyCodeMap.containsKey(code)) { + return context.getString(mShiftLockedKeyCodeMap.get(code)); + } else if (keyboard.isShiftedOrShiftLocked() && mShiftedKeyCodeMap.containsKey(code)) { + return context.getString(mShiftedKeyCodeMap.get(code)); + } else if (mKeyCodeMap.containsKey(code)) { + return context.getString(mKeyCodeMap.get(code)); + } else if (Character.isDefined(code) && !Character.isISOControl(code)) { + return Character.toString((char) code); + } else { + return context.getString(R.string.spoken_description_unknown, code); + } + } +} diff --git a/java/src/com/android/inputmethod/compat/AccessibilityEventCompatUtils.java b/java/src/com/android/inputmethod/compat/AccessibilityEventCompatUtils.java new file mode 100644 index 000000000..50057727a --- /dev/null +++ b/java/src/com/android/inputmethod/compat/AccessibilityEventCompatUtils.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.compat; + +import android.view.accessibility.AccessibilityEvent; + +import java.lang.reflect.Field; + +public class AccessibilityEventCompatUtils { + public static final int TYPE_VIEW_HOVER_ENTER = 0x80; + public static final int TYPE_VIEW_HOVER_EXIT = 0x100; + + private static final Field FIELD_TYPE_VIEW_HOVER_ENTER = CompatUtils.getField( + AccessibilityEvent.class, "TYPE_VIEW_HOVER_ENTER"); + private static final Field FIELD_TYPE_VIEW_HOVER_EXIT = CompatUtils.getField( + AccessibilityEvent.class, "TYPE_VIEW_HOVER_EXIT"); + private static final Integer OBJ_TYPE_VIEW_HOVER_ENTER = (Integer) CompatUtils + .getFieldValue(null, null, FIELD_TYPE_VIEW_HOVER_ENTER); + private static final Integer OBJ_TYPE_VIEW_HOVER_EXIT = (Integer) CompatUtils + .getFieldValue(null, null, FIELD_TYPE_VIEW_HOVER_EXIT); + + public static boolean supportsTouchExploration() { + return OBJ_TYPE_VIEW_HOVER_ENTER != null && OBJ_TYPE_VIEW_HOVER_EXIT != null; + } +} diff --git a/java/src/com/android/inputmethod/compat/AccessibilityManagerCompatWrapper.java b/java/src/com/android/inputmethod/compat/AccessibilityManagerCompatWrapper.java new file mode 100644 index 000000000..4db1c7a24 --- /dev/null +++ b/java/src/com/android/inputmethod/compat/AccessibilityManagerCompatWrapper.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.compat; + +import android.accessibilityservice.AccessibilityServiceInfo; +import android.view.accessibility.AccessibilityManager; + +import java.lang.reflect.Method; +import java.util.Collections; +import java.util.List; + +public class AccessibilityManagerCompatWrapper { + private static final Method METHOD_getEnabledAccessibilityServiceList = CompatUtils.getMethod( + AccessibilityManager.class, "getEnabledAccessibilityServiceList", int.class); + + private final AccessibilityManager mManager; + + public AccessibilityManagerCompatWrapper(AccessibilityManager manager) { + mManager = manager; + } + + @SuppressWarnings("unchecked") + public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int feedbackType) { + return (List<AccessibilityServiceInfo>) CompatUtils.invoke(mManager, + Collections.<AccessibilityServiceInfo>emptyList(), + METHOD_getEnabledAccessibilityServiceList, feedbackType); + } +} diff --git a/java/src/com/android/inputmethod/compat/ArraysCompatUtils.java b/java/src/com/android/inputmethod/compat/ArraysCompatUtils.java new file mode 100644 index 000000000..f6afbcfe2 --- /dev/null +++ b/java/src/com/android/inputmethod/compat/ArraysCompatUtils.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.compat; + +import java.lang.reflect.Method; +import java.util.Arrays; + +public class ArraysCompatUtils { + private static final Method METHOD_Arrays_binarySearch = CompatUtils + .getMethod(Arrays.class, "binarySearch", int[].class, int.class, int.class, int.class); + + public static int binarySearch(int[] array, int startIndex, int endIndex, int value) { + if (METHOD_Arrays_binarySearch != null) { + final Object index = CompatUtils.invoke(null, 0, METHOD_Arrays_binarySearch, + array, startIndex, endIndex, value); + return (Integer)index; + } else { + return compatBinarySearch(array, startIndex, endIndex, value); + } + } + + /* package */ static int compatBinarySearch(int[] array, int startIndex, int endIndex, + int value) { + if (startIndex > endIndex) throw new IllegalArgumentException(); + if (startIndex < 0 || endIndex > array.length) throw new ArrayIndexOutOfBoundsException(); + + final int work[] = new int[endIndex - startIndex]; + System.arraycopy(array, startIndex, work, 0, work.length); + final int index = Arrays.binarySearch(work, value); + if (index >= 0) { + return index + startIndex; + } else { + return ~(~index + startIndex); + } + } +} diff --git a/java/src/com/android/inputmethod/compat/CompatUtils.java b/java/src/com/android/inputmethod/compat/CompatUtils.java index 0b532f7f0..b42633cd9 100644 --- a/java/src/com/android/inputmethod/compat/CompatUtils.java +++ b/java/src/com/android/inputmethod/compat/CompatUtils.java @@ -22,7 +22,6 @@ import android.util.Log; import java.lang.reflect.Constructor; import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; @@ -74,76 +73,73 @@ public class CompatUtils { return targetClass.getMethod(name, parameterTypes); } catch (SecurityException e) { // ignore - return null; } catch (NoSuchMethodException e) { // ignore - return null; } + return null; } public static Field getField(Class<?> targetClass, String name) { + if (targetClass == null || TextUtils.isEmpty(name)) return null; try { return targetClass.getField(name); } catch (SecurityException e) { // ignore - return null; } catch (NoSuchFieldException e) { // ignore - return null; } + return null; } - public static Constructor<?> getConstructor(Class<?> targetClass, Class<?>[] types) { + public static Constructor<?> getConstructor(Class<?> targetClass, Class<?> ... types) { if (targetClass == null || types == null) return null; try { return targetClass.getConstructor(types); } catch (SecurityException e) { // ignore - return null; } catch (NoSuchMethodException e) { // ignore - return null; } + return null; + } + + public static Object newInstance(Constructor<?> constructor, Object ... args) { + if (constructor == null) return null; + try { + return constructor.newInstance(args); + } catch (Exception e) { + Log.e(TAG, "Exception in newInstance: " + e.getClass().getSimpleName()); + } + return null; } public static Object invoke( Object receiver, Object defaultValue, Method method, Object... args) { - if (receiver == null || method == null) return defaultValue; + if (method == null) return defaultValue; try { return method.invoke(receiver, args); - } catch (IllegalArgumentException e) { - Log.e(TAG, "Exception in invoke: IllegalArgumentException"); - return defaultValue; - } catch (IllegalAccessException e) { - Log.e(TAG, "Exception in invoke: IllegalAccessException"); - return defaultValue; - } catch (InvocationTargetException e) { - Log.e(TAG, "Exception in invoke: IllegalTargetException"); - return defaultValue; + } catch (Exception e) { + Log.e(TAG, "Exception in invoke: " + e.getClass().getSimpleName()); } + return defaultValue; } public static Object getFieldValue(Object receiver, Object defaultValue, Field field) { - if (receiver == null || field == null) return defaultValue; + if (field == null) return defaultValue; try { return field.get(receiver); - } catch (IllegalArgumentException e) { - Log.e(TAG, "Exception in getFieldValue: IllegalArgumentException"); - return defaultValue; - } catch (IllegalAccessException e) { - Log.e(TAG, "Exception in getFieldValue: IllegalAccessException"); - return defaultValue; + } catch (Exception e) { + Log.e(TAG, "Exception in getFieldValue: " + e.getClass().getSimpleName()); } + return defaultValue; } public static void setFieldValue(Object receiver, Field field, Object value) { - if (receiver == null || field == null) return; + if (field == null) return; try { field.set(receiver, value); - } catch (IllegalArgumentException e) { - Log.e(TAG, "Exception in setFieldValue: IllegalArgumentException"); - } catch (IllegalAccessException e) { - Log.e(TAG, "Exception in setFieldValue: IllegalAccessException"); + } catch (Exception e) { + Log.e(TAG, "Exception in setFieldValue: " + e.getClass().getSimpleName()); } } diff --git a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java index f6f4f7a59..bcdcef7dc 100644 --- a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java +++ b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java @@ -27,7 +27,7 @@ public class EditorInfoCompatUtils { private static final Field FIELD_IME_FLAG_NAVIGATE_PREVIOUS = CompatUtils.getField( EditorInfo.class, "IME_FLAG_NAVIGATE_PREVIOUS"); private static final Field FIELD_IME_ACTION_PREVIOUS = CompatUtils.getField( - EditorInfo.class, "IME_FLAG_ACTION_PREVIOUS"); + EditorInfo.class, "IME_ACTION_PREVIOUS"); private static final Integer OBJ_IME_FLAG_NAVIGATE_NEXT = (Integer) CompatUtils .getFieldValue(null, null, FIELD_IME_FLAG_NAVIGATE_NEXT); private static final Integer OBJ_IME_FLAG_NAVIGATE_PREVIOUS = (Integer) CompatUtils @@ -78,6 +78,9 @@ public class EditorInfoCompatUtils { case EditorInfo.IME_ACTION_SEND: action = "actionSend"; break; + case EditorInfo.IME_ACTION_NEXT: + action = "actionNext"; + break; case EditorInfo.IME_ACTION_DONE: action = "actionDone"; break; diff --git a/java/src/com/android/inputmethod/compat/FrameLayoutCompatUtils.java b/java/src/com/android/inputmethod/compat/FrameLayoutCompatUtils.java new file mode 100644 index 000000000..523bf7d0e --- /dev/null +++ b/java/src/com/android/inputmethod/compat/FrameLayoutCompatUtils.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.compat; + +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewGroup.MarginLayoutParams; +import android.widget.FrameLayout; +import android.widget.RelativeLayout; + +public class FrameLayoutCompatUtils { + private static final boolean NEEDS_FRAME_LAYOUT_HACK = ( + android.os.Build.VERSION.SDK_INT < 11 /* Honeycomb */); + + public static ViewGroup getPlacer(ViewGroup container) { + if (NEEDS_FRAME_LAYOUT_HACK) { + // Insert RelativeLayout to be able to setMargin because pre-Honeycomb FrameLayout + // could not handle setMargin properly. + final ViewGroup placer = new RelativeLayout(container.getContext()); + container.addView(placer); + return placer; + } else { + return container; + } + } + + public static MarginLayoutParams newLayoutParam(ViewGroup placer, int width, int height) { + if (placer instanceof FrameLayout) { + return new FrameLayout.LayoutParams(width, height); + } else if (placer instanceof RelativeLayout) { + return new RelativeLayout.LayoutParams(width, height); + } else if (placer == null) { + throw new NullPointerException("placer is null"); + } else { + throw new IllegalArgumentException("placer is neither FrameLayout nor RelativeLayout: " + + placer.getClass().getName()); + } + } + + public static void placeViewAt(View view, int x, int y, int w, int h) { + final ViewGroup.LayoutParams lp = view.getLayoutParams(); + if (lp instanceof MarginLayoutParams) { + final MarginLayoutParams marginLayoutParams = (MarginLayoutParams)lp; + marginLayoutParams.width = w; + marginLayoutParams.height = h; + marginLayoutParams.setMargins(x, y, 0, 0); + } + } +} diff --git a/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java b/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java index c926be06f..7d00b6007 100644 --- a/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java +++ b/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java @@ -18,15 +18,12 @@ package com.android.inputmethod.compat; import com.android.inputmethod.latin.EditingUtils.SelectedWord; -import android.util.Log; import android.view.inputmethod.InputConnection; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class InputConnectionCompatUtils { - private static final String TAG = InputConnectionCompatUtils.class.getSimpleName(); private static final Class<?> CLASS_CorrectionInfo = CompatUtils .getClass("android.view.inputmethod.CorrectionInfo"); private static final Class<?>[] INPUT_TYPE_CorrectionInfo = new Class<?>[] { int.class, @@ -53,18 +50,10 @@ public class InputConnectionCompatUtils { return; } Object[] args = { offset, oldText, newText }; - try { - Object correctionInfo = CONSTRUCTOR_CorrectionInfo.newInstance(args); + Object correctionInfo = CompatUtils.newInstance(CONSTRUCTOR_CorrectionInfo, args); + if (correctionInfo != null) { CompatUtils.invoke(ic, null, METHOD_InputConnection_commitCorrection, correctionInfo); - } catch (IllegalArgumentException e) { - Log.e(TAG, "Error in commitCorrection: IllegalArgumentException"); - } catch (InstantiationException e) { - Log.e(TAG, "Error in commitCorrection: InstantiationException"); - } catch (IllegalAccessException e) { - Log.e(TAG, "Error in commitCorrection: IllegalAccessException"); - } catch (InvocationTargetException e) { - Log.e(TAG, "Error in commitCorrection: InvocationTargetException"); } } diff --git a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java index c04181b55..ec7250c2a 100644 --- a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java +++ b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java @@ -16,12 +16,12 @@ package com.android.inputmethod.compat; -import com.android.inputmethod.deprecated.LanguageSwitcherProxy; -import com.android.inputmethod.latin.SubtypeSwitcher; - import android.inputmethodservice.InputMethodService; // import android.view.inputmethod.InputMethodSubtype; +import com.android.inputmethod.deprecated.LanguageSwitcherProxy; +import com.android.inputmethod.latin.SubtypeSwitcher; + public class InputMethodServiceCompatWrapper extends InputMethodService { // CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED needs to be false if the API level is 10 // or previous. Note that InputMethodSubtype was added in the API level 11. diff --git a/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java b/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java index 806c355a9..667d86c42 100644 --- a/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java +++ b/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java @@ -48,6 +48,8 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper CompatUtils.getMethod(CLASS_InputMethodSubtype, "containsExtraValueKey", String.class); private static final Method METHOD_getExtraValueOf = CompatUtils.getMethod(CLASS_InputMethodSubtype, "getExtraValueOf", String.class); + private static final Method METHOD_isAuxiliary = + CompatUtils.getMethod(CLASS_InputMethodSubtype, "isAuxiliary"); private final int mDummyNameResId; private final int mDummyIconResId; @@ -116,6 +118,10 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper return (String)CompatUtils.invoke(mObj, null, METHOD_getExtraValueOf, key); } + public boolean isAuxiliary() { + return (Boolean)CompatUtils.invoke(mObj, false, METHOD_isAuxiliary); + } + public boolean isDummy() { return !hasOriginalObject(); } diff --git a/java/src/com/android/inputmethod/compat/InputTypeCompatUtils.java b/java/src/com/android/inputmethod/compat/InputTypeCompatUtils.java index d85174188..6c2f0f799 100644 --- a/java/src/com/android/inputmethod/compat/InputTypeCompatUtils.java +++ b/java/src/com/android/inputmethod/compat/InputTypeCompatUtils.java @@ -37,6 +37,7 @@ public class InputTypeCompatUtils { (Integer) CompatUtils.getFieldValue(null, null, FIELD_InputType_TYPE_NUMBER_VARIATION_PASSWORD); private static final int WEB_TEXT_PASSWORD_INPUT_TYPE; + private static final int WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE; private static final int NUMBER_PASSWORD_INPUT_TYPE; private static final int TEXT_PASSWORD_INPUT_TYPE = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD; @@ -45,20 +46,35 @@ public class InputTypeCompatUtils { static { WEB_TEXT_PASSWORD_INPUT_TYPE = - OBJ_InputType_TYPE_TEXT_VARIATION_WEB_PASSWORD != null - ? InputType.TYPE_CLASS_TEXT | OBJ_InputType_TYPE_TEXT_VARIATION_WEB_PASSWORD - : 0; + OBJ_InputType_TYPE_TEXT_VARIATION_WEB_PASSWORD != null + ? InputType.TYPE_CLASS_TEXT | OBJ_InputType_TYPE_TEXT_VARIATION_WEB_PASSWORD + : 0; + WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE = + OBJ_InputType_TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS != null + ? InputType.TYPE_CLASS_TEXT + | OBJ_InputType_TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS + : 0; NUMBER_PASSWORD_INPUT_TYPE = OBJ_InputType_TYPE_NUMBER_VARIATION_PASSWORD != null ? InputType.TYPE_CLASS_NUMBER | OBJ_InputType_TYPE_NUMBER_VARIATION_PASSWORD : 0; } + private static boolean isWebEditTextInputType(int inputType) { + return inputType == (InputType.TYPE_CLASS_TEXT + | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT); + } + private static boolean isWebPasswordInputType(int inputType) { return WEB_TEXT_PASSWORD_INPUT_TYPE != 0 && inputType == WEB_TEXT_PASSWORD_INPUT_TYPE; } + private static boolean isWebEmailAddressInputType(int inputType) { + return WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE != 0 + && inputType == WEB_TEXT_EMAIL_ADDRESS_INPUT_TYPE; + } + private static boolean isNumberPasswordInputType(int inputType) { return NUMBER_PASSWORD_INPUT_TYPE != 0 && inputType == NUMBER_PASSWORD_INPUT_TYPE; @@ -78,6 +94,13 @@ public class InputTypeCompatUtils { || isWebEmailAddressVariation(variation); } + public static boolean isWebInputType(int inputType) { + final int maskedInputType = + inputType & (InputType.TYPE_MASK_CLASS | InputType.TYPE_MASK_VARIATION); + return isWebEditTextInputType(maskedInputType) || isWebPasswordInputType(maskedInputType) + || isWebEmailAddressInputType(maskedInputType); + } + // Please refer to TextView.isPasswordInputType public static boolean isPasswordInputType(int inputType) { final int maskedInputType = diff --git a/java/src/com/android/inputmethod/compat/LinearLayoutCompatUtils.java b/java/src/com/android/inputmethod/compat/LinearLayoutCompatUtils.java new file mode 100644 index 000000000..674cbe74b --- /dev/null +++ b/java/src/com/android/inputmethod/compat/LinearLayoutCompatUtils.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.compat; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.util.Log; + +import java.lang.reflect.Field; + +public class LinearLayoutCompatUtils { + private static final String TAG = LinearLayoutCompatUtils.class.getSimpleName(); + + private static final Class<?> CLASS_R_STYLEABLE = CompatUtils.getClass( + "com.android.internal.R$styleable"); + private static final Field STYLEABLE_VIEW = CompatUtils.getField( + CLASS_R_STYLEABLE, "View"); + private static final Field STYLEABLE_VIEW_BACKGROUND = CompatUtils.getField( + CLASS_R_STYLEABLE, "View_background"); + private static final Object VALUE_STYLEABLE_VIEW = CompatUtils.getFieldValue( + null, null, STYLEABLE_VIEW); + private static final Integer VALUE_STYLEABLE_VIEW_BACKGROUND = + (Integer)CompatUtils.getFieldValue(null, null, STYLEABLE_VIEW_BACKGROUND); + + public static Drawable getBackgroundDrawable(Context context, AttributeSet attrs, + int defStyleAttr, int defStyleRes) { + if (!(VALUE_STYLEABLE_VIEW instanceof int[]) || VALUE_STYLEABLE_VIEW_BACKGROUND == null) { + Log.w(TAG, "Can't get View background attribute using reflection"); + return null; + } + + final int[] styleableView = (int[])VALUE_STYLEABLE_VIEW; + final TypedArray a = context.obtainStyledAttributes( + attrs, styleableView, defStyleAttr, defStyleRes); + final Drawable background = a.getDrawable(VALUE_STYLEABLE_VIEW_BACKGROUND); + a.recycle(); + return background; + } +} diff --git a/java/src/com/android/inputmethod/compat/MotionEventCompatUtils.java b/java/src/com/android/inputmethod/compat/MotionEventCompatUtils.java new file mode 100644 index 000000000..8518a4a78 --- /dev/null +++ b/java/src/com/android/inputmethod/compat/MotionEventCompatUtils.java @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.compat; + +public class MotionEventCompatUtils { + public static final int ACTION_HOVER_MOVE = 0x7; + public static final int ACTION_HOVER_ENTER = 0x9; + public static final int ACTION_HOVER_EXIT = 0xA; +} diff --git a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java new file mode 100644 index 000000000..4929dd948 --- /dev/null +++ b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.compat; + +import com.android.inputmethod.latin.SuggestedWords; +import com.android.inputmethod.latin.SuggestionSpanPickedNotificationReceiver; + +import android.content.Context; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.TextUtils; + +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.Locale; + +public class SuggestionSpanUtils { + // TODO: Use reflection to get field values + public static final String ACTION_SUGGESTION_PICKED = + "android.text.style.SUGGESTION_PICKED"; + public static final String SUGGESTION_SPAN_PICKED_AFTER = "after"; + public static final String SUGGESTION_SPAN_PICKED_BEFORE = "before"; + public static final String SUGGESTION_SPAN_PICKED_HASHCODE = "hashcode"; + public static final int SUGGESTION_MAX_SIZE = 5; + public static final boolean SUGGESTION_SPAN_IS_SUPPORTED; + + private static final Class<?> CLASS_SuggestionSpan = CompatUtils + .getClass("android.text.style.SuggestionSpan"); + private static final Class<?>[] INPUT_TYPE_SuggestionSpan = new Class<?>[] { + Context.class, Locale.class, String[].class, int.class, Class.class }; + private static final Constructor<?> CONSTRUCTOR_SuggestionSpan = CompatUtils + .getConstructor(CLASS_SuggestionSpan, INPUT_TYPE_SuggestionSpan); + static { + SUGGESTION_SPAN_IS_SUPPORTED = + CLASS_SuggestionSpan != null && CONSTRUCTOR_SuggestionSpan != null; + } + + public static CharSequence getTextWithSuggestionSpan(Context context, + CharSequence pickedWord, SuggestedWords suggestedWords) { + if (TextUtils.isEmpty(pickedWord) || CONSTRUCTOR_SuggestionSpan == null + || suggestedWords == null || suggestedWords.size() == 0) { + return pickedWord; + } + + final Spannable spannable; + if (pickedWord instanceof Spannable) { + spannable = (Spannable) pickedWord; + } else { + spannable = new SpannableString(pickedWord); + } + final ArrayList<String> suggestionsList = new ArrayList<String>(); + for (int i = 0; i < suggestedWords.size(); ++i) { + if (suggestionsList.size() >= SUGGESTION_MAX_SIZE) { + break; + } + final CharSequence word = suggestedWords.getWord(i); + if (!TextUtils.equals(pickedWord, word)) { + suggestionsList.add(word.toString()); + } + } + + final Object[] args = + { context, null, suggestionsList.toArray(new String[suggestionsList.size()]), 0, + (Class<?>) SuggestionSpanPickedNotificationReceiver.class }; + final Object ss = CompatUtils.newInstance(CONSTRUCTOR_SuggestionSpan, args); + if (ss == null) { + return pickedWord; + } + spannable.setSpan(ss, 0, pickedWord.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + return spannable; + } +} diff --git a/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java b/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java index e14a49c49..290e6b554 100644 --- a/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java +++ b/java/src/com/android/inputmethod/deprecated/LanguageSwitcherProxy.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Google Inc. + * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/deprecated/VoiceProxy.java b/java/src/com/android/inputmethod/deprecated/VoiceProxy.java index 753dceead..85993ea4d 100644 --- a/java/src/com/android/inputmethod/deprecated/VoiceProxy.java +++ b/java/src/com/android/inputmethod/deprecated/VoiceProxy.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -137,8 +137,8 @@ public class VoiceProxy implements VoiceInput.UiListener { @Override public void showHint(int viewResource) { View view = LayoutInflater.from(mService).inflate(viewResource, null); - mService.setCandidatesView(view); - mService.setCandidatesViewShown(true); +// mService.setCandidatesView(view); +// mService.setCandidatesViewShown(true); mIsShowingHint = true; } }); @@ -441,7 +441,7 @@ public class VoiceProxy implements VoiceInput.UiListener { } builder.setTypedWordValid(true).setHasMinimalSuggestion(true); mService.setSuggestions(builder.build()); - mService.setCandidatesViewShown(true); +// mService.setCandidatesViewShown(true); return true; } return false; @@ -526,7 +526,7 @@ public class VoiceProxy implements VoiceInput.UiListener { mHandler.post(new Runnable() { @Override public void run() { - mService.setCandidatesViewShown(false); +// mService.setCandidatesViewShown(false); mRecognizing = true; mVoiceInput.newView(); View v = mVoiceInput.getView(); @@ -536,7 +536,7 @@ public class VoiceProxy implements VoiceInput.UiListener { ((ViewGroup) p).removeView(v); } - View keyboardView = KeyboardSwitcher.getInstance().getInputView(); + View keyboardView = KeyboardSwitcher.getInstance().getKeyboardView(); // The full height of the keyboard is difficult to calculate // as the dimension is expressed in "mm" and not in "pixel" @@ -691,7 +691,7 @@ public class VoiceProxy implements VoiceInput.UiListener { if (mSubtypeSwitcher.isVoiceMode() && windowToken != null) { // Close keyboard view if it is been shown. if (KeyboardSwitcher.getInstance().isInputViewShown()) - KeyboardSwitcher.getInstance().getInputView().purgeKeyboardAndClosing(); + KeyboardSwitcher.getInstance().getKeyboardView().purgeKeyboardAndClosing(); startListening(false, windowToken); } // If we have no token, onAttachedToWindow will take care of showing dialog and start diff --git a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java index b8655d112..cf6cd0f5e 100644 --- a/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java +++ b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2009 Google Inc. + * Copyright (C) 2008-2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -16,7 +16,7 @@ package com.android.inputmethod.deprecated.languageswitcher; -import com.android.inputmethod.keyboard.KeyboardParser; +import com.android.inputmethod.keyboard.internal.KeyboardParser; import com.android.inputmethod.latin.DictionaryFactory; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.Settings; diff --git a/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java b/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java index 5ef236e31..1eedb5ee1 100644 --- a/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java +++ b/java/src/com/android/inputmethod/deprecated/languageswitcher/LanguageSwitcher.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -20,6 +20,7 @@ import com.android.inputmethod.latin.LatinIME; import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.Settings; import com.android.inputmethod.latin.SharedPreferencesCompat; +import com.android.inputmethod.latin.Utils; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; @@ -125,8 +126,7 @@ public class LanguageSwitcher { private void constructLocales() { mLocales.clear(); for (final String lang : mSelectedLanguageArray) { - final Locale locale = new Locale(lang.substring(0, 2), - lang.length() > 4 ? lang.substring(3, 5) : ""); + final Locale locale = Utils.constructLocaleFromString(lang); mLocales.add(locale); } } diff --git a/java/src/com/android/inputmethod/deprecated/recorrection/Recorrection.java b/java/src/com/android/inputmethod/deprecated/recorrection/Recorrection.java index bf69d5ced..d40728d25 100644 --- a/java/src/com/android/inputmethod/deprecated/recorrection/Recorrection.java +++ b/java/src/com/android/inputmethod/deprecated/recorrection/Recorrection.java @@ -17,6 +17,7 @@ package com.android.inputmethod.deprecated.recorrection; import com.android.inputmethod.compat.InputConnectionCompatUtils; +import com.android.inputmethod.compat.SuggestionSpanUtils; import com.android.inputmethod.deprecated.VoiceProxy; import com.android.inputmethod.keyboard.KeyboardSwitcher; import com.android.inputmethod.latin.AutoCorrection; @@ -43,7 +44,6 @@ import java.util.ArrayList; * Manager of re-correction functionalities */ public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeListener { - public static final boolean USE_LEGACY_RECORRECTION = true; private static final Recorrection sInstance = new Recorrection(); private LatinIME mService; @@ -70,7 +70,7 @@ public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeL } private void initInternal(LatinIME context, SharedPreferences prefs) { - if (!USE_LEGACY_RECORRECTION) { + if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED) { mRecorrectionEnabled = false; return; } @@ -80,7 +80,7 @@ public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeL } public void checkRecorrectionOnStart() { - if (!USE_LEGACY_RECORRECTION || !mRecorrectionEnabled) return; + if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED || !mRecorrectionEnabled) return; final InputConnection ic = mService.getCurrentInputConnection(); if (ic == null) return; @@ -110,7 +110,7 @@ public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeL CandidateView candidateView, int candidatesStart, int candidatesEnd, int newSelStart, int newSelEnd, int oldSelStart, int lastSelectionStart, int lastSelectionEnd, boolean hasUncommittedTypedChars) { - if (!USE_LEGACY_RECORRECTION || !mRecorrectionEnabled) return; + if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED || !mRecorrectionEnabled) return; if (!mService.isShowingSuggestionsStrip()) return; if (!keyboardSwitcher.isInputViewShown()) return; if (!mService.isSuggestionsRequested()) return; @@ -142,7 +142,7 @@ public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeL } public void saveRecorrectionSuggestion(WordComposer word, CharSequence result) { - if (!USE_LEGACY_RECORRECTION || !mRecorrectionEnabled) return; + if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED || !mRecorrectionEnabled) return; if (word.size() <= 1) { return; } @@ -170,7 +170,7 @@ public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeL */ public boolean applyTypedAlternatives(WordComposer word, Suggest suggest, KeyboardSwitcher keyboardSwitcher, EditingUtils.SelectedWord touching) { - if (!USE_LEGACY_RECORRECTION || !mRecorrectionEnabled) return false; + if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED || !mRecorrectionEnabled) return false; // If we didn't find a match, search for result in typed word history WordComposer foundWord = null; RecorrectionSuggestionEntries alternatives = null; @@ -218,12 +218,12 @@ public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeL mService.showSuggestions(builder.build(), entries.getOriginalWord()); } - public void setRecorrectionSuggestions(VoiceProxy voiceProxy, CandidateView candidateView, - Suggest suggest, KeyboardSwitcher keyboardSwitcher, WordComposer word, - boolean hasUncommittedTypedChars, int lastSelectionStart, int lastSelectionEnd, - String wordSeparators) { + public void fetchAndDisplayRecorrectionSuggestions(VoiceProxy voiceProxy, + CandidateView candidateView, Suggest suggest, KeyboardSwitcher keyboardSwitcher, + WordComposer word, boolean hasUncommittedTypedChars, int lastSelectionStart, + int lastSelectionEnd, String wordSeparators) { if (!InputConnectionCompatUtils.RECORRECTION_SUPPORTED) return; - if (!USE_LEGACY_RECORRECTION || !mRecorrectionEnabled) return; + if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED || !mRecorrectionEnabled) return; voiceProxy.setShowingVoiceSuggestions(false); if (candidateView != null && candidateView.isShowingAddToDictionaryHint()) { return; @@ -249,7 +249,7 @@ public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeL ic.endBatchEdit(); } else { abortRecorrection(true); - mService.setPunctuationSuggestions(); // Show the punctuation suggestions list + mService.updateBigramPredictions(); } } else { abortRecorrection(true); @@ -257,7 +257,7 @@ public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeL } public void abortRecorrection(boolean force) { - if (!USE_LEGACY_RECORRECTION) return; + if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED) return; if (force || TextEntryState.isRecorrecting()) { TextEntryState.onAbortRecorrection(); mService.setCandidatesViewShown(mService.isCandidateStripVisible()); @@ -279,7 +279,7 @@ public class Recorrection implements SharedPreferences.OnSharedPreferenceChangeL @Override public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { - if (!USE_LEGACY_RECORRECTION) return; + if (SuggestionSpanUtils.SUGGESTION_SPAN_IS_SUPPORTED) return; if (key.equals(Settings.PREF_RECORRECTION_ENABLED)) { updateRecorrectionEnabled(mService.getResources(), prefs); } diff --git a/java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java b/java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java index 914e2cbc1..5e6c87044 100644 --- a/java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java +++ b/java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java @@ -57,6 +57,6 @@ public class RecorrectionSuggestionEntries { private static SuggestedWords.Builder getTypedSuggestions( Suggest suggest, KeyboardSwitcher keyboardSwitcher, WordComposer word) { - return suggest.getSuggestedWordBuilder(keyboardSwitcher.getInputView(), word, null); + return suggest.getSuggestedWordBuilder(keyboardSwitcher.getKeyboardView(), word, null); } } diff --git a/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java b/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java index 0ef73d2d7..3c79cc218 100644 --- a/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java +++ b/java/src/com/android/inputmethod/deprecated/voice/FieldContext.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/deprecated/voice/Hints.java b/java/src/com/android/inputmethod/deprecated/voice/Hints.java index 52a4f4e58..06b234381 100644 --- a/java/src/com/android/inputmethod/deprecated/voice/Hints.java +++ b/java/src/com/android/inputmethod/deprecated/voice/Hints.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java b/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java index b57c16f40..dcb826e8f 100644 --- a/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java +++ b/java/src/com/android/inputmethod/deprecated/voice/RecognitionView.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java b/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java index 7721fe268..855a09a1d 100644 --- a/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java +++ b/java/src/com/android/inputmethod/deprecated/voice/SettingsUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java b/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java index 8cc79de1e..25b314085 100644 --- a/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java +++ b/java/src/com/android/inputmethod/deprecated/voice/SoundIndicator.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Google Inc. + * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java b/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java index 7ee0de9c9..b718ebbb7 100644 --- a/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java +++ b/java/src/com/android/inputmethod/deprecated/voice/VoiceInput.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -129,7 +129,7 @@ public class VoiceInput implements OnClickListener { private int mAfterVoiceInputSelectionSpan = 0; private int mState = DEFAULT; - + private final static int MSG_RESET = 1; private final Handler mHandler = new Handler() { @@ -192,7 +192,7 @@ public class VoiceInput implements OnClickListener { } mBlacklist = new Whitelist(); - mBlacklist.addApp("com.android.setupwizard"); + mBlacklist.addApp("com.google.android.setupwizard"); } public void setCursorPos(int pos) { diff --git a/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java b/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java index 87b943426..22e8207bf 100644 --- a/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java +++ b/java/src/com/android/inputmethod/deprecated/voice/VoiceInputLogger.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 Google Inc. + * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java b/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java index a3025f252..8ed279f42 100644 --- a/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java +++ b/java/src/com/android/inputmethod/deprecated/voice/WaveformImage.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2009 Google Inc. + * Copyright (C) 2008-2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java b/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java index 310689cb2..6c5f52ae2 100644 --- a/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java +++ b/java/src/com/android/inputmethod/deprecated/voice/Whitelist.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index 33b55b5d3..2850c95df 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -16,10 +16,6 @@ package com.android.inputmethod.keyboard; -import com.android.inputmethod.keyboard.KeyStyles.KeyStyle; -import com.android.inputmethod.keyboard.KeyboardParser.ParseException; -import com.android.inputmethod.latin.R; - import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; @@ -27,6 +23,15 @@ import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.Xml; +import com.android.inputmethod.keyboard.internal.KeyStyles; +import com.android.inputmethod.keyboard.internal.KeyboardIconsSet; +import com.android.inputmethod.keyboard.internal.KeyboardParser; +import com.android.inputmethod.keyboard.internal.PopupCharactersParser; +import com.android.inputmethod.keyboard.internal.Row; +import com.android.inputmethod.keyboard.internal.KeyStyles.KeyStyle; +import com.android.inputmethod.keyboard.internal.KeyboardParser.ParseException; +import com.android.inputmethod.latin.R; + import java.util.ArrayList; /** @@ -37,25 +42,26 @@ public class Key { * The key code (unicode or custom code) that this key generates. */ public final int mCode; - /** The unicode that this key generates in manual temporary upper case mode. */ - public final int mManualTemporaryUpperCaseCode; /** Label to display */ public final CharSequence mLabel; + /** Hint letter to display on the key in conjunction with the label */ + public final CharSequence mHintLetter; /** Option of the label */ public final int mLabelOption; + public static final int LABEL_OPTION_ALIGN_LEFT = 0x01; + public static final int LABEL_OPTION_ALIGN_RIGHT = 0x02; + public static final int LABEL_OPTION_ALIGN_BOTTOM = 0x08; + public static final int LABEL_OPTION_FONT_NORMAL = 0x10; + public static final int LABEL_OPTION_FONT_FIXED_WIDTH = 0x20; + public static final int LABEL_OPTION_FOLLOW_KEY_LETTER_RATIO = 0x40; + private static final int LABEL_OPTION_POPUP_HINT = 0x80; + private static final int LABEL_OPTION_HAS_UPPERCASE_LETTER = 0x100; /** Icon to display instead of a label. Icon takes precedence over a label */ private Drawable mIcon; /** Preview version of the icon, for the preview popup */ private Drawable mPreviewIcon; - /** Hint icon to display on the key in conjunction with the label */ - public final Drawable mHintIcon; - /** - * The hint icon to display on the key when keyboard is in manual temporary upper case - * mode. - */ - public final Drawable mManualTemporaryUpperCaseHintIcon; /** Width of the key, not including the gap */ public final int mWidth; @@ -95,11 +101,15 @@ public class Key { private final Keyboard mKeyboard; /** The current pressed state of this key */ - public boolean mPressed; + private boolean mPressed; /** If this is a sticky key, is its highlight on? */ - public boolean mHighlightOn; + private boolean mHighlightOn; /** Key is enabled and responds on press */ - public boolean mEnabled = true; + private boolean mEnabled = true; + + // keyWidth constants + private static final int KEYWIDTH_FILL_RIGHT = 0; + private static final int KEYWIDTH_FILL_BOTH = -1; private final static int[] KEY_STATE_NORMAL_ON = { android.R.attr.state_checkable, @@ -140,7 +150,7 @@ public class Key { }; /** - * This constructor is being used only for key in mini popup keyboard. + * This constructor is being used only for key in popup mini keyboard. */ public Key(Resources res, Keyboard keyboard, CharSequence popupCharacter, int x, int y, int width, int height, int edgeFlags) { @@ -150,9 +160,7 @@ public class Key { mVisualInsetsLeft = mVisualInsetsRight = 0; mWidth = width - mGap; mEdgeFlags = edgeFlags; - mHintIcon = null; - mManualTemporaryUpperCaseHintIcon = null; - mManualTemporaryUpperCaseCode = Keyboard.CODE_DUMMY; + mHintLetter = null; mLabelOption = 0; mFunctional = false; mSticky = false; @@ -163,7 +171,7 @@ public class Key { mLabel = PopupCharactersParser.getLabel(popupSpecification); mOutputText = PopupCharactersParser.getOutputText(popupSpecification); mCode = PopupCharactersParser.getCode(res, popupSpecification); - mIcon = PopupCharactersParser.getIcon(res, popupSpecification); + mIcon = keyboard.mIconsSet.getIcon(PopupCharactersParser.getIconId(popupSpecification)); // Horizontal gap is divided equally to both sides of the key. mX = x + mGap / 2; mY = y; @@ -178,6 +186,7 @@ public class Key { * @param x the x coordinate of the top-left * @param y the y coordinate of the top-left * @param parser the XML parser containing the attributes for this key + * @param keyStyles active key styles set */ public Key(Resources res, Row row, int x, int y, XmlResourceParser parser, KeyStyles keyStyles) { @@ -185,6 +194,7 @@ public class Key { final TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); + int keyWidth; try { mHeight = KeyboardParser.getDimensionOrFraction(keyboardAttr, R.styleable.Keyboard_rowHeight, @@ -192,17 +202,13 @@ public class Key { mGap = KeyboardParser.getDimensionOrFraction(keyboardAttr, R.styleable.Keyboard_horizontalGap, mKeyboard.getDisplayWidth(), row.mDefaultHorizontalGap); - mWidth = KeyboardParser.getDimensionOrFraction(keyboardAttr, + keyWidth = KeyboardParser.getDimensionOrFraction(keyboardAttr, R.styleable.Keyboard_keyWidth, - mKeyboard.getDisplayWidth(), row.mDefaultWidth) - mGap; + mKeyboard.getDisplayWidth(), row.mDefaultWidth); } finally { keyboardAttr.recycle(); } - // Horizontal gap is divided equally to both sides of the key. - mX = x + mGap / 2; - mY = y; - final TypedArray keyAttr = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard_Key); try { @@ -216,6 +222,35 @@ public class Key { style = keyStyles.getEmptyKeyStyle(); } + final int keyboardWidth = mKeyboard.getDisplayWidth(); + int keyXPos = KeyboardParser.getDimensionOrFraction(keyAttr, + R.styleable.Keyboard_Key_keyXPos, keyboardWidth, x); + if (keyXPos < 0) { + // If keyXPos is negative, the actual x-coordinate will be k + keyXPos. + keyXPos += keyboardWidth; + if (keyXPos < x) { + // keyXPos shouldn't be less than x because drawable area for this key starts + // at x. Or, this key will overlaps the adjacent key on its left hand side. + keyXPos = x; + } + } + if (keyWidth == KEYWIDTH_FILL_RIGHT) { + // If keyWidth is zero, the actual key width will be determined to fill out the + // area up to the right edge of the keyboard. + keyWidth = keyboardWidth - keyXPos; + } else if (keyWidth <= KEYWIDTH_FILL_BOTH) { + // If keyWidth is negative, the actual key width will be determined to fill out the + // area between the nearest key on the left hand side and the right edge of the + // keyboard. + keyXPos = x; + keyWidth = keyboardWidth - keyXPos; + } + + // Horizontal gap is divided equally to both sides of the key. + mX = keyXPos + mGap / 2; + mY = y; + mWidth = keyWidth - mGap; + final CharSequence[] popupCharacters = style.getTextArray(keyAttr, R.styleable.Keyboard_Key_popupCharacters); if (res.getBoolean(R.bool.config_digit_popup_characters_enabled)) { @@ -234,24 +269,23 @@ public class Key { mEdgeFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyEdgeFlags, 0) | row.mRowEdgeFlags; + final KeyboardIconsSet iconsSet = mKeyboard.mIconsSet; mVisualInsetsLeft = KeyboardParser.getDimensionOrFraction(keyAttr, R.styleable.Keyboard_Key_visualInsetsLeft, mKeyboard.getDisplayHeight(), 0); mVisualInsetsRight = KeyboardParser.getDimensionOrFraction(keyAttr, R.styleable.Keyboard_Key_visualInsetsRight, mKeyboard.getDisplayHeight(), 0); - mPreviewIcon = style.getDrawable(keyAttr, R.styleable.Keyboard_Key_iconPreview); + mPreviewIcon = iconsSet.getIcon(style.getInt( + keyAttr, R.styleable.Keyboard_Key_keyIconPreview, + KeyboardIconsSet.ICON_UNDEFINED)); Keyboard.setDefaultBounds(mPreviewIcon); - mIcon = style.getDrawable(keyAttr, R.styleable.Keyboard_Key_keyIcon); + mIcon = iconsSet.getIcon(style.getInt( + keyAttr, R.styleable.Keyboard_Key_keyIcon, + KeyboardIconsSet.ICON_UNDEFINED)); Keyboard.setDefaultBounds(mIcon); - mHintIcon = style.getDrawable(keyAttr, R.styleable.Keyboard_Key_keyHintIcon); - Keyboard.setDefaultBounds(mHintIcon); - mManualTemporaryUpperCaseHintIcon = style.getDrawable(keyAttr, - R.styleable.Keyboard_Key_manualTemporaryUpperCaseHintIcon); - Keyboard.setDefaultBounds(mManualTemporaryUpperCaseHintIcon); + mHintLetter = style.getText(keyAttr, R.styleable.Keyboard_Key_keyHintLetter); mLabel = style.getText(keyAttr, R.styleable.Keyboard_Key_keyLabel); mLabelOption = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelOption, 0); - mManualTemporaryUpperCaseCode = style.getInt(keyAttr, - R.styleable.Keyboard_Key_manualTemporaryUpperCaseCode, Keyboard.CODE_DUMMY); mOutputText = style.getText(keyAttr, R.styleable.Keyboard_Key_keyOutputText); // Choose the first letter of the label as primary code if not // specified. @@ -265,8 +299,9 @@ public class Key { mCode = Keyboard.CODE_DUMMY; } - final Drawable shiftedIcon = style.getDrawable(keyAttr, - R.styleable.Keyboard_Key_shiftedIcon); + final Drawable shiftedIcon = iconsSet.getIcon(style.getInt( + keyAttr, R.styleable.Keyboard_Key_keyIconShifted, + KeyboardIconsSet.ICON_UNDEFINED)); if (shiftedIcon != null) mKeyboard.getShiftedIcons().put(this, shiftedIcon); } finally { @@ -274,8 +309,16 @@ public class Key { } } + public boolean hasPopupHint() { + return (mLabelOption & LABEL_OPTION_POPUP_HINT) != 0; + } + + public boolean hasUppercaseLetter() { + return (mLabelOption & LABEL_OPTION_HAS_UPPERCASE_LETTER) != 0; + } + private static boolean isDigitPopupCharacter(CharSequence label) { - return label.length() == 1 && Character.isDigit(label.charAt(0)); + return label != null && label.length() == 1 && Character.isDigit(label.charAt(0)); } private static CharSequence[] filterOutDigitPopupCharacters(CharSequence[] popupCharacters) { @@ -338,6 +381,18 @@ public class Key { mPressed = false; } + public void setHighlightOn(boolean highlightOn) { + mHighlightOn = highlightOn; + } + + public boolean isEnabled() { + return mEnabled; + } + + public void setEnabled(boolean enabled) { + mEnabled = enabled; + } + /** * Detects if a point falls on this key. * @param x the x-coordinate of the point diff --git a/java/src/com/android/inputmethod/keyboard/KeyDetector.java b/java/src/com/android/inputmethod/keyboard/KeyDetector.java index 0b13afecb..7add43a6d 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyDetector.java +++ b/java/src/com/android/inputmethod/keyboard/KeyDetector.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java index 492883caf..20327c5b2 100644 --- a/java/src/com/android/inputmethod/keyboard/Keyboard.java +++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -16,15 +16,18 @@ package com.android.inputmethod.keyboard; -import com.android.inputmethod.latin.R; - -import org.xmlpull.v1.XmlPullParserException; - import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.util.Log; +import com.android.inputmethod.keyboard.internal.KeyboardIconsSet; +import com.android.inputmethod.keyboard.internal.KeyboardParser; +import com.android.inputmethod.keyboard.internal.KeyboardShiftState; +import com.android.inputmethod.latin.R; + +import org.xmlpull.v1.XmlPullParserException; + import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -51,7 +54,7 @@ import java.util.Map; * </pre> */ public class Keyboard { - private static final String TAG = "Keyboard"; + private static final String TAG = Keyboard.class.getSimpleName(); public static final int EDGE_LEFT = 0x01; public static final int EDGE_RIGHT = 0x02; @@ -130,6 +133,8 @@ public class Keyboard { public final KeyboardId mId; + public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet(); + // Variables for pre-computing nearest keys. // TODO: Change GRID_WIDTH and GRID_HEIGHT to private. @@ -151,16 +156,11 @@ public class Keyboard { * @param context the application or service context * @param xmlLayoutResId the resource file that contains the keyboard layout and keys. * @param id keyboard identifier + * @param width keyboard width */ - public Keyboard(Context context, int xmlLayoutResId, KeyboardId id) { - this(context, xmlLayoutResId, id, - context.getResources().getDisplayMetrics().widthPixels, - context.getResources().getDisplayMetrics().heightPixels); - } - private Keyboard(Context context, int xmlLayoutResId, KeyboardId id, int width, - int height) { - Resources res = context.getResources(); + public Keyboard(Context context, int xmlLayoutResId, KeyboardId id, int width) { + final Resources res = context.getResources(); GRID_WIDTH = res.getInteger(R.integer.config_keyboard_grid_width); GRID_HEIGHT = res.getInteger(R.integer.config_keyboard_grid_height); GRID_SIZE = GRID_WIDTH * GRID_HEIGHT; @@ -168,15 +168,16 @@ public class Keyboard { final int horizontalEdgesPadding = (int)res.getDimension( R.dimen.keyboard_horizontal_edges_padding); mDisplayWidth = width - horizontalEdgesPadding * 2; - mDisplayHeight = height; + // TODO: Adjust the height by referring to the height of area available for drawing as well. + mDisplayHeight = res.getDisplayMetrics().heightPixels; mDefaultHorizontalGap = 0; setKeyWidth(mDisplayWidth / 10); mDefaultVerticalGap = 0; mDefaultHeight = mDefaultWidth; mId = id; - loadKeyboard(context, xmlLayoutResId); mProximityInfo = new ProximityInfo(GRID_WIDTH, GRID_HEIGHT); + loadKeyboard(context, xmlLayoutResId); } public int getProximityInfo() { @@ -295,7 +296,7 @@ public class Keyboard { public boolean setShiftLocked(boolean newShiftLockState) { final Map<Key, Drawable> shiftedIcons = getShiftedIcons(); for (final Key key : getShiftKeys()) { - key.mHighlightOn = newShiftLockState; + key.setHighlightOn(newShiftLockState); key.setIcon(newShiftLockState ? shiftedIcons.get(key) : mNormalShiftIcons.get(key)); } mShiftState.setShiftLocked(newShiftLockState); @@ -438,7 +439,7 @@ public class Keyboard { private void loadKeyboard(Context context, int xmlLayoutResId) { try { - KeyboardParser parser = new KeyboardParser(this, context.getResources()); + KeyboardParser parser = new KeyboardParser(this, context); parser.parseKeyboard(xmlLayoutResId); // mMinWidth is the width of this keyboard which is maximum width of row. mMinWidth = parser.getMaxRowWidth(); @@ -452,7 +453,7 @@ public class Keyboard { } } - protected static void setDefaultBounds(Drawable drawable) { + public static void setDefaultBounds(Drawable drawable) { if (drawable != null) drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java index 098af214e..7e67d6f6b 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java index f68b68f1d..9c63c198c 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -16,12 +16,12 @@ package com.android.inputmethod.keyboard; +import android.view.inputmethod.EditorInfo; + import com.android.inputmethod.compat.EditorInfoCompatUtils; import com.android.inputmethod.compat.InputTypeCompatUtils; import com.android.inputmethod.latin.R; -import android.view.inputmethod.EditorInfo; - import java.util.Arrays; import java.util.Locale; @@ -34,38 +34,55 @@ public class KeyboardId { public static final int MODE_URL = 1; public static final int MODE_EMAIL = 2; public static final int MODE_IM = 3; - public static final int MODE_WEB = 4; - public static final int MODE_PHONE = 5; - public static final int MODE_NUMBER = 6; + public static final int MODE_PHONE = 4; + public static final int MODE_NUMBER = 5; + + public static final int F2KEY_MODE_NONE = 0; + public static final int F2KEY_MODE_SETTINGS = 1; + public static final int F2KEY_MODE_SHORTCUT_IME = 2; + public static final int F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS = 3; public final Locale mLocale; public final int mOrientation; + public final int mWidth; public final int mMode; public final int mXmlId; - public final int mColorScheme; + public final boolean mNavigateAction; public final boolean mPasswordInput; + // TODO: Clean up these booleans and modes. public final boolean mHasSettingsKey; + public final int mF2KeyMode; + public final boolean mClobberSettingsKey; public final boolean mVoiceKeyEnabled; public final boolean mHasVoiceKey; public final int mImeAction; public final boolean mEnableShiftLock; + public final String mXmlName; + public final EditorInfo mAttribute; private final int mHashCode; - public KeyboardId(String xmlName, int xmlId, int colorScheme, Locale locale, int orientation, - int mode, EditorInfo attribute, boolean hasSettingsKey, boolean voiceKeyEnabled, - boolean hasVoiceKey, boolean enableShiftLock) { + public KeyboardId(String xmlName, int xmlId, Locale locale, int orientation, int width, + int mode, EditorInfo attribute, boolean hasSettingsKey, int f2KeyMode, + boolean clobberSettingsKey, boolean voiceKeyEnabled, boolean hasVoiceKey, + boolean enableShiftLock) { final int inputType = (attribute != null) ? attribute.inputType : 0; final int imeOptions = (attribute != null) ? attribute.imeOptions : 0; this.mLocale = locale; this.mOrientation = orientation; + this.mWidth = width; this.mMode = mode; this.mXmlId = xmlId; - this.mColorScheme = colorScheme; + // Note: Turn off checking navigation flag to show TAB key for now. + this.mNavigateAction = InputTypeCompatUtils.isWebInputType(inputType); +// || EditorInfoCompatUtils.hasFlagNavigateNext(imeOptions) +// || EditorInfoCompatUtils.hasFlagNavigatePrevious(imeOptions); this.mPasswordInput = InputTypeCompatUtils.isPasswordInputType(inputType) || InputTypeCompatUtils.isVisiblePasswordInputType(inputType); this.mHasSettingsKey = hasSettingsKey; + this.mF2KeyMode = f2KeyMode; + this.mClobberSettingsKey = clobberSettingsKey; this.mVoiceKeyEnabled = voiceKeyEnabled; this.mHasVoiceKey = hasVoiceKey; // We are interested only in {@link EditorInfo#IME_MASK_ACTION} enum value and @@ -73,16 +90,21 @@ public class KeyboardId { this.mImeAction = imeOptions & ( EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION); this.mEnableShiftLock = enableShiftLock; + this.mXmlName = xmlName; + this.mAttribute = attribute; this.mHashCode = Arrays.hashCode(new Object[] { locale, orientation, + width, mode, xmlId, - colorScheme, + mNavigateAction, mPasswordInput, hasSettingsKey, + f2KeyMode, + clobberSettingsKey, voiceKeyEnabled, hasVoiceKey, mImeAction, @@ -90,6 +112,20 @@ public class KeyboardId { }); } + public KeyboardId cloneWithNewLayout(String xmlName, int xmlId) { + return new KeyboardId(xmlName, xmlId, mLocale, mOrientation, mWidth, mMode, mAttribute, + mHasSettingsKey, mF2KeyMode, mClobberSettingsKey, mVoiceKeyEnabled, mHasVoiceKey, + mEnableShiftLock); + } + + public KeyboardId cloneWithNewGeometry(int width) { + if (mWidth == width) + return this; + return new KeyboardId(mXmlName, mXmlId, mLocale, mOrientation, width, mMode, mAttribute, + mHasSettingsKey, mF2KeyMode, mClobberSettingsKey, mVoiceKeyEnabled, mHasVoiceKey, + mEnableShiftLock); + } + public int getXmlId() { return mXmlId; } @@ -99,13 +135,17 @@ public class KeyboardId { } public boolean isSymbolsKeyboard() { - return mXmlId == R.xml.kbd_symbols; + return mXmlId == R.xml.kbd_symbols || mXmlId == R.xml.kbd_symbols_shift; } public boolean isPhoneKeyboard() { return mMode == MODE_PHONE; } + public boolean isPhoneSymbolsKeyboard() { + return mXmlId == R.xml.kbd_phone_symbols; + } + public boolean isNumberKeyboard() { return mMode == MODE_NUMBER; } @@ -118,11 +158,14 @@ public class KeyboardId { boolean equals(KeyboardId other) { return other.mLocale.equals(this.mLocale) && other.mOrientation == this.mOrientation + && other.mWidth == this.mWidth && other.mMode == this.mMode && other.mXmlId == this.mXmlId - && other.mColorScheme == this.mColorScheme + && other.mNavigateAction == this.mNavigateAction && other.mPasswordInput == this.mPasswordInput && other.mHasSettingsKey == this.mHasSettingsKey + && other.mF2KeyMode == this.mF2KeyMode + && other.mClobberSettingsKey == this.mClobberSettingsKey && other.mVoiceKeyEnabled == this.mVoiceKeyEnabled && other.mHasVoiceKey == this.mHasVoiceKey && other.mImeAction == this.mImeAction @@ -136,18 +179,20 @@ public class KeyboardId { @Override public String toString() { - return String.format("[%s.xml %s %s %s imeAction=%s %s%s%s%s%s%s]", + return String.format("[%s.xml %s %s%d %s %s %s%s%s%s%s%s%s%s]", mXmlName, mLocale, - (mOrientation == 1 ? "port" : "land"), + (mOrientation == 1 ? "port" : "land"), mWidth, modeName(mMode), EditorInfoCompatUtils.imeOptionsName(mImeAction), + f2KeyModeName(mF2KeyMode), + (mClobberSettingsKey ? " clobberSettingsKey" : ""), + (mNavigateAction ? " navigateAction" : ""), (mPasswordInput ? " passwordInput" : ""), (mHasSettingsKey ? " hasSettingsKey" : ""), (mVoiceKeyEnabled ? " voiceKeyEnabled" : ""), (mHasVoiceKey ? " hasVoiceKey" : ""), - (mEnableShiftLock ? " enableShiftLock" : ""), - colorSchemeName(mColorScheme) + (mEnableShiftLock ? " enableShiftLock" : "") ); } @@ -157,18 +202,19 @@ public class KeyboardId { case MODE_URL: return "url"; case MODE_EMAIL: return "email"; case MODE_IM: return "im"; - case MODE_WEB: return "web"; case MODE_PHONE: return "phone"; case MODE_NUMBER: return "number"; + default: return null; } - return null; } - public static String colorSchemeName(int colorScheme) { - switch (colorScheme) { - case KeyboardView.COLOR_SCHEME_WHITE: return "white"; - case KeyboardView.COLOR_SCHEME_BLACK: return "black"; + public static String f2KeyModeName(int f2KeyMode) { + switch (f2KeyMode) { + case F2KEY_MODE_NONE: return "none"; + case F2KEY_MODE_SETTINGS: return "settings"; + case F2KEY_MODE_SHORTCUT_IME: return "shortcutIme"; + case F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS: return "shortcutImeOrSettings"; + default: return null; } - return null; } } diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index 384139112..275e9d1fe 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -16,7 +16,20 @@ package com.android.inputmethod.keyboard; +import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.util.Log; +import android.view.ContextThemeWrapper; +import android.view.InflateException; +import android.view.LayoutInflater; +import android.view.View; +import android.view.inputmethod.EditorInfo; + +import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy; import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; +import com.android.inputmethod.keyboard.internal.ModifierKeyState; +import com.android.inputmethod.keyboard.internal.ShiftKeyState; import com.android.inputmethod.latin.LatinIME; import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.R; @@ -24,37 +37,30 @@ import com.android.inputmethod.latin.Settings; import com.android.inputmethod.latin.SubtypeSwitcher; import com.android.inputmethod.latin.Utils; -import android.content.Context; -import android.content.SharedPreferences; -import android.content.res.Resources; -import android.util.Log; -import android.view.InflateException; -import android.view.inputmethod.EditorInfo; - import java.lang.ref.SoftReference; import java.util.HashMap; import java.util.Locale; public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceChangeListener { - private static final String TAG = "KeyboardSwitcher"; - private static final boolean DEBUG = false; + private static final String TAG = KeyboardSwitcher.class.getSimpleName(); + private static final boolean DEBUG_CACHE = LatinImeLogger.sDBG; public static final boolean DEBUG_STATE = false; - private static String sConfigDefaultKeyboardThemeId; public static final String PREF_KEYBOARD_LAYOUT = "pref_keyboard_layout_20100902"; private static final int[] KEYBOARD_THEMES = { - R.layout.input_basic, - R.layout.input_basic_highcontrast, - R.layout.input_stone_normal, - R.layout.input_stone_bold, - R.layout.input_gingerbread, - R.layout.input_honeycomb, + R.style.KeyboardTheme, + R.style.KeyboardTheme_HighContrast, + R.style.KeyboardTheme_Stone, + R.style.KeyboardTheme_Stone_Bold, + R.style.KeyboardTheme_Gingerbread, + R.style.KeyboardTheme_IceCreamSandwich, }; private SubtypeSwitcher mSubtypeSwitcher; private SharedPreferences mPrefs; - private LatinKeyboardView mInputView; + private View mCurrentInputView; + private LatinKeyboardView mKeyboardView; private LatinIME mInputMethodService; // TODO: Combine these key state objects with auto mode switch state. @@ -98,7 +104,9 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha // Default is SETTINGS_KEY_MODE_AUTO. private static final int DEFAULT_SETTINGS_KEY_MODE = SETTINGS_KEY_MODE_AUTO; - private int mLayoutId; + private int mThemeIndex = -1; + private Context mThemeContext; + private int mKeyboardWidth; private static final KeyboardSwitcher sInstance = new KeyboardSwitcher(); @@ -114,17 +122,30 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha sInstance.mInputMethodService = ims; sInstance.mPrefs = prefs; sInstance.mSubtypeSwitcher = SubtypeSwitcher.getInstance(); + sInstance.setContextThemeWrapper(ims, getKeyboardThemeIndex(ims, prefs)); + prefs.registerOnSharedPreferenceChangeListener(sInstance); + } + private static int getKeyboardThemeIndex(Context context, SharedPreferences prefs) { + final String defaultThemeId = context.getString(R.string.config_default_keyboard_theme_id); + final String themeId = prefs.getString(PREF_KEYBOARD_LAYOUT, defaultThemeId); try { - sConfigDefaultKeyboardThemeId = ims.getString( - R.string.config_default_keyboard_theme_id); - sInstance.mLayoutId = Integer.valueOf( - prefs.getString(PREF_KEYBOARD_LAYOUT, sConfigDefaultKeyboardThemeId)); + final int themeIndex = Integer.valueOf(themeId); + if (themeIndex >= 0 && themeIndex < KEYBOARD_THEMES.length) + return themeIndex; } catch (NumberFormatException e) { - sConfigDefaultKeyboardThemeId = "0"; - sInstance.mLayoutId = 0; + // Format error, keyboard theme is default to 0. + } + Log.w(TAG, "Illegal keyboard theme in preference: " + themeId + ", default to 0"); + return 0; + } + + private void setContextThemeWrapper(Context context, int themeIndex) { + if (mThemeIndex != themeIndex) { + mThemeIndex = themeIndex; + mThemeContext = new ContextThemeWrapper(context, KEYBOARD_THEMES[themeIndex]); + mKeyboardCache.clear(); } - prefs.registerOnSharedPreferenceChangeListener(sInstance); } public void loadKeyboard(EditorInfo attribute, boolean voiceKeyEnabled, @@ -142,7 +163,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha private void loadKeyboardInternal(EditorInfo attribute, boolean voiceButtonEnabled, boolean voiceButtonOnPrimary, boolean isSymbols) { - if (mInputView == null) return; + if (mKeyboardView == null) return; mAttribute = attribute; mVoiceKeyEnabled = voiceButtonEnabled; @@ -151,17 +172,39 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha // Update the settings key state because number of enabled IMEs could have been changed mSettingsKeyEnabledInSettings = getSettingsKeyMode(mPrefs, mInputMethodService); final KeyboardId id = getKeyboardId(attribute, isSymbols); - makeSymbolsKeyboardIds(id.mMode, attribute); - mCurrentId = id; - final Resources res = mInputMethodService.getResources(); - mInputView.setKeyPreviewPopupEnabled(Settings.Values.isKeyPreviewPopupEnabled(mPrefs, res), - Settings.Values.getKeyPreviewPopupDismissDelay(mPrefs, res)); + + // Note: This comment is only applied for phone number keyboard layout. + // On non-xlarge device, "@integer/key_switch_alpha_symbol" key code is used to switch + // between "phone keyboard" and "phone symbols keyboard". But on xlarge device, + // "@integer/key_shift" key code is used for that purpose in order to properly display + // "more" and "locked more" key labels. To achieve these behavior, we should initialize + // mSymbolsId and mSymbolsShiftedId to "phone keyboard" and "phone symbols keyboard" + // respectively here for xlarge device's layout switching. + mSymbolsId = makeSiblingKeyboardId(id, R.xml.kbd_symbols, R.xml.kbd_phone); + mSymbolsShiftedId = makeSiblingKeyboardId( + id, R.xml.kbd_symbols_shift, R.xml.kbd_phone_symbols); + setKeyboard(getKeyboard(id)); } + public void onSizeChanged() { + final int width = mInputMethodService.getWindow().getWindow().getDecorView().getWidth(); + if (width == 0 || mCurrentId == null) + return; + mKeyboardWidth = width; + // Set keyboard with new width. + final KeyboardId newId = mCurrentId.cloneWithNewGeometry(width); + setKeyboard(getKeyboard(newId)); + } + private void setKeyboard(final Keyboard newKeyboard) { - final Keyboard oldKeyboard = mInputView.getKeyboard(); - mInputView.setKeyboard(newKeyboard); + final Keyboard oldKeyboard = mKeyboardView.getKeyboard(); + mKeyboardView.setKeyboard(newKeyboard); + mCurrentId = newKeyboard.mId; + final Resources res = mInputMethodService.getResources(); + mKeyboardView.setKeyPreviewPopupEnabled( + Settings.Values.isKeyPreviewPopupEnabled(mPrefs, res), + Settings.Values.getKeyPreviewPopupDismissDelay(mPrefs, res)); final boolean localeChanged = (oldKeyboard == null) || !newKeyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale); mInputMethodService.mHandler.startDisplayLanguageOnSpacebar(localeChanged); @@ -175,19 +218,19 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha final Locale savedLocale = Utils.setSystemLocale(res, mSubtypeSwitcher.getInputLocale()); - keyboard = new LatinKeyboard(mInputMethodService, id); + keyboard = new LatinKeyboard(mThemeContext, id, id.mWidth); if (id.mEnableShiftLock) { keyboard.enableShiftLock(); } mKeyboardCache.put(id, new SoftReference<LatinKeyboard>(keyboard)); - if (DEBUG) + if (DEBUG_CACHE) Log.d(TAG, "keyboard cache size=" + mKeyboardCache.size() + ": " + ((ref == null) ? "LOAD" : "GCed") + " id=" + id); Utils.setSystemLocale(res, savedLocale); - } else if (DEBUG) { + } else if (DEBUG_CACHE) { Log.d(TAG, "keyboard cache size=" + mKeyboardCache.size() + ": HIT id=" + id); } @@ -215,7 +258,6 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha private KeyboardId getKeyboardId(EditorInfo attribute, boolean isSymbols) { final int mode = Utils.getKeyboardMode(attribute); final boolean hasVoiceKey = hasVoiceKey(isSymbols); - final int charColorId = getColorScheme(); final int xmlId; final boolean enableShiftLock; @@ -242,35 +284,25 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } } final boolean hasSettingsKey = hasSettingsKey(attribute); + final int f2KeyMode = getF2KeyMode(mPrefs, mInputMethodService, attribute); + final boolean clobberSettingsKey = Utils.inPrivateImeOptions( + mInputMethodService.getPackageName(), LatinIME.IME_OPTION_NO_SETTINGS_KEY, + attribute); final Resources res = mInputMethodService.getResources(); final int orientation = res.getConfiguration().orientation; + if (mKeyboardWidth == 0) + mKeyboardWidth = res.getDisplayMetrics().widthPixels; final Locale locale = mSubtypeSwitcher.getInputLocale(); return new KeyboardId( - res.getResourceEntryName(xmlId), xmlId, charColorId, locale, orientation, mode, - attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, enableShiftLock); + res.getResourceEntryName(xmlId), xmlId, locale, orientation, mKeyboardWidth, + mode, attribute, hasSettingsKey, f2KeyMode, clobberSettingsKey, mVoiceKeyEnabled, + hasVoiceKey, enableShiftLock); } - private void makeSymbolsKeyboardIds(final int mode, EditorInfo attribute) { - final Locale locale = mSubtypeSwitcher.getInputLocale(); - final Resources res = mInputMethodService.getResources(); - final int orientation = res.getConfiguration().orientation; - final int colorScheme = getColorScheme(); - final boolean hasVoiceKey = mVoiceKeyEnabled && !mVoiceButtonOnPrimary; - final boolean hasSettingsKey = hasSettingsKey(attribute); - // Note: This comment is only applied for phone number keyboard layout. - // On non-xlarge device, "@integer/key_switch_alpha_symbol" key code is used to switch - // between "phone keyboard" and "phone symbols keyboard". But on xlarge device, - // "@integer/key_shift" key code is used for that purpose in order to properly display - // "more" and "locked more" key labels. To achieve these behavior, we should initialize - // mSymbolsId and mSymbolsShiftedId to "phone keyboard" and "phone symbols keyboard" - // respectively here for xlarge device's layout switching. - int xmlId = mode == KeyboardId.MODE_PHONE ? R.xml.kbd_phone : R.xml.kbd_symbols; - final String xmlName = res.getResourceEntryName(xmlId); - mSymbolsId = new KeyboardId(xmlName, xmlId, colorScheme, locale, orientation, mode, - attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, false); - xmlId = mode == KeyboardId.MODE_PHONE ? R.xml.kbd_phone_symbols : R.xml.kbd_symbols_shift; - mSymbolsShiftedId = new KeyboardId(xmlName, xmlId, colorScheme, locale, orientation, mode, - attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, false); + private KeyboardId makeSiblingKeyboardId(KeyboardId base, int alphabet, int phone) { + final int xmlId = base.mMode == KeyboardId.MODE_PHONE ? phone : alphabet; + final String xmlName = mInputMethodService.getResources().getResourceEntryName(xmlId); + return base.cloneWithNewLayout(xmlName, xmlId); } public int getKeyboardMode() { @@ -282,18 +314,18 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } public boolean isInputViewShown() { - return mInputView != null && mInputView.isShown(); + return mCurrentInputView != null && mCurrentInputView.isShown(); } public boolean isKeyboardAvailable() { - if (mInputView != null) - return mInputView.getKeyboard() != null; + if (mKeyboardView != null) + return mKeyboardView.getKeyboard() != null; return false; } public LatinKeyboard getLatinKeyboard() { - if (mInputView != null) { - final Keyboard keyboard = mInputView.getKeyboard(); + if (mKeyboardView != null) { + final Keyboard keyboard = mKeyboardView.getKeyboard(); if (keyboard instanceof LatinKeyboard) return (LatinKeyboard)keyboard; } @@ -346,7 +378,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha latinKeyboard.setShiftLocked(false); } if (latinKeyboard.setShifted(shifted)) { - mInputView.invalidateAllKeys(); + mKeyboardView.invalidateAllKeys(); } } } @@ -354,7 +386,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha private void setShiftLocked(boolean shiftLocked) { LatinKeyboard latinKeyboard = getLatinKeyboard(); if (latinKeyboard != null && latinKeyboard.setShiftLocked(shiftLocked)) { - mInputView.invalidateAllKeys(); + mKeyboardView.invalidateAllKeys(); } } @@ -396,7 +428,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha LatinKeyboard latinKeyboard = getLatinKeyboard(); if (latinKeyboard != null) { latinKeyboard.setAutomaticTemporaryUpperCase(); - mInputView.invalidateAllKeys(); + mKeyboardView.invalidateAllKeys(); } } @@ -491,7 +523,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha // To be able to turn off caps lock by "double tap" on shift key, we should ignore // the second tap of the "double tap" from now for a while because we just have // already turned off caps lock above. - mInputView.startIgnoringDoubleTap(); + mKeyboardView.startIgnoringDoubleTap(); } else if (isShiftedOrShiftLocked() && shiftKeyState.isPressingOnShifted() && !withSliding) { // Shift has been pressed without chording while shifted state. @@ -561,14 +593,12 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha return; final LatinKeyboard keyboard; if (mCurrentId.equals(mSymbolsId) || !mCurrentId.equals(mSymbolsShiftedId)) { - mCurrentId = mSymbolsShiftedId; - keyboard = getKeyboard(mCurrentId); + keyboard = getKeyboard(mSymbolsShiftedId); // Symbol shifted keyboard has an ALT key that has a caps lock style indicator. To // enable the indicator, we need to call setShiftLocked(true). keyboard.setShiftLocked(true); } else { - mCurrentId = mSymbolsId; - keyboard = getKeyboard(mCurrentId); + keyboard = getKeyboard(mSymbolsId); // Symbol keyboard has an ALT key that has a caps lock style indicator. To disable the // indicator, we need to call setShiftLocked(false). keyboard.setShiftLocked(false); @@ -582,11 +612,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } public boolean isVibrateAndSoundFeedbackRequired() { - return mInputView == null || !mInputView.isInSlidingKeyInput(); + return mKeyboardView == null || !mKeyboardView.isInSlidingKeyInput(); } private int getPointerCount() { - return mInputView == null ? 0 : mInputView.getPointerCount(); + return mKeyboardView == null ? 0 : mKeyboardView.getPointerCount(); } private void toggleKeyboardMode() { @@ -599,7 +629,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } public boolean hasDistinctMultitouch() { - return mInputView != null && mInputView.hasDistinctMultitouch(); + return mKeyboardView != null && mKeyboardView.hasDistinctMultitouch(); } private static boolean isSpaceCharacter(int c) { @@ -696,53 +726,58 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } } - public LatinKeyboardView getInputView() { - return mInputView; + public LatinKeyboardView getKeyboardView() { + return mKeyboardView; } - public LatinKeyboardView onCreateInputView() { - createInputViewInternal(mLayoutId, true); - return mInputView; + public View onCreateInputView() { + return createInputView(mThemeIndex, true); } - private void createInputViewInternal(int newLayout, boolean forceReset) { - int layoutId = newLayout; - if (mLayoutId != layoutId || mInputView == null || forceReset) { - if (mInputView != null) { - mInputView.closing(); - } - if (KEYBOARD_THEMES.length <= layoutId) { - layoutId = Integer.valueOf(sConfigDefaultKeyboardThemeId); - } + private View createInputView(final int newThemeIndex, final boolean forceRecreate) { + if (mCurrentInputView != null && mThemeIndex == newThemeIndex && !forceRecreate) + return mCurrentInputView; - Utils.GCUtils.getInstance().reset(); - boolean tryGC = true; - for (int i = 0; i < Utils.GCUtils.GC_TRY_LOOP_MAX && tryGC; ++i) { - try { - mInputView = (LatinKeyboardView) mInputMethodService.getLayoutInflater( - ).inflate(KEYBOARD_THEMES[layoutId], null); - tryGC = false; - } catch (OutOfMemoryError e) { - Log.w(TAG, "load keyboard failed: " + e); - tryGC = Utils.GCUtils.getInstance().tryGCOrWait( - mLayoutId + "," + layoutId, e); - } catch (InflateException e) { - Log.w(TAG, "load keyboard failed: " + e); - tryGC = Utils.GCUtils.getInstance().tryGCOrWait( - mLayoutId + "," + layoutId, e); - } + if (mKeyboardView != null) { + mKeyboardView.closing(); + } + + final int oldThemeIndex = mThemeIndex; + Utils.GCUtils.getInstance().reset(); + boolean tryGC = true; + for (int i = 0; i < Utils.GCUtils.GC_TRY_LOOP_MAX && tryGC; ++i) { + try { + setContextThemeWrapper(mInputMethodService, newThemeIndex); + mCurrentInputView = LayoutInflater.from(mThemeContext).inflate( + R.layout.input_view, null); + tryGC = false; + } catch (OutOfMemoryError e) { + Log.w(TAG, "load keyboard failed: " + e); + tryGC = Utils.GCUtils.getInstance().tryGCOrWait( + oldThemeIndex + "," + newThemeIndex, e); + } catch (InflateException e) { + Log.w(TAG, "load keyboard failed: " + e); + tryGC = Utils.GCUtils.getInstance().tryGCOrWait( + oldThemeIndex + "," + newThemeIndex, e); } - mInputView.setOnKeyboardActionListener(mInputMethodService); - mLayoutId = layoutId; } + + mKeyboardView = (LatinKeyboardView) mCurrentInputView.findViewById(R.id.keyboard_view); + mKeyboardView.setOnKeyboardActionListener(mInputMethodService); + + // This always needs to be set since the accessibility state can + // potentially change without the input view being re-created. + AccessibleKeyboardViewProxy.setView(mKeyboardView); + + return mCurrentInputView; } - private void postSetInputView() { + private void postSetInputView(final View newInputView) { mInputMethodService.mHandler.post(new Runnable() { @Override public void run() { - if (mInputView != null) { - mInputMethodService.setInputView(mInputView); + if (newInputView != null) { + mInputMethodService.setInputView(newInputView); } mInputMethodService.updateInputViewShown(); } @@ -752,43 +787,39 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (PREF_KEYBOARD_LAYOUT.equals(key)) { - final int layoutId = Integer.valueOf( - sharedPreferences.getString(key, sConfigDefaultKeyboardThemeId)); - createInputViewInternal(layoutId, false); - postSetInputView(); + final int layoutId = getKeyboardThemeIndex(mInputMethodService, sharedPreferences); + postSetInputView(createInputView(layoutId, false)); } else if (Settings.PREF_SETTINGS_KEY.equals(key)) { mSettingsKeyEnabledInSettings = getSettingsKeyMode(sharedPreferences, mInputMethodService); - createInputViewInternal(mLayoutId, true); - postSetInputView(); + postSetInputView(createInputView(mThemeIndex, true)); } } - private int getColorScheme() { - return (mInputView != null) - ? mInputView.getColorScheme() : KeyboardView.COLOR_SCHEME_WHITE; - } - public void onAutoCorrectionStateChanged(boolean isAutoCorrection) { - if (isAutoCorrection != mIsAutoCorrectionActive) { - LatinKeyboardView keyboardView = getInputView(); + if (mIsAutoCorrectionActive != isAutoCorrection) { mIsAutoCorrectionActive = isAutoCorrection; - keyboardView.invalidateKey(((LatinKeyboard) keyboardView.getKeyboard()) - .onAutoCorrectionStateChanged(isAutoCorrection)); + final LatinKeyboard keyboard = getLatinKeyboard(); + if (keyboard != null && keyboard.needsAutoCorrectionSpacebarLed()) { + final Key invalidatedKey = keyboard.onAutoCorrectionStateChanged(isAutoCorrection); + final LatinKeyboardView keyboardView = getKeyboardView(); + if (keyboardView != null) + keyboardView.invalidateKey(invalidatedKey); + } } } private static boolean getSettingsKeyMode(SharedPreferences prefs, Context context) { - Resources resources = context.getResources(); - final boolean showSettingsKeyOption = resources.getBoolean( + final Resources res = context.getResources(); + final boolean showSettingsKeyOption = res.getBoolean( R.bool.config_enable_show_settings_key_option); if (showSettingsKeyOption) { final String settingsKeyMode = prefs.getString(Settings.PREF_SETTINGS_KEY, - resources.getString(DEFAULT_SETTINGS_KEY_MODE)); + res.getString(DEFAULT_SETTINGS_KEY_MODE)); // We show the settings key when 1) SETTINGS_KEY_MODE_ALWAYS_SHOW or // 2) SETTINGS_KEY_MODE_AUTO and there are two or more enabled IMEs on the system - if (settingsKeyMode.equals(resources.getString(SETTINGS_KEY_MODE_ALWAYS_SHOW)) - || (settingsKeyMode.equals(resources.getString(SETTINGS_KEY_MODE_AUTO)) + if (settingsKeyMode.equals(res.getString(SETTINGS_KEY_MODE_ALWAYS_SHOW)) + || (settingsKeyMode.equals(res.getString(SETTINGS_KEY_MODE_AUTO)) && Utils.hasMultipleEnabledIMEsOrSubtypes( (InputMethodManagerCompatWrapper.getInstance(context))))) { return true; @@ -798,4 +829,21 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha // If the show settings key option is disabled, we always try showing the settings key. return true; } + + private static int getF2KeyMode(SharedPreferences prefs, Context context, + EditorInfo attribute) { + final boolean clobberSettingsKey = Utils.inPrivateImeOptions( + context.getPackageName(), LatinIME.IME_OPTION_NO_SETTINGS_KEY, attribute); + final Resources res = context.getResources(); + final String settingsKeyMode = prefs.getString(Settings.PREF_SETTINGS_KEY, + res.getString(DEFAULT_SETTINGS_KEY_MODE)); + if (settingsKeyMode.equals(res.getString(SETTINGS_KEY_MODE_AUTO))) { + return clobberSettingsKey ? KeyboardId.F2KEY_MODE_SHORTCUT_IME + : KeyboardId.F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS; + } else if (settingsKeyMode.equals(res.getString(SETTINGS_KEY_MODE_ALWAYS_SHOW))) { + return clobberSettingsKey ? KeyboardId.F2KEY_MODE_NONE : KeyboardId.F2KEY_MODE_SETTINGS; + } else { // SETTINGS_KEY_MODE_ALWAYS_HIDE + return KeyboardId.F2KEY_MODE_SHORTCUT_IME; + } + } } diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index 4f85c0348..8d4bfd7a7 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -16,9 +16,6 @@ package com.android.inputmethod.keyboard; -import com.android.inputmethod.latin.LatinImeLogger; -import com.android.inputmethod.latin.R; - import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; @@ -44,12 +41,19 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup; -import android.view.ViewGroup.MarginLayoutParams; -import android.widget.FrameLayout; -import android.widget.LinearLayout; +import android.view.accessibility.AccessibilityEvent; import android.widget.PopupWindow; import android.widget.TextView; +import com.android.inputmethod.accessibility.AccessibilityUtils; +import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy; +import com.android.inputmethod.compat.FrameLayoutCompatUtils; +import com.android.inputmethod.keyboard.internal.MiniKeyboardBuilder; +import com.android.inputmethod.keyboard.internal.PointerTrackerQueue; +import com.android.inputmethod.keyboard.internal.SwipeTracker; +import com.android.inputmethod.latin.LatinImeLogger; +import com.android.inputmethod.latin.R; + import java.util.ArrayList; import java.util.HashMap; import java.util.WeakHashMap; @@ -59,17 +63,21 @@ import java.util.WeakHashMap; * presses and touch movements. * * @attr ref R.styleable#KeyboardView_backgroundDimAmount - * @attr ref R.styleable#KeyboardView_colorScheme * @attr ref R.styleable#KeyboardView_keyBackground * @attr ref R.styleable#KeyboardView_keyHysteresisDistance * @attr ref R.styleable#KeyboardView_keyLetterRatio - * @attr ref R.styleable#KeyboardView_keyLetterStyle + * @attr ref R.styleable#KeyboardView_keyLabelRatio + * @attr ref R.styleable#KeyboardView_keyHintLetterRatio + * @attr ref R.styleable#KeyboardView_keyUppercaseLetterRatio + * @attr ref R.styleable#KeyboardView_keyTextStyle * @attr ref R.styleable#KeyboardView_keyPreviewLayout * @attr ref R.styleable#KeyboardView_keyPreviewOffset * @attr ref R.styleable#KeyboardView_keyPreviewHeight * @attr ref R.styleable#KeyboardView_keyTextColor * @attr ref R.styleable#KeyboardView_keyTextColorDisabled - * @attr ref R.styleable#KeyboardView_labelTextRatio + * @attr ref R.styleable#KeyboardView_keyHintLetterColor + * @attr ref R.styleable#KeyboardView_keyUppercaseLetterInactivatedColor + * @attr ref R.styleable#KeyboardView_keyUppercaseLetterActivatedColor * @attr ref R.styleable#KeyboardView_verticalCorrection * @attr ref R.styleable#KeyboardView_popupLayout * @attr ref R.styleable#KeyboardView_shadowColor @@ -83,9 +91,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { private static final boolean ENABLE_CAPSLOCK_BY_LONGPRESS = true; private static final boolean ENABLE_CAPSLOCK_BY_DOUBLETAP = true; - public static final int COLOR_SCHEME_WHITE = 0; - public static final int COLOR_SCHEME_BLACK = 1; - // Timing constants private final int mKeyRepeatInterval; @@ -96,10 +101,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { // XML attribute private final float mKeyLetterRatio; private final int mKeyTextColor; - private final int mKeyTextColorDisabled; - private final Typeface mKeyLetterStyle; - private final float mLabelTextRatio; - private final int mColorScheme; + private final int mKeyTextInactivatedColor; + private final Typeface mKeyTextStyle; + private final float mKeyLabelRatio; + private final float mKeyHintLetterRatio; + private final float mKeyUppercaseLetterRatio; private final int mShadowColor; private final float mShadowRadius; private final Drawable mKeyBackground; @@ -109,11 +115,17 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { private final int mPreviewOffset; private final int mPreviewHeight; private final int mPopupLayout; + private final Drawable mKeyPopupHintIcon; + private final int mKeyHintLetterColor; + private final int mKeyUppercaseLetterInactivatedColor; + private final int mKeyUppercaseLetterActivatedColor; // Main keyboard private Keyboard mKeyboard; private int mKeyLetterSize; - private int mLabelTextSize; + private int mKeyLabelSize; + private int mKeyHintLetterSize; + private int mKeyUppercaseLetterSize; // Key preview private boolean mInForeground; @@ -121,7 +133,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { private float mPreviewTextRatio; private int mPreviewTextSize; private boolean mShowKeyPreviewPopup = true; - private int mKeyPreviewPopupDisplayedY; private final int mDelayBeforePreview; private int mDelayAfterPreview; private ViewGroup mPreviewPlacer; @@ -168,18 +179,17 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { private Bitmap mBuffer; /** The canvas for the above mutable keyboard bitmap */ private Canvas mCanvas; - private final Paint mPaint; - private final Rect mPadding; + private final Paint mPaint = new Paint(); + private final Rect mPadding = new Rect(); + private final Rect mTextBounds = new Rect(); // This map caches key label text height in pixel as value and key label text size as map key. private final HashMap<Integer, Integer> mTextHeightCache = new HashMap<Integer, Integer>(); + // This map caches key label text width in pixel as value and key label text size as map key. + private final HashMap<Integer, Integer> mTextWidthCache = new HashMap<Integer, Integer>(); // Distance from horizontal center of the key, proportional to key label text height and width. - private final float KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR_CENTER = 0.45f; - private final float KEY_LABEL_VERTICAL_PADDING_FACTOR = 1.60f; - private final String KEY_LABEL_REFERENCE_CHAR = "H"; - private final int KEY_LABEL_OPTION_ALIGN_LEFT = 1; - private final int KEY_LABEL_OPTION_ALIGN_RIGHT = 2; - private final int KEY_LABEL_OPTION_ALIGN_BOTTOM = 8; - private final int KEY_LABEL_OPTION_FONT_NORMAL = 16; + private static final float KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR_CENTER = 0.45f; + private static final float KEY_LABEL_VERTICAL_PADDING_FACTOR = 1.60f; + private static final String KEY_LABEL_REFERENCE_CHAR = "M"; private final int mKeyLabelHorizontalPadding; private final UIHandler mHandler = new UIHandler(); @@ -321,18 +331,27 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { mPreviewOffset = a.getDimensionPixelOffset(R.styleable.KeyboardView_keyPreviewOffset, 0); mPreviewHeight = a.getDimensionPixelSize(R.styleable.KeyboardView_keyPreviewHeight, 80); mKeyLetterRatio = getRatio(a, R.styleable.KeyboardView_keyLetterRatio); + mKeyLabelRatio = getRatio(a, R.styleable.KeyboardView_keyLabelRatio); + mKeyHintLetterRatio = getRatio(a, R.styleable.KeyboardView_keyHintLetterRatio); + mKeyUppercaseLetterRatio = getRatio(a, + R.styleable.KeyboardView_keyUppercaseLetterRatio); mKeyTextColor = a.getColor(R.styleable.KeyboardView_keyTextColor, 0xFF000000); - mKeyTextColorDisabled = a.getColor( - R.styleable.KeyboardView_keyTextColorDisabled, 0xFF000000); - mLabelTextRatio = getRatio(a, R.styleable.KeyboardView_labelTextRatio); + mKeyTextInactivatedColor = a.getColor( + R.styleable.KeyboardView_keyTextInactivatedColor, 0xFF000000); + mKeyPopupHintIcon = a.getDrawable(R.styleable.KeyboardView_keyPopupHintIcon); + mKeyHintLetterColor = a.getColor(R.styleable.KeyboardView_keyHintLetterColor, 0); + mKeyUppercaseLetterInactivatedColor = a.getColor( + R.styleable.KeyboardView_keyUppercaseLetterInactivatedColor, 0); + mKeyUppercaseLetterActivatedColor = a.getColor( + R.styleable.KeyboardView_keyUppercaseLetterActivatedColor, 0); + mKeyTextStyle = Typeface.defaultFromStyle( + a.getInt(R.styleable.KeyboardView_keyTextStyle, Typeface.NORMAL)); mPopupLayout = a.getResourceId(R.styleable.KeyboardView_popupLayout, 0); mShadowColor = a.getColor(R.styleable.KeyboardView_shadowColor, 0); mShadowRadius = a.getFloat(R.styleable.KeyboardView_shadowRadius, 0f); // TODO: Use Theme (android.R.styleable.Theme_backgroundDimAmount) mBackgroundDimAmount = a.getFloat(R.styleable.KeyboardView_backgroundDimAmount, 0.5f); - mKeyLetterStyle = Typeface.defaultFromStyle( - a.getInt(R.styleable.KeyboardView_keyLetterStyle, Typeface.NORMAL)); - mColorScheme = a.getInt(R.styleable.KeyboardView_colorScheme, COLOR_SCHEME_WHITE); + a.recycle(); final Resources res = getResources(); @@ -347,12 +366,10 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { mKeyLabelHorizontalPadding = (int)res.getDimension( R.dimen.key_label_horizontal_alignment_padding); - mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setTextAlign(Align.CENTER); mPaint.setAlpha(255); - mPadding = new Rect(0, 0, 0, 0); mKeyBackground.getPadding(mPadding); mSwipeThreshold = (int) (500 * res.getDisplayMetrics().density); @@ -462,6 +479,12 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { return mKeyboardActionListener; } + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + // TODO: Should notify InputMethodService instead? + KeyboardSwitcher.getInstance().onSizeChanged(); + } + /** * Attaches a keyboard to this view. The keyboard can be switched at any time and the * view will re-layout itself to accommodate the keyboard. @@ -490,7 +513,10 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { mPopupPanelCache.clear(); final int keyHeight = keyboard.getRowHeight() - keyboard.getVerticalGap(); mKeyLetterSize = (int)(keyHeight * mKeyLetterRatio); - mLabelTextSize = (int)(keyHeight * mLabelTextRatio); + mKeyLabelSize = (int)(keyHeight * mKeyLabelRatio); + mKeyHintLetterSize = (int)(keyHeight * mKeyHintLetterRatio); + mKeyUppercaseLetterSize = (int)( + keyHeight * mKeyUppercaseLetterRatio); mPreviewTextSize = (int)(keyHeight * mPreviewTextRatio); } @@ -533,10 +559,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { return mShowKeyPreviewPopup; } - public int getColorScheme() { - return mColorScheme; - } - /** * When enabled, calls to {@link KeyboardActionListener#onCodeInput} will include key * codes for adjacent keys. When disabled, only the primary key code will be @@ -597,8 +619,14 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { mDirtyRect.union(0, 0, width, height); } if (mBuffer == null || mBuffer.getWidth() != width || mBuffer.getHeight() != height) { + if (mBuffer != null) + mBuffer.recycle(); mBuffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - mCanvas = new Canvas(mBuffer); + if (mCanvas != null) { + mCanvas.setBitmap(mBuffer); + } else { + mCanvas = new Canvas(mBuffer); + } } final Canvas canvas = mCanvas; canvas.clipRect(mDirtyRect, Op.REPLACE); @@ -677,7 +705,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { // Vertical label text alignment. final float baseline; - if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_BOTTOM) != 0) { + if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_BOTTOM) != 0) { baseline = key.mHeight - labelCharHeight * KEY_LABEL_VERTICAL_PADDING_FACTOR; if (DEBUG_SHOW_ALIGN) drawHorizontalLine(canvas, (int)baseline, keyDrawWidth, 0xc0008000, @@ -691,12 +719,12 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { } // Horizontal label text alignment final int positionX; - if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_LEFT) != 0) { + if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT) != 0) { positionX = mKeyLabelHorizontalPadding + padding.left; paint.setTextAlign(Align.LEFT); if (DEBUG_SHOW_ALIGN) drawVerticalLine(canvas, positionX, rowHeight, 0xc0800080, new Paint()); - } else if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_RIGHT) != 0) { + } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_RIGHT) != 0) { positionX = keyDrawWidth - mKeyLabelHorizontalPadding - padding.right; paint.setTextAlign(Align.RIGHT); if (DEBUG_SHOW_ALIGN) @@ -709,12 +737,12 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { drawVerticalLine(canvas, positionX, rowHeight, 0xc0008080, new Paint()); } } - if (key.mManualTemporaryUpperCaseHintIcon != null && isManualTemporaryUpperCase) { - paint.setColor(mKeyTextColorDisabled); + if (key.hasUppercaseLetter() && isManualTemporaryUpperCase) { + paint.setColor(mKeyTextInactivatedColor); } else { paint.setColor(mKeyTextColor); } - if (key.mEnabled) { + if (key.isEnabled()) { // Set a drop shadow for the text paint.setShadowLayer(mShadowRadius, 0, 0, mShadowColor); } else { @@ -726,6 +754,27 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { paint.setShadowLayer(0, 0, 0, 0); } + // Draw hint letter. + if (key.mHintLetter != null) { + final String label = key.mHintLetter.toString(); + final int textColor; + final int textSize; + if (key.hasUppercaseLetter()) { + textColor = isManualTemporaryUpperCase ? mKeyUppercaseLetterActivatedColor + : mKeyUppercaseLetterInactivatedColor; + textSize = mKeyUppercaseLetterSize; + } else { + textColor = mKeyHintLetterColor; + textSize = mKeyHintLetterSize; + } + paint.setColor(textColor); + paint.setTextSize(textSize); + // Note: padding.right for drawX? + final float drawX = keyDrawWidth - getLabelCharWidth(textSize, paint); + final float drawY = -paint.ascent() + padding.top; + canvas.drawText(label, drawX, drawY, paint); + } + // Draw key icon. final Drawable icon = key.getIcon(); if (key.mLabel == null && icon != null) { @@ -733,11 +782,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { final int drawableHeight = icon.getIntrinsicHeight(); final int drawableX; final int drawableY = (key.mHeight + padding.top - padding.bottom - drawableHeight) / 2; - if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_LEFT) != 0) { + if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT) != 0) { drawableX = padding.left + mKeyLabelHorizontalPadding; if (DEBUG_SHOW_ALIGN) drawVerticalLine(canvas, drawableX, rowHeight, 0xc0800080, new Paint()); - } else if ((key.mLabelOption & KEY_LABEL_OPTION_ALIGN_RIGHT) != 0) { + } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_RIGHT) != 0) { drawableX = keyDrawWidth - padding.right - mKeyLabelHorizontalPadding - drawableWidth; if (DEBUG_SHOW_ALIGN) @@ -755,15 +804,14 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { 0x80c00000, new Paint()); } - // Draw hint icon. - if (key.mHintIcon != null) { + // Draw popup hint icon "...". + // TODO: Draw "..." by text. + if (key.hasPopupHint()) { final int drawableWidth = keyDrawWidth; final int drawableHeight = key.mHeight; final int drawableX = 0; final int drawableY = HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL; - Drawable hintIcon = (isManualTemporaryUpperCase - && key.mManualTemporaryUpperCaseHintIcon != null) - ? key.mManualTemporaryUpperCaseHintIcon : key.mHintIcon; + final Drawable hintIcon = mKeyPopupHintIcon; drawIcon(canvas, hintIcon, drawableX, drawableY, drawableWidth, drawableHeight); if (DEBUG_SHOW_ALIGN) drawRectangle(canvas, drawableX, drawableY, drawableWidth, drawableHeight, @@ -777,16 +825,18 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { // For characters, use large font. For labels like "Done", use small font. final int labelSize; final Typeface labelStyle; + if ((keyLabelOption & Key.LABEL_OPTION_FONT_NORMAL) != 0) { + labelStyle = Typeface.DEFAULT; + } else if ((keyLabelOption & Key.LABEL_OPTION_FONT_FIXED_WIDTH) != 0) { + labelStyle = Typeface.MONOSPACE; + } else { + labelStyle = mKeyTextStyle; + } if (label.length() > 1) { - labelSize = mLabelTextSize; - if ((keyLabelOption & KEY_LABEL_OPTION_FONT_NORMAL) != 0) { - labelStyle = Typeface.DEFAULT; - } else { - labelStyle = Typeface.DEFAULT_BOLD; - } + labelSize = (keyLabelOption & Key.LABEL_OPTION_FOLLOW_KEY_LETTER_RATIO) != 0 + ? mKeyLetterSize : mKeyLabelSize; } else { labelSize = mKeyLetterSize; - labelStyle = mKeyLetterStyle; } paint.setTextSize(labelSize); paint.setTypeface(labelStyle); @@ -799,14 +849,26 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { if (labelHeightValue != null) { labelCharHeight = labelHeightValue; } else { - Rect textBounds = new Rect(); - paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, textBounds); - labelCharHeight = textBounds.height(); + paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, mTextBounds); + labelCharHeight = mTextBounds.height(); mTextHeightCache.put(labelSize, labelCharHeight); } return labelCharHeight; } + private int getLabelCharWidth(int labelSize, Paint paint) { + Integer labelWidthValue = mTextWidthCache.get(labelSize); + final int labelCharWidth; + if (labelWidthValue != null) { + labelCharWidth = labelWidthValue; + } else { + paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, mTextBounds); + labelCharWidth = mTextBounds.width(); + mTextWidthCache.put(labelSize, labelCharWidth); + } + return labelCharWidth; + } + private static void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width, int height) { canvas.translate(x, y); @@ -873,27 +935,12 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { } private void addKeyPreview(TextView keyPreview) { - ViewGroup placer = mPreviewPlacer; - if (placer == null) { - final FrameLayout screenContent = (FrameLayout) getRootView().findViewById( - android.R.id.content); - if (android.os.Build.VERSION.SDK_INT >= /* HONEYCOMB */11) { - placer = screenContent; - } else { - // Insert LinearLayout to be able to setMargin because pre-Honeycomb FrameLayout - // could not handle setMargin properly. - placer = new LinearLayout(getContext()); - screenContent.addView(placer); - } - mPreviewPlacer = placer; - } - if (placer instanceof FrameLayout) { - // Honeycomb or later. - placer.addView(keyPreview, new FrameLayout.LayoutParams(0, 0)); - } else { - // Gingerbread or ealier. - placer.addView(keyPreview, new LinearLayout.LayoutParams(0, 0)); + if (mPreviewPlacer == null) { + mPreviewPlacer = FrameLayoutCompatUtils.getPlacer( + (ViewGroup)getRootView().findViewById(android.R.id.content)); } + final ViewGroup placer = mPreviewPlacer; + placer.addView(keyPreview, FrameLayoutCompatUtils.newLayoutParam(placer, 0, 0)); } // TODO: Introduce minimum duration for displaying key previews @@ -921,14 +968,14 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { if (key.mLabel != null) { // TODO Should take care of temporaryShiftLabel here. previewText.setCompoundDrawables(null, null, null, null); - previewText.setText(adjustCase(tracker.getPreviewText(key))); if (key.mLabel.length() > 1) { previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mKeyLetterSize); previewText.setTypeface(Typeface.DEFAULT_BOLD); } else { previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSize); - previewText.setTypeface(mKeyLetterStyle); + previewText.setTypeface(mKeyTextStyle); } + previewText.setText(adjustCase(tracker.getPreviewText(key))); } else { final Drawable previewIcon = key.getPreviewIcon(); previewText.setCompoundDrawables(null, null, null, @@ -947,15 +994,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { getLocationInWindow(mCoordinates); final int previewX = keyDrawX - (previewWidth - keyDrawWidth) / 2 + mCoordinates[0]; final int previewY = key.mY - previewHeight + mCoordinates[1] + mPreviewOffset; - // Record key preview position to display mini-keyboard later at the same position - mKeyPreviewPopupDisplayedY = previewY; // Place the key preview. // TODO: Adjust position of key previews which touch screen edges - final MarginLayoutParams lp = (MarginLayoutParams)previewText.getLayoutParams(); - lp.width = previewWidth; - lp.height = previewHeight; - lp.setMargins(previewX, previewY, 0, 0); + FrameLayoutCompatUtils.placeViewAt( + previewText, previewX, previewY, previewWidth, previewHeight); previewText.setVisibility(VISIBLE); } @@ -1070,7 +1113,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { miniKeyboardView.setKeyboard(keyboard); container.measure(MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST), - MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.AT_MOST)); + MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); return miniKeyboardView; } @@ -1099,7 +1142,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { mPopupWindow.setClippingEnabled(false); } mPopupMiniKeyboardPanel = popupPanel; - popupPanel.showPanel(this, parentKey, tracker, mKeyPreviewPopupDisplayedY, mPopupWindow); + popupPanel.showPanel(this, parentKey, tracker, mPopupWindow); invalidateAllKeys(); return true; @@ -1278,4 +1321,37 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { public boolean handleBack() { return dismissMiniKeyboard(); } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) { + return AccessibleKeyboardViewProxy.getInstance().dispatchTouchEvent(event) + || super.dispatchTouchEvent(event); + } + + return super.dispatchTouchEvent(event); + } + + @Override + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { + if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) { + final PointerTracker tracker = getPointerTracker(0); + return AccessibleKeyboardViewProxy.getInstance().dispatchPopulateAccessibilityEvent( + event, tracker) || super.dispatchPopulateAccessibilityEvent(event); + } + + return super.dispatchPopulateAccessibilityEvent(event); + } + + public boolean onHoverEvent(MotionEvent event) { + // Since reflection doesn't support calling superclass methods, this + // method checks for the existence of onHoverEvent() in the View class + // before returning a value. + if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) { + final PointerTracker tracker = getPointerTracker(0); + return AccessibleKeyboardViewProxy.getInstance().onHoverEvent(event, tracker); + } + + return false; + } } diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java index c279769f6..00bf348f2 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java @@ -16,9 +16,6 @@ package com.android.inputmethod.keyboard; -import com.android.inputmethod.latin.R; -import com.android.inputmethod.latin.SubtypeSwitcher; - import android.content.Context; import android.content.res.Resources; import android.content.res.Resources.Theme; @@ -36,6 +33,10 @@ import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import com.android.inputmethod.keyboard.internal.SlidingLocaleDrawable; +import com.android.inputmethod.latin.R; +import com.android.inputmethod.latin.SubtypeSwitcher; + import java.lang.ref.SoftReference; import java.util.Arrays; import java.util.HashMap; @@ -49,7 +50,8 @@ public class LatinKeyboard extends Keyboard { public static final int CODE_NEXT_LANGUAGE = -100; public static final int CODE_PREV_LANGUAGE = -101; - private final Context mContext; + private final Resources mRes; + private final Theme mTheme; private final SubtypeSwitcher mSubtypeSwitcher = SubtypeSwitcher.getInstance(); /* Space key and its icons, drawables and colors. */ @@ -57,15 +59,16 @@ public class LatinKeyboard extends Keyboard { private final Drawable mSpaceIcon; private final Drawable mSpacePreviewIcon; private final int mSpaceKeyIndex; - private final Drawable mSpaceAutoCorrectionIndicator; - private final Drawable mButtonArrowLeftIcon; - private final Drawable mButtonArrowRightIcon; + private final boolean mAutoCorrectionSpacebarLedEnabled; + private final Drawable mAutoCorrectionSpacebarLedIcon; + private final Drawable mSpacebarArrowLeftIcon; + private final Drawable mSpacebarArrowRightIcon; private final int mSpacebarTextColor; private final int mSpacebarTextShadowColor; private float mSpacebarTextFadeFactor = 0.0f; private final int mSpacebarLanguageSwitchThreshold; private int mSpacebarSlidingLanguageSwitchDiff; - private SlidingLocaleDrawable mSlidingLocaleIcon; + private final SlidingLocaleDrawable mSlidingLocaleIcon; private final HashMap<Integer, SoftReference<BitmapDrawable>> mSpaceDrawableCache = new HashMap<Integer, SoftReference<BitmapDrawable>>(); @@ -78,7 +81,7 @@ public class LatinKeyboard extends Keyboard { // of the most common key width of this keyboard). private static final int SPACEBAR_DRAG_WIDTH = 3; // Minimum width of space key preview (proportional to keyboard width). - private static final float SPACEBAR_POPUP_MIN_RATIO = 0.4f; + private static final float SPACEBAR_POPUP_MIN_RATIO = 0.5f; // Height in space key the language name will be drawn. (proportional to space key height) public static final float SPACEBAR_LANGUAGE_BASELINE = 0.6f; // If the full language name needs to be smaller than this value to be drawn on space key, @@ -88,10 +91,10 @@ public class LatinKeyboard extends Keyboard { private static final String SMALL_TEXT_SIZE_OF_LANGUAGE_ON_SPACEBAR = "small"; private static final String MEDIUM_TEXT_SIZE_OF_LANGUAGE_ON_SPACEBAR = "medium"; - public LatinKeyboard(Context context, KeyboardId id) { - super(context, id.getXmlId(), id); - final Resources res = context.getResources(); - mContext = context; + public LatinKeyboard(Context context, KeyboardId id, int width) { + super(context, id.getXmlId(), id, width); + mRes = context.getResources(); + mTheme = context.getTheme(); final List<Key> keys = getKeys(); int spaceKeyIndex = -1; @@ -118,21 +121,35 @@ public class LatinKeyboard extends Keyboard { mShortcutKey = (shortcutKeyIndex >= 0) ? keys.get(shortcutKeyIndex) : null; mEnabledShortcutIcon = (mShortcutKey != null) ? mShortcutKey.getIcon() : null; - mSpacebarTextColor = res.getColor(R.color.latinkeyboard_bar_language_text); - if (id.mColorScheme == KeyboardView.COLOR_SCHEME_BLACK) { - mSpacebarTextShadowColor = res.getColor( - R.color.latinkeyboard_bar_language_shadow_black); - mDisabledShortcutIcon = res.getDrawable(R.drawable.sym_bkeyboard_voice_off); - } else { // default color scheme is KeyboardView.COLOR_SCHEME_WHITE - mSpacebarTextShadowColor = res.getColor( - R.color.latinkeyboard_bar_language_shadow_white); - mDisabledShortcutIcon = res.getDrawable(R.drawable.sym_keyboard_voice_off_holo); - } - mSpaceAutoCorrectionIndicator = res.getDrawable(R.drawable.sym_keyboard_space_led); - mButtonArrowLeftIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_left); - mButtonArrowRightIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_right); + final TypedArray a = context.obtainStyledAttributes( + null, R.styleable.LatinKeyboard, R.attr.latinKeyboardStyle, R.style.LatinKeyboard); + mAutoCorrectionSpacebarLedEnabled = a.getBoolean( + R.styleable.LatinKeyboard_autoCorrectionSpacebarLedEnabled, false); + mAutoCorrectionSpacebarLedIcon = a.getDrawable( + R.styleable.LatinKeyboard_autoCorrectionSpacebarLedIcon); + mDisabledShortcutIcon = a.getDrawable(R.styleable.LatinKeyboard_disabledShortcutIcon); + mSpacebarTextColor = a.getColor(R.styleable.LatinKeyboard_spacebarTextColor, 0); + mSpacebarTextShadowColor = a.getColor( + R.styleable.LatinKeyboard_spacebarTextShadowColor, 0); + mSpacebarArrowLeftIcon = a.getDrawable( + R.styleable.LatinKeyboard_spacebarArrowLeftIcon); + mSpacebarArrowRightIcon = a.getDrawable( + R.styleable.LatinKeyboard_spacebarArrowRightIcon); + a.recycle(); + // The threshold is "key width" x 1.25 mSpacebarLanguageSwitchThreshold = (getMostCommonKeyWidth() * 5) / 4; + + if (mSpaceKey != null && mSpacePreviewIcon != null) { + final int slidingIconWidth = Math.max(mSpaceKey.mWidth, + (int)(getMinWidth() * SPACEBAR_POPUP_MIN_RATIO)); + final int spaceKeyheight = mSpacePreviewIcon.getIntrinsicHeight(); + mSlidingLocaleIcon = new SlidingLocaleDrawable( + context, mSpacePreviewIcon, slidingIconWidth, spaceKeyheight); + mSlidingLocaleIcon.setBounds(0, 0, slidingIconWidth, spaceKeyheight); + } else { + mSlidingLocaleIcon = null; + } } public void setSpacebarTextFadeFactor(float fadeFactor, LatinKeyboardView view) { @@ -157,12 +174,16 @@ public class LatinKeyboard extends Keyboard { public void updateShortcutKey(boolean available, LatinKeyboardView view) { if (mShortcutKey == null) return; - mShortcutKey.mEnabled = available; + mShortcutKey.setEnabled(available); mShortcutKey.setIcon(available ? mEnabledShortcutIcon : mDisabledShortcutIcon); if (view != null) view.invalidateKey(mShortcutKey); } + public boolean needsAutoCorrectionSpacebarLed() { + return mAutoCorrectionSpacebarLedEnabled; + } + /** * @return a key which should be invalidated. */ @@ -193,7 +214,7 @@ public class LatinKeyboard extends Keyboard { } // Layout local language name and left and right arrow on spacebar. - private static String layoutSpacebar(Paint paint, Locale locale, Drawable lArrow, + private static String layoutSpacebar(Paint paint, Locale locale, Drawable icon, Drawable lArrow, Drawable rArrow, int width, int height, float origTextSize) { final float arrowWidth = lArrow.getIntrinsicWidth(); final float arrowHeight = lArrow.getIntrinsicHeight(); @@ -230,7 +251,9 @@ public class LatinKeyboard extends Keyboard { paint.setTextSize(textSize); // Place left and right arrow just before and after language text. - final float baseline = height * SPACEBAR_LANGUAGE_BASELINE; + final float textHeight = -paint.ascent() + paint.descent(); + final float baseline = (icon != null) ? height * SPACEBAR_LANGUAGE_BASELINE + : height / 2 + textHeight / 2; final int top = (int)(baseline - arrowHeight); final float remains = (width - textWidth) / 2; lArrow.setBounds((int)(remains - arrowWidth), top, (int)remains, (int)baseline); @@ -246,7 +269,7 @@ public class LatinKeyboard extends Keyboard { final SoftReference<BitmapDrawable> ref = mSpaceDrawableCache.get(hashCode); BitmapDrawable drawable = (ref == null) ? null : ref.get(); if (drawable == null) { - drawable = new BitmapDrawable(mContext.getResources(), drawSpacebar( + drawable = new BitmapDrawable(mRes, drawSpacebar( locale, isAutoCorrection, mSpacebarTextFadeFactor)); mSpaceDrawableCache.put(hashCode, new SoftReference<BitmapDrawable>(drawable)); } @@ -259,7 +282,7 @@ public class LatinKeyboard extends Keyboard { final int height = mSpaceIcon != null ? mSpaceIcon.getIntrinsicHeight() : mSpaceKey.mHeight; final Bitmap buffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(buffer); - final Resources res = mContext.getResources(); + final Resources res = mRes; canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); // If application locales are explicitly selected. @@ -281,9 +304,9 @@ public class LatinKeyboard extends Keyboard { defaultTextSize = 14; } - final String language = layoutSpacebar(paint, inputLocale, - mButtonArrowLeftIcon, mButtonArrowRightIcon, width, height, - getTextSizeFromTheme(mContext.getTheme(), textStyle, defaultTextSize)); + final String language = layoutSpacebar(paint, inputLocale, mSpaceIcon, + mSpacebarArrowLeftIcon, mSpacebarArrowRightIcon, width, height, + getTextSizeFromTheme(mTheme, textStyle, defaultTextSize)); // Draw language text with shadow // In case there is no space icon, we will place the language text at the center of @@ -303,21 +326,21 @@ public class LatinKeyboard extends Keyboard { if (mSubtypeSwitcher.useSpacebarLanguageSwitcher() && mSubtypeSwitcher.getEnabledKeyboardLocaleCount() > 1 && !(isPhoneKeyboard() || isNumberKeyboard())) { - mButtonArrowLeftIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor)); - mButtonArrowRightIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor)); - mButtonArrowLeftIcon.draw(canvas); - mButtonArrowRightIcon.draw(canvas); + mSpacebarArrowLeftIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor)); + mSpacebarArrowRightIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor)); + mSpacebarArrowLeftIcon.draw(canvas); + mSpacebarArrowRightIcon.draw(canvas); } } // Draw the spacebar icon at the bottom if (isAutoCorrection) { final int iconWidth = width * SPACE_LED_LENGTH_PERCENT / 100; - final int iconHeight = mSpaceAutoCorrectionIndicator.getIntrinsicHeight(); + final int iconHeight = mAutoCorrectionSpacebarLedIcon.getIntrinsicHeight(); int x = (width - iconWidth) / 2; int y = height - iconHeight; - mSpaceAutoCorrectionIndicator.setBounds(x, y, x + iconWidth, y + iconHeight); - mSpaceAutoCorrectionIndicator.draw(canvas); + mAutoCorrectionSpacebarLedIcon.setBounds(x, y, x + iconWidth, y + iconHeight); + mAutoCorrectionSpacebarLedIcon.draw(canvas); } else if (mSpaceIcon != null) { final int iconWidth = mSpaceIcon.getIntrinsicWidth(); final int iconHeight = mSpaceIcon.getIntrinsicHeight(); @@ -337,14 +360,8 @@ public class LatinKeyboard extends Keyboard { if (mSpacebarSlidingLanguageSwitchDiff == diff) return; mSpacebarSlidingLanguageSwitchDiff = diff; - if (mSlidingLocaleIcon == null) { - final int width = Math.max(mSpaceKey.mWidth, - (int)(getMinWidth() * SPACEBAR_POPUP_MIN_RATIO)); - final int height = mSpacePreviewIcon.getIntrinsicHeight(); - mSlidingLocaleIcon = - new SlidingLocaleDrawable(mContext, mSpacePreviewIcon, width, height); - mSlidingLocaleIcon.setBounds(0, 0, width, height); - } + if (mSlidingLocaleIcon == null) + return; mSlidingLocaleIcon.setDiff(diff); if (Math.abs(diff) == Integer.MAX_VALUE) { mSpaceKey.setPreviewIcon(mSpacePreviewIcon); @@ -399,7 +416,7 @@ public class LatinKeyboard extends Keyboard { Math.max(0, Math.min(y, getHeight() - 1))); } - private static int getTextSizeFromTheme(Theme theme, int style, int defValue) { + public static int getTextSizeFromTheme(Theme theme, int style, int defValue) { TypedArray array = theme.obtainStyledAttributes( style, new int[] { android.R.attr.textSize }); int textSize = array.getDimensionPixelSize(array.getResourceId(0, 0), defValue); diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java index 583b997ee..901df6ab7 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java @@ -16,10 +16,6 @@ package com.android.inputmethod.keyboard; -import com.android.inputmethod.deprecated.VoiceProxy; -import com.android.inputmethod.latin.LatinImeLogger; -import com.android.inputmethod.latin.Utils; - import android.content.Context; import android.graphics.Canvas; import android.text.TextUtils; @@ -27,6 +23,10 @@ import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; +import com.android.inputmethod.deprecated.VoiceProxy; +import com.android.inputmethod.latin.LatinImeLogger; +import com.android.inputmethod.latin.Utils; + // TODO: We should remove this class public class LatinKeyboardView extends KeyboardView { private static final String TAG = LatinKeyboardView.class.getSimpleName(); @@ -47,7 +47,7 @@ public class LatinKeyboardView extends KeyboardView { private int mLastY; public LatinKeyboardView(Context context, AttributeSet attrs) { - this(context, attrs, 0); + super(context, attrs); } public LatinKeyboardView(Context context, AttributeSet attrs, int defStyle) { @@ -120,7 +120,7 @@ public class LatinKeyboardView extends KeyboardView { && keyboard.isShiftedOrShiftLocked() && !TextUtils.isEmpty(label) && label.length() < 3 && Character.isLowerCase(label.charAt(0))) { - return label.toString().toUpperCase(); + return label.toString().toUpperCase(keyboard.mId.mLocale); } return label; } diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java index 5dde15e94..2d6766f2d 100644 --- a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java +++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Google Inc. + * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -23,8 +23,8 @@ import java.util.List; public class MiniKeyboard extends Keyboard { private int mDefaultKeyCoordX; - public MiniKeyboard(Context context, int xmlLayoutResId, KeyboardId id) { - super(context, xmlLayoutResId, id); + public MiniKeyboard(Context context, int xmlLayoutResId, Keyboard parentKeyboard) { + super(context, xmlLayoutResId, null, parentKeyboard.getMinWidth()); } public void setDefaultCoordX(int pos) { diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java index c4459f616..cc5c3bbfe 100644 --- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java +++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index 953d487dc..c7620f946 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -16,15 +16,18 @@ package com.android.inputmethod.keyboard; +import android.content.res.Resources; +import android.os.SystemClock; +import android.util.Log; +import android.view.MotionEvent; + import com.android.inputmethod.keyboard.KeyboardView.UIHandler; +import com.android.inputmethod.keyboard.internal.PointerTrackerKeyState; +import com.android.inputmethod.keyboard.internal.PointerTrackerQueue; import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.SubtypeSwitcher; -import android.content.res.Resources; -import android.util.Log; -import android.view.MotionEvent; - import java.util.Arrays; import java.util.List; @@ -146,7 +149,7 @@ public class PointerTracker { + " ignoreModifier=" + ignoreModifierKey); if (ignoreModifierKey) return false; - if (key.mEnabled) { + if (key.isEnabled()) { mListener.onPress(key.mCode, withSliding); final boolean keyboardLayoutHasBeenChanged = mKeyboardLayoutHasBeenChanged; mKeyboardLayoutHasBeenChanged = false; @@ -165,14 +168,14 @@ public class PointerTracker { + " ignoreModifier=" + ignoreModifierKey); if (ignoreModifierKey) return; - if (key.mEnabled) + if (key.isEnabled()) mListener.onCodeInput(primaryCode, keyCodes, x, y); } private void callListenerOnTextInput(Key key) { if (DEBUG_LISTENER) Log.d(TAG, "onTextInput: text=" + key.mOutputText); - if (key.mEnabled) + if (key.isEnabled()) mListener.onTextInput(key.mOutputText); } @@ -185,7 +188,7 @@ public class PointerTracker { + withSliding + " ignoreModifier=" + ignoreModifierKey); if (ignoreModifierKey) return; - if (key.mEnabled) + if (key.isEnabled()) mListener.onRelease(primaryCode, withSliding); } @@ -265,7 +268,7 @@ public class PointerTracker { private void setPressedKeyGraphics(int keyIndex) { final Key key = getKey(keyIndex); - if (key != null && key.mEnabled) { + if (key != null && key.isEnabled()) { key.onPressed(); mProxy.invalidateKey(key); } @@ -540,8 +543,11 @@ public class PointerTracker { public void onLongPressed(PointerTrackerQueue queue) { mKeyAlreadyProcessed = true; - if (queue != null) + if (queue != null) { + // TODO: Support chording + long-press input. + queue.releaseAllPointersExcept(this, SystemClock.uptimeMillis(), true); queue.remove(this); + } } public void onCancelEvent(int x, int y, long eventTime, PointerTrackerQueue queue) { @@ -611,7 +617,7 @@ public class PointerTracker { // The modifier key, such as shift key, should not show its key preview. private boolean isKeyPreviewNotRequired(int keyIndex) { final Key key = getKey(keyIndex); - if (!key.mEnabled) + if (key == null || !key.isEnabled()) return true; // Such as spacebar sliding language switch. if (mKeyboard.needSpacebarPreview(keyIndex)) @@ -633,12 +639,9 @@ public class PointerTracker { private void startLongPressTimer(int keyIndex) { Key key = getKey(keyIndex); - if (!key.mEnabled) - return; if (key.mCode == Keyboard.CODE_SHIFT) { mHandler.startLongPressShiftTimer(mLongPressShiftKeyTimeout, keyIndex, this); - } else if (key.mManualTemporaryUpperCaseCode != Keyboard.CODE_DUMMY - && mKeyboard.isManualTemporaryUpperCase()) { + } else if (key.hasUppercaseLetter() && mKeyboard.isManualTemporaryUpperCase()) { // We need not start long press timer on the key which has manual temporary upper case // code defined and the keyboard is in manual temporary upper case mode. return; @@ -665,10 +668,9 @@ public class PointerTracker { mKeyDetector.getKeyIndexAndNearbyCodes(x, y, codes); // If keyboard is in manual temporary upper case state and key has manual temporary - // shift code, alternate character code should be sent. - if (mKeyboard.isManualTemporaryUpperCase() - && key.mManualTemporaryUpperCaseCode != Keyboard.CODE_DUMMY) { - code = key.mManualTemporaryUpperCaseCode; + // uppercase letter as key hint letter, alternate character code should be sent. + if (mKeyboard.isManualTemporaryUpperCase() && key.hasUppercaseLetter()) { + code = key.mHintLetter.charAt(0); codes[0] = code; } diff --git a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java index 561dcbcef..3b8c36487 100644 --- a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java @@ -16,8 +16,6 @@ package com.android.inputmethod.keyboard; -import com.android.inputmethod.latin.R; - import android.content.Context; import android.content.res.Resources; import android.os.SystemClock; @@ -27,6 +25,8 @@ import android.view.MotionEvent; import android.view.View; import android.widget.PopupWindow; +import com.android.inputmethod.latin.R; + /** * A view that renders a virtual {@link MiniKeyboard}. It handles rendering of keys and detecting * key presses and touch movements. @@ -37,11 +37,10 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { private int mOriginX; private int mOriginY; - private int mTrackerId; private long mDownTime; public PopupMiniKeyboardView(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.keyboardViewStyle); + this(context, attrs, R.attr.popupMiniKeyboardViewStyle); } public PopupMiniKeyboardView(Context context, AttributeSet attrs, int defStyle) { @@ -67,7 +66,7 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { @Override public void showPanel(KeyboardView parentKeyboardView, Key parentKey, - PointerTracker tracker, int keyPreviewY, PopupWindow window) { + PointerTracker tracker, PopupWindow window) { final View container = (View)getParent(); final MiniKeyboard miniKeyboard = (MiniKeyboard)getKeyboard(); final Keyboard parentKeyboard = parentKeyboardView.getKeyboard(); @@ -76,15 +75,14 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { final int pointX = (mConfigShowMiniKeyboardAtTouchedPoint) ? tracker.getLastX() : parentKey.mX + parentKey.mWidth / 2; final int pointY = parentKey.mY; - final int miniKeyboardX = pointX - miniKeyboard.getDefaultCoordX() - - container.getPaddingLeft() - + parentKeyboardView.getPaddingLeft() + mCoordinates[0]; - final int miniKeyboardY = pointY - parentKeyboard.getVerticalGap() + final int miniKeyboardLeft = pointX - miniKeyboard.getDefaultCoordX() + + parentKeyboardView.getPaddingLeft(); + final int x = Math.max(0, Math.min(miniKeyboardLeft, + parentKeyboardView.getWidth() - miniKeyboard.getMinWidth())) + - container.getPaddingLeft() + mCoordinates[0]; + final int y = pointY - parentKeyboard.getVerticalGap() - (container.getMeasuredHeight() - container.getPaddingBottom()) + parentKeyboardView.getPaddingTop() + mCoordinates[1]; - final int x = miniKeyboardX; - final int y = parentKeyboardView.isKeyPreviewPopupEnabled() && - miniKeyboard.isOneRowKeyboard() ? keyPreviewY : miniKeyboardY; if (miniKeyboard.setShifted(parentKeyboard.isShiftedOrShiftLocked())) { invalidateAllKeys(); @@ -96,30 +94,19 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { mOriginX = x + container.getPaddingLeft() - mCoordinates[0]; mOriginY = y + container.getPaddingTop() - mCoordinates[1]; - mTrackerId = tracker.mPointerId; mDownTime = SystemClock.uptimeMillis(); // Inject down event on the key to mini keyboard. - final MotionEvent downEvent = translateMotionEvent(MotionEvent.ACTION_DOWN, pointX, - pointY + parentKey.mHeight / 2, mDownTime); + final MotionEvent downEvent = MotionEvent.obtain(mDownTime, mDownTime, + MotionEvent.ACTION_DOWN, pointX - mOriginX, + pointY + parentKey.mHeight / 2 - mOriginY, 0); onTouchEvent(downEvent); downEvent.recycle(); } - private MotionEvent translateMotionEvent(int action, float x, float y, long eventTime) { - return MotionEvent.obtain(mDownTime, eventTime, action, x - mOriginX, y - mOriginY, 0); - } - @Override public boolean onTouchEvent(MotionEvent me) { - final int index = me.getActionIndex(); - final int id = me.getPointerId(index); - if (id == mTrackerId) { - final MotionEvent translated = translateMotionEvent(me.getAction(), me.getX(index), - me.getY(index), me.getEventTime()); - super.onTouchEvent(translated); - translated.recycle(); - } - return true; + me.offsetLocation(-mOriginX, -mOriginY); + return super.onTouchEvent(me); } } diff --git a/java/src/com/android/inputmethod/keyboard/PopupPanel.java b/java/src/com/android/inputmethod/keyboard/PopupPanel.java index 6f2b16148..386e11f2c 100644 --- a/java/src/com/android/inputmethod/keyboard/PopupPanel.java +++ b/java/src/com/android/inputmethod/keyboard/PopupPanel.java @@ -25,11 +25,10 @@ public interface PopupPanel { * @param parentKeyboardView the parent KeyboardView that has the parent key. * @param parentKey the parent key that is the source of this popup panel * @param tracker the pointer tracker that pressesd the parent key - * @param keyPreviewY the Y-coordinate of key preview * @param window PopupWindow to be used to show this popup panel */ public void showPanel(KeyboardView parentKeyboardView, Key parentKey, - PointerTracker tracker, int keyPreviewY, PopupWindow window); + PointerTracker tracker, PopupWindow window); /** * Check if the pointer is in siding key input mode. diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java index 80d6de952..33acc6907 100644 --- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java +++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Google Inc. + * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java index d464c2029..983f0649d 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyStyles.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,16 +14,15 @@ * the License. */ -package com.android.inputmethod.keyboard; - -import com.android.inputmethod.keyboard.KeyboardParser.ParseException; -import com.android.inputmethod.latin.R; +package com.android.inputmethod.keyboard.internal; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; -import android.graphics.drawable.Drawable; import android.util.Log; +import com.android.inputmethod.keyboard.internal.KeyboardParser.ParseException; +import com.android.inputmethod.latin.R; + import java.util.ArrayList; import java.util.HashMap; @@ -37,7 +36,6 @@ public class KeyStyles { public interface KeyStyle { public CharSequence[] getTextArray(TypedArray a, int index); - public Drawable getDrawable(TypedArray a, int index); public CharSequence getText(TypedArray a, int index); public int getInt(TypedArray a, int index, int defaultValue); public int getFlag(TypedArray a, int index, int defaultValue); @@ -55,11 +53,6 @@ public class KeyStyles { } @Override - public Drawable getDrawable(TypedArray a, int index) { - return a.getDrawable(index); - } - - @Override public CharSequence getText(TypedArray a, int index) { return a.getText(index); } @@ -140,12 +133,6 @@ public class KeyStyles { } @Override - public Drawable getDrawable(TypedArray a, int index) { - return a.hasValue(index) - ? super.getDrawable(a, index) : (Drawable)mAttributes.get(index); - } - - @Override public CharSequence getText(TypedArray a, int index) { return a.hasValue(index) ? super.getText(a, index) : (CharSequence)mAttributes.get(index); @@ -177,25 +164,20 @@ public class KeyStyles { // TODO: Currently not all Key attributes can be declared as style. readInt(keyAttr, R.styleable.Keyboard_Key_code); readText(keyAttr, R.styleable.Keyboard_Key_keyLabel); - readFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelOption); + readText(keyAttr, R.styleable.Keyboard_Key_keyOutputText); + readText(keyAttr, R.styleable.Keyboard_Key_keyHintLetter); readTextArray(keyAttr, R.styleable.Keyboard_Key_popupCharacters); + readFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelOption); + readInt(keyAttr, R.styleable.Keyboard_Key_keyIcon); + readInt(keyAttr, R.styleable.Keyboard_Key_keyIconPreview); + readInt(keyAttr, R.styleable.Keyboard_Key_keyIconShifted); readInt(keyAttr, R.styleable.Keyboard_Key_maxPopupKeyboardColumn); - readText(keyAttr, R.styleable.Keyboard_Key_keyOutputText); - readDrawable(keyAttr, R.styleable.Keyboard_Key_keyIcon); - readDrawable(keyAttr, R.styleable.Keyboard_Key_iconPreview); - readDrawable(keyAttr, R.styleable.Keyboard_Key_keyHintIcon); - readDrawable(keyAttr, R.styleable.Keyboard_Key_shiftedIcon); readBoolean(keyAttr, R.styleable.Keyboard_Key_isFunctional); readBoolean(keyAttr, R.styleable.Keyboard_Key_isSticky); readBoolean(keyAttr, R.styleable.Keyboard_Key_isRepeatable); readBoolean(keyAttr, R.styleable.Keyboard_Key_enabled); } - private void readDrawable(TypedArray a, int index) { - if (a.hasValue(index)) - mAttributes.put(index, a.getDrawable(index)); - } - private void readText(TypedArray a, int index) { if (a.hasValue(index)) mAttributes.put(index, a.getText(index)); diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java new file mode 100644 index 000000000..37b36825a --- /dev/null +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java @@ -0,0 +1,146 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.android.inputmethod.keyboard.internal; + +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; +import android.util.Log; + +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.latin.R; + +public class KeyboardIconsSet { + private static final String TAG = KeyboardIconsSet.class.getSimpleName(); + + public static final int ICON_UNDEFINED = 0; + + // This should be aligned with Keyboard.keyIcon enum. + private static final int ICON_SHIFT_KEY = 1; + private static final int ICON_TO_SYMBOL_KEY = 2; + private static final int ICON_TO_SYMBOL_KEY_WITH_SHORTCUT = 3; + private static final int ICON_DELETE_KEY = 4; + private static final int ICON_SETTINGS_KEY = 5; + private static final int ICON_SHORTCUT_KEY = 6; + private static final int ICON_SPACE_KEY = 7; + private static final int ICON_RETURN_KEY = 8; + private static final int ICON_SEARCH_KEY = 9; + private static final int ICON_TAB_KEY = 10; + private static final int ICON_NUM1_KEY = 11; + private static final int ICON_NUM2_KEY = 12; + private static final int ICON_NUM3_KEY = 13; + private static final int ICON_NUM4_KEY = 14; + private static final int ICON_NUM5_KEY = 15; + private static final int ICON_NUM6_KEY = 16; + private static final int ICON_NUM7_KEY = 17; + private static final int ICON_NUM8_KEY = 18; + private static final int ICON_NUM9_KEY = 19; + private static final int ICON_NUM0_KEY = 20; + // This should be aligned with Keyboard.keyIconShifted enum. + private static final int ICON_SHIFTED_SHIFT_KEY = 21; + // This should be aligned with Keyboard.keyIconPreview enum. + private static final int ICON_PREVIEW_SPACE_KEY = 22; + private static final int ICON_PREVIEW_TAB_KEY = 23; + private static final int ICON_PREVIEW_SETTINGS_KEY = 24; + private static final int ICON_PREVIEW_SHORTCUT_KEY = 25; + + private static final int ICON_LAST = 25; + + private final Drawable mIcons[] = new Drawable[ICON_LAST + 1]; + + private static final int getIconId(int attrIndex) { + switch (attrIndex) { + case R.styleable.Keyboard_iconShiftKey: + return ICON_SHIFT_KEY; + case R.styleable.Keyboard_iconToSymbolKey: + return ICON_TO_SYMBOL_KEY; + case R.styleable.Keyboard_iconToSymbolKeyWithShortcut: + return ICON_TO_SYMBOL_KEY_WITH_SHORTCUT; + case R.styleable.Keyboard_iconDeleteKey: + return ICON_DELETE_KEY; + case R.styleable.Keyboard_iconSettingsKey: + return ICON_SETTINGS_KEY; + case R.styleable.Keyboard_iconShortcutKey: + return ICON_SHORTCUT_KEY; + case R.styleable.Keyboard_iconSpaceKey: + return ICON_SPACE_KEY; + case R.styleable.Keyboard_iconReturnKey: + return ICON_RETURN_KEY; + case R.styleable.Keyboard_iconSearchKey: + return ICON_SEARCH_KEY; + case R.styleable.Keyboard_iconTabKey: + return ICON_TAB_KEY; + case R.styleable.Keyboard_iconNum1Key: + return ICON_NUM1_KEY; + case R.styleable.Keyboard_iconNum2Key: + return ICON_NUM2_KEY; + case R.styleable.Keyboard_iconNum3Key: + return ICON_NUM3_KEY; + case R.styleable.Keyboard_iconNum4Key: + return ICON_NUM4_KEY; + case R.styleable.Keyboard_iconNum5Key: + return ICON_NUM5_KEY; + case R.styleable.Keyboard_iconNum6Key: + return ICON_NUM6_KEY; + case R.styleable.Keyboard_iconNum7Key: + return ICON_NUM7_KEY; + case R.styleable.Keyboard_iconNum8Key: + return ICON_NUM8_KEY; + case R.styleable.Keyboard_iconNum9Key: + return ICON_NUM9_KEY; + case R.styleable.Keyboard_iconNum0Key: + return ICON_NUM0_KEY; + case R.styleable.Keyboard_iconShiftedShiftKey: + return ICON_SHIFTED_SHIFT_KEY; + case R.styleable.Keyboard_iconPreviewSpaceKey: + return ICON_PREVIEW_SPACE_KEY; + case R.styleable.Keyboard_iconPreviewTabKey: + return ICON_PREVIEW_TAB_KEY; + case R.styleable.Keyboard_iconPreviewSettingsKey: + return ICON_PREVIEW_SETTINGS_KEY; + case R.styleable.Keyboard_iconPreviewShortcutKey: + return ICON_PREVIEW_SHORTCUT_KEY; + default: + return ICON_UNDEFINED; + } + } + + public void loadIcons(TypedArray keyboardAttrs) { + final int count = keyboardAttrs.getIndexCount(); + for (int i = 0; i < count; i++) { + final int attrIndex = keyboardAttrs.getIndex(i); + final int iconId = getIconId(attrIndex); + if (iconId != ICON_UNDEFINED) { + try { + final Drawable icon = keyboardAttrs.getDrawable(attrIndex); + Keyboard.setDefaultBounds(icon); + mIcons[iconId] = icon; + } catch (Resources.NotFoundException e) { + Log.w(TAG, "Drawable resource for icon #" + iconId + " not found"); + } + } + } + } + + public Drawable getIcon(int iconId) { + if (iconId == ICON_UNDEFINED) + return null; + if (iconId < 0 || iconId >= mIcons.length) + throw new IllegalArgumentException("icon id is out of range: " + iconId); + return mIcons[iconId]; + } +} diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java index 31fd0bfa3..a6708171f 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,13 +14,7 @@ * the License. */ -package com.android.inputmethod.keyboard; - -import com.android.inputmethod.compat.EditorInfoCompatUtils; -import com.android.inputmethod.latin.R; - -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; +package com.android.inputmethod.keyboard.internal; import android.content.Context; import android.content.res.Resources; @@ -31,6 +25,15 @@ import android.util.TypedValue; import android.util.Xml; import android.view.InflateException; +import com.android.inputmethod.compat.EditorInfoCompatUtils; +import com.android.inputmethod.keyboard.Key; +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.keyboard.KeyboardId; +import com.android.inputmethod.latin.R; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + import java.io.IOException; import java.util.Arrays; import java.util.List; @@ -88,14 +91,14 @@ import java.util.List; * You can declare Key style and specify styles within Key tags. * <pre> * >switch< - * >case colorScheme="white"< - * >key-style styleName="shift-key" parentStyle="modifier-key" - * keyIcon="@drawable/sym_keyboard_shift" + * >case mode="email"< + * >key-style styleName="f1-key" parentStyle="modifier-key" + * keyLabel=".com" * /< * >/case< - * >case colorScheme="black"< - * >key-style styleName="shift-key" parentStyle="modifier-key" - * keyIcon="@drawable/sym_bkeyboard_shift" + * >case mode="url"< + * >key-style styleName="f1-key" parentStyle="modifier-key" + * keyLabel="http://" * /< * >/case< * >/switch< @@ -121,8 +124,11 @@ public class KeyboardParser { public static final String TAG_KEY_STYLE = "key-style"; private final Keyboard mKeyboard; + private final Context mContext; private final Resources mResources; + private int mKeyboardTopPadding; + private int mKeyboardBottomPadding; private int mHorizontalEdgesPadding; private int mCurrentX = 0; private int mCurrentY = 0; @@ -131,8 +137,10 @@ public class KeyboardParser { private Row mCurrentRow = null; private final KeyStyles mKeyStyles = new KeyStyles(); - public KeyboardParser(Keyboard keyboard, Resources res) { + public KeyboardParser(Keyboard keyboard, Context context) { mKeyboard = keyboard; + mContext = context; + final Resources res = context.getResources(); mResources = res; mHorizontalEdgesPadding = (int)res.getDimension(R.dimen.keyboard_horizontal_edges_padding); } @@ -187,8 +195,9 @@ public class KeyboardParser { private void parseKeyboardAttributes(XmlResourceParser parser) { final Keyboard keyboard = mKeyboard; - final TypedArray keyboardAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser), - R.styleable.Keyboard); + final TypedArray keyboardAttr = mContext.obtainStyledAttributes( + Xml.asAttributeSet(parser), R.styleable.Keyboard, R.attr.keyboardStyle, + R.style.Keyboard); final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard_Key); try { @@ -226,6 +235,12 @@ public class KeyboardParser { keyboard.setMaxPopupKeyboardColumn(keyAttr.getInt( R.styleable.Keyboard_Key_maxPopupKeyboardColumn, 5)); + + mKeyboard.mIconsSet.loadIcons(keyboardAttr); + mKeyboardTopPadding = keyboardAttr.getDimensionPixelSize( + R.styleable.Keyboard_keyboardTopPadding, 0); + mKeyboardBottomPadding = keyboardAttr.getDimensionPixelSize( + R.styleable.Keyboard_keyboardBottomPadding, 0); } finally { keyAttr.recycle(); keyboardAttr.recycle(); @@ -280,7 +295,7 @@ public class KeyboardParser { if (TAG_KEY.equals(tag)) { parseKey(parser, row, keys); } else if (TAG_SPACER.equals(tag)) { - parseSpacer(parser, keys); + parseSpacer(parser, row, keys); } else if (TAG_INCLUDE.equals(tag)) { parseIncludeRowContent(parser, row, keys); } else if (TAG_SWITCH.equals(tag)) { @@ -317,7 +332,7 @@ public class KeyboardParser { } else { Key key = new Key(mResources, row, mCurrentX, mCurrentY, parser, mKeyStyles); if (DEBUG) Log.d(TAG, String.format("<%s%s keyLabel=%s code=%d popupCharacters=%s />", - TAG_KEY, (key.mEnabled ? "" : " disabled"), key.mLabel, key.mCode, + TAG_KEY, (key.isEnabled() ? "" : " disabled"), key.mLabel, key.mCode, Arrays.toString(key.mPopupCharacters))); checkEndTag(TAG_KEY, parser); keys.add(key); @@ -327,19 +342,32 @@ public class KeyboardParser { } } - private void parseSpacer(XmlResourceParser parser, List<Key> keys) + private void parseSpacer(XmlResourceParser parser, Row row, List<Key> keys) throws XmlPullParserException, IOException { if (keys == null) { checkEndTag(TAG_SPACER, parser); } else { if (DEBUG) Log.d(TAG, String.format("<%s />", TAG_SPACER)); - final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser), + final TypedArray keyboardAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); - final int gap = getDimensionOrFraction(a, R.styleable.Keyboard_horizontalGap, - mKeyboard.getDisplayWidth(), 0); - a.recycle(); + if (keyboardAttr.hasValue(R.styleable.Keyboard_horizontalGap)) + throw new IllegalAttribute(parser, "horizontalGap"); + final int defaultWidth = (row != null) ? row.mDefaultWidth : 0; + final int keyWidth = getDimensionOrFraction(keyboardAttr, R.styleable.Keyboard_keyWidth, + mKeyboard.getDisplayWidth(), defaultWidth); + keyboardAttr.recycle(); + + final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser), + R.styleable.Keyboard_Key); + int keyXPos = KeyboardParser.getDimensionOrFraction(keyAttr, + R.styleable.Keyboard_Key_keyXPos, mKeyboard.getDisplayWidth(), mCurrentX); + if (keyXPos < 0) { + // If keyXPos is negative, the actual x-coordinate will be display_width + keyXPos. + keyXPos += mKeyboard.getDisplayWidth(); + } + checkEndTag(TAG_SPACER, parser); - setSpacer(gap); + setSpacer(keyXPos, keyWidth); } } @@ -454,44 +482,53 @@ public class KeyboardParser { final TypedArray viewAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.KeyboardView); try { - final boolean modeMatched = matchInteger(a, - R.styleable.Keyboard_Case_mode, id.mMode); + final boolean modeMatched = matchTypedValue(a, + R.styleable.Keyboard_Case_mode, id.mMode, KeyboardId.modeName(id.mMode)); + final boolean navigateActionMatched = matchBoolean(a, + R.styleable.Keyboard_Case_navigateAction, id.mNavigateAction); final boolean passwordInputMatched = matchBoolean(a, R.styleable.Keyboard_Case_passwordInput, id.mPasswordInput); - final boolean settingsKeyMatched = matchBoolean(a, + final boolean hasSettingsKeyMatched = matchBoolean(a, R.styleable.Keyboard_Case_hasSettingsKey, id.mHasSettingsKey); + final boolean f2KeyModeMatched = matchInteger(a, + R.styleable.Keyboard_Case_f2KeyMode, id.mF2KeyMode); + final boolean clobberSettingsKeyMatched = matchBoolean(a, + R.styleable.Keyboard_Case_clobberSettingsKey, id.mClobberSettingsKey); final boolean voiceEnabledMatched = matchBoolean(a, R.styleable.Keyboard_Case_voiceKeyEnabled, id.mVoiceKeyEnabled); final boolean voiceKeyMatched = matchBoolean(a, R.styleable.Keyboard_Case_hasVoiceKey, id.mHasVoiceKey); - final boolean colorSchemeMatched = matchInteger(viewAttr, - R.styleable.KeyboardView_colorScheme, id.mColorScheme); // As noted at {@link KeyboardId} class, we are interested only in enum value masked by // {@link android.view.inputmethod.EditorInfo#IME_MASK_ACTION} and // {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}. So matching // this attribute with id.mImeOptions as integer value is enough for our purpose. final boolean imeActionMatched = matchInteger(a, R.styleable.Keyboard_Case_imeAction, id.mImeAction); + final boolean localeCodeMatched = matchString(a, + R.styleable.Keyboard_Case_localeCode, id.mLocale.toString()); final boolean languageCodeMatched = matchString(a, R.styleable.Keyboard_Case_languageCode, id.mLocale.getLanguage()); final boolean countryCodeMatched = matchString(a, R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry()); - final boolean selected = modeMatched && passwordInputMatched && settingsKeyMatched - && voiceEnabledMatched && voiceKeyMatched && colorSchemeMatched - && imeActionMatched && languageCodeMatched && countryCodeMatched; - - if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s%s%s%s> %s", TAG_CASE, - textAttr(KeyboardId.modeName( - a.getInt(R.styleable.Keyboard_Case_mode, -1)), "mode"), - textAttr(KeyboardId.colorSchemeName( - viewAttr.getInt( - R.styleable.KeyboardView_colorScheme, -1)), "colorSchemeName"), + final boolean selected = modeMatched && navigateActionMatched && passwordInputMatched + && hasSettingsKeyMatched && f2KeyModeMatched && clobberSettingsKeyMatched + && voiceEnabledMatched && voiceKeyMatched && imeActionMatched && + localeCodeMatched && languageCodeMatched && countryCodeMatched; + + if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s%s%s%s%s%s%s> %s", TAG_CASE, + textAttr(a.getString(R.styleable.Keyboard_Case_mode), "mode"), + booleanAttr(a, R.styleable.Keyboard_Case_navigateAction, "navigateAction"), booleanAttr(a, R.styleable.Keyboard_Case_passwordInput, "passwordInput"), booleanAttr(a, R.styleable.Keyboard_Case_hasSettingsKey, "hasSettingsKey"), + textAttr(KeyboardId.f2KeyModeName( + a.getInt(R.styleable.Keyboard_Case_f2KeyMode, -1)), "f2KeyMode"), + booleanAttr(a, R.styleable.Keyboard_Case_clobberSettingsKey, + "clobberSettingsKey"), booleanAttr(a, R.styleable.Keyboard_Case_voiceKeyEnabled, "voiceKeyEnabled"), booleanAttr(a, R.styleable.Keyboard_Case_hasVoiceKey, "hasVoiceKey"), textAttr(EditorInfoCompatUtils.imeOptionsName( a.getInt(R.styleable.Keyboard_Case_imeAction, -1)), "imeAction"), + textAttr(a.getString(R.styleable.Keyboard_Case_localeCode), "localeCode"), textAttr(a.getString(R.styleable.Keyboard_Case_languageCode), "languageCode"), textAttr(a.getString(R.styleable.Keyboard_Case_countryCode), "countryCode"), Boolean.toString(selected))); @@ -518,7 +555,30 @@ public class KeyboardParser { private static boolean matchString(TypedArray a, int index, String value) { // If <case> does not have "index" attribute, that means this <case> is wild-card for the // attribute. - return !a.hasValue(index) || a.getString(index).equals(value); + return !a.hasValue(index) || stringArrayContains(a.getString(index).split("\\|"), value); + } + + private static boolean matchTypedValue(TypedArray a, int index, int intValue, String strValue) { + // If <case> does not have "index" attribute, that means this <case> is wild-card for the + // attribute. + final TypedValue v = a.peekValue(index); + if (v == null) + return true; + + if (isIntegerValue(v)) { + return intValue == a.getInt(index, 0); + } else if (isStringValue(v)) { + return stringArrayContains(a.getString(index).split("\\|"), strValue); + } + return false; + } + + private static boolean stringArrayContains(String[] array, String value) { + for (final String elem : array) { + if (elem.equals(value)) + return true; + } + return false; } private boolean parseDefault(XmlResourceParser parser, Row row, List<Key> keys) @@ -557,19 +617,19 @@ public class KeyboardParser { } private void startKeyboard() { - mCurrentY += (int)mResources.getDimension(R.dimen.keyboard_top_padding); + mCurrentY += mKeyboardTopPadding; } private void startRow(Row row) { mCurrentX = 0; - setSpacer(mHorizontalEdgesPadding); + setSpacer(mCurrentX, mHorizontalEdgesPadding); mCurrentRow = row; } private void endRow() { if (mCurrentRow == null) throw new InflateException("orphant end row tag"); - setSpacer(mHorizontalEdgesPadding); + setSpacer(mCurrentX, mHorizontalEdgesPadding); if (mCurrentX > mMaxRowWidth) mMaxRowWidth = mCurrentX; mCurrentY += mCurrentRow.mDefaultHeight; @@ -577,31 +637,50 @@ public class KeyboardParser { } private void endKey(Key key) { - mCurrentX += key.mGap + key.mWidth; + mCurrentX = key.mX - key.mGap / 2 + key.mWidth + key.mGap; } private void endKeyboard(int defaultVerticalGap) { - mCurrentY += (int)mResources.getDimension(R.dimen.keyboard_bottom_padding); + mCurrentY += mKeyboardBottomPadding; mTotalHeight = mCurrentY - defaultVerticalGap; } - private void setSpacer(int gap) { - mCurrentX += gap; + private void setSpacer(int keyXPos, int width) { + mCurrentX = keyXPos + width; } public static int getDimensionOrFraction(TypedArray a, int index, int base, int defValue) { final TypedValue value = a.peekValue(index); if (value == null) return defValue; - if (value.type == TypedValue.TYPE_DIMENSION) { - return a.getDimensionPixelOffset(index, defValue); - } else if (value.type == TypedValue.TYPE_FRACTION) { + if (isFractionValue(value)) { // Round it to avoid values like 47.9999 from getting truncated return Math.round(a.getFraction(index, base, base, defValue)); + } else if (isDimensionValue(value)) { + return a.getDimensionPixelOffset(index, defValue); + } else if (isIntegerValue(value)) { + // For enum value. + return a.getInt(index, defValue); } return defValue; } + private static boolean isFractionValue(TypedValue v) { + return v.type == TypedValue.TYPE_FRACTION; + } + + private static boolean isDimensionValue(TypedValue v) { + return v.type == TypedValue.TYPE_DIMENSION; + } + + private static boolean isIntegerValue(TypedValue v) { + return v.type >= TypedValue.TYPE_FIRST_INT && v.type <= TypedValue.TYPE_LAST_INT; + } + + private static boolean isStringValue(TypedValue v) { + return v.type == TypedValue.TYPE_STRING; + } + @SuppressWarnings("serial") public static class ParseException extends InflateException { public ParseException(String msg, XmlResourceParser parser) { @@ -624,6 +703,13 @@ public class KeyboardParser { } @SuppressWarnings("serial") + private static class IllegalAttribute extends ParseException { + public IllegalAttribute(XmlResourceParser parser, String attribute) { + super("Tag " + parser.getName() + " has illegal attribute " + attribute, parser); + } + } + + @SuppressWarnings("serial") private static class NonEmptyTag extends ParseException { public NonEmptyTag(String tag, XmlResourceParser parser) { super(tag + " must be empty tag", parser); diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardShiftState.java index d5412791d..0cde4e5b5 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardShiftState.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,10 +14,12 @@ * the License. */ -package com.android.inputmethod.keyboard; +package com.android.inputmethod.keyboard.internal; import android.util.Log; +import com.android.inputmethod.keyboard.KeyboardSwitcher; + public class KeyboardShiftState { private static final String TAG = "KeyboardShiftState"; private static final boolean DEBUG = KeyboardSwitcher.DEBUG_STATE; diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java index 2b83c3ff5..040c16ded 100644 --- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java +++ b/java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,15 +14,19 @@ * the License. */ -package com.android.inputmethod.keyboard; - -import com.android.inputmethod.latin.R; +package com.android.inputmethod.keyboard.internal; import android.content.Context; import android.content.res.Resources; import android.graphics.Paint; import android.graphics.Rect; +import com.android.inputmethod.keyboard.Key; +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.keyboard.KeyboardView; +import com.android.inputmethod.keyboard.MiniKeyboard; +import com.android.inputmethod.latin.R; + import java.util.List; public class MiniKeyboardBuilder { @@ -185,7 +189,8 @@ public class MiniKeyboardBuilder { Keyboard parentKeyboard) { final Context context = view.getContext(); mRes = context.getResources(); - final MiniKeyboard keyboard = new MiniKeyboard(context, layoutTemplateResId, null); + final MiniKeyboard keyboard = new MiniKeyboard( + context, layoutTemplateResId, parentKeyboard); mKeyboard = keyboard; mPopupCharacters = parentKey.mPopupCharacters; diff --git a/java/src/com/android/inputmethod/keyboard/ModifierKeyState.java b/java/src/com/android/inputmethod/keyboard/internal/ModifierKeyState.java index f215db876..dae73c4e4 100644 --- a/java/src/com/android/inputmethod/keyboard/ModifierKeyState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/ModifierKeyState.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,10 +14,12 @@ * the License. */ -package com.android.inputmethod.keyboard; +package com.android.inputmethod.keyboard.internal; import android.util.Log; +import com.android.inputmethod.keyboard.KeyboardSwitcher; + public class ModifierKeyState { protected static final String TAG = "ModifierKeyState"; protected static final boolean DEBUG = KeyboardSwitcher.DEBUG_STATE; diff --git a/java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerKeyState.java index b3ed1e26f..ddadb1338 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerKeyState.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,12 +14,15 @@ * the License. */ -package com.android.inputmethod.keyboard; +package com.android.inputmethod.keyboard.internal; + +import com.android.inputmethod.keyboard.KeyDetector; +import com.android.inputmethod.keyboard.PointerTracker; /** * This class keeps track of a key index and a position where {@link PointerTracker} is. */ -/* package */ class PointerTrackerKeyState { +public class PointerTrackerKeyState { private final KeyDetector mKeyDetector; // The position and time at which first down event occurred. diff --git a/java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java index 68de8df8a..f87cd869e 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java +++ b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,7 +14,9 @@ * the License. */ -package com.android.inputmethod.keyboard; +package com.android.inputmethod.keyboard.internal; + +import com.android.inputmethod.keyboard.PointerTracker; import java.util.LinkedList; diff --git a/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java b/java/src/com/android/inputmethod/keyboard/internal/PopupCharactersParser.java index 32c25801d..8276f5d78 100644 --- a/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java +++ b/java/src/com/android/inputmethod/keyboard/internal/PopupCharactersParser.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,13 +14,14 @@ * the License. */ -package com.android.inputmethod.keyboard; - -import com.android.inputmethod.latin.R; +package com.android.inputmethod.keyboard.internal; import android.content.res.Resources; -import android.graphics.drawable.Drawable; import android.text.TextUtils; +import android.util.Log; + +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.latin.R; /** * String parser of popupCharacters attribute of Key. @@ -28,16 +29,19 @@ import android.text.TextUtils; * Each popup key text is one of the following: * - A single letter (Letter) * - Label optionally followed by keyOutputText or code (keyLabel|keyOutputText). - * - Icon followed by keyOutputText or code (@drawable/icon|@integer/key_code) + * - Icon followed by keyOutputText or code (@icon/icon_number|@integer/key_code) * Special character, comma ',' backslash '\', and bar '|' can be escaped by '\' * character. * Note that the character '@' and '\' are also parsed by XML parser and CSV parser as well. + * See {@link KeyboardIconsSet} about icon_number. */ public class PopupCharactersParser { + private static final String TAG = PopupCharactersParser.class.getSimpleName(); + private static final char ESCAPE = '\\'; private static final String LABEL_END = "|"; private static final String PREFIX_AT = "@"; - private static final String PREFIX_ICON = PREFIX_AT + "drawable/"; + private static final String PREFIX_ICON = PREFIX_AT + "icon/"; private static final String PREFIX_CODE = PREFIX_AT + "integer/"; private PopupCharactersParser() { @@ -150,13 +154,18 @@ public class PopupCharactersParser { return Keyboard.CODE_DUMMY; } - public static Drawable getIcon(Resources res, String popupSpec) { + public static int getIconId(String popupSpec) { if (hasIcon(popupSpec)) { int end = popupSpec.indexOf(LABEL_END, PREFIX_ICON.length() + 1); - int resId = getResourceId(res, popupSpec.substring(PREFIX_AT.length(), end)); - return res.getDrawable(resId); + final String iconId = popupSpec.substring(PREFIX_ICON.length(), end); + try { + return Integer.valueOf(iconId); + } catch (NumberFormatException e) { + Log.w(TAG, "illegal icon id specified: " + iconId); + return KeyboardIconsSet.ICON_UNDEFINED; + } } - return null; + return KeyboardIconsSet.ICON_UNDEFINED; } private static int getResourceId(Resources res, String name) { diff --git a/java/src/com/android/inputmethod/keyboard/Row.java b/java/src/com/android/inputmethod/keyboard/internal/Row.java index 3618c0448..06aadcc05 100644 --- a/java/src/com/android/inputmethod/keyboard/Row.java +++ b/java/src/com/android/inputmethod/keyboard/internal/Row.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,15 +14,16 @@ * the License. */ -package com.android.inputmethod.keyboard; - -import com.android.inputmethod.latin.R; +package com.android.inputmethod.keyboard.internal; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.util.Xml; +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.latin.R; + /** * Container for keys in the keyboard. All keys in a row are at the same Y-coordinate. * Some of the key size defaults can be overridden per row from what the {@link Keyboard} diff --git a/java/src/com/android/inputmethod/keyboard/ShiftKeyState.java b/java/src/com/android/inputmethod/keyboard/internal/ShiftKeyState.java index 9229208a9..6617b917f 100644 --- a/java/src/com/android/inputmethod/keyboard/ShiftKeyState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/ShiftKeyState.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,7 +14,7 @@ * the License. */ -package com.android.inputmethod.keyboard; +package com.android.inputmethod.keyboard.internal; import android.util.Log; diff --git a/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java b/java/src/com/android/inputmethod/keyboard/internal/SlidingLocaleDrawable.java index b279c1c7e..df4b575f1 100644 --- a/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java +++ b/java/src/com/android/inputmethod/keyboard/internal/SlidingLocaleDrawable.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,41 +14,42 @@ * the License. */ -package com.android.inputmethod.keyboard; - -import com.android.inputmethod.latin.R; -import com.android.inputmethod.latin.SubtypeSwitcher; +package com.android.inputmethod.keyboard.internal; import android.content.Context; -import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Paint; -import android.graphics.PixelFormat; import android.graphics.Paint.Align; +import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import android.text.TextPaint; import android.view.ViewConfiguration; +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.keyboard.LatinKeyboard; +import com.android.inputmethod.latin.R; +import com.android.inputmethod.latin.SubtypeSwitcher; + /** * Animation to be displayed on the spacebar preview popup when switching languages by swiping the * spacebar. It draws the current, previous and next languages and moves them by the delta of touch * movement on the spacebar. */ public class SlidingLocaleDrawable extends Drawable { - - private final Context mContext; - private final Resources mRes; + private static final int SLIDE_SPEED_MULTIPLIER_RATIO = 150; private final int mWidth; private final int mHeight; private final Drawable mBackground; + private final int mSpacebarTextColor; private final TextPaint mTextPaint; private final int mMiddleX; private final Drawable mLeftDrawable; private final Drawable mRightDrawable; private final int mThreshold; + private int mDiff; private boolean mHitThreshold; private String mCurrentLanguage; @@ -56,41 +57,36 @@ public class SlidingLocaleDrawable extends Drawable { private String mPrevLanguage; public SlidingLocaleDrawable(Context context, Drawable background, int width, int height) { - mContext = context; - mRes = context.getResources(); mBackground = background; Keyboard.setDefaultBounds(mBackground); mWidth = width; mHeight = height; final TextPaint textPaint = new TextPaint(); - textPaint.setTextSize(getTextSizeFromTheme(android.R.style.TextAppearance_Medium, 18)); + textPaint.setTextSize(LatinKeyboard.getTextSizeFromTheme( + context.getTheme(), android.R.style.TextAppearance_Medium, 18)); textPaint.setColor(Color.TRANSPARENT); textPaint.setTextAlign(Align.CENTER); textPaint.setAntiAlias(true); mTextPaint = textPaint; mMiddleX = (mWidth - mBackground.getIntrinsicWidth()) / 2; - final Resources res = mRes; - mLeftDrawable = res.getDrawable( - R.drawable.sym_keyboard_feedback_language_arrows_left); - mRightDrawable = res.getDrawable( - R.drawable.sym_keyboard_feedback_language_arrows_right); - mThreshold = ViewConfiguration.get(mContext).getScaledTouchSlop(); - } - private int getTextSizeFromTheme(int style, int defValue) { - TypedArray array = mContext.getTheme().obtainStyledAttributes( - style, new int[] { android.R.attr.textSize }); - int textSize = array.getDimensionPixelSize(array.getResourceId(0, 0), defValue); - return textSize; + final TypedArray a = context.obtainStyledAttributes( + null, R.styleable.LatinKeyboard, R.attr.latinKeyboardStyle, R.style.LatinKeyboard); + mSpacebarTextColor = a.getColor(R.styleable.LatinKeyboard_spacebarTextColor, 0); + mLeftDrawable = a.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewLeftIcon); + mRightDrawable = a.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewRightIcon); + a.recycle(); + + mThreshold = ViewConfiguration.get(context).getScaledTouchSlop(); } - void setDiff(int diff) { + public void setDiff(int diff) { if (diff == Integer.MAX_VALUE) { mHitThreshold = false; mCurrentLanguage = null; return; } - mDiff = diff; + mDiff = Math.max(diff, diff * SLIDE_SPEED_MULTIPLIER_RATIO / 100); if (mDiff > mWidth) mDiff = mWidth; if (mDiff < -mWidth) mDiff = -mWidth; if (Math.abs(mDiff) > mThreshold) mHitThreshold = true; @@ -118,7 +114,7 @@ public class SlidingLocaleDrawable extends Drawable { // Draw language text with shadow final float baseline = mHeight * LatinKeyboard.SPACEBAR_LANGUAGE_BASELINE - paint.descent(); - paint.setColor(mRes.getColor(R.color.latinkeyboard_feedback_language_text)); + paint.setColor(mSpacebarTextColor); canvas.drawText(mCurrentLanguage, width / 2 + diff, baseline, paint); canvas.drawText(mNextLanguage, diff - width / 2, baseline, paint); canvas.drawText(mPrevLanguage, diff + width + width / 2, baseline, paint); diff --git a/java/src/com/android/inputmethod/keyboard/SwipeTracker.java b/java/src/com/android/inputmethod/keyboard/internal/SwipeTracker.java index 730cdc390..8d192c2f0 100644 --- a/java/src/com/android/inputmethod/keyboard/SwipeTracker.java +++ b/java/src/com/android/inputmethod/keyboard/internal/SwipeTracker.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -14,7 +14,7 @@ * the License. */ -package com.android.inputmethod.keyboard; +package com.android.inputmethod.keyboard.internal; import android.view.MotionEvent; diff --git a/java/src/com/android/inputmethod/latin/AutoDictionary.java b/java/src/com/android/inputmethod/latin/AutoDictionary.java index 307b81d43..460930f16 100644 --- a/java/src/com/android/inputmethod/latin/AutoDictionary.java +++ b/java/src/com/android/inputmethod/latin/AutoDictionary.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -41,13 +41,8 @@ public class AutoDictionary extends ExpandableDictionary { static final int FREQUENCY_FOR_PICKED = 3; // Weight added to a user typing a new word that doesn't get corrected (or is reverted) static final int FREQUENCY_FOR_TYPED = 1; - // A word that is frequently typed and gets promoted to the user dictionary, uses this - // frequency. - static final int FREQUENCY_FOR_AUTO_ADD = 250; // If the user touches a typed word 2 times or more, it will become valid. private static final int VALIDITY_THRESHOLD = 2 * FREQUENCY_FOR_PICKED; - // If the user touches a typed word 4 times or more, it will be added to the user dict. - private static final int PROMOTION_THRESHOLD = 4 * FREQUENCY_FOR_PICKED; private LatinIME mIme; // Locale for which this auto dictionary is storing words @@ -151,11 +146,6 @@ public class AutoDictionary extends ExpandableDictionary { freq = freq < 0 ? addFrequency : freq + addFrequency; super.addWord(word, freq); - if (freq >= PROMOTION_THRESHOLD) { - mIme.promoteToUserDictionary(word, FREQUENCY_FOR_AUTO_ADD); - freq = 0; - } - synchronized (mPendingWritesLock) { // Write a null frequency if it is to be deleted from the db mPendingWrites.put(word, freq == 0 ? null : new Integer(freq)); diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java index d95fb9638..9748d6006 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java @@ -196,8 +196,9 @@ public class BinaryDictionary extends Dictionary { Arrays.fill(outputChars, (char) 0); Arrays.fill(scores, 0); + final int proximityInfo = keyboard == null ? 0 : keyboard.getProximityInfo(); return getSuggestionsNative( - mNativeDict, keyboard.getProximityInfo(), + mNativeDict, proximityInfo, codes.getXCoordinates(), codes.getYCoordinates(), mInputCodes, codesSize, mFlags, outputChars, scores); } diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java index 562580d41..7ce92920d 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java @@ -78,16 +78,20 @@ class BinaryDictionaryGetter { } else { try { // If that was no-go, try to find a publicly exported dictionary. - return BinaryDictionaryFileDumper.getDictSetFromContentProvider(locale, context); + List<AssetFileAddress> listFromContentProvider = + BinaryDictionaryFileDumper.getDictSetFromContentProvider(locale, context); + if (null != listFromContentProvider) { + return listFromContentProvider; + } + // If the list is null, fall through and return the fallback } catch (FileNotFoundException e) { Log.e(TAG, "Unable to create dictionary file from provider for locale " + locale.toString() + ": falling back to internal dictionary"); - return Arrays.asList(loadFallbackResource(context, fallbackResId)); } catch (IOException e) { Log.e(TAG, "Unable to read source data for locale " + locale.toString() + ": falling back to internal dictionary"); - return Arrays.asList(loadFallbackResource(context, fallbackResId)); } + return Arrays.asList(loadFallbackResource(context, fallbackResId)); } } } diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java index abdf30e6b..09fd3b473 100644 --- a/java/src/com/android/inputmethod/latin/CandidateView.java +++ b/java/src/com/android/inputmethod/latin/CandidateView.java @@ -16,10 +16,9 @@ package com.android.inputmethod.latin; -import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; - import android.content.Context; import android.content.res.Resources; +import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.Typeface; import android.os.Handler; @@ -45,28 +44,53 @@ import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.TextView; +import com.android.inputmethod.compat.FrameLayoutCompatUtils; +import com.android.inputmethod.compat.LinearLayoutCompatUtils; +import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; + import java.util.ArrayList; import java.util.List; public class CandidateView extends LinearLayout implements OnClickListener, OnLongClickListener { + public interface Listener { + public boolean addWordToDictionary(String word); + public void pickSuggestionManually(int index, CharSequence word); + } + private static final CharacterStyle BOLD_SPAN = new StyleSpan(Typeface.BOLD); private static final CharacterStyle UNDERLINE_SPAN = new UnderlineSpan(); - private static final int MAX_SUGGESTIONS = 16; + // The maximum number of suggestions available. See {@link Suggest#mPrefMaxSuggestions}. + private static final int MAX_SUGGESTIONS = 18; + private static final int UNSPECIFIED_MEASURESPEC = MeasureSpec.makeMeasureSpec( + 0, MeasureSpec.UNSPECIFIED); private static final boolean DBG = LatinImeLogger.sDBG; - private final ArrayList<View> mWords = new ArrayList<View>(); - private final boolean mConfigCandidateHighlightFontColorEnabled; + private static final int NUM_CANDIDATES_IN_STRIP = 3; + private final ImageView mExpandCandidatesPane; + private final ImageView mCloseCandidatesPane; + private ViewGroup mCandidatesPane; + private ViewGroup mCandidatesPaneContainer; + private View mKeyboardView; + private final ArrayList<TextView> mWords = new ArrayList<TextView>(); + private final ArrayList<TextView> mInfos = new ArrayList<TextView>(); + private final ArrayList<View> mDividers = new ArrayList<View>(); + private final int mCandidatePadding; + private final int mCandidateStripHeight; private final CharacterStyle mInvertedForegroundColorSpan; private final CharacterStyle mInvertedBackgroundColorSpan; - private final int mColorNormal; - private final int mColorRecommended; - private final int mColorOther; + private final int mAutoCorrectHighlight; + private static final int AUTO_CORRECT_BOLD = 0x01; + private static final int AUTO_CORRECT_UNDERLINE = 0x02; + private static final int AUTO_CORRECT_INVERT = 0x04; + private final int mColorTypedWord; + private final int mColorAutoCorrect; + private final int mColorSuggestedCandidate; private final PopupWindow mPreviewPopup; private final TextView mPreviewText; - private LatinIME mService; + private Listener mListener; private SuggestedWords mSuggestions = SuggestedWords.EMPTY; private boolean mShowingAutoCorrectionInverted; private boolean mShowingAddToDictionary; @@ -123,46 +147,113 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo * @param attrs */ public CandidateView(Context context, AttributeSet attrs) { + this(context, attrs, R.attr.candidateViewStyle); + } + + public CandidateView(Context context, AttributeSet attrs, int defStyle) { + // Note: Up to version 10 (Gingerbread) of the API, LinearLayout doesn't have 3-argument + // constructor. + // TODO: Call 3-argument constructor, super(context, attrs, defStyle), when we abandon + // backward compatibility with the version 10 or earlier of the API. super(context, attrs); + if (defStyle != R.attr.candidateViewStyle) { + throw new IllegalArgumentException( + "can't accept defStyle other than R.attr.candidayeViewStyle: defStyle=" + + defStyle); + } + setBackgroundDrawable(LinearLayoutCompatUtils.getBackgroundDrawable( + context, attrs, defStyle, R.style.CandidateViewStyle)); Resources res = context.getResources(); - mPreviewPopup = new PopupWindow(context); LayoutInflater inflater = LayoutInflater.from(context); + inflater.inflate(R.layout.candidates_strip, this); + + mPreviewPopup = new PopupWindow(context); mPreviewText = (TextView) inflater.inflate(R.layout.candidate_preview, null); mPreviewPopup.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mPreviewPopup.setContentView(mPreviewText); mPreviewPopup.setBackgroundDrawable(null); - mConfigCandidateHighlightFontColorEnabled = - res.getBoolean(R.bool.config_candidate_highlight_font_color_enabled); - mColorNormal = res.getColor(R.color.candidate_normal); - mColorRecommended = res.getColor(R.color.candidate_recommended); - mColorOther = res.getColor(R.color.candidate_other); - mInvertedForegroundColorSpan = new ForegroundColorSpan(mColorNormal ^ 0x00ffffff); - mInvertedBackgroundColorSpan = new BackgroundColorSpan(mColorNormal); + mCandidatePadding = res.getDimensionPixelOffset(R.dimen.candidate_padding); + mCandidateStripHeight = res.getDimensionPixelOffset(R.dimen.candidate_strip_height); for (int i = 0; i < MAX_SUGGESTIONS; i++) { - View v = inflater.inflate(R.layout.candidate, null); - TextView tv = (TextView)v.findViewById(R.id.candidate_word); - tv.setTag(i); - tv.setOnClickListener(this); + final TextView word, info; + switch (i) { + case 0: + word = (TextView)findViewById(R.id.word_left); + word.setPadding(mCandidatePadding, 0, 0, 0); + info = (TextView)findViewById(R.id.info_left); + break; + case 1: + word = (TextView)findViewById(R.id.word_center); + info = (TextView)findViewById(R.id.info_center); + break; + case 2: + word = (TextView)findViewById(R.id.word_right); + info = (TextView)findViewById(R.id.info_right); + break; + default: + word = (TextView)inflater.inflate(R.layout.candidate_word, null); + info = (TextView)inflater.inflate(R.layout.candidate_info, null); + break; + } + word.setTag(i); + word.setOnClickListener(this); if (i == 0) - tv.setOnLongClickListener(this); - ImageView divider = (ImageView)v.findViewById(R.id.candidate_divider); - // Do not display divider of first candidate. - divider.setVisibility(i == 0 ? INVISIBLE : VISIBLE); - mWords.add(v); + word.setOnLongClickListener(this); + mWords.add(word); + mInfos.add(info); + if (i > 0) { + final View divider = inflater.inflate(R.layout.candidate_divider, null); + divider.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC); + mDividers.add(divider); + } } - scrollTo(0, getScrollY()); + final TypedArray a = context.obtainStyledAttributes( + attrs, R.styleable.CandidateView, defStyle, R.style.CandidateViewStyle); + mAutoCorrectHighlight = a.getInt(R.styleable.CandidateView_autoCorrectHighlight, 0); + mColorTypedWord = a.getColor(R.styleable.CandidateView_colorTypedWord, 0); + mColorAutoCorrect = a.getColor(R.styleable.CandidateView_colorAutoCorrect, 0); + mColorSuggestedCandidate = a.getColor(R.styleable.CandidateView_colorSuggested, 0); + mInvertedForegroundColorSpan = new ForegroundColorSpan(mColorTypedWord ^ 0x00ffffff); + mInvertedBackgroundColorSpan = new BackgroundColorSpan(mColorTypedWord); + + mExpandCandidatesPane = (ImageView)findViewById(R.id.expand_candidates_pane); + mExpandCandidatesPane.setImageDrawable( + a.getDrawable(R.styleable.CandidateView_iconExpandPane)); + mExpandCandidatesPane.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + expandCandidatesPane(); + } + }); + mCloseCandidatesPane = (ImageView)findViewById(R.id.close_candidates_pane); + mCloseCandidatesPane.setImageDrawable( + a.getDrawable(R.styleable.CandidateView_iconClosePane)); + mCloseCandidatesPane.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + closeCandidatesPane(); + } + }); + + a.recycle(); } /** - * A connection back to the service to communicate with the text field + * A connection back to the input method. * @param listener */ - public void setService(LatinIME listener) { - mService = listener; + public void setListener(Listener listener, View inputView) { + mListener = listener; + mKeyboardView = inputView.findViewById(R.id.keyboard_view); + mCandidatesPane = FrameLayoutCompatUtils.getPlacer( + (ViewGroup)inputView.findViewById(R.id.candidates_pane)); + mCandidatesPane.setOnClickListener(this); + mCandidatesPaneContainer = (ViewGroup)inputView.findViewById( + R.id.candidates_pane_container); } public void setSuggestions(SuggestedWords suggestions) { @@ -176,80 +267,170 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo } } + private CharSequence getStyledCandidateWord(CharSequence word, boolean isAutoCorrect) { + if (!isAutoCorrect) + return word; + final Spannable spannedWord = new SpannableString(word); + if ((mAutoCorrectHighlight & AUTO_CORRECT_BOLD) != 0) + spannedWord.setSpan(BOLD_SPAN, 0, word.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + if ((mAutoCorrectHighlight & AUTO_CORRECT_UNDERLINE) != 0) + spannedWord.setSpan(UNDERLINE_SPAN, 0, word.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + return spannedWord; + } + + private int getCandidateTextColor(boolean isAutoCorrect, boolean isSuggestedCandidate, + SuggestedWordInfo info) { + final int color; + if (isAutoCorrect) { + color = mColorAutoCorrect; + } else if (isSuggestedCandidate) { + color = mColorSuggestedCandidate; + } else { + color = mColorTypedWord; + } + if (info != null && info.isPreviousSuggestedWord()) { + final int newAlpha = (int)(Color.alpha(color) * 0.5f); + return Color.argb(newAlpha, Color.red(color), Color.green(color), Color.blue(color)); + } else { + return color; + } + } + private void updateSuggestions() { final SuggestedWords suggestions = mSuggestions; + final List<SuggestedWordInfo> suggestedWordInfoList = suggestions.mSuggestedWordInfoList; + clear(); + final int paneWidth = getWidth(); + final int dividerWidth = mDividers.get(0).getMeasuredWidth(); + final int dividerHeight = mDividers.get(0).getMeasuredHeight(); + int x = 0; + int y = 0; + int fromIndex = NUM_CANDIDATES_IN_STRIP; final int count = Math.min(mWords.size(), suggestions.size()); + closeCandidatesPane(); + mExpandCandidatesPane.setEnabled(count >= NUM_CANDIDATES_IN_STRIP); for (int i = 0; i < count; i++) { - CharSequence word = suggestions.getWord(i); - if (word == null) continue; - final int wordLength = word.length(); - final List<SuggestedWordInfo> suggestedWordInfoList = - suggestions.mSuggestedWordInfoList; - - final View v = mWords.get(i); - final TextView tv = (TextView)v.findViewById(R.id.candidate_word); - final TextView dv = (TextView)v.findViewById(R.id.candidate_debug_info); - tv.setTextColor(mColorNormal); - // TODO: Needs safety net? - if (suggestions.mHasMinimalSuggestion + final CharSequence suggestion = suggestions.getWord(i); + if (suggestion == null) continue; + + final SuggestedWordInfo suggestionInfo = (suggestedWordInfoList != null) + ? suggestedWordInfoList.get(i) : null; + final boolean isAutoCorrect = suggestions.mHasMinimalSuggestion && ((i == 1 && !suggestions.mTypedWordValid) - || (i == 0 && suggestions.mTypedWordValid))) { - final CharacterStyle style; - if (mConfigCandidateHighlightFontColorEnabled) { - style = BOLD_SPAN; - tv.setTextColor(mColorRecommended); - } else { - style = UNDERLINE_SPAN; - } - final Spannable spannedWord = new SpannableString(word); - spannedWord.setSpan(style, 0, wordLength, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - word = spannedWord; - } else if (i != 0 || (wordLength == 1 && count > 1)) { - // HACK: even if i == 0, we use mColorOther when this - // suggestion's length is 1 - // and there are multiple suggestions, such as the default - // punctuation list. - if (mConfigCandidateHighlightFontColorEnabled) - tv.setTextColor(mColorOther); + || (i == 0 && suggestions.mTypedWordValid)); + // HACK: even if i == 0, we use mColorOther when this suggestion's length is 1 + // and there are multiple suggestions, such as the default punctuation list. + // TODO: Need to revisit this logic with bigram suggestions + final boolean isSuggestedCandidate = (i != 0); + final boolean isPunctuationSuggestions = (suggestion.length() == 1 && count > 1); + + final TextView word = mWords.get(i); + // TODO: Reorder candidates in strip as appropriate. The center candidate should hold + // the word when space is typed (valid typed word or auto corrected word). + word.setTextColor(getCandidateTextColor(isAutoCorrect, + isSuggestedCandidate || isPunctuationSuggestions, suggestionInfo)); + word.setText(getStyledCandidateWord(suggestion, isAutoCorrect)); + // TODO: call TextView.setTextScaleX() to fit the candidate in single line. + word.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC); + final int width = word.getMeasuredWidth(); + final int height = word.getMeasuredHeight(); + + final TextView info; + if (DBG && suggestionInfo != null + && !TextUtils.isEmpty(suggestionInfo.getDebugString())) { + info = mInfos.get(i); + info.setText(suggestionInfo.getDebugString()); + info.setVisibility(View.VISIBLE); + info.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC); + } else { + info = null; } - tv.setText(word); - tv.setClickable(true); - - if (suggestedWordInfoList != null && suggestedWordInfoList.get(i) != null) { - final SuggestedWordInfo info = suggestedWordInfoList.get(i); - if (info.isPreviousSuggestedWord()) { - int color = tv.getCurrentTextColor(); - tv.setTextColor(Color.argb((int)(Color.alpha(color) * 0.5f), Color.red(color), - Color.green(color), Color.blue(color))); - } - final String debugString = info.getDebugString(); - if (DBG) { - if (TextUtils.isEmpty(debugString)) { - dv.setVisibility(GONE); - } else { - dv.setText(debugString); - dv.setVisibility(VISIBLE); - } - } else { - dv.setVisibility(GONE); + + if (i < NUM_CANDIDATES_IN_STRIP) { + if (info != null) { + final int infoWidth = info.getMeasuredWidth(); + FrameLayoutCompatUtils.placeViewAt( + info, x + width - infoWidth, y, infoWidth, info.getMeasuredHeight()); } } else { - dv.setVisibility(GONE); + // TODO: Handle overflow case. + if (dividerWidth + x + width >= paneWidth) { + centeringCandidates(fromIndex, i - 1, x, paneWidth); + x = 0; + y += mCandidateStripHeight; + fromIndex = i; + } + if (x != 0) { + final View divider = mDividers.get(i - NUM_CANDIDATES_IN_STRIP); + mCandidatesPane.addView(divider); + FrameLayoutCompatUtils.placeViewAt( + divider, x, y + (mCandidateStripHeight - dividerHeight) / 2, + dividerWidth, dividerHeight); + x += dividerWidth; + } + mCandidatesPane.addView(word); + FrameLayoutCompatUtils.placeViewAt( + word, x, y + (mCandidateStripHeight - height) / 2, width, height); + if (info != null) { + mCandidatesPane.addView(info); + final int infoWidth = info.getMeasuredWidth(); + FrameLayoutCompatUtils.placeViewAt( + info, x + width - infoWidth, y, infoWidth, info.getMeasuredHeight()); + } + x += width; } - addView(v); } + if (x != 0) { + // Centering last candidates row. + centeringCandidates(fromIndex, count - 1, x, paneWidth); + } + } + + private void centeringCandidates(int from, int to, int width, int paneWidth) { + final ViewGroup pane = mCandidatesPane; + final int fromIndex = pane.indexOfChild(mWords.get(from)); + final int toIndex; + if (mInfos.get(to).getParent() != null) { + toIndex = pane.indexOfChild(mInfos.get(to)); + } else { + toIndex = pane.indexOfChild(mWords.get(to)); + } + final int offset = (paneWidth - width) / 2; + for (int index = fromIndex; index <= toIndex; index++) { + offsetMargin(pane.getChildAt(index), offset, 0); + } + } + + private static void offsetMargin(View v, int dx, int dy) { + if (v == null) + return; + final ViewGroup.LayoutParams lp = v.getLayoutParams(); + if (lp instanceof ViewGroup.MarginLayoutParams) { + final ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams)lp; + mlp.setMargins(mlp.leftMargin + dx, mlp.topMargin + dy, 0, 0); + } + } + + private void expandCandidatesPane() { + mExpandCandidatesPane.setVisibility(View.GONE); + mCloseCandidatesPane.setVisibility(View.VISIBLE); + mCandidatesPaneContainer.setMinimumHeight(mKeyboardView.getMeasuredHeight()); + mCandidatesPaneContainer.setVisibility(View.VISIBLE); + mKeyboardView.setVisibility(View.GONE); + } - scrollTo(0, getScrollY()); - requestLayout(); + private void closeCandidatesPane() { + mExpandCandidatesPane.setVisibility(View.VISIBLE); + mCloseCandidatesPane.setVisibility(View.GONE); + mCandidatesPaneContainer.setVisibility(View.GONE); + mKeyboardView.setVisibility(View.VISIBLE); } public void onAutoCorrectionInverted(CharSequence autoCorrectedWord) { - // Displaying auto corrected word as inverted is enabled only when highlighting candidate - // with color is disabled. - if (mConfigCandidateHighlightFontColorEnabled) + if ((mAutoCorrectHighlight & AUTO_CORRECT_INVERT) == 0) return; - final TextView tv = (TextView)mWords.get(1).findViewById(R.id.candidate_word); + final TextView tv = mWords.get(1); final Spannable word = new SpannableString(autoCorrectedWord); final int wordLength = word.length(); word.setSpan(mInvertedBackgroundColorSpan, 0, wordLength, @@ -260,10 +441,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo mShowingAutoCorrectionInverted = true; } - public boolean isConfigCandidateHighlightFontColorEnabled() { - return mConfigCandidateHighlightFontColorEnabled; - } - public boolean isShowingAddToDictionaryHint() { return mShowingAddToDictionary; } @@ -275,7 +452,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo setSuggestions(builder.build()); mShowingAddToDictionary = true; // Disable R.string.hint_add_to_dictionary button - TextView tv = (TextView)getChildAt(1).findViewById(R.id.candidate_word); + TextView tv = mWords.get(1); tv.setClickable(false); } @@ -292,7 +469,11 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo public void clear() { mShowingAddToDictionary = false; mShowingAutoCorrectionInverted = false; - removeAllViews(); + for (int i = 0; i < NUM_CANDIDATES_IN_STRIP; i++) { + mWords.get(i).setText(null); + mInfos.get(i).setVisibility(View.GONE); + } + mCandidatesPane.removeAllViews(); } private void hidePreview() { @@ -304,11 +485,11 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo return; final TextView previewText = mPreviewText; - previewText.setTextColor(mColorNormal); + previewText.setTextColor(mColorTypedWord); previewText.setText(word); previewText.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); - View v = getChildAt(index); + View v = mWords.get(index); final int[] offsetInWindow = new int[2]; v.getLocationInWindow(offsetInWindow); final int posX = offsetInWindow[0]; @@ -324,15 +505,21 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo } private void addToDictionary(CharSequence word) { - if (mService.addWordToDictionary(word.toString())) { + if (mListener.addWordToDictionary(word.toString())) { showPreview(0, getContext().getString(R.string.added_word, word)); } } @Override public boolean onLongClick(View view) { - int index = (Integer) view.getTag(); - CharSequence word = mSuggestions.getWord(index); + final Object tag = view.getTag(); + if (!(tag instanceof Integer)) + return true; + final int index = (Integer) tag; + if (index >= mSuggestions.size()) + return true; + + final CharSequence word = mSuggestions.getWord(index); if (word.length() < 2) return false; addToDictionary(word); @@ -341,13 +528,22 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo @Override public void onClick(View view) { - int index = (Integer) view.getTag(); - CharSequence word = mSuggestions.getWord(index); + final Object tag = view.getTag(); + if (!(tag instanceof Integer)) + return; + final int index = (Integer) tag; + if (index >= mSuggestions.size()) + return; + + final CharSequence word = mSuggestions.getWord(index); if (mShowingAddToDictionary && index == 0) { addToDictionary(word); } else { - mService.pickSuggestionManually(index, word); + mListener.pickSuggestionManually(index, word); } + // Because some punctuation letters are not treated as word separator depending on locale, + // {@link #setSuggestions} might not be called and candidates pane left opened. + closeCandidatesPane(); } @Override diff --git a/java/src/com/android/inputmethod/latin/ContactsDictionary.java b/java/src/com/android/inputmethod/latin/ContactsDictionary.java index b057cf4e3..66a041508 100644 --- a/java/src/com/android/inputmethod/latin/ContactsDictionary.java +++ b/java/src/com/android/inputmethod/latin/ContactsDictionary.java @@ -40,7 +40,7 @@ public class ContactsDictionary extends ExpandableDictionary { /** * Frequency for contacts information into the dictionary */ - private static final int FREQUENCY_FOR_CONTACTS = 128; + private static final int FREQUENCY_FOR_CONTACTS = 40; private static final int FREQUENCY_FOR_CONTACTS_BIGRAM = 90; private static final int INDEX_NAME = 1; @@ -114,7 +114,7 @@ public class ContactsDictionary extends ExpandableDictionary { while (!cursor.isAfterLast()) { String name = cursor.getString(INDEX_NAME); - if (name != null) { + if (name != null && -1 == name.indexOf('@')) { int len = name.length(); String prevWord = null; @@ -143,8 +143,6 @@ public class ContactsDictionary extends ExpandableDictionary { if (wordLen < maxWordLength && wordLen > 1) { super.addWord(word, FREQUENCY_FOR_CONTACTS); if (!TextUtils.isEmpty(prevWord)) { - // TODO Do not add email address - // Not so critical super.setBigram(prevWord, word, FREQUENCY_FOR_CONTACTS_BIGRAM); } diff --git a/java/src/com/android/inputmethod/latin/DictionaryCollection.java b/java/src/com/android/inputmethod/latin/DictionaryCollection.java index 3fcb6ed55..5e7de3e6b 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryCollection.java +++ b/java/src/com/android/inputmethod/latin/DictionaryCollection.java @@ -54,8 +54,8 @@ public class DictionaryCollection extends Dictionary { @Override public boolean isValidWord(CharSequence word) { - for (final Dictionary dict : mDictionaries) - if (dict.isValidWord(word)) return true; + for (int i = mDictionaries.size() - 1; i >= 0; --i) + if (mDictionaries.get(i).isValidWord(word)) return true; return false; } diff --git a/java/src/com/android/inputmethod/latin/EditingUtils.java b/java/src/com/android/inputmethod/latin/EditingUtils.java index 39e7e402f..e56aa695d 100644 --- a/java/src/com/android/inputmethod/latin/EditingUtils.java +++ b/java/src/com/android/inputmethod/latin/EditingUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java index 26391fe46..97a4a1816 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java @@ -229,6 +229,7 @@ public class ExpandableDictionary extends Dictionary { * Returns the word's frequency or -1 if not found */ protected int getWordFrequency(CharSequence word) { + // Case-sensitive search Node node = searchNode(mRoots, word, 0, word.length()); return (node == null) ? -1 : node.mFrequency; } @@ -366,12 +367,16 @@ public class ExpandableDictionary extends Dictionary { /** * Adds bigrams to the in-memory trie structure that is being used to retrieve any word - * @param frequency frequency for this bigrams - * @param addFrequency if true, it adds to current frequency + * @param frequency frequency for this bigram + * @param addFrequency if true, it adds to current frequency, else it overwrites the old value * @return returns the final frequency */ private int addOrSetBigram(String word1, String word2, int frequency, boolean addFrequency) { - Node firstWord = searchWord(mRoots, word1, 0, null); + // We don't want results to be different according to case of the looked up left hand side + // word. We do want however to return the correct case for the right hand side. + // So we want to squash the case of the left hand side, and preserve that of the right + // hand side word. + Node firstWord = searchWord(mRoots, word1.toLowerCase(), 0, null); Node secondWord = searchWord(mRoots, word2, 0, null); LinkedList<NextWord> bigram = firstWord.mNGrams; if (bigram == null || bigram.size() == 0) { @@ -437,8 +442,12 @@ public class ExpandableDictionary extends Dictionary { } } - private void runReverseLookUp(final CharSequence previousWord, final WordCallback callback) { - Node prevWord = searchNode(mRoots, previousWord, 0, previousWord.length()); + private void runBigramReverseLookUp(final CharSequence previousWord, + final WordCallback callback) { + // Search for the lowercase version of the word only, because that's where bigrams + // store their sons. + Node prevWord = searchNode(mRoots, previousWord.toString().toLowerCase(), 0, + previousWord.length()); if (prevWord != null && prevWord.mNGrams != null) { reverseLookUp(prevWord.mNGrams, callback); } @@ -448,7 +457,7 @@ public class ExpandableDictionary extends Dictionary { public void getBigrams(final WordComposer codes, final CharSequence previousWord, final WordCallback callback) { if (!reloadDictionaryIfRequired()) { - runReverseLookUp(previousWord, callback); + runBigramReverseLookUp(previousWord, callback); } } @@ -494,14 +503,20 @@ public class ExpandableDictionary extends Dictionary { } /** - * Search for the terminal node of the word + * Recursively search for the terminal node of the word. + * + * One iteration takes the full word to search for and the current index of the recursion. + * + * @param children the node of the trie to search under. + * @param word the word to search for. Only read [offset..length] so there may be trailing chars + * @param offset the index in {@code word} this recursion should operate on. + * @param length the length of the input word. * @return Returns the terminal node of the word if the word exists */ private Node searchNode(final NodeArray children, final CharSequence word, final int offset, final int length) { - // TODO Consider combining with addWordRec final int count = children.mLength; - char currentChar = word.charAt(offset); + final char currentChar = word.charAt(offset); for (int j = 0; j < count; j++) { final Node node = children.mData[j]; if (node.mCode == currentChar) { diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 2c39eba55..9c6465dd2 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -16,22 +16,6 @@ package com.android.inputmethod.latin; -import com.android.inputmethod.compat.CompatUtils; -import com.android.inputmethod.compat.EditorInfoCompatUtils; -import com.android.inputmethod.compat.InputConnectionCompatUtils; -import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; -import com.android.inputmethod.compat.InputMethodServiceCompatWrapper; -import com.android.inputmethod.compat.InputTypeCompatUtils; -import com.android.inputmethod.deprecated.LanguageSwitcherProxy; -import com.android.inputmethod.deprecated.VoiceProxy; -import com.android.inputmethod.deprecated.recorrection.Recorrection; -import com.android.inputmethod.keyboard.Keyboard; -import com.android.inputmethod.keyboard.KeyboardActionListener; -import com.android.inputmethod.keyboard.KeyboardSwitcher; -import com.android.inputmethod.keyboard.KeyboardView; -import com.android.inputmethod.keyboard.LatinKeyboard; -import com.android.inputmethod.keyboard.LatinKeyboardView; - import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; @@ -59,7 +43,6 @@ import android.util.PrintWriterPrinter; import android.util.Printer; import android.view.HapticFeedbackConstants; import android.view.KeyEvent; -import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; @@ -69,7 +52,24 @@ import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.ExtractedText; import android.view.inputmethod.InputConnection; -import android.widget.LinearLayout; + +import com.android.inputmethod.accessibility.AccessibilityUtils; +import com.android.inputmethod.compat.CompatUtils; +import com.android.inputmethod.compat.EditorInfoCompatUtils; +import com.android.inputmethod.compat.InputConnectionCompatUtils; +import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; +import com.android.inputmethod.compat.InputMethodServiceCompatWrapper; +import com.android.inputmethod.compat.InputTypeCompatUtils; +import com.android.inputmethod.compat.SuggestionSpanUtils; +import com.android.inputmethod.deprecated.LanguageSwitcherProxy; +import com.android.inputmethod.deprecated.VoiceProxy; +import com.android.inputmethod.deprecated.recorrection.Recorrection; +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.keyboard.KeyboardActionListener; +import com.android.inputmethod.keyboard.KeyboardSwitcher; +import com.android.inputmethod.keyboard.KeyboardView; +import com.android.inputmethod.keyboard.LatinKeyboard; +import com.android.inputmethod.keyboard.LatinKeyboardView; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -78,11 +78,12 @@ import java.util.Locale; /** * Input method implementation for Qwerty'ish keyboard. */ -public class LatinIME extends InputMethodServiceCompatWrapper implements KeyboardActionListener { +public class LatinIME extends InputMethodServiceCompatWrapper implements KeyboardActionListener, + CandidateView.Listener { private static final String TAG = LatinIME.class.getSimpleName(); private static final boolean PERF_DEBUG = false; private static final boolean TRACE = false; - private static boolean DEBUG = LatinImeLogger.sDBG; + private static boolean DEBUG; /** * The private IME option used to indicate that no microphone should be @@ -155,7 +156,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar private UserDictionary mUserDictionary; private UserBigramDictionary mUserBigramDictionary; - private ContactsDictionary mContactsDictionary; private AutoDictionary mAutoDictionary; // TODO: Create an inner class to group options and pseudo-options to improve readability. @@ -173,6 +173,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // Magic space: a space that should disappear on space/apostrophe insertion, move after the // punctuation on punctuation insertion, and become a real space on alpha char insertion. private boolean mJustAddedMagicSpace; // This indicates whether the last char is a magic space. + // This indicates whether the last keypress resulted in processing of double space replacement + // with period-space. + private boolean mJustReplacedDoubleSpace; private int mCorrectionMode; private int mCommittedLength; @@ -181,8 +184,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar private int mLastSelectionStart; private int mLastSelectionEnd; - // Indicates whether the suggestion strip is to be on in landscape - private boolean mJustAccepted; + // Whether we are expecting an onUpdateSelection event to fire. If it does when we don't + // "expect" it, it means the user actually moved the cursor. + private boolean mExpectingUpdateSelection; private int mDeleteCount; private long mLastKeyTime; @@ -217,15 +221,15 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar @Override public void handleMessage(Message msg) { final KeyboardSwitcher switcher = mKeyboardSwitcher; - final LatinKeyboardView inputView = switcher.getInputView(); + final LatinKeyboardView inputView = switcher.getKeyboardView(); switch (msg.what) { case MSG_UPDATE_SUGGESTIONS: updateSuggestions(); break; case MSG_UPDATE_OLD_SUGGESTIONS: - mRecorrection.setRecorrectionSuggestions(mVoiceProxy, mCandidateView, mSuggest, - mKeyboardSwitcher, mWord, mHasUncommittedTypedChars, mLastSelectionStart, - mLastSelectionEnd, mSettingsValues.mWordSeparators); + mRecorrection.fetchAndDisplayRecorrectionSuggestions(mVoiceProxy, mCandidateView, + mSuggest, mKeyboardSwitcher, mWord, mHasUncommittedTypedChars, + mLastSelectionStart, mLastSelectionEnd, mSettingsValues.mWordSeparators); break; case MSG_UPDATE_SHIFT_STATE: switcher.updateShiftState(); @@ -307,7 +311,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar public void startDisplayLanguageOnSpacebar(boolean localeChanged) { removeMessages(MSG_FADEOUT_LANGUAGE_ON_SPACEBAR); removeMessages(MSG_DISMISS_LANGUAGE_ON_SPACEBAR); - final LatinKeyboardView inputView = mKeyboardSwitcher.getInputView(); + final LatinKeyboardView inputView = mKeyboardSwitcher.getKeyboardView(); if (inputView != null) { final LatinKeyboard keyboard = mKeyboardSwitcher.getLatinKeyboard(); // The language is always displayed when the delay is negative. @@ -350,6 +354,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar SubtypeSwitcher.init(this, prefs); KeyboardSwitcher.init(this, prefs); Recorrection.init(this, prefs); + AccessibilityUtils.init(this, prefs); super.onCreate(); @@ -358,6 +363,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mSubtypeSwitcher = SubtypeSwitcher.getInstance(); mKeyboardSwitcher = KeyboardSwitcher.getInstance(); mRecorrection = Recorrection.getInstance(); + DEBUG = LatinImeLogger.sDBG; loadSettings(); @@ -402,11 +408,12 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (null == mPrefs) mPrefs = PreferenceManager.getDefaultSharedPreferences(this); if (null == mSubtypeSwitcher) mSubtypeSwitcher = SubtypeSwitcher.getInstance(); mSettingsValues = new Settings.Values(mPrefs, this, mSubtypeSwitcher.getInputLocaleStr()); + resetContactsDictionary(); } private void initSuggest() { final String localeStr = mSubtypeSwitcher.getInputLocaleStr(); - final Locale keyboardLocale = new Locale(localeStr); + final Locale keyboardLocale = Utils.constructLocaleFromString(localeStr); final Resources res = mResources; final Locale savedLocale = Utils.setSystemLocale(res, keyboardLocale); @@ -424,8 +431,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mUserDictionary = new UserDictionary(this, localeStr); mSuggest.setUserDictionary(mUserDictionary); - mContactsDictionary = new ContactsDictionary(this, Suggest.DIC_CONTACTS); - mSuggest.setContactsDictionary(mContactsDictionary); + resetContactsDictionary(); mAutoDictionary = new AutoDictionary(this, this, localeStr, Suggest.DIC_AUTO); mSuggest.setAutoDictionary(mAutoDictionary); @@ -438,9 +444,16 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar Utils.setSystemLocale(res, savedLocale); } + private void resetContactsDictionary() { + if (null == mSuggest) return; + ContactsDictionary contactsDictionary = mSettingsValues.mUseContactsDict + ? new ContactsDictionary(this, Suggest.DIC_CONTACTS) : null; + mSuggest.setContactsDictionary(contactsDictionary); + } + /* package private */ void resetSuggestMainDict() { final String localeStr = mSubtypeSwitcher.getInputLocaleStr(); - final Locale keyboardLocale = new Locale(localeStr); + final Locale keyboardLocale = Utils.constructLocaleFromString(localeStr); int mainDicResId = Utils.getMainDictionaryResourceId(mResources); mSuggest.resetMainDict(this, mainDicResId, keyboardLocale); } @@ -487,24 +500,29 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } @Override - public View onCreateCandidatesView() { - LayoutInflater inflater = getLayoutInflater(); - LinearLayout container = (LinearLayout)inflater.inflate(R.layout.candidates, null); - mCandidateViewContainer = container; + public void setInputView(View view) { + super.setInputView(view); + mCandidateViewContainer = view.findViewById(R.id.candidates_container); + mCandidateView = (CandidateView) view.findViewById(R.id.candidates); + mCandidateView.setListener(this, view); mCandidateStripHeight = (int)mResources.getDimension(R.dimen.candidate_strip_height); - mCandidateView = (CandidateView) container.findViewById(R.id.candidates); - mCandidateView.setService(this); - setCandidatesViewShown(true); - return container; + } + + @Override + public void setCandidatesView(View view) { + // To ensure that CandidatesView will never be set. + return; } @Override public void onStartInputView(EditorInfo attribute, boolean restarting) { final KeyboardSwitcher switcher = mKeyboardSwitcher; - LatinKeyboardView inputView = switcher.getInputView(); + LatinKeyboardView inputView = switcher.getKeyboardView(); if (DEBUG) { - Log.d(TAG, "onStartInputView: " + inputView); + Log.d(TAG, "onStartInputView: attribute:" + ((attribute == null) ? "none" + : String.format("inputType=0x%08x imeOptions=0x%08x", + attribute.inputType, attribute.imeOptions))); } // In landscape mode, this method gets called without the input view being created. if (inputView == null) { @@ -530,6 +548,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mHasUncommittedTypedChars = false; mDeleteCount = 0; mJustAddedMagicSpace = false; + mJustReplacedDoubleSpace = false; loadSettings(); updateCorrectionMode(); @@ -550,7 +569,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar switcher.updateShiftState(); } - setCandidatesViewShownInternal(isCandidateStripVisible(), false /* needsInputViewShown */ ); + setSuggestionStripShownInternal(isCandidateStripVisible(), /* needsInputViewShown */ false); // Delay updating suggestions because keyboard input view may not be shown at this point. mHandler.postUpdateSuggestions(); @@ -624,6 +643,13 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } @Override + public void onWindowHidden() { + super.onWindowHidden(); + KeyboardView inputView = mKeyboardSwitcher.getKeyboardView(); + if (inputView != null) inputView.closing(); + } + + @Override public void onFinishInput() { super.onFinishInput(); @@ -632,7 +658,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mVoiceProxy.flushVoiceInputLogs(mConfigurationChanging); - KeyboardView inputView = mKeyboardSwitcher.getInputView(); + KeyboardView inputView = mKeyboardSwitcher.getKeyboardView(); if (inputView != null) inputView.closing(); if (mAutoDictionary != null) mAutoDictionary.flushPendingWrites(); if (mUserBigramDictionary != null) mUserBigramDictionary.flushPendingWrites(); @@ -641,7 +667,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar @Override public void onFinishInputView(boolean finishingInput) { super.onFinishInputView(finishingInput); - KeyboardView inputView = mKeyboardSwitcher.getInputView(); + KeyboardView inputView = mKeyboardSwitcher.getKeyboardView(); if (inputView != null) inputView.setForeground(false); // Remove pending messages related to update suggestions mHandler.cancelUpdateSuggestions(); @@ -702,14 +728,17 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar ic.finishComposingText(); } mVoiceProxy.setVoiceInputHighlighted(false); - } else if (!mHasUncommittedTypedChars && !mJustAccepted) { + } else if (!mHasUncommittedTypedChars && !mExpectingUpdateSelection) { if (TextEntryState.isAcceptedDefault() || TextEntryState.isSpaceAfterPicked()) { if (TextEntryState.isAcceptedDefault()) TextEntryState.reset(); - mJustAddedMagicSpace = false; // The user moved the cursor. } } - mJustAccepted = false; + if (!mExpectingUpdateSelection) { + mJustAddedMagicSpace = false; // The user moved the cursor. + mJustReplacedDoubleSpace = false; + } + mExpectingUpdateSelection = false; mHandler.postUpdateShiftKeyState(); // Make a note of the cursor position @@ -797,11 +826,11 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // When in fullscreen mode, show completions generated by the application setSuggestions(builder.build()); mBestWord = null; - setCandidatesViewShown(true); + setSuggestionStripShown(true); } } - private void setCandidatesViewShownInternal(boolean shown, boolean needsInputViewShown) { + private void setSuggestionStripShownInternal(boolean shown, boolean needsInputViewShown) { // TODO: Modify this if we support candidates with hard keyboard if (onEvaluateInputViewShown()) { final boolean shouldShowCandidates = shown @@ -809,27 +838,26 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (isExtractViewShown()) { // No need to have extra space to show the key preview. mCandidateViewContainer.setMinimumHeight(0); - super.setCandidatesViewShown(shown); + mCandidateViewContainer.setVisibility( + shouldShowCandidates ? View.VISIBLE : View.GONE); } else { // We must control the visibility of the suggestion strip in order to avoid clipped // key previews, even when we don't show the suggestion strip. mCandidateViewContainer.setVisibility( shouldShowCandidates ? View.VISIBLE : View.INVISIBLE); - super.setCandidatesViewShown(true); } } } - @Override - public void setCandidatesViewShown(boolean shown) { - setCandidatesViewShownInternal(shown, true /* needsInputViewShown */ ); + private void setSuggestionStripShown(boolean shown) { + setSuggestionStripShownInternal(shown, /* needsInputViewShown */true); } @Override public void onComputeInsets(InputMethodService.Insets outInsets) { super.onComputeInsets(outInsets); - final KeyboardView inputView = mKeyboardSwitcher.getInputView(); - if (inputView == null) + final KeyboardView inputView = mKeyboardSwitcher.getKeyboardView(); + if (inputView == null || mCandidateViewContainer == null) return; final int containerHeight = mCandidateViewContainer.getHeight(); int touchY = containerHeight; @@ -870,8 +898,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: - if (event.getRepeatCount() == 0 && mKeyboardSwitcher.getInputView() != null) { - if (mKeyboardSwitcher.getInputView().handleBack()) { + if (event.getRepeatCount() == 0 && mKeyboardSwitcher.getKeyboardView() != null) { + if (mKeyboardSwitcher.getKeyboardView().handleBack()) { return true; } } @@ -960,6 +988,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar ic.commitText(". ", 1); ic.endBatchEdit(); mKeyboardSwitcher.updateShiftState(); + mJustReplacedDoubleSpace = true; } else { mHandler.startDoubleSpacesTimer(); } @@ -990,6 +1019,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } } + @Override public boolean addWordToDictionary(String word) { mUserDictionary.addWord(word, 128); // Suggestion strip should be updated after the operation of adding word to the @@ -1007,14 +1037,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } private void onSettingsKeyPressed() { - if (!isShowingOptionDialog()) { - if (!mSettingsValues.mEnableShowSubtypeSettings) { - showSubtypeSelectorAndSettings(); - } else if (Utils.hasMultipleEnabledIMEsOrSubtypes(mImm)) { - showOptionsMenu(); - } else { - launchSettings(); - } + if (isShowingOptionDialog()) + return; + if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) { + showSubtypeSelectorAndSettings(); + } else if (Utils.hasMultipleEnabledIMEsOrSubtypes(mImm)) { + showOptionsMenu(); + } else { + launchSettings(); } } @@ -1042,10 +1072,13 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mLastKeyTime = when; KeyboardSwitcher switcher = mKeyboardSwitcher; final boolean distinctMultiTouch = switcher.hasDistinctMultitouch(); + final boolean lastStateOfJustReplacedDoubleSpace = mJustReplacedDoubleSpace; + mJustReplacedDoubleSpace = false; switch (primaryCode) { case Keyboard.CODE_DELETE: - handleBackspace(); + handleBackspace(lastStateOfJustReplacedDoubleSpace); mDeleteCount++; + mExpectingUpdateSelection = true; LatinImeLogger.logOnDelete(); break; case Keyboard.CODE_SHIFT: @@ -1083,6 +1116,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar break; case Keyboard.CODE_TAB: handleTab(); + // There are two cases for tab. Either we send a "next" event, that may change the + // focus but will never move the cursor. Or, we send a real tab keycode, which some + // applications may accept or ignore, and we don't know whether this will move the + // cursor or not. So actually, we don't really know. + // So to go with the safer option, we'd rather behave as if the user moved the + // cursor when they didn't than the opposite. We also expect that most applications + // will actually use tab only for focus movement. + // To sum it up: do not update mExpectingUpdateSelection here. break; default: if (mSettingsValues.isWordSeparator(primaryCode)) { @@ -1090,6 +1131,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } else { handleCharacter(primaryCode, keyCodes, x, y); } + mExpectingUpdateSelection = true; + break; } switcher.onKey(primaryCode); // Reset after any single keystroke @@ -1119,7 +1162,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mKeyboardSwitcher.onCancelInput(); } - private void handleBackspace() { + private void handleBackspace(boolean justReplacedDoubleSpace) { if (mVoiceProxy.logAndRevertVoiceInput()) return; final InputConnection ic = getCurrentInputConnection(); @@ -1160,6 +1203,12 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar ic.endBatchEdit(); return; } + if (justReplacedDoubleSpace) { + if (revertDoubleSpace()) { + ic.endBatchEdit(); + return; + } + } if (mEnteredText != null && sameAsTextBeforeCursor(ic, mEnteredText)) { ic.deleteSurroundingText(mEnteredText.length(), 0); @@ -1200,7 +1249,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (EditorInfoCompatUtils.hasFlagNavigateNext(imeOptions) && !isManualTemporaryUpperCase) { EditorInfoCompatUtils.performEditorActionNext(ic); - ic.performEditorAction(EditorInfo.IME_ACTION_NEXT); } else if (EditorInfoCompatUtils.hasFlagNavigatePrevious(imeOptions) && isManualTemporaryUpperCase) { EditorInfoCompatUtils.performEditorActionPrevious(ic); @@ -1228,7 +1276,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar clearSuggestions(); } } - KeyboardSwitcher switcher = mKeyboardSwitcher; + final KeyboardSwitcher switcher = mKeyboardSwitcher; if (switcher.isShiftedOrShiftLocked()) { if (keyCodes == null || keyCodes[0] < Character.MIN_CODE_POINT || keyCodes[0] > Character.MAX_CODE_POINT) { @@ -1236,13 +1284,15 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } code = keyCodes[0]; if (switcher.isAlphabetMode() && Character.isLowerCase(code)) { - int upperCaseCode = Character.toUpperCase(code); - if (upperCaseCode != code) { - code = upperCaseCode; + // In some locales, such as Turkish, Character.toUpperCase() may return a wrong + // character because it doesn't take care of locale. + final String upperCaseString = new String(new int[] {code}, 0, 1) + .toUpperCase(mSubtypeSwitcher.getInputLocale()); + if (upperCaseString.codePointCount(0, upperCaseString.length()) == 1) { + code = upperCaseString.codePointAt(0); } else { // Some keys, such as [eszett], have upper case as multi-characters. - String upperCase = new String(new int[] {code}, 0, 1).toUpperCase(); - onTextInput(upperCase); + onTextInput(upperCaseString); return; } } @@ -1358,7 +1408,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar commitTyped(getCurrentInputConnection()); mVoiceProxy.handleClose(); requestHideSelf(0); - LatinKeyboardView inputView = mKeyboardSwitcher.getInputView(); + LatinKeyboardView inputView = mKeyboardSwitcher.getKeyboardView(); if (inputView != null) inputView.closing(); } @@ -1394,7 +1444,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (DEBUG) { Log.d(TAG, "Switch to keyboard view."); } - View v = mKeyboardSwitcher.getInputView(); + View v = mKeyboardSwitcher.getKeyboardView(); if (v != null) { // Confirms that the keyboard view doesn't have parent view. ViewParent p = v.getParent(); @@ -1403,7 +1453,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } setInputView(v); } - setCandidatesViewShown(isCandidateStripVisible()); + setSuggestionStripShown(isCandidateStripVisible()); updateInputViewShown(); mHandler.postUpdateSuggestions(); } @@ -1413,16 +1463,10 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } public void setSuggestions(SuggestedWords words) { - if (mVoiceProxy.getAndResetIsShowingHint()) { - setCandidatesView(mCandidateViewContainer); - } - if (mCandidateView != null) { mCandidateView.setSuggestions(words); - if (mCandidateView.isConfigCandidateHighlightFontColorEnabled()) { - mKeyboardSwitcher.onAutoCorrectionStateChanged( - words.hasWordAboveAutoCorrectionScoreThreshold()); - } + mKeyboardSwitcher.onAutoCorrectionStateChanged( + words.hasWordAboveAutoCorrectionScoreThreshold()); } } @@ -1445,7 +1489,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar CharSequence prevWord = EditingUtils.getPreviousWord(getCurrentInputConnection(), mSettingsValues.mWordSeparators); SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder( - mKeyboardSwitcher.getInputView(), word, prevWord); + mKeyboardSwitcher.getKeyboardView(), word, prevWord); boolean correctionAvailable = !mInputTypeNoAutoCorrect && mSuggest.hasAutoCorrection(); final CharSequence typedWord = word.getTypedWord(); @@ -1494,7 +1538,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } else { mBestWord = null; } - setCandidatesViewShown(isCandidateStripVisible()); + setSuggestionStripShown(isCandidateStripVisible()); } private boolean pickDefaultSuggestion(int separatorCode) { @@ -1505,8 +1549,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } if (mBestWord != null && mBestWord.length() > 0) { TextEntryState.acceptedDefault(mWord.getTypedWord(), mBestWord, separatorCode); - mJustAccepted = true; - pickSuggestion(mBestWord); + mExpectingUpdateSelection = true; + commitBestWord(mBestWord); // Add the word to the auto dictionary if it's not a known word addToAutoAndUserBigramDictionaries(mBestWord, AutoDictionary.FREQUENCY_FOR_TYPED); return true; @@ -1514,6 +1558,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar return false; } + @Override public void pickSuggestionManually(int index, CharSequence suggestion) { SuggestedWords suggestions = mCandidateView.getSuggestions(); mVoiceProxy.flushAndLogAllTextModificationCounters(index, suggestion, @@ -1553,7 +1598,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // a magic space even if it was a normal space. This is meant to help in case the user // pressed space on purpose of displaying the suggestion strip punctuation. final char primaryCode = suggestion.charAt(0); - final CharSequence beforeText = ic.getTextBeforeCursor(1, 0); + final CharSequence beforeText = ic != null ? ic.getTextBeforeCursor(1, 0) : ""; final int toLeft = (ic == null || TextUtils.isEmpty(beforeText)) ? 0 : beforeText.charAt(0); final boolean oldMagicSpace = mJustAddedMagicSpace; @@ -1572,8 +1617,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // context - no user input. We should reset the word composer. mWord.reset(); } - mJustAccepted = true; - pickSuggestion(suggestion); + mExpectingUpdateSelection = true; + commitBestWord(suggestion); // Add the word to the auto dictionary if it's not a known word if (index == 0) { addToAutoAndUserBigramDictionaries(suggestion, AutoDictionary.FREQUENCY_FOR_PICKED); @@ -1613,8 +1658,10 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (!showingAddToDictionaryHint) { // If we're not showing the "Touch again to save", then show corrections again. // In case the cursor position doesn't change, make sure we show the suggestions again. - clearSuggestions(); - mHandler.postUpdateOldSuggestions(); + updateBigramPredictions(); + // Updating the predictions right away may be slow and feel unresponsive on slower + // terminals. On the other hand if we just postUpdateBigramPredictions() it will + // take a noticeable delay to update them which may feel uneasy. } if (showingAddToDictionaryHint) { mCandidateView.showAddToDictionaryHint(suggestion); @@ -1627,25 +1674,25 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar /** * Commits the chosen word to the text field and saves it for later * retrieval. - * @param suggestion the suggestion picked by the user to be committed to - * the text field */ - private void pickSuggestion(CharSequence suggestion) { + private void commitBestWord(CharSequence bestWord) { KeyboardSwitcher switcher = mKeyboardSwitcher; if (!switcher.isKeyboardAvailable()) return; InputConnection ic = getCurrentInputConnection(); if (ic != null) { - mVoiceProxy.rememberReplacedWord(suggestion, mSettingsValues.mWordSeparators); - ic.commitText(suggestion, 1); + mVoiceProxy.rememberReplacedWord(bestWord, mSettingsValues.mWordSeparators); + SuggestedWords suggestedWords = mCandidateView.getSuggestions(); + ic.commitText(SuggestionSpanUtils.getTextWithSuggestionSpan( + this, bestWord, suggestedWords), 1); } - mRecorrection.saveRecorrectionSuggestion(mWord, suggestion); + mRecorrection.saveRecorrectionSuggestion(mWord, bestWord); mHasUncommittedTypedChars = false; - mCommittedLength = suggestion.length(); + mCommittedLength = bestWord.length(); } private static final WordComposer sEmptyWordComposer = new WordComposer(); - private void updateBigramPredictions() { + public void updateBigramPredictions() { if (mSuggest == null || !isSuggestionsRequested()) return; @@ -1657,7 +1704,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar final CharSequence prevWord = EditingUtils.getThisWord(getCurrentInputConnection(), mSettingsValues.mWordSeparators); SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder( - mKeyboardSwitcher.getInputView(), sEmptyWordComposer, prevWord); + mKeyboardSwitcher.getKeyboardView(), sEmptyWordComposer, prevWord); if (builder.size() > 0) { // Explicitly supply an empty typed word (the no-second-arg version of @@ -1670,7 +1717,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar public void setPunctuationSuggestions() { setSuggestions(mSettingsValues.mSuggestPuncList); - setCandidatesViewShown(isCandidateStripVisible()); + setSuggestionStripShown(isCandidateStripVisible()); } private void addToAutoAndUserBigramDictionaries(CharSequence suggestion, int frequencyDelta) { @@ -1780,6 +1827,21 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } } + public boolean revertDoubleSpace() { + mHandler.cancelDoubleSpacesTimer(); + final InputConnection ic = getCurrentInputConnection(); + // Here we test whether we indeed have a period and a space before us. This should not + // be needed, but it's there just in case something went wrong. + final CharSequence textBeforeCursor = ic.getTextBeforeCursor(2, 0); + if (!". ".equals(textBeforeCursor)) + return false; + ic.beginBatchEdit(); + ic.deleteSurroundingText(2, 0); + ic.commitText(" ", 1); + ic.endBatchEdit(); + return true; + } + public boolean isWordSeparator(int code) { return mSettingsValues.isWordSeparator(code); } @@ -1813,7 +1875,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } // The following is necessary because on API levels < 10, we don't get notified when // subtype changes. - onRefreshKeyboard(); + if (!CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) + onRefreshKeyboard(); } @Override @@ -1879,7 +1942,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // if mAudioManager is null, we don't have the ringer state yet // mAudioManager will be set by updateRingerMode if (mAudioManager == null) { - if (mKeyboardSwitcher.getInputView() != null) { + if (mKeyboardSwitcher.getKeyboardView() != null) { updateRingerMode(); } } @@ -1906,7 +1969,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar if (!mSettingsValues.mVibrateOn) { return; } - LatinKeyboardView inputView = mKeyboardSwitcher.getInputView(); + LatinKeyboardView inputView = mKeyboardSwitcher.getKeyboardView(); if (inputView != null) { inputView.performHapticFeedback( HapticFeedbackConstants.KEYBOARD_TAP, @@ -1914,11 +1977,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar } } - public void promoteToUserDictionary(String word, int frequency) { - if (mUserDictionary.isValidWord(word)) return; - mUserDictionary.addWord(word, frequency); - } - public WordComposer getCurrentWord() { return mWord; } @@ -2030,7 +2088,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar private void showOptionsMenuInternal(CharSequence title, CharSequence[] items, DialogInterface.OnClickListener listener) { - final IBinder windowToken = mKeyboardSwitcher.getInputView().getWindowToken(); + final IBinder windowToken = mKeyboardSwitcher.getKeyboardView().getWindowToken(); if (windowToken == null) return; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setCancelable(true); diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java index 7c323c155..3ad2a5965 100644 --- a/java/src/com/android/inputmethod/latin/Settings.java +++ b/java/src/com/android/inputmethod/latin/Settings.java @@ -79,6 +79,8 @@ public class Settings extends PreferenceActivity public static final String PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY = "pref_key_preview_popup_dismiss_delay"; + public static final String PREF_KEY_USE_CONTACTS_DICT = + "pref_key_use_contacts_dict"; public static final String PREF_USABILITY_STUDY_MODE = "usability_study_mode"; @@ -87,7 +89,6 @@ public class Settings extends PreferenceActivity public static class Values { // From resources: - public final boolean mEnableShowSubtypeSettings; public final boolean mSwipeDownDismissKeyboardEnabled; public final int mDelayBeforeFadeoutLanguageOnSpacebar; public final int mDelayUpdateSuggestions; @@ -115,21 +116,20 @@ public class Settings extends PreferenceActivity public final boolean mBigramSuggestionEnabled; // Prediction: use bigrams to predict the next word when there is no input for it yet public final boolean mBigramPredictionEnabled; + public final boolean mUseContactsDict; public Values(final SharedPreferences prefs, final Context context, final String localeStr) { final Resources res = context.getResources(); final Locale savedLocale; if (null != localeStr) { - final Locale keyboardLocale = new Locale(localeStr); + final Locale keyboardLocale = Utils.constructLocaleFromString(localeStr); savedLocale = Utils.setSystemLocale(res, keyboardLocale); } else { savedLocale = null; } // Get the resources - mEnableShowSubtypeSettings = res.getBoolean( - R.bool.config_enable_show_subtype_settings); mSwipeDownDismissKeyboardEnabled = res.getBoolean( R.bool.config_swipe_down_dismiss_keyboard_enabled); mDelayBeforeFadeoutLanguageOnSpacebar = res.getInteger( @@ -178,6 +178,8 @@ public class Settings extends PreferenceActivity mAutoCorrectionThreshold = getAutoCorrectionThreshold(prefs, res); + mUseContactsDict = prefs.getBoolean(Settings.PREF_KEY_USE_CONTACTS_DICT, true); + Utils.setSystemLocale(res, savedLocale); } @@ -354,8 +356,6 @@ public class Settings extends PreferenceActivity (PreferenceGroup) findPreference(PREF_GENERAL_SETTINGS_KEY); final PreferenceGroup textCorrectionGroup = (PreferenceGroup) findPreference(PREF_CORRECTION_SETTINGS_KEY); - final PreferenceGroup bigramGroup = - (PreferenceGroup) findPreference(PREF_NGRAM_SETTINGS_KEY); final boolean showSettingsKeyOption = res.getBoolean( R.bool.config_enable_show_settings_key_option); @@ -373,10 +373,7 @@ public class Settings extends PreferenceActivity generalSettings.removePreference(findPreference(PREF_VIBRATE_ON)); } - final boolean showSubtypeSettings = res.getBoolean( - R.bool.config_enable_show_subtype_settings); - if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED - && !showSubtypeSettings) { + if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) { generalSettings.removePreference(findPreference(PREF_SUBTYPES)); } @@ -499,7 +496,6 @@ public class Settings extends PreferenceActivity } private void updateSettingsKeySummary() { - final ListPreference lp = mSettingsKeyPreference; mSettingsKeyPreference.setSummary( getResources().getStringArray(R.array.settings_key_modes) [mSettingsKeyPreference.findIndexOfValue(mSettingsKeyPreference.getValue())]); diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java index d8012087b..6ca12c0c5 100644 --- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java +++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java @@ -92,10 +92,9 @@ public class SubtypeSwitcher { } public static void init(LatinIME service, SharedPreferences prefs) { + SubtypeLocale.init(service); sInstance.initialize(service, prefs); sInstance.updateAllParameters(); - - SubtypeLocale.init(service); } private SubtypeSwitcher() { @@ -281,14 +280,8 @@ public class SubtypeSwitcher { // "en_US" --> language: en & country: US // "en" --> language: en // "" --> the system locale - mLocaleSplitter.setString(inputLocaleStr); - if (mLocaleSplitter.hasNext()) { - String language = mLocaleSplitter.next(); - if (mLocaleSplitter.hasNext()) { - mInputLocale = new Locale(language, mLocaleSplitter.next()); - } else { - mInputLocale = new Locale(language); - } + if (!TextUtils.isEmpty(inputLocaleStr)) { + mInputLocale = Utils.constructLocaleFromString(inputLocaleStr); mInputLocaleStr = inputLocaleStr; } else { mInputLocale = mSystemLocale; @@ -420,7 +413,7 @@ public class SubtypeSwitcher { final KeyboardSwitcher switcher = KeyboardSwitcher.getInstance(); final LatinKeyboard keyboard = switcher.getLatinKeyboard(); if (keyboard != null) { - keyboard.updateShortcutKey(isShortcutImeReady(), switcher.getInputView()); + keyboard.updateShortcutKey(isShortcutImeReady(), switcher.getKeyboardView()); } } @@ -510,7 +503,7 @@ public class SubtypeSwitcher { private void triggerVoiceIME() { if (!mService.isInputViewShown()) return; VoiceProxy.getInstance().startListening(false, - KeyboardSwitcher.getInstance().getInputView().getWindowToken()); + KeyboardSwitcher.getInstance().getKeyboardView().getWindowToken()); } ////////////////////////////////////// @@ -549,12 +542,12 @@ public class SubtypeSwitcher { || mEnabledKeyboardSubtypesOfCurrentInputMethod.size() == 0) return; mCurrentKeyboardSubtypeIndex = getCurrentIndex(); mNextKeyboardSubtype = getNextKeyboardSubtypeInternal(mCurrentKeyboardSubtypeIndex); - Locale locale = new Locale(mNextKeyboardSubtype.getLocale()); - mNextLanguage = getDisplayLanguage(locale); + Locale locale = Utils.constructLocaleFromString(mNextKeyboardSubtype.getLocale()); + mNextLanguage = getFullDisplayName(locale, true); mPreviousKeyboardSubtype = getPreviousKeyboardSubtypeInternal( mCurrentKeyboardSubtypeIndex); - locale = new Locale(mPreviousKeyboardSubtype.getLocale()); - mPreviousLanguage = getDisplayLanguage(locale); + locale = Utils.constructLocaleFromString(mPreviousKeyboardSubtype.getLocale()); + mPreviousLanguage = getFullDisplayName(locale, true); } private int normalize(int index) { @@ -584,29 +577,30 @@ public class SubtypeSwitcher { public static String getFullDisplayName(Locale locale, boolean returnsNameInThisLocale) { if (returnsNameInThisLocale) { - return toTitleCase(SubtypeLocale.getFullDisplayName(locale)); + return toTitleCase(SubtypeLocale.getFullDisplayName(locale), locale); } else { - return toTitleCase(locale.getDisplayName()); + return toTitleCase(locale.getDisplayName(), locale); } } public static String getDisplayLanguage(Locale locale) { - return toTitleCase(locale.getDisplayLanguage(locale)); + return toTitleCase(SubtypeLocale.getFullDisplayName(locale), locale); } public static String getMiddleDisplayLanguage(Locale locale) { - return toTitleCase((new Locale(locale.getLanguage()).getDisplayLanguage(locale))); + return toTitleCase((Utils.constructLocaleFromString( + locale.getLanguage()).getDisplayLanguage(locale)), locale); } public static String getShortDisplayLanguage(Locale locale) { - return toTitleCase(locale.getLanguage()); + return toTitleCase(locale.getLanguage(), locale); } - private static String toTitleCase(String s) { + private static String toTitleCase(String s, Locale locale) { if (s.length() == 0) { return s; } - return Character.toUpperCase(s.charAt(0)) + s.substring(1); + return s.toUpperCase(locale).charAt(0) + s.substring(1); } public String getInputLanguageName() { diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index ca75866c0..eb5ed5a65 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -84,7 +84,7 @@ public class Suggest implements Dictionary.WordCallback { private final Map<String, Dictionary> mUnigramDictionaries = new HashMap<String, Dictionary>(); private final Map<String, Dictionary> mBigramDictionaries = new HashMap<String, Dictionary>(); - private int mPrefMaxSuggestions = 12; + private int mPrefMaxSuggestions = 18; private static final int PREF_MAX_BIGRAMS = 60; @@ -117,30 +117,31 @@ public class Suggest implements Dictionary.WordCallback { } private void init(Context context, Dictionary mainDict) { - if (mainDict != null) { - mMainDict = mainDict; - mUnigramDictionaries.put(DICT_KEY_MAIN, mainDict); - mBigramDictionaries.put(DICT_KEY_MAIN, mainDict); - } + mMainDict = mainDict; + addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_MAIN, mainDict); + addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_MAIN, mainDict); mWhiteListDictionary = WhitelistDictionary.init(context); - if (mWhiteListDictionary != null) { - mUnigramDictionaries.put(DICT_KEY_WHITELIST, mWhiteListDictionary); - } + addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_WHITELIST, mWhiteListDictionary); mAutoCorrection = new AutoCorrection(); initPool(); } + private void addOrReplaceDictionary(Map<String, Dictionary> dictionaries, String key, + Dictionary dict) { + final Dictionary oldDict = (dict == null) + ? dictionaries.remove(key) + : dictionaries.put(key, dict); + if (oldDict != null && dict != oldDict) { + oldDict.close(); + } + } + public void resetMainDict(Context context, int dictionaryResId, Locale locale) { final Dictionary newMainDict = DictionaryFactory.createDictionaryFromManager( context, locale, dictionaryResId); mMainDict = newMainDict; - if (null == newMainDict) { - mUnigramDictionaries.remove(DICT_KEY_MAIN); - mBigramDictionaries.remove(DICT_KEY_MAIN); - } else { - mUnigramDictionaries.put(DICT_KEY_MAIN, newMainDict); - mBigramDictionaries.put(DICT_KEY_MAIN, newMainDict); - } + addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_MAIN, newMainDict); + addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_MAIN, newMainDict); } private void initPool() { @@ -179,28 +180,25 @@ public class Suggest implements Dictionary.WordCallback { * before the main dictionary, if set. */ public void setUserDictionary(Dictionary userDictionary) { - if (userDictionary != null) - mUnigramDictionaries.put(DICT_KEY_USER, userDictionary); + addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_USER, userDictionary); } /** - * Sets an optional contacts dictionary resource to be loaded. + * Sets an optional contacts dictionary resource to be loaded. It is also possible to remove + * the contacts dictionary by passing null to this method. In this case no contacts dictionary + * won't be used. */ public void setContactsDictionary(Dictionary contactsDictionary) { - if (contactsDictionary != null) { - mUnigramDictionaries.put(DICT_KEY_CONTACTS, contactsDictionary); - mBigramDictionaries.put(DICT_KEY_CONTACTS, contactsDictionary); - } + addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_CONTACTS, contactsDictionary); + addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_CONTACTS, contactsDictionary); } public void setAutoDictionary(Dictionary autoDictionary) { - if (autoDictionary != null) - mUnigramDictionaries.put(DICT_KEY_AUTO, autoDictionary); + addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_AUTO, autoDictionary); } public void setUserBigramDictionary(Dictionary userBigramDictionary) { - if (userBigramDictionary != null) - mBigramDictionaries.put(DICT_KEY_USER_BIGRAM, userBigramDictionary); + addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_USER_BIGRAM, userBigramDictionary); } public void setAutoCorrectionThreshold(double threshold) { @@ -252,6 +250,7 @@ public class Suggest implements Dictionary.WordCallback { poolSize > 0 ? (StringBuilder) mStringPool.remove(poolSize - 1) : new StringBuilder(getApproxMaxWordLength()); sb.setLength(0); + // TODO: Must pay attention to locale when changing case. if (all) { sb.append(word.toString().toUpperCase()); } else if (first) { @@ -317,6 +316,7 @@ public class Suggest implements Dictionary.WordCallback { } else { // Word entered: return only bigrams that match the first char of the typed word final char currentChar = typedWord.charAt(0); + // TODO: Must pay attention to locale when changing case. final char currentCharUpper = Character.toUpperCase(currentChar); int count = 0; final int bigramSuggestionSize = mBigramSuggestions.size(); @@ -520,6 +520,7 @@ public class Suggest implements Dictionary.WordCallback { StringBuilder sb = poolSize > 0 ? (StringBuilder) mStringPool.remove(poolSize - 1) : new StringBuilder(getApproxMaxWordLength()); sb.setLength(0); + // TODO: Must pay attention to locale when changing case. if (mIsAllUpperCase) { sb.append(new String(word, offset, length).toUpperCase()); } else if (mIsFirstCharCapitalized) { diff --git a/java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java b/java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java new file mode 100644 index 000000000..4a3f42d5d --- /dev/null +++ b/java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.latin; + +import com.android.inputmethod.compat.SuggestionSpanUtils; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.util.Log; + +public class SuggestionSpanPickedNotificationReceiver extends BroadcastReceiver { + private static final boolean DBG = LatinImeLogger.sDBG; + private static final String TAG = + SuggestionSpanPickedNotificationReceiver.class.getSimpleName(); + + @Override + public void onReceive(Context context, Intent intent) { + if (SuggestionSpanUtils.ACTION_SUGGESTION_PICKED.equals(intent.getAction())) { + if (DBG) { + final String before = intent.getStringExtra( + SuggestionSpanUtils.SUGGESTION_SPAN_PICKED_BEFORE); + final String after = intent.getStringExtra( + SuggestionSpanUtils.SUGGESTION_SPAN_PICKED_AFTER); + Log.d(TAG, "Received notification picked: " + before + "," + after); + } + } + } +} diff --git a/java/src/com/android/inputmethod/latin/UserBigramDictionary.java b/java/src/com/android/inputmethod/latin/UserBigramDictionary.java index a32a6461a..5b615ca29 100644 --- a/java/src/com/android/inputmethod/latin/UserBigramDictionary.java +++ b/java/src/com/android/inputmethod/latin/UserBigramDictionary.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -158,7 +158,7 @@ public class UserBigramDictionary extends ExpandableDictionary { * Pair will be added to the userbigram database. */ public int addBigrams(String word1, String word2) { - // remove caps + // remove caps if second word is autocapitalized if (mIme != null && mIme.getCurrentWord().isAutoCapitalized()) { word2 = Character.toLowerCase(word2.charAt(0)) + word2.substring(1); } diff --git a/java/src/com/android/inputmethod/latin/Utils.java b/java/src/com/android/inputmethod/latin/Utils.java index 47890e643..245fc20bc 100644 --- a/java/src/com/android/inputmethod/latin/Utils.java +++ b/java/src/com/android/inputmethod/latin/Utils.java @@ -18,6 +18,7 @@ package com.android.inputmethod.latin; import com.android.inputmethod.compat.InputMethodInfoCompatWrapper; import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; +import com.android.inputmethod.compat.InputMethodSubtypeCompatWrapper; import com.android.inputmethod.compat.InputTypeCompatUtils; import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.KeyboardId; @@ -43,7 +44,10 @@ import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; +import java.util.List; import java.util.Locale; public class Utils { @@ -108,7 +112,34 @@ public class Utils { } public static boolean hasMultipleEnabledIMEsOrSubtypes(InputMethodManagerCompatWrapper imm) { - return imm.getEnabledInputMethodList().size() > 1 + final List<InputMethodInfoCompatWrapper> enabledImis = imm.getEnabledInputMethodList(); + + // Filters out IMEs that have auxiliary subtypes only (including either implicitly or + // explicitly enabled ones). + final ArrayList<InputMethodInfoCompatWrapper> filteredImis = + new ArrayList<InputMethodInfoCompatWrapper>(); + + outerloop: + for (InputMethodInfoCompatWrapper imi : enabledImis) { + // We can return true immediately after we find two or more filtered IMEs. + if (filteredImis.size() > 1) return true; + final List<InputMethodSubtypeCompatWrapper> subtypes = + imm.getEnabledInputMethodSubtypeList(imi, true); + // IMEs that have no subtypes should be included. + if (subtypes.isEmpty()) { + filteredImis.add(imi); + continue; + } + // IMEs that have one or more non-auxiliary subtypes should be included. + for (InputMethodSubtypeCompatWrapper subtype : subtypes) { + if (!subtype.isAuxiliary()) { + filteredImis.add(imi); + continue outerloop; + } + } + } + + return filteredImis.size() > 1 // imm.getEnabledInputMethodSubtypeList(null, false) will return the current IME's enabled // input method subtype (The current IME should be LatinIME.) || imm.getEnabledInputMethodSubtypeList(null, false).size() > 1; @@ -537,8 +568,6 @@ public class Utils { return KeyboardId.MODE_IM; } else if (variation == InputType.TYPE_TEXT_VARIATION_FILTER) { return KeyboardId.MODE_TEXT; - } else if (variation == InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT) { - return KeyboardId.MODE_WEB; } else { return KeyboardId.MODE_TEXT; } @@ -662,4 +691,28 @@ public class Utils { res.updateConfiguration(conf, res.getDisplayMetrics()); return saveLocale; } + + private static final HashMap<String, Locale> sLocaleCache = new HashMap<String, Locale>(); + + public static Locale constructLocaleFromString(String localeStr) { + if (localeStr == null) + return null; + synchronized (sLocaleCache) { + if (sLocaleCache.containsKey(localeStr)) + return sLocaleCache.get(localeStr); + Locale retval = null; + String[] localeParams = localeStr.split("_", 3); + if (localeParams.length == 1) { + retval = new Locale(localeParams[0]); + } else if (localeParams.length == 2) { + retval = new Locale(localeParams[0], localeParams[1]); + } else if (localeParams.length == 3) { + retval = new Locale(localeParams[0], localeParams[1], localeParams[2]); + } + if (retval != null) { + sLocaleCache.put(localeStr, retval); + } + return retval; + } + } } diff --git a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java index 2389d4e3c..4377373d2 100644 --- a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java +++ b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java @@ -39,6 +39,7 @@ public class WhitelistDictionary extends Dictionary { public static WhitelistDictionary init(Context context) { synchronized (sInstance) { if (context != null) { + // Wordlist is initialized by the proper language in Suggestion.java#init sInstance.initWordlist( context.getResources().getStringArray(R.array.wordlist_whitelist)); } else { diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SpellChecker.java b/java/src/com/android/inputmethod/latin/spellcheck/SpellChecker.java new file mode 100644 index 000000000..63c6d69d7 --- /dev/null +++ b/java/src/com/android/inputmethod/latin/spellcheck/SpellChecker.java @@ -0,0 +1,115 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.android.inputmethod.latin.spellcheck; + +import android.content.Context; +import android.content.res.Resources; + +import com.android.inputmethod.compat.ArraysCompatUtils; +import com.android.inputmethod.latin.Dictionary; +import com.android.inputmethod.latin.Dictionary.DataType; +import com.android.inputmethod.latin.Dictionary.WordCallback; +import com.android.inputmethod.latin.DictionaryFactory; +import com.android.inputmethod.latin.Utils; +import com.android.inputmethod.latin.WordComposer; + +import java.util.LinkedList; +import java.util.List; +import java.util.Locale; + +/** + * Implements spell checking methods. + */ +public class SpellChecker { + + public final Dictionary mDictionary; + + public SpellChecker(final Context context, final Locale locale) { + final Resources resources = context.getResources(); + final int fallbackResourceId = Utils.getMainDictionaryResourceId(resources); + mDictionary = DictionaryFactory.createDictionaryFromManager(context, locale, + fallbackResourceId); + } + + // Note : this must be reentrant + /** + * Finds out whether a word is in the dictionary or not. + * + * @param text the sequence containing the word to check for. + * @param start the index of the first character of the word in text. + * @param end the index of the next-to-last character in text. + * @return true if the word is in the dictionary, false otherwise. + */ + public boolean isCorrect(final CharSequence text, final int start, final int end) { + return mDictionary.isValidWord(text.subSequence(start, end)); + } + + private static class SuggestionsGatherer implements WordCallback { + private final int DEFAULT_SUGGESTION_LENGTH = 16; + private final List<String> mSuggestions = new LinkedList<String>(); + private int[] mScores = new int[DEFAULT_SUGGESTION_LENGTH]; + private int mLength = 0; + + @Override + synchronized public boolean addWord(char[] word, int wordOffset, int wordLength, int score, + int dicTypeId, DataType dataType) { + if (mLength >= mScores.length) { + final int newLength = mScores.length * 2; + mScores = new int[newLength]; + } + final int positionIndex = ArraysCompatUtils.binarySearch(mScores, 0, mLength, score); + // binarySearch returns the index if the element exists, and -<insertion index> - 1 + // if it doesn't. See documentation for binarySearch. + final int insertionIndex = positionIndex >= 0 ? positionIndex : -positionIndex - 1; + System.arraycopy(mScores, insertionIndex, mScores, insertionIndex + 1, + mLength - insertionIndex); + mLength += 1; + mScores[insertionIndex] = score; + mSuggestions.add(insertionIndex, new String(word, wordOffset, wordLength)); + return true; + } + + public List<String> getGatheredSuggestions() { + return mSuggestions; + } + } + + // Note : this must be reentrant + /** + * Gets a list of suggestions for a specific string. + * + * This returns a list of possible corrections for the text passed as an + * arguments. It may split or group words, and even perform grammatical + * analysis. + * + * @param text the sequence containing the word to check for. + * @param start the index of the first character of the word in text. + * @param end the index of the next-to-last character in text. + * @return a list of possible suggestions to replace the text. + */ + public List<String> getSuggestions(final CharSequence text, final int start, final int end) { + final SuggestionsGatherer suggestionsGatherer = new SuggestionsGatherer(); + final WordComposer composer = new WordComposer(); + for (int i = start; i < end; ++i) { + int character = text.charAt(i); + composer.add(character, new int[] { character }, + WordComposer.NOT_A_COORDINATE, WordComposer.NOT_A_COORDINATE); + } + mDictionary.getWords(composer, suggestionsGatherer); + return suggestionsGatherer.getGatheredSuggestions(); + } +} diff --git a/native/Android.mk b/native/Android.mk index 1d32deab4..54b24e42e 100644 --- a/native/Android.mk +++ b/native/Android.mk @@ -11,7 +11,7 @@ LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function LOCAL_SRC_FILES := \ jni/com_android_inputmethod_keyboard_ProximityInfo.cpp \ jni/com_android_inputmethod_latin_BinaryDictionary.cpp \ - jni/onload.cpp \ + jni/jni_common.cpp \ src/bigram_dictionary.cpp \ src/char_utils.cpp \ src/dictionary.cpp \ diff --git a/native/jni/com_android_inputmethod_keyboard_ProximityInfo.cpp b/native/jni/com_android_inputmethod_keyboard_ProximityInfo.cpp index 3db89edf1..f3e2a7e60 100644 --- a/native/jni/com_android_inputmethod_keyboard_ProximityInfo.cpp +++ b/native/jni/com_android_inputmethod_keyboard_ProximityInfo.cpp @@ -19,28 +19,15 @@ #include "com_android_inputmethod_keyboard_ProximityInfo.h" #include "jni.h" +#include "jni_common.h" #include "proximity_info.h" #include <assert.h> #include <errno.h> #include <stdio.h> -// ---------------------------------------------------------------------------- - namespace latinime { -// -// helper function to throw an exception -// -static void throwException(JNIEnv *env, const char* ex, const char* fmt, int data) { - if (jclass cls = env->FindClass(ex)) { - char msg[1000]; - snprintf(msg, sizeof(msg), fmt, data); - env->ThrowNew(cls, msg); - env->DeleteLocalRef(cls); - } -} - static jint latinime_Keyboard_setProximityInfo(JNIEnv *env, jobject object, jint maxProximityCharsSize, jint displayWidth, jint displayHeight, jint gridWidth, jint gridHeight, jintArray proximityCharsArray) { @@ -57,34 +44,15 @@ static void latinime_Keyboard_release(JNIEnv *env, jobject object, jint proximit delete pi; } -// ---------------------------------------------------------------------------- - static JNINativeMethod sKeyboardMethods[] = { {"setProximityInfoNative", "(IIIII[I)I", (void*)latinime_Keyboard_setProximityInfo}, {"releaseProximityInfoNative", "(I)V", (void*)latinime_Keyboard_release} }; -static int registerNativeMethods(JNIEnv* env, const char* className, JNINativeMethod* gMethods, - int numMethods) { - jclass clazz; - - clazz = env->FindClass(className); - if (clazz == NULL) { - LOGE("Native registration unable to find class '%s'", className); - return JNI_FALSE; - } - if (env->RegisterNatives(clazz, gMethods, numMethods) < 0) { - LOGE("RegisterNatives failed for '%s'", className); - return JNI_FALSE; - } - - return JNI_TRUE; -} - int register_ProximityInfo(JNIEnv *env) { const char* const kClassPathName = "com/android/inputmethod/keyboard/ProximityInfo"; return registerNativeMethods(env, kClassPathName, sKeyboardMethods, sizeof(sKeyboardMethods) / sizeof(sKeyboardMethods[0])); } -}; // namespace latinime +} // namespace latinime diff --git a/native/jni/com_android_inputmethod_keyboard_ProximityInfo.h b/native/jni/com_android_inputmethod_keyboard_ProximityInfo.h index bdeeb8f37..4a1e83b09 100644 --- a/native/jni/com_android_inputmethod_keyboard_ProximityInfo.h +++ b/native/jni/com_android_inputmethod_keyboard_ProximityInfo.h @@ -21,7 +21,9 @@ #include "jni.h" namespace latinime { + int register_ProximityInfo(JNIEnv *env); + } #endif // _COM_ANDROID_INPUTMETHOD_KEYBOARD_PROXIMITYINFO_H diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp index 555a522eb..ce874d8d4 100644 --- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp @@ -20,6 +20,7 @@ #include "com_android_inputmethod_latin_BinaryDictionary.h" #include "dictionary.h" #include "jni.h" +#include "jni_common.h" #include "proximity_info.h" #include <assert.h> @@ -35,22 +36,8 @@ #include <stdlib.h> #endif // USE_MMAP_FOR_DICTIONARY -// ---------------------------------------------------------------------------- - namespace latinime { -// -// helper function to throw an exception -// -static void throwException(JNIEnv *env, const char* ex, const char* fmt, int data) { - if (jclass cls = env->FindClass(ex)) { - char msg[1000]; - snprintf(msg, sizeof(msg), fmt, data); - env->ThrowNew(cls, msg); - env->DeleteLocalRef(cls); - } -} - static jint latinime_BinaryDictionary_open(JNIEnv *env, jobject object, jstring sourceDir, jlong dictOffset, jlong dictSize, jint typedLetterMultiplier, jint fullWordMultiplier, jint maxWordLength, jint maxWords, @@ -131,7 +118,6 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jobject object, Dictionary *dictionary = (Dictionary*)dict; if (!dictionary) return 0; ProximityInfo *pInfo = (ProximityInfo*)proximityInfo; - if (!pInfo) return 0; int *xCoordinates = env->GetIntArrayElements(xCoordinatesArray, NULL); int *yCoordinates = env->GetIntArrayElements(yCoordinatesArray, NULL); @@ -209,8 +195,6 @@ static void latinime_BinaryDictionary_close(JNIEnv *env, jobject object, jint di delete dictionary; } -// ---------------------------------------------------------------------------- - static JNINativeMethod sMethods[] = { {"openNative", "(Ljava/lang/String;JJIIIII)I", (void*)latinime_BinaryDictionary_open}, {"closeNative", "(I)V", (void*)latinime_BinaryDictionary_close}, @@ -219,27 +203,10 @@ static JNINativeMethod sMethods[] = { {"getBigramsNative", "(I[CI[II[C[IIII)I", (void*)latinime_BinaryDictionary_getBigrams} }; -static int registerNativeMethods(JNIEnv* env, const char* className, JNINativeMethod* gMethods, - int numMethods) { - jclass clazz; - - clazz = env->FindClass(className); - if (clazz == NULL) { - LOGE("Native registration unable to find class '%s'", className); - return JNI_FALSE; - } - if (env->RegisterNatives(clazz, gMethods, numMethods) < 0) { - LOGE("RegisterNatives failed for '%s'", className); - return JNI_FALSE; - } - - return JNI_TRUE; -} - int register_BinaryDictionary(JNIEnv *env) { const char* const kClassPathName = "com/android/inputmethod/latin/BinaryDictionary"; return registerNativeMethods(env, kClassPathName, sMethods, sizeof(sMethods) / sizeof(sMethods[0])); } -}; // namespace latinime +} // namespace latinime diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.h b/native/jni/com_android_inputmethod_latin_BinaryDictionary.h index f7cd81fa7..1b1ba7f0f 100644 --- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.h +++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.h @@ -21,7 +21,9 @@ #include "jni.h" namespace latinime { + int register_BinaryDictionary(JNIEnv *env); + } #endif // _COM_ANDROID_INPUTMETHOD_LATIN_BINARYDICTIONARY_H diff --git a/native/jni/onload.cpp b/native/jni/jni_common.cpp index f02c9a052..8643f723f 100644 --- a/native/jni/onload.cpp +++ b/native/jni/jni_common.cpp @@ -26,11 +26,8 @@ #include <errno.h> #include <stdio.h> -// ---------------------------------------------------------------------------- - using namespace latinime; - /* * Returns the JNI version on success, -1 on failure. */ @@ -60,3 +57,23 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { bail: return result; } + +namespace latinime { + +int registerNativeMethods(JNIEnv* env, const char* className, JNINativeMethod* methods, + int numMethods) { + jclass clazz = env->FindClass(className); + if (clazz == NULL) { + LOGE("Native registration unable to find class '%s'", className); + return JNI_FALSE; + } + if (env->RegisterNatives(clazz, methods, numMethods) < 0) { + LOGE("RegisterNatives failed for '%s'", className); + env->DeleteLocalRef(clazz); + return JNI_FALSE; + } + env->DeleteLocalRef(clazz); + return JNI_TRUE; +} + +} // namespace latinime diff --git a/native/jni/jni_common.h b/native/jni/jni_common.h new file mode 100644 index 000000000..c502fa3a8 --- /dev/null +++ b/native/jni/jni_common.h @@ -0,0 +1,30 @@ +/* +** +** Copyright 2011, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +#ifndef LATINIME_JNI_COMMON_H +#define LATINIME_JNI_COMMON_H + +#include "jni.h" + +namespace latinime { + +int registerNativeMethods(JNIEnv* env, const char* className, JNINativeMethod* methods, + int numMethods); + +} // namespace latinime + +#endif // LATINIME_JNI_COMMON_H diff --git a/native/src/bigram_dictionary.cpp b/native/src/bigram_dictionary.cpp index 36761b88d..11e6dc250 100644 --- a/native/src/bigram_dictionary.cpp +++ b/native/src/bigram_dictionary.cpp @@ -111,8 +111,7 @@ int BigramDictionary::getBigrams(unsigned short *prevWord, int prevWordLength, i mMaxBigrams = maxBigrams; if (HAS_BIGRAM && IS_LATEST_DICT_VERSION) { - int pos = mParentDictionary->isValidWordRec( - DICTIONARY_HEADER_SIZE, prevWord, 0, prevWordLength); + int pos = mParentDictionary->getBigramPosition(prevWord, prevWordLength); if (DEBUG_DICT) { LOGI("Pos -> %d", pos); } diff --git a/native/src/bigram_dictionary.h b/native/src/bigram_dictionary.h index d658b93e6..c07458a38 100644 --- a/native/src/bigram_dictionary.h +++ b/native/src/bigram_dictionary.h @@ -50,6 +50,7 @@ private: int *mInputCodes; int mInputLength; }; -// ---------------------------------------------------------------------------- -}; // namespace latinime + +} // namespace latinime + #endif // LATINIME_BIGRAM_DICTIONARY_H diff --git a/native/src/char_utils.h b/native/src/char_utils.h index 921ecb4a5..a69a35e7a 100644 --- a/native/src/char_utils.h +++ b/native/src/char_utils.h @@ -21,6 +21,6 @@ namespace latinime { unsigned short latin_tolower(unsigned short c); -}; // namespace latinime +} // namespace latinime #endif // LATINIME_CHAR_UTILS_H diff --git a/native/src/debug.h b/native/src/debug.h index ae629b222..38b2f107a 100644 --- a/native/src/debug.h +++ b/native/src/debug.h @@ -28,6 +28,7 @@ static inline unsigned char* convertToUnibyteString(unsigned short* input, unsig output[i] = 0; return output; } + static inline unsigned char* convertToUnibyteStringAndReplaceLastChar(unsigned short* input, unsigned char* output, const unsigned int length, unsigned char c) { int i = 0; @@ -37,6 +38,7 @@ static inline unsigned char* convertToUnibyteStringAndReplaceLastChar(unsigned s output[i] = 0; return output; } + static inline void LOGI_S16(unsigned short* string, const unsigned int length) { unsigned char tmp_buffer[length]; convertToUnibyteString(string, tmp_buffer, length); @@ -46,6 +48,7 @@ static inline void LOGI_S16(unsigned short* string, const unsigned int length) { // TODO : refactor this in a blocking log or something. // usleep(10); } + static inline void LOGI_S16_PLUS(unsigned short* string, const unsigned int length, unsigned char c) { unsigned char tmp_buffer[length+1]; diff --git a/native/src/defines.h b/native/src/defines.h index bdab19ff7..0a3240507 100644 --- a/native/src/defines.h +++ b/native/src/defines.h @@ -140,7 +140,7 @@ static void prof_out(void) { // The following "rate"s are used as a multiplier before dividing by 100, so they are in percent. #define WORDS_WITH_MISSING_CHARACTER_DEMOTION_RATE 80 #define WORDS_WITH_MISSING_CHARACTER_DEMOTION_START_POS_10X 12 -#define WORDS_WITH_MISSING_SPACE_CHARACTER_DEMOTION_RATE 80 +#define WORDS_WITH_MISSING_SPACE_CHARACTER_DEMOTION_RATE 67 #define WORDS_WITH_EXCESSIVE_CHARACTER_DEMOTION_RATE 75 #define WORDS_WITH_EXCESSIVE_CHARACTER_OUT_OF_PROXIMITY_DEMOTION_RATE 75 #define WORDS_WITH_TRANSPOSED_CHARACTERS_DEMOTION_RATE 60 diff --git a/native/src/dictionary.cpp b/native/src/dictionary.cpp index d69cb2a53..9e32ee80f 100644 --- a/native/src/dictionary.cpp +++ b/native/src/dictionary.cpp @@ -53,45 +53,16 @@ bool Dictionary::hasBigram() { return ((mDict[1] & 0xFF) == 1); } -// TODO: use uint16_t instead of unsigned short bool Dictionary::isValidWord(unsigned short *word, int length) { + return mUnigramDictionary->isValidWord(word, length); +} + +int Dictionary::getBigramPosition(unsigned short *word, int length) { if (IS_LATEST_DICT_VERSION) { - return (isValidWordRec(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD); + return mUnigramDictionary->getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length); } else { - return (isValidWordRec(0, word, 0, length) != NOT_VALID_WORD); + return mUnigramDictionary->getBigramPosition(0, word, 0, length); } } -int Dictionary::isValidWordRec(int pos, unsigned short *word, int offset, int length) { - // returns address of bigram data of that word - // return -99 if not found - - int count = Dictionary::getCount(mDict, &pos); - unsigned short currentChar = (unsigned short) word[offset]; - for (int j = 0; j < count; j++) { - unsigned short c = Dictionary::getChar(mDict, &pos); - int terminal = Dictionary::getTerminal(mDict, &pos); - int childPos = Dictionary::getAddress(mDict, &pos); - if (c == currentChar) { - if (offset == length - 1) { - if (terminal) { - return (pos+1); - } - } else { - if (childPos != 0) { - int t = isValidWordRec(childPos, word, offset + 1, length); - if (t > 0) { - return t; - } - } - } - } - if (terminal) { - Dictionary::getFreq(mDict, IS_LATEST_DICT_VERSION, &pos); - } - // There could be two instances of each alphabet - upper and lower case. So continue - // looking ... - } - return NOT_VALID_WORD; -} } // namespace latinime diff --git a/native/src/dictionary.h b/native/src/dictionary.h index 13b2a2816..3dc577a56 100644 --- a/native/src/dictionary.h +++ b/native/src/dictionary.h @@ -43,7 +43,6 @@ public: } bool isValidWord(unsigned short *word, int length); - int isValidWordRec(int pos, unsigned short *word, int offset, int length); void *getDict() { return (void *)mDict; } int getDictSize() { return mDictSize; } int getMmapFd() { return mMmapFd; } @@ -63,6 +62,9 @@ public: const int pos, unsigned short *c, int *childrenPosition, bool *terminal, int *freq); + // TODO: delete this + int getBigramPosition(unsigned short *word, int length); + private: bool hasBigram(); @@ -79,7 +81,6 @@ private: BigramDictionary *mBigramDictionary; }; -// ---------------------------------------------------------------------------- // public static utility methods // static inline methods should be defined in the header file inline unsigned short Dictionary::getChar(const unsigned char *dict, int *pos) { @@ -132,7 +133,6 @@ inline int Dictionary::getFreq(const unsigned char *dict, return freq; } - inline int Dictionary::wideStrLen(unsigned short *str) { if (!str) return 0; unsigned short *end = str; @@ -156,5 +156,6 @@ inline int Dictionary::setDictionaryValues(const unsigned char *dict, return position; } -}; // namespace latinime +} // namespace latinime + #endif // LATINIME_DICTIONARY_H diff --git a/native/src/proximity_info.cpp b/native/src/proximity_info.cpp index 102123c3c..209c31e6e 100644 --- a/native/src/proximity_info.cpp +++ b/native/src/proximity_info.cpp @@ -22,6 +22,7 @@ #include "proximity_info.h" namespace latinime { + ProximityInfo::ProximityInfo(const int maxProximityCharsSize, const int keyboardWidth, const int keyboardHeight, const int gridWidth, const int gridHeight, const uint32_t *proximityCharsArray) @@ -61,4 +62,5 @@ bool ProximityInfo::hasSpaceProximity(const int x, const int y) const { } return false; } -} // namespace latinime + +} // namespace latinime diff --git a/native/src/proximity_info.h b/native/src/proximity_info.h index c2062e8c5..327cd0940 100644 --- a/native/src/proximity_info.h +++ b/native/src/proximity_info.h @@ -41,5 +41,7 @@ private: const int CELL_HEIGHT; uint32_t *mProximityCharsArray; }; -}; // namespace latinime + +} // namespace latinime + #endif // LATINIME_PROXIMITY_INFO_H diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp index 20a185219..e3296f12a 100644 --- a/native/src/unigram_dictionary.cpp +++ b/native/src/unigram_dictionary.cpp @@ -16,8 +16,6 @@ */ #include <assert.h> -#include <fcntl.h> -#include <stdio.h> #include <string.h> #define LOG_TAG "LatinIME: unigram_dictionary.cpp" @@ -34,10 +32,12 @@ const UnigramDictionary::digraph_t UnigramDictionary::GERMAN_UMLAUT_DIGRAPHS[] = { 'o', 'e' }, { 'u', 'e' } }; -UnigramDictionary::UnigramDictionary(const unsigned char *dict, int typedLetterMultiplier, +// TODO: check the header +UnigramDictionary::UnigramDictionary(const uint8_t* const streamStart, int typedLetterMultiplier, int fullWordMultiplier, int maxWordLength, int maxWords, int maxProximityChars, const bool isLatestDictVersion) - : DICT(dict), MAX_WORD_LENGTH(maxWordLength), MAX_WORDS(maxWords), + : DICT_ROOT(streamStart), + MAX_WORD_LENGTH(maxWordLength), MAX_WORDS(maxWords), MAX_PROXIMITY_CHARS(maxProximityChars), IS_LATEST_DICT_VERSION(isLatestDictVersion), TYPED_LETTER_MULTIPLIER(typedLetterMultiplier), FULL_WORD_MULTIPLIER(fullWordMultiplier), ROOT_POS(isLatestDictVersion ? DICTIONARY_HEADER_SIZE : 0), @@ -233,7 +233,7 @@ void UnigramDictionary::getWordSuggestions(const ProximityInfo *proximityInfo, PROF_END(5); PROF_START(6); - if (SUGGEST_WORDS_WITH_SPACE_PROXIMITY) { + if (SUGGEST_WORDS_WITH_SPACE_PROXIMITY && proximityInfo) { // The first and last "mistyped spaces" are taken care of by excessive character handling for (int i = 1; i < codesSize - 1; ++i) { if (DEBUG_DICT) { @@ -265,14 +265,14 @@ void UnigramDictionary::initSuggestions(const int *codes, const int codesSize, mMaxEditDistance = mInputLength < 5 ? 2 : mInputLength / 2; } -void UnigramDictionary::registerNextLetter( - unsigned short c, int *nextLetters, int nextLettersSize) { +static inline void registerNextLetter(unsigned short c, int *nextLetters, int nextLettersSize) { if (c < nextLettersSize) { nextLetters[c]++; } } // TODO: We need to optimize addWord by using STL or something +// TODO: This needs to take an const unsigned short* and not tinker with its contents bool UnigramDictionary::addWord(unsigned short *word, int length, int frequency) { word[length] = 0; if (DEBUG_DICT && DEBUG_SHOW_FOUND_WORD) { @@ -290,8 +290,8 @@ bool UnigramDictionary::addWord(unsigned short *word, int length, int frequency) // Find the right insertion point int insertAt = 0; while (insertAt < MAX_WORDS) { - if (frequency > mFrequencies[insertAt] || (mFrequencies[insertAt] == frequency - && length < Dictionary::wideStrLen(mOutputChars + insertAt * MAX_WORD_LENGTH))) { + // TODO: How should we sort words with the same frequency? + if (frequency > mFrequencies[insertAt]) { break; } insertAt++; @@ -322,7 +322,17 @@ bool UnigramDictionary::addWord(unsigned short *word, int length, int frequency) return false; } -unsigned short UnigramDictionary::toBaseLowerCase(unsigned short c) { +inline void UnigramDictionary::addWordAlternatesSpellings(const uint8_t* const root, int pos, + int depth, int finalFreq) { + // TODO: actually add alternates when the format supports it. +} + +static inline bool hasAlternateSpellings(uint8_t flags) { + // TODO: when the format supports it, return the actual value. + return false; +} + +static inline unsigned short toBaseLowerCase(unsigned short c) { if (c < sizeof(BASE_CHARS) / sizeof(BASE_CHARS[0])) { c = BASE_CHARS[c]; } @@ -334,7 +344,7 @@ unsigned short UnigramDictionary::toBaseLowerCase(unsigned short c) { return c; } -bool UnigramDictionary::sameAsTyped(unsigned short *word, int length) { +bool UnigramDictionary::sameAsTyped(const unsigned short *word, int length) const { if (length != mInputLength) { return false; } @@ -363,7 +373,7 @@ void UnigramDictionary::getSuggestionCandidates(const int skipPos, } int rootPosition = ROOT_POS; // Get the number of child of root, then increment the position - int childCount = Dictionary::getCount(DICT, &rootPosition); + int childCount = Dictionary::getCount(DICT_ROOT, &rootPosition); int depth = 0; mStackChildCount[0] = childCount; @@ -372,6 +382,7 @@ void UnigramDictionary::getSuggestionCandidates(const int skipPos, mStackInputIndex[0] = 0; mStackDiffs[0] = 0; mStackSiblingPos[0] = rootPosition; + mStackOutputIndex[0] = 0; // Depth first search while (depth >= 0) { @@ -382,14 +393,15 @@ void UnigramDictionary::getSuggestionCandidates(const int skipPos, int inputIndex = mStackInputIndex[depth]; int diffs = mStackDiffs[depth]; int siblingPos = mStackSiblingPos[depth]; + int outputIndex = mStackOutputIndex[depth]; int firstChildPos; // depth will never be greater than maxDepth because in that case, // needsToTraverseChildrenNodes should be false - const bool needsToTraverseChildrenNodes = processCurrentNode(siblingPos, depth, + const bool needsToTraverseChildrenNodes = processCurrentNode(siblingPos, outputIndex, maxDepth, traverseAllNodes, matchWeight, inputIndex, diffs, skipPos, excessivePos, transposedPos, nextLetters, nextLettersSize, &childCount, &firstChildPos, &traverseAllNodes, &matchWeight, &inputIndex, &diffs, - &siblingPos); + &siblingPos, &outputIndex); // Update next sibling pos mStackSiblingPos[depth] = siblingPos; if (needsToTraverseChildrenNodes) { @@ -401,6 +413,7 @@ void UnigramDictionary::getSuggestionCandidates(const int skipPos, mStackInputIndex[depth] = inputIndex; mStackDiffs[depth] = diffs; mStackSiblingPos[depth] = firstChildPos; + mStackOutputIndex[depth] = outputIndex; } } else { // Goes to parent sibling node @@ -451,8 +464,8 @@ inline static void multiplyRate(const int rate, int *freq) { } inline static int calcFreqForSplitTwoWords( - const int typedLetterMultiplier, const int firstWordLength, - const int secondWordLength, const int firstFreq, const int secondFreq) { + const int typedLetterMultiplier, const int firstWordLength, const int secondWordLength, + const int firstFreq, const int secondFreq, const bool isSpaceProximity) { if (firstWordLength == 0 || secondWordLength == 0) { return 0; } @@ -492,102 +505,28 @@ inline static int calcFreqForSplitTwoWords( const int normalizedScoreDemotionRateOffset = (100 + 100 / totalLength); multiplyRate(normalizedScoreDemotionRateOffset, &totalFreq); - multiplyRate(WORDS_WITH_MISSING_SPACE_CHARACTER_DEMOTION_RATE, &totalFreq); - return totalFreq; -} - -bool UnigramDictionary::getSplitTwoWordsSuggestion(const int inputLength, - const int firstWordStartPos, const int firstWordLength, const int secondWordStartPos, - const int secondWordLength) { - if (inputLength >= MAX_WORD_LENGTH) return false; - if (0 >= firstWordLength || 0 >= secondWordLength || firstWordStartPos >= secondWordStartPos - || firstWordStartPos < 0 || secondWordStartPos + secondWordLength > inputLength) - return false; - const int newWordLength = firstWordLength + secondWordLength + 1; - // Allocating variable length array on stack - unsigned short word[newWordLength]; - const int firstFreq = getBestWordFreq(firstWordStartPos, firstWordLength, mWord); - if (DEBUG_DICT) { - LOGI("First freq: %d", firstFreq); - } - if (firstFreq <= 0) return false; - - for (int i = 0; i < firstWordLength; ++i) { - word[i] = mWord[i]; - } - - const int secondFreq = getBestWordFreq(secondWordStartPos, secondWordLength, mWord); - if (DEBUG_DICT) { - LOGI("Second freq: %d", secondFreq); - } - if (secondFreq <= 0) return false; - - word[firstWordLength] = SPACE; - for (int i = (firstWordLength + 1); i < newWordLength; ++i) { - word[i] = mWord[i - firstWordLength - 1]; + if (isSpaceProximity) { + // A word pair with one space proximity correction + if (DEBUG_DICT) { + LOGI("Found a word pair with space proximity correction."); + } + multiplyIntCapped(typedLetterMultiplier, &totalFreq); + multiplyRate(WORDS_WITH_PROXIMITY_CHARACTER_DEMOTION_RATE, &totalFreq); } - int pairFreq = calcFreqForSplitTwoWords( - TYPED_LETTER_MULTIPLIER, firstWordLength, secondWordLength, firstFreq, secondFreq); - if (DEBUG_DICT) { - LOGI("Split two words: %d, %d, %d, %d, %d", firstFreq, secondFreq, pairFreq, inputLength, - TYPED_LETTER_MULTIPLIER); - } - addWord(word, newWordLength, pairFreq); - return true; + multiplyRate(WORDS_WITH_MISSING_SPACE_CHARACTER_DEMOTION_RATE, &totalFreq); + return totalFreq; } bool UnigramDictionary::getMissingSpaceWords(const int inputLength, const int missingSpacePos) { return getSplitTwoWordsSuggestion( - inputLength, 0, missingSpacePos, missingSpacePos, inputLength - missingSpacePos); + inputLength, 0, missingSpacePos, missingSpacePos, inputLength - missingSpacePos, false); } bool UnigramDictionary::getMistypedSpaceWords(const int inputLength, const int spaceProximityPos) { return getSplitTwoWordsSuggestion( inputLength, 0, spaceProximityPos, spaceProximityPos + 1, - inputLength - spaceProximityPos - 1); -} - -// Keep this for comparing spec to new getWords -void UnigramDictionary::getWordsOld(const int initialPos, const int inputLength, const int skipPos, - const int excessivePos, const int transposedPos,int *nextLetters, - const int nextLettersSize) { - int initialPosition = initialPos; - const int count = Dictionary::getCount(DICT, &initialPosition); - getWordsRec(count, initialPosition, 0, - min(inputLength * MAX_DEPTH_MULTIPLIER, MAX_WORD_LENGTH), - mInputLength <= 0, 1, 0, 0, skipPos, excessivePos, transposedPos, nextLetters, - nextLettersSize); -} - -void UnigramDictionary::getWordsRec(const int childrenCount, const int pos, const int depth, - const int maxDepth, const bool traverseAllNodes, const int matchWeight, - const int inputIndex, const int diffs, const int skipPos, const int excessivePos, - const int transposedPos, int *nextLetters, const int nextLettersSize) { - int siblingPos = pos; - for (int i = 0; i < childrenCount; ++i) { - int newCount; - int newChildPosition; - const int newDepth = depth + 1; - bool newTraverseAllNodes; - int newMatchRate; - int newInputIndex; - int newDiffs; - int newSiblingPos; - const bool needsToTraverseChildrenNodes = processCurrentNode(siblingPos, depth, maxDepth, - traverseAllNodes, matchWeight, inputIndex, diffs, - skipPos, excessivePos, transposedPos, - nextLetters, nextLettersSize, - &newCount, &newChildPosition, &newTraverseAllNodes, &newMatchRate, - &newInputIndex, &newDiffs, &newSiblingPos); - siblingPos = newSiblingPos; - - if (needsToTraverseChildrenNodes) { - getWordsRec(newCount, newChildPosition, newDepth, maxDepth, newTraverseAllNodes, - newMatchRate, newInputIndex, newDiffs, skipPos, excessivePos, transposedPos, - nextLetters, nextLettersSize); - } - } + inputLength - spaceProximityPos - 1, true); } inline int UnigramDictionary::calculateFinalFreq(const int inputIndex, const int depth, @@ -645,28 +584,6 @@ inline int UnigramDictionary::calculateFinalFreq(const int inputIndex, const int return finalFreq; } -inline void UnigramDictionary::onTerminalWhenUserTypedLengthIsGreaterThanInputLength( - unsigned short *word, const int inputIndex, const int depth, const int matchWeight, - int *nextLetters, const int nextLettersSize, const int skipPos, const int excessivePos, - const int transposedPos, const int freq) { - const int finalFreq = calculateFinalFreq(inputIndex, depth, matchWeight, skipPos, excessivePos, - transposedPos, freq, false); - if (depth >= MIN_SUGGEST_DEPTH) addWord(word, depth + 1, finalFreq); - if (depth >= mInputLength && skipPos < 0) { - registerNextLetter(mWord[mInputLength], nextLetters, nextLettersSize); - } -} - -inline void UnigramDictionary::onTerminalWhenUserTypedLengthIsSameAsInputLength( - unsigned short *word, const int inputIndex, const int depth, const int matchWeight, - const int skipPos, const int excessivePos, const int transposedPos, const int freq) { - if (sameAsTyped(word, depth + 1)) return; - const int finalFreq = calculateFinalFreq(inputIndex, depth, matchWeight, skipPos, - excessivePos, transposedPos, freq, true); - // Proximity collection will promote a word of the same length as what user typed. - if (depth >= MIN_SUGGEST_DEPTH) addWord(word, depth + 1, finalFreq); -} - inline bool UnigramDictionary::needsToSkipCurrentNode(const unsigned short c, const int inputIndex, const int skipPos, const int depth) { const unsigned short userTypedChar = getInputCharsAt(inputIndex)[0]; @@ -697,7 +614,6 @@ inline bool UnigramDictionary::existsAdjacentProximityChars(const int inputIndex return false; } - // In the following function, c is the current character of the dictionary word // currently examined. // currentChars is an array containing the keys close to the character the @@ -740,96 +656,79 @@ inline UnigramDictionary::ProximityType UnigramDictionary::getMatchedProximityId return UNRELATED_CHAR; } -inline bool UnigramDictionary::processCurrentNode(const int pos, const int depth, - const int maxDepth, const bool traverseAllNodes, int matchWeight, int inputIndex, - const int diffs, const int skipPos, const int excessivePos, const int transposedPos, - int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition, - bool *newTraverseAllNodes, int *newMatchRate, int *newInputIndex, int *newDiffs, - int *nextSiblingPosition) { - if (DEBUG_DICT) { - int inputCount = 0; - if (skipPos >= 0) ++inputCount; - if (excessivePos >= 0) ++inputCount; - if (transposedPos >= 0) ++inputCount; - assert(inputCount <= 1); +inline void UnigramDictionary::onTerminal(unsigned short int* word, const int depth, + const uint8_t* const root, const uint8_t flags, int pos, + const int inputIndex, const int matchWeight, const int skipPos, + const int excessivePos, const int transposedPos, const int freq, const bool sameLength, + int* nextLetters, const int nextLettersSize) { + + const bool isSameAsTyped = sameLength ? sameAsTyped(word, depth + 1) : false; + const bool hasAlternates = hasAlternateSpellings(flags); + if (isSameAsTyped && !hasAlternates) return; + + if (depth >= MIN_SUGGEST_DEPTH) { + const int finalFreq = calculateFinalFreq(inputIndex, depth, matchWeight, skipPos, + excessivePos, transposedPos, freq, sameLength); + if (!isSameAsTyped) + addWord(word, depth + 1, finalFreq); + if (hasAlternates) + addWordAlternatesSpellings(DICT_ROOT, pos, flags, finalFreq); } - unsigned short c; - int childPosition; - bool terminal; - int freq; - bool isSameAsUserTypedLength = false; - if (excessivePos == depth && inputIndex < mInputLength - 1) ++inputIndex; + if (sameLength && depth >= mInputLength && skipPos < 0) { + registerNextLetter(word[mInputLength], nextLetters, nextLettersSize); + } +} - *nextSiblingPosition = Dictionary::setDictionaryValues(DICT, IS_LATEST_DICT_VERSION, pos, &c, - &childPosition, &terminal, &freq); +#ifndef NEW_DICTIONARY_FORMAT +// TODO: Don't forget to bring inline functions back to over where they are used. - const bool needsToTraverseChildrenNodes = childPosition != 0; - - // If we are only doing traverseAllNodes, no need to look at the typed characters. - if (traverseAllNodes || needsToSkipCurrentNode(c, inputIndex, skipPos, depth)) { - mWord[depth] = c; - if (traverseAllNodes && terminal) { - onTerminalWhenUserTypedLengthIsGreaterThanInputLength(mWord, inputIndex, depth, - matchWeight, nextLetters, nextLettersSize, skipPos, excessivePos, transposedPos, - freq); - } - if (!needsToTraverseChildrenNodes) return false; - *newTraverseAllNodes = traverseAllNodes; - *newMatchRate = matchWeight; - *newDiffs = diffs; - *newInputIndex = inputIndex; - } else { - const int *currentChars = getInputCharsAt(inputIndex); +// The following functions will be entirely replaced with new implementations. +void UnigramDictionary::getWordsOld(const int initialPos, const int inputLength, const int skipPos, + const int excessivePos, const int transposedPos,int *nextLetters, + const int nextLettersSize) { + int initialPosition = initialPos; + const int count = Dictionary::getCount(DICT_ROOT, &initialPosition); + getWordsRec(count, initialPosition, 0, + min(inputLength * MAX_DEPTH_MULTIPLIER, MAX_WORD_LENGTH), + mInputLength <= 0, 1, 0, 0, skipPos, excessivePos, transposedPos, nextLetters, + nextLettersSize); +} - if (transposedPos >= 0) { - if (inputIndex == transposedPos) currentChars += MAX_PROXIMITY_CHARS; - if (inputIndex == (transposedPos + 1)) currentChars -= MAX_PROXIMITY_CHARS; - } +void UnigramDictionary::getWordsRec(const int childrenCount, const int pos, const int depth, + const int maxDepth, const bool traverseAllNodes, const int matchWeight, + const int inputIndex, const int diffs, const int skipPos, const int excessivePos, + const int transposedPos, int *nextLetters, const int nextLettersSize) { + int siblingPos = pos; + for (int i = 0; i < childrenCount; ++i) { + int newCount; + int newChildPosition; + bool newTraverseAllNodes; + int newMatchRate; + int newInputIndex; + int newDiffs; + int newSiblingPos; + int newOutputIndex; + const bool needsToTraverseChildrenNodes = processCurrentNode(siblingPos, depth, maxDepth, + traverseAllNodes, matchWeight, inputIndex, diffs, + skipPos, excessivePos, transposedPos, + nextLetters, nextLettersSize, + &newCount, &newChildPosition, &newTraverseAllNodes, &newMatchRate, + &newInputIndex, &newDiffs, &newSiblingPos, &newOutputIndex); + siblingPos = newSiblingPos; - int matchedProximityCharId = getMatchedProximityId(currentChars, c, skipPos, excessivePos, - transposedPos); - if (UNRELATED_CHAR == matchedProximityCharId) return false; - mWord[depth] = c; - // If inputIndex is greater than mInputLength, that means there is no - // proximity chars. So, we don't need to check proximity. - if (SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR == matchedProximityCharId) { - multiplyIntCapped(TYPED_LETTER_MULTIPLIER, &matchWeight); - } - bool isSameAsUserTypedLength = mInputLength == inputIndex + 1 - || (excessivePos == mInputLength - 1 && inputIndex == mInputLength - 2); - if (isSameAsUserTypedLength && terminal) { - onTerminalWhenUserTypedLengthIsSameAsInputLength(mWord, inputIndex, depth, matchWeight, - skipPos, excessivePos, transposedPos, freq); + if (needsToTraverseChildrenNodes) { + getWordsRec(newCount, newChildPosition, newOutputIndex, maxDepth, newTraverseAllNodes, + newMatchRate, newInputIndex, newDiffs, skipPos, excessivePos, transposedPos, + nextLetters, nextLettersSize); } - if (!needsToTraverseChildrenNodes) return false; - // Start traversing all nodes after the index exceeds the user typed length - *newTraverseAllNodes = isSameAsUserTypedLength; - *newMatchRate = matchWeight; - *newDiffs = diffs + ((NEAR_PROXIMITY_CHAR == matchedProximityCharId) ? 1 : 0); - *newInputIndex = inputIndex + 1; - } - // Optimization: Prune out words that are too long compared to how much was typed. - if (depth >= maxDepth || *newDiffs > mMaxEditDistance) { - return false; - } - - // If inputIndex is greater than mInputLength, that means there are no proximity chars. - // TODO: Check if this can be isSameAsUserTypedLength only. - if (isSameAsUserTypedLength || mInputLength <= *newInputIndex) { - *newTraverseAllNodes = true; } - // get the count of nodes and increment childAddress. - *newCount = Dictionary::getCount(DICT, &childPosition); - *newChildPosition = childPosition; - if (DEBUG_DICT) assert(needsToTraverseChildrenNodes); - return needsToTraverseChildrenNodes; } inline int UnigramDictionary::getBestWordFreq(const int startInputIndex, const int inputLength, unsigned short *word) { int pos = ROOT_POS; - int count = Dictionary::getCount(DICT, &pos); + int count = Dictionary::getCount(DICT_ROOT, &pos); int maxFreq = 0; int depth = 0; unsigned short newWord[MAX_WORD_LENGTH_INTERNAL]; @@ -885,8 +784,8 @@ inline bool UnigramDictionary::processCurrentNodeForExactMatch(const int firstCh const int inputIndex = startInputIndex + depth; const int *currentChars = getInputCharsAt(inputIndex); unsigned short c; - *siblingPos = Dictionary::setDictionaryValues(DICT, IS_LATEST_DICT_VERSION, firstChildPos, &c, - newChildPosition, newTerminal, newFreq); + *siblingPos = Dictionary::setDictionaryValues(DICT_ROOT, IS_LATEST_DICT_VERSION, firstChildPos, + &c, newChildPosition, newTerminal, newFreq); const unsigned int inputC = currentChars[0]; if (DEBUG_DICT) { assert(inputC <= U_SHORT_MAX); @@ -903,7 +802,7 @@ inline bool UnigramDictionary::processCurrentNodeForExactMatch(const int firstCh } } if (hasChild) { - *newCount = Dictionary::getCount(DICT, newChildPosition); + *newCount = Dictionary::getCount(DICT_ROOT, newChildPosition); return true; } else { return false; @@ -915,4 +814,314 @@ inline bool UnigramDictionary::processCurrentNodeForExactMatch(const int firstCh return false; } } + +// TODO: use uint32_t instead of unsigned short +bool UnigramDictionary::isValidWord(unsigned short *word, int length) { + if (IS_LATEST_DICT_VERSION) { + return (getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD); + } else { + return (getBigramPosition(0, word, 0, length) != NOT_VALID_WORD); + } +} + + +// Require strict exact match. +int UnigramDictionary::getBigramPosition(int pos, unsigned short *word, int offset, + int length) const { + // returns address of bigram data of that word + // return -99 if not found + + int count = Dictionary::getCount(DICT_ROOT, &pos); + unsigned short currentChar = (unsigned short) word[offset]; + for (int j = 0; j < count; j++) { + unsigned short c = Dictionary::getChar(DICT_ROOT, &pos); + int terminal = Dictionary::getTerminal(DICT_ROOT, &pos); + int childPos = Dictionary::getAddress(DICT_ROOT, &pos); + if (c == currentChar) { + if (offset == length - 1) { + if (terminal) { + return (pos+1); + } + } else { + if (childPos != 0) { + int t = getBigramPosition(childPos, word, offset + 1, length); + if (t > 0) { + return t; + } + } + } + } + if (terminal) { + Dictionary::getFreq(DICT_ROOT, IS_LATEST_DICT_VERSION, &pos); + } + // There could be two instances of each alphabet - upper and lower case. So continue + // looking ... + } + return NOT_VALID_WORD; +} + + +// The following functions will be modified. +bool UnigramDictionary::getSplitTwoWordsSuggestion(const int inputLength, + const int firstWordStartPos, const int firstWordLength, const int secondWordStartPos, + const int secondWordLength, const bool isSpaceProximity) { + if (inputLength >= MAX_WORD_LENGTH) return false; + if (0 >= firstWordLength || 0 >= secondWordLength || firstWordStartPos >= secondWordStartPos + || firstWordStartPos < 0 || secondWordStartPos + secondWordLength > inputLength) + return false; + const int newWordLength = firstWordLength + secondWordLength + 1; + // Allocating variable length array on stack + unsigned short word[newWordLength]; + const int firstFreq = getBestWordFreq(firstWordStartPos, firstWordLength, mWord); + if (DEBUG_DICT) { + LOGI("First freq: %d", firstFreq); + } + if (firstFreq <= 0) return false; + + for (int i = 0; i < firstWordLength; ++i) { + word[i] = mWord[i]; + } + + const int secondFreq = getBestWordFreq(secondWordStartPos, secondWordLength, mWord); + if (DEBUG_DICT) { + LOGI("Second freq: %d", secondFreq); + } + if (secondFreq <= 0) return false; + + word[firstWordLength] = SPACE; + for (int i = (firstWordLength + 1); i < newWordLength; ++i) { + word[i] = mWord[i - firstWordLength - 1]; + } + + int pairFreq = calcFreqForSplitTwoWords(TYPED_LETTER_MULTIPLIER, firstWordLength, + secondWordLength, firstFreq, secondFreq, isSpaceProximity); + if (DEBUG_DICT) { + LOGI("Split two words: %d, %d, %d, %d, %d", firstFreq, secondFreq, pairFreq, inputLength, + TYPED_LETTER_MULTIPLIER); + } + addWord(word, newWordLength, pairFreq); + return true; +} + +inline bool UnigramDictionary::processCurrentNode(const int pos, const int depth, + const int maxDepth, const bool traverseAllNodes, int matchWeight, int inputIndex, + const int diffs, const int skipPos, const int excessivePos, const int transposedPos, + int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition, + bool *newTraverseAllNodes, int *newMatchRate, int *newInputIndex, int *newDiffs, + int *nextSiblingPosition, int *nextOutputIndex) { + if (DEBUG_DICT) { + int inputCount = 0; + if (skipPos >= 0) ++inputCount; + if (excessivePos >= 0) ++inputCount; + if (transposedPos >= 0) ++inputCount; + assert(inputCount <= 1); + } + unsigned short c; + int childPosition; + bool terminal; + int freq; + bool isSameAsUserTypedLength = false; + + const uint8_t flags = 0; // No flags for now + + if (excessivePos == depth && inputIndex < mInputLength - 1) ++inputIndex; + + *nextSiblingPosition = Dictionary::setDictionaryValues(DICT_ROOT, IS_LATEST_DICT_VERSION, pos, + &c, &childPosition, &terminal, &freq); + *nextOutputIndex = depth + 1; + + const bool needsToTraverseChildrenNodes = childPosition != 0; + + // If we are only doing traverseAllNodes, no need to look at the typed characters. + if (traverseAllNodes || needsToSkipCurrentNode(c, inputIndex, skipPos, depth)) { + mWord[depth] = c; + if (traverseAllNodes && terminal) { + onTerminal(mWord, depth, DICT_ROOT, flags, pos, inputIndex, matchWeight, skipPos, + excessivePos, transposedPos, freq, false, nextLetters, nextLettersSize); + } + if (!needsToTraverseChildrenNodes) return false; + *newTraverseAllNodes = traverseAllNodes; + *newMatchRate = matchWeight; + *newDiffs = diffs; + *newInputIndex = inputIndex; + } else { + const int *currentChars = getInputCharsAt(inputIndex); + + if (transposedPos >= 0) { + if (inputIndex == transposedPos) currentChars += MAX_PROXIMITY_CHARS; + if (inputIndex == (transposedPos + 1)) currentChars -= MAX_PROXIMITY_CHARS; + } + + int matchedProximityCharId = getMatchedProximityId(currentChars, c, skipPos, excessivePos, + transposedPos); + if (UNRELATED_CHAR == matchedProximityCharId) return false; + mWord[depth] = c; + // If inputIndex is greater than mInputLength, that means there is no + // proximity chars. So, we don't need to check proximity. + if (SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR == matchedProximityCharId) { + multiplyIntCapped(TYPED_LETTER_MULTIPLIER, &matchWeight); + } + bool isSameAsUserTypedLength = mInputLength == inputIndex + 1 + || (excessivePos == mInputLength - 1 && inputIndex == mInputLength - 2); + if (isSameAsUserTypedLength && terminal) { + onTerminal(mWord, depth, DICT_ROOT, flags, pos, inputIndex, matchWeight, skipPos, + excessivePos, transposedPos, freq, true, nextLetters, nextLettersSize); + } + if (!needsToTraverseChildrenNodes) return false; + // Start traversing all nodes after the index exceeds the user typed length + *newTraverseAllNodes = isSameAsUserTypedLength; + *newMatchRate = matchWeight; + *newDiffs = diffs + ((NEAR_PROXIMITY_CHAR == matchedProximityCharId) ? 1 : 0); + *newInputIndex = inputIndex + 1; + } + // Optimization: Prune out words that are too long compared to how much was typed. + if (depth >= maxDepth || *newDiffs > mMaxEditDistance) { + return false; + } + + // If inputIndex is greater than mInputLength, that means there are no proximity chars. + // TODO: Check if this can be isSameAsUserTypedLength only. + if (isSameAsUserTypedLength || mInputLength <= *newInputIndex) { + *newTraverseAllNodes = true; + } + // get the count of nodes and increment childAddress. + *newCount = Dictionary::getCount(DICT_ROOT, &childPosition); + *newChildPosition = childPosition; + if (DEBUG_DICT) assert(needsToTraverseChildrenNodes); + return needsToTraverseChildrenNodes; +} + +#else // NEW_DICTIONARY_FORMAT + +bool UnigramDictionary::getSplitTwoWordsSuggestion(const int inputLength, + const int firstWordStartPos, const int firstWordLength, const int secondWordStartPos, + const int secondWordLength, const bool isSpaceProximity) { + if (inputLength >= MAX_WORD_LENGTH) return false; + if (0 >= firstWordLength || 0 >= secondWordLength || firstWordStartPos >= secondWordStartPos + || firstWordStartPos < 0 || secondWordStartPos + secondWordLength > inputLength) + return false; + const int newWordLength = firstWordLength + secondWordLength + 1; + // Allocating variable length array on stack + unsigned short word[newWordLength]; + const int firstFreq = getBestWordFreq(firstWordStartPos, firstWordLength, mWord); + if (DEBUG_DICT) { + LOGI("First freq: %d", firstFreq); + } + if (firstFreq <= 0) return false; + + for (int i = 0; i < firstWordLength; ++i) { + word[i] = mWord[i]; + } + + const int secondFreq = getBestWordFreq(secondWordStartPos, secondWordLength, mWord); + if (DEBUG_DICT) { + LOGI("Second freq: %d", secondFreq); + } + if (secondFreq <= 0) return false; + + word[firstWordLength] = SPACE; + for (int i = (firstWordLength + 1); i < newWordLength; ++i) { + word[i] = mWord[i - firstWordLength - 1]; + } + + int pairFreq = calcFreqForSplitTwoWords(TYPED_LETTER_MULTIPLIER, firstWordLength, + secondWordLength, firstFreq, secondFreq, isSpaceProximity); + if (DEBUG_DICT) { + LOGI("Split two words: %d, %d, %d, %d, %d", firstFreq, secondFreq, pairFreq, inputLength, + TYPED_LETTER_MULTIPLIER); + } + addWord(word, newWordLength, pairFreq); + return true; +} + +inline bool UnigramDictionary::processCurrentNode(const int pos, const int depth, + const int maxDepth, const bool traverseAllNodes, int matchWeight, int inputIndex, + const int diffs, const int skipPos, const int excessivePos, const int transposedPos, + int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition, + bool *newTraverseAllNodes, int *newMatchRate, int *newInputIndex, int *newDiffs, + int *nextSiblingPosition, int *nextOutputIndex) { + if (DEBUG_DICT) { + int inputCount = 0; + if (skipPos >= 0) ++inputCount; + if (excessivePos >= 0) ++inputCount; + if (transposedPos >= 0) ++inputCount; + assert(inputCount <= 1); + } + unsigned short c; + int childPosition; + bool terminal; + int freq; + bool isSameAsUserTypedLength = false; + + const uint8_t flags = 0; // No flags for now + + if (excessivePos == depth && inputIndex < mInputLength - 1) ++inputIndex; + + *nextSiblingPosition = Dictionary::setDictionaryValues(DICT_ROOT, IS_LATEST_DICT_VERSION, pos, + &c, &childPosition, &terminal, &freq); + *nextOutputIndex = depth + 1; + + const bool needsToTraverseChildrenNodes = childPosition != 0; + + // If we are only doing traverseAllNodes, no need to look at the typed characters. + if (traverseAllNodes || needsToSkipCurrentNode(c, inputIndex, skipPos, depth)) { + mWord[depth] = c; + if (traverseAllNodes && terminal) { + onTerminal(mWord, depth, DICT_ROOT, flags, pos, inputIndex, matchWeight, skipPos, + excessivePos, transposedPos, freq, false, nextLetters, nextLettersSize); + } + if (!needsToTraverseChildrenNodes) return false; + *newTraverseAllNodes = traverseAllNodes; + *newMatchRate = matchWeight; + *newDiffs = diffs; + *newInputIndex = inputIndex; + } else { + const int *currentChars = getInputCharsAt(inputIndex); + + if (transposedPos >= 0) { + if (inputIndex == transposedPos) currentChars += MAX_PROXIMITY_CHARS; + if (inputIndex == (transposedPos + 1)) currentChars -= MAX_PROXIMITY_CHARS; + } + + int matchedProximityCharId = getMatchedProximityId(currentChars, c, skipPos, excessivePos, + transposedPos); + if (UNRELATED_CHAR == matchedProximityCharId) return false; + mWord[depth] = c; + // If inputIndex is greater than mInputLength, that means there is no + // proximity chars. So, we don't need to check proximity. + if (SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR == matchedProximityCharId) { + multiplyIntCapped(TYPED_LETTER_MULTIPLIER, &matchWeight); + } + bool isSameAsUserTypedLength = mInputLength == inputIndex + 1 + || (excessivePos == mInputLength - 1 && inputIndex == mInputLength - 2); + if (isSameAsUserTypedLength && terminal) { + onTerminal(mWord, depth, DICT_ROOT, flags, pos, inputIndex, matchWeight, skipPos, + excessivePos, transposedPos, freq, true, nextLetters, nextLettersSize); + } + if (!needsToTraverseChildrenNodes) return false; + // Start traversing all nodes after the index exceeds the user typed length + *newTraverseAllNodes = isSameAsUserTypedLength; + *newMatchRate = matchWeight; + *newDiffs = diffs + ((NEAR_PROXIMITY_CHAR == matchedProximityCharId) ? 1 : 0); + *newInputIndex = inputIndex + 1; + } + // Optimization: Prune out words that are too long compared to how much was typed. + if (depth >= maxDepth || *newDiffs > mMaxEditDistance) { + return false; + } + + // If inputIndex is greater than mInputLength, that means there are no proximity chars. + // TODO: Check if this can be isSameAsUserTypedLength only. + if (isSameAsUserTypedLength || mInputLength <= *newInputIndex) { + *newTraverseAllNodes = true; + } + // get the count of nodes and increment childAddress. + *newCount = Dictionary::getCount(DICT_ROOT, &childPosition); + *newChildPosition = childPosition; + if (DEBUG_DICT) assert(needsToTraverseChildrenNodes); + return needsToTraverseChildrenNodes; +} + +#endif // NEW_DICTIONARY_FORMAT + } // namespace latinime diff --git a/native/src/unigram_dictionary.h b/native/src/unigram_dictionary.h index 3d3007ce0..154ac9b36 100644 --- a/native/src/unigram_dictionary.h +++ b/native/src/unigram_dictionary.h @@ -17,9 +17,14 @@ #ifndef LATINIME_UNIGRAM_DICTIONARY_H #define LATINIME_UNIGRAM_DICTIONARY_H +#include <stdint.h> #include "defines.h" #include "proximity_info.h" +#ifndef NULL +#define NULL 0 +#endif + namespace latinime { class UnigramDictionary { @@ -31,8 +36,11 @@ class UnigramDictionary { } ProximityType; public: - UnigramDictionary(const unsigned char *dict, int typedLetterMultipler, int fullWordMultiplier, - int maxWordLength, int maxWords, int maxProximityChars, const bool isLatestDictVersion); + UnigramDictionary(const uint8_t* const streamStart, int typedLetterMultipler, + int fullWordMultiplier, int maxWordLength, int maxWords, int maxProximityChars, + const bool isLatestDictVersion); + bool isValidWord(unsigned short *word, int length); + int getBigramPosition(int pos, unsigned short *word, int offset, int length) const; int getSuggestions(const ProximityInfo *proximityInfo, const int *xcoordinates, const int *ycoordinates, const int *codes, const int codesSize, const int flags, unsigned short *outWords, int *frequencies); @@ -56,34 +64,30 @@ private: bool checkIfDictVersionIsLatest(); int getAddress(int *pos); int getFreq(int *pos); - int wideStrLen(unsigned short *str); - bool sameAsTyped(unsigned short *word, int length); + bool sameAsTyped(const unsigned short *word, int length) const; bool addWord(unsigned short *word, int length, int frequency); - unsigned short toBaseLowerCase(unsigned short c); + void addWordAlternatesSpellings(const uint8_t* const root, int pos, int depth, int finalFreq); void getWordsRec(const int childrenCount, const int pos, const int depth, const int maxDepth, const bool traverseAllNodes, const int snr, const int inputIndex, const int diffs, const int skipPos, const int excessivePos, const int transposedPos, int *nextLetters, const int nextLettersSize); bool getSplitTwoWordsSuggestion(const int inputLength, const int firstWordStartPos, const int firstWordLength, - const int secondWordStartPos, const int secondWordLength); + const int secondWordStartPos, const int secondWordLength, const bool isSpaceProximity); bool getMissingSpaceWords(const int inputLength, const int missingSpacePos); bool getMistypedSpaceWords(const int inputLength, const int spaceProximityPos); // Keep getWordsOld for comparing performance between getWords and getWordsOld void getWordsOld(const int initialPos, const int inputLength, const int skipPos, const int excessivePos, const int transposedPos, int *nextLetters, const int nextLettersSize); - void registerNextLetter(unsigned short c, int *nextLetters, int nextLettersSize); int calculateFinalFreq(const int inputIndex, const int depth, const int snr, const int skipPos, const int excessivePos, const int transposedPos, const int freq, const bool sameLength) const; - void onTerminalWhenUserTypedLengthIsGreaterThanInputLength(unsigned short *word, - const int inputIndex, const int depth, const int snr, int *nextLetters, - const int nextLettersSize, const int skipPos, const int excessivePos, - const int transposedPos, const int freq); - void onTerminalWhenUserTypedLengthIsSameAsInputLength(unsigned short *word, - const int inputIndex, const int depth, const int snr, const int skipPos, - const int excessivePos, const int transposedPos, const int freq); + void onTerminal(unsigned short int* word, const int depth, + const uint8_t* const root, const uint8_t flags, int pos, + const int inputIndex, const int matchWeight, const int skipPos, + const int excessivePos, const int transposedPos, const int freq, const bool sameLength, + int *nextLetters, const int nextLettersSize); bool needsToSkipCurrentNode(const unsigned short c, const int inputIndex, const int skipPos, const int depth); ProximityType getMatchedProximityId(const int *currentChars, const unsigned short c, @@ -94,7 +98,7 @@ private: const int diffs, const int skipPos, const int excessivePos, const int transposedPos, int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition, bool *newTraverseAllNodes, int *newSnr, int*newInputIndex, int *newDiffs, - int *nextSiblingPosition); + int *nextSiblingPosition, int *nextOutputIndex); int getBestWordFreq(const int startInputIndex, const int inputLength, unsigned short *word); // Process a node by considering missing space bool processCurrentNodeForExactMatch(const int firstChildPos, @@ -104,7 +108,8 @@ private: inline const int* getInputCharsAt(const int index) const { return mInputCodes + (index * MAX_PROXIMITY_CHARS); } - const unsigned char *DICT; + + const uint8_t* const DICT_ROOT; const int MAX_WORD_LENGTH; const int MAX_WORDS; const int MAX_PROXIMITY_CHARS; @@ -138,11 +143,10 @@ private: int mStackInputIndex[MAX_WORD_LENGTH_INTERNAL]; int mStackDiffs[MAX_WORD_LENGTH_INTERNAL]; int mStackSiblingPos[MAX_WORD_LENGTH_INTERNAL]; + int mStackOutputIndex[MAX_WORD_LENGTH_INTERNAL]; int mNextLettersFrequency[NEXT_LETTERS_SIZE]; }; -// ---------------------------------------------------------------------------- - -}; // namespace latinime +} // namespace latinime #endif // LATINIME_UNIGRAM_DICTIONARY_H diff --git a/tests/src/com/android/inputmethod/compat/ArraysCompatUtilsTests.java b/tests/src/com/android/inputmethod/compat/ArraysCompatUtilsTests.java new file mode 100644 index 000000000..93681b616 --- /dev/null +++ b/tests/src/com/android/inputmethod/compat/ArraysCompatUtilsTests.java @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.android.inputmethod.compat; + +import android.test.AndroidTestCase; + +public class ArraysCompatUtilsTests extends AndroidTestCase { + // See {@link tests.api.java.util.ArraysTest}. + private static final int ARRAY_SIZE = 100; + private final int[] mIntArray = new int[ARRAY_SIZE]; + + @Override + protected void setUp() throws Exception { + super.setUp(); + for (int counter = 0; counter < ARRAY_SIZE; counter++) { + mIntArray[counter] = counter; + } + } + + public void testEmptyArray() { + final int index = ArraysCompatUtils.binarySearch(mIntArray, 0, 0, 0); + assertEquals("empty", ~0, index); + final int compat = ArraysCompatUtils.compatBinarySearch(mIntArray, 0, 0, 0); + assertEquals("empty compat", ~0, compat); + } + + public void testEmptyRangeArray() { + final int mid = ARRAY_SIZE / 3; + final int index = ArraysCompatUtils.binarySearch(mIntArray, mid, mid, 1); + assertEquals("empty", ~mid, index); + final int compat = ArraysCompatUtils.compatBinarySearch(mIntArray, mid, mid, 1); + assertEquals("empty compat", ~mid, compat); + } + + public void testFind() { + for (int counter = 0; counter < ARRAY_SIZE; counter++) { + final int index = ArraysCompatUtils.binarySearch(mIntArray, 0, ARRAY_SIZE, counter); + assertEquals("found", counter, index); + } + for (int counter = 0; counter < ARRAY_SIZE; counter++) { + final int compat = ArraysCompatUtils.compatBinarySearch( + mIntArray, 0, ARRAY_SIZE, counter); + assertEquals("found compat", counter, compat); + } + } + + public void testFindNegative() { + final int offset = ARRAY_SIZE / 2; + for (int counter = 0; counter < ARRAY_SIZE; counter++) { + mIntArray[counter] -= offset; + } + for (int counter = 0; counter < ARRAY_SIZE; counter++) { + final int index = ArraysCompatUtils.binarySearch( + mIntArray, 0, ARRAY_SIZE, counter - offset); + assertEquals("found", counter, index); + } + for (int counter = 0; counter < ARRAY_SIZE; counter++) { + final int compat = ArraysCompatUtils.compatBinarySearch( + mIntArray, 0, ARRAY_SIZE, counter - offset); + assertEquals("found compat", counter, compat); + } + } + + public void testNotFountAtTop() { + final int index = ArraysCompatUtils.binarySearch(mIntArray, 0, ARRAY_SIZE, -1); + assertEquals("not found top", ~0, index); + final int compat = ArraysCompatUtils.compatBinarySearch( + mIntArray, 0, ARRAY_SIZE, -1); + assertEquals("not found top compat", ~0, compat); + } + + public void testNotFountAtEnd() { + final int index = ArraysCompatUtils.binarySearch(mIntArray, 0, ARRAY_SIZE, ARRAY_SIZE); + assertEquals("not found end", ~ARRAY_SIZE, index); + final int compat = ArraysCompatUtils.compatBinarySearch( + mIntArray, 0, ARRAY_SIZE, ARRAY_SIZE); + assertEquals("not found end compat", ~ARRAY_SIZE, compat); + } + + public void testNotFountAtMid() { + final int mid = ARRAY_SIZE / 3; + mIntArray[mid] = mIntArray[mid + 1]; + final int index = ArraysCompatUtils.binarySearch(mIntArray, 0, ARRAY_SIZE, mid); + assertEquals("not found mid", ~mid, index); + final int compat = ArraysCompatUtils.compatBinarySearch( + mIntArray, 0, ARRAY_SIZE, mid); + assertEquals("not found mid compat", ~mid, compat); + } +} diff --git a/tests/src/com/android/inputmethod/keyboard/PopupCharactersParserTests.java b/tests/src/com/android/inputmethod/keyboard/PopupCharactersParserTests.java deleted file mode 100644 index ae78866e6..000000000 --- a/tests/src/com/android/inputmethod/keyboard/PopupCharactersParserTests.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * 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. - */ - -package com.android.inputmethod.keyboard; - -import com.android.inputmethod.latin.R; -import android.content.res.Resources; -import android.graphics.drawable.Drawable; -import android.test.AndroidTestCase; - -public class PopupCharactersParserTests extends AndroidTestCase { - private Resources mRes; - - private static final String CODE_SETTINGS = "@integer/key_settings"; - private static final String ICON_SETTINGS = "@drawable/sym_keyboard_settings"; - private static final String CODE_NON_EXISTING = "@integer/non_existing"; - private static final String ICON_NON_EXISTING = "@drawable/non_existing"; - - private int mCodeSettings; - private Drawable mIconSettings; - - @Override - protected void setUp() { - Resources res = getContext().getResources(); - mRes = res; - - final String packageName = res.getResourcePackageName(R.string.english_ime_name); - final int codeId = res.getIdentifier(CODE_SETTINGS.substring(1), null, packageName); - final int iconId = res.getIdentifier(ICON_SETTINGS.substring(1), null, packageName); - mCodeSettings = res.getInteger(codeId); - mIconSettings = res.getDrawable(iconId); - } - - private void assertParser(String message, String popupSpec, String expectedLabel, - String expectedOutputText, Drawable expectedIcon, int expectedCode) { - String actualLabel = PopupCharactersParser.getLabel(popupSpec); - assertEquals(message + ": label:", expectedLabel, actualLabel); - - String actualOutputText = PopupCharactersParser.getOutputText(popupSpec); - assertEquals(message + ": ouptputText:", expectedOutputText, actualOutputText); - - Drawable actualIcon = PopupCharactersParser.getIcon(mRes, popupSpec); - // We can not compare drawables, checking null or non-null instead. - if (expectedIcon == null) { - assertNull(message + ": icon null:", actualIcon); - } else { - assertNotNull(message + ": icon non-null:", actualIcon); - } - - int actualCode = PopupCharactersParser.getCode(mRes, popupSpec); - assertEquals(message + ": codes value:", expectedCode, actualCode); - } - - private void assertParserError(String message, String popupSpec, String expectedLabel, - String expectedOutputText, Drawable expectedIcon, int expectedCode) { - try { - assertParser(message, popupSpec, expectedLabel, expectedOutputText, expectedIcon, - expectedCode); - fail(message); - } catch (PopupCharactersParser.PopupCharactersParserError pcpe) { - // success. - } - } - - public void testSingleLetter() { - assertParser("Single letter", "a", "a", null, null, 'a'); - assertParser("Single escaped bar", "\\|", "|", null, null, '|'); - assertParser("Single escaped escape", "\\\\", "\\", null, null, '\\'); - assertParser("Single comma", ",", ",", null, null, ','); - assertParser("Single escaped comma", "\\,", ",", null, null, ','); - assertParser("Single escaped letter", "\\a", "a", null, null, 'a'); - assertParser("Single at", "@", "@", null, null, '@'); - assertParser("Single escaped at", "\\@", "@", null, null, '@'); - assertParser("Single letter with outputText", "a|abc", "a", "abc", null, - Keyboard.CODE_DUMMY); - assertParser("Single letter with escaped outputText", "a|a\\|c", "a", "a|c", null, - Keyboard.CODE_DUMMY); - assertParser("Single letter with comma outputText", "a|a,b", "a", "a,b", null, - Keyboard.CODE_DUMMY); - assertParser("Single letter with escaped comma outputText", "a|a\\,b", "a", "a,b", null, - Keyboard.CODE_DUMMY); - assertParser("Single letter with outputText starts with at", "a|@bc", "a", "@bc", null, - Keyboard.CODE_DUMMY); - assertParser("Single letter with outputText contains at", "a|a@c", "a", "a@c", null, - Keyboard.CODE_DUMMY); - assertParser("Single letter with escaped at outputText", "a|\\@bc", "a", "@bc", null, - Keyboard.CODE_DUMMY); - assertParser("Single escaped escape with outputText", "\\\\|\\\\", "\\", "\\", null, - Keyboard.CODE_DUMMY); - assertParser("Single escaped bar with outputText", "\\||\\|", "|", "|", null, - Keyboard.CODE_DUMMY); - assertParser("Single letter with code", "a|" + CODE_SETTINGS, "a", null, null, - mCodeSettings); - } - - public void testLabel() { - assertParser("Simple label", "abc", "abc", "abc", null, Keyboard.CODE_DUMMY); - assertParser("Label with escaped bar", "a\\|c", "a|c", "a|c", null, - Keyboard.CODE_DUMMY); - assertParser("Label with escaped escape", "a\\\\c", "a\\c", "a\\c", null, - Keyboard.CODE_DUMMY); - assertParser("Label with comma", "a,c", "a,c", "a,c", null, Keyboard.CODE_DUMMY); - assertParser("Label with escaped comma", "a\\,c", "a,c", "a,c", null, - Keyboard.CODE_DUMMY); - assertParser("Label starts with at", "@bc", "@bc", "@bc", null, Keyboard.CODE_DUMMY); - assertParser("Label contains at", "a@c", "a@c", "a@c", null, Keyboard.CODE_DUMMY); - assertParser("Label with escaped at", "\\@bc", "@bc", "@bc", null, - Keyboard.CODE_DUMMY); - assertParser("Label with escaped letter", "\\abc", "abc", "abc", null, - Keyboard.CODE_DUMMY); - assertParser("Label with outputText", "abc|def", "abc", "def", null, - Keyboard.CODE_DUMMY); - assertParser("Label with comma and outputText", "a,c|def", "a,c", "def", null, - Keyboard.CODE_DUMMY); - assertParser("Escaped comma label with outputText", "a\\,c|def", "a,c", "def", null, - Keyboard.CODE_DUMMY); - assertParser("Escaped label with outputText", "a\\|c|def", "a|c", "def", null, - Keyboard.CODE_DUMMY); - assertParser("Label with escaped bar outputText", "abc|d\\|f", "abc", "d|f", null, - Keyboard.CODE_DUMMY); - assertParser("Escaped escape label with outputText", "a\\\\|def", "a\\", "def", null, - Keyboard.CODE_DUMMY); - assertParser("Label starts with at and outputText", "@bc|def", "@bc", "def", null, - Keyboard.CODE_DUMMY); - assertParser("Label contains at label and outputText", "a@c|def", "a@c", "def", null, - Keyboard.CODE_DUMMY); - assertParser("Escaped at label with outputText", "\\@bc|def", "@bc", "def", null, - Keyboard.CODE_DUMMY); - assertParser("Label with comma outputText", "abc|a,b", "abc", "a,b", null, - Keyboard.CODE_DUMMY); - assertParser("Label with escaped comma outputText", "abc|a\\,b", "abc", "a,b", null, - Keyboard.CODE_DUMMY); - assertParser("Label with outputText starts with at", "abc|@bc", "abc", "@bc", null, - Keyboard.CODE_DUMMY); - assertParser("Label with outputText contains at", "abc|a@c", "abc", "a@c", null, - Keyboard.CODE_DUMMY); - assertParser("Label with escaped at outputText", "abc|\\@bc", "abc", "@bc", null, - Keyboard.CODE_DUMMY); - assertParser("Label with escaped bar outputText", "abc|d\\|f", "abc", "d|f", - null, Keyboard.CODE_DUMMY); - assertParser("Escaped bar label with escaped bar outputText", "a\\|c|d\\|f", "a|c", "d|f", - null, Keyboard.CODE_DUMMY); - assertParser("Label with code", "abc|" + CODE_SETTINGS, "abc", null, null, mCodeSettings); - assertParser("Escaped label with code", "a\\|c|" + CODE_SETTINGS, "a|c", null, null, - mCodeSettings); - } - - public void testIconAndCode() { - assertParser("Icon with outputText", ICON_SETTINGS + "|abc", null, "abc", mIconSettings, - Keyboard.CODE_DUMMY); - assertParser("Icon with outputText starts with at", ICON_SETTINGS + "|@bc", null, "@bc", - mIconSettings, Keyboard.CODE_DUMMY); - assertParser("Icon with outputText contains at", ICON_SETTINGS + "|a@c", null, "a@c", - mIconSettings, Keyboard.CODE_DUMMY); - assertParser("Icon with escaped at outputText", ICON_SETTINGS + "|\\@bc", null, "@bc", - mIconSettings, Keyboard.CODE_DUMMY); - assertParser("Label starts with at and code", "@bc|" + CODE_SETTINGS, "@bc", null, null, - mCodeSettings); - assertParser("Label contains at and code", "a@c|" + CODE_SETTINGS, "a@c", null, null, - mCodeSettings); - assertParser("Escaped at label with code", "\\@bc|" + CODE_SETTINGS, "@bc", null, null, - mCodeSettings); - assertParser("Icon with code", ICON_SETTINGS + "|" + CODE_SETTINGS, null, null, - mIconSettings, mCodeSettings); - } - - public void testFormatError() { - assertParserError("Empty spec", "", null, null, null, Keyboard.CODE_UNSPECIFIED); - assertParserError("Empty label with outputText", "|a", null, "a", null, - Keyboard.CODE_DUMMY); - assertParserError("Empty label with code", "|" + CODE_SETTINGS, null, null, null, - mCodeSettings); - assertParserError("Empty outputText with label", "a|", "a", null, null, - Keyboard.CODE_UNSPECIFIED); - assertParserError("Empty outputText with icon", ICON_SETTINGS + "|", null, null, - mIconSettings, Keyboard.CODE_UNSPECIFIED); - assertParserError("Empty icon and code", "|", null, null, null, Keyboard.CODE_UNSPECIFIED); - assertParserError("Icon without code", ICON_SETTINGS, null, null, mIconSettings, - Keyboard.CODE_DUMMY); - assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc", null, "abc", null, - Keyboard.CODE_DUMMY); - assertParserError("Non existing code", "abc|" + CODE_NON_EXISTING, "abc", null, null, - Keyboard.CODE_UNSPECIFIED); - assertParserError("Third bar at end", "a|b|", "a", null, null, Keyboard.CODE_UNSPECIFIED); - assertParserError("Multiple bar", "a|b|c", "a", null, null, Keyboard.CODE_UNSPECIFIED); - assertParserError("Multiple bar with label and code", "a|" + CODE_SETTINGS + "|c", "a", - null, null, mCodeSettings); - assertParserError("Multiple bar with icon and outputText", ICON_SETTINGS + "|b|c", null, - null, mIconSettings, Keyboard.CODE_UNSPECIFIED); - assertParserError("Multiple bar with icon and code", - ICON_SETTINGS + "|" + CODE_SETTINGS + "|c", null, null, mIconSettings, - mCodeSettings); - } -} diff --git a/tests/src/com/android/inputmethod/keyboard/KeyStylesTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyStylesTests.java index 5dff11471..4050a7123 100644 --- a/tests/src/com/android/inputmethod/keyboard/KeyStylesTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyStylesTests.java @@ -14,9 +14,9 @@ * the License. */ -package com.android.inputmethod.keyboard; +package com.android.inputmethod.keyboard.internal; -import com.android.inputmethod.keyboard.KeyStyles.EmptyKeyStyle; +import com.android.inputmethod.keyboard.internal.KeyStyles.EmptyKeyStyle; import android.test.AndroidTestCase; import android.text.TextUtils; diff --git a/tests/src/com/android/inputmethod/keyboard/MiniKeyboardBuilderTests.java b/tests/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilderTests.java index 600342a7c..0d2802d53 100644 --- a/tests/src/com/android/inputmethod/keyboard/MiniKeyboardBuilderTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilderTests.java @@ -14,9 +14,9 @@ * the License. */ -package com.android.inputmethod.keyboard; +package com.android.inputmethod.keyboard.internal; -import com.android.inputmethod.keyboard.MiniKeyboardBuilder.MiniKeyboardLayoutParams; +import com.android.inputmethod.keyboard.internal.MiniKeyboardBuilder.MiniKeyboardLayoutParams; import android.test.AndroidTestCase; diff --git a/tests/src/com/android/inputmethod/keyboard/internal/PopupCharactersParserTests.java b/tests/src/com/android/inputmethod/keyboard/internal/PopupCharactersParserTests.java new file mode 100644 index 000000000..e4a1c68d8 --- /dev/null +++ b/tests/src/com/android/inputmethod/keyboard/internal/PopupCharactersParserTests.java @@ -0,0 +1,220 @@ +/* + * 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. + */ + +package com.android.inputmethod.keyboard.internal; + +import android.content.res.Resources; +import android.test.AndroidTestCase; + +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.latin.R; + +public class PopupCharactersParserTests extends AndroidTestCase { + private Resources mRes; + + private static final int ICON_SETTINGS_KEY = 5; + private static final int ICON_UNDEFINED = KeyboardIconsSet.ICON_UNDEFINED; + + private static final String CODE_SETTINGS = "@integer/key_settings"; + private static final String ICON_SETTINGS = "@icon/" + ICON_SETTINGS_KEY; + private static final String CODE_NON_EXISTING = "@integer/non_existing"; + private static final String ICON_NON_EXISTING = "@icon/non_existing"; + + private int mCodeSettings; + + @Override + protected void setUp() { + Resources res = getContext().getResources(); + mRes = res; + + final String packageName = res.getResourcePackageName(R.string.english_ime_name); + final int codeId = res.getIdentifier(CODE_SETTINGS.substring(1), null, packageName); + mCodeSettings = res.getInteger(codeId); + } + + private void assertParser(String message, String popupSpec, String expectedLabel, + String expectedOutputText, int expectedIcon, int expectedCode) { + String actualLabel = PopupCharactersParser.getLabel(popupSpec); + assertEquals(message + ": label:", expectedLabel, actualLabel); + + String actualOutputText = PopupCharactersParser.getOutputText(popupSpec); + assertEquals(message + ": ouptputText:", expectedOutputText, actualOutputText); + + int actualIcon = PopupCharactersParser.getIconId(popupSpec); + assertEquals(message + ": icon:", expectedIcon, actualIcon); + + int actualCode = PopupCharactersParser.getCode(mRes, popupSpec); + assertEquals(message + ": codes value:", expectedCode, actualCode); + } + + private void assertParserError(String message, String popupSpec, String expectedLabel, + String expectedOutputText, int expectedIcon, int expectedCode) { + try { + assertParser(message, popupSpec, expectedLabel, expectedOutputText, expectedIcon, + expectedCode); + fail(message); + } catch (PopupCharactersParser.PopupCharactersParserError pcpe) { + // success. + } + } + + public void testSingleLetter() { + assertParser("Single letter", "a", + "a", null, ICON_UNDEFINED, 'a'); + assertParser("Single escaped bar", "\\|", + "|", null, ICON_UNDEFINED, '|'); + assertParser("Single escaped escape", "\\\\", + "\\", null, ICON_UNDEFINED, '\\'); + assertParser("Single comma", ",", + ",", null, ICON_UNDEFINED, ','); + assertParser("Single escaped comma", "\\,", + ",", null, ICON_UNDEFINED, ','); + assertParser("Single escaped letter", "\\a", + "a", null, ICON_UNDEFINED, 'a'); + assertParser("Single at", "@", + "@", null, ICON_UNDEFINED, '@'); + assertParser("Single escaped at", "\\@", + "@", null, ICON_UNDEFINED, '@'); + assertParser("Single letter with outputText", "a|abc", + "a", "abc", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Single letter with escaped outputText", "a|a\\|c", + "a", "a|c", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Single letter with comma outputText", "a|a,b", + "a", "a,b", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Single letter with escaped comma outputText", "a|a\\,b", + "a", "a,b", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Single letter with outputText starts with at", "a|@bc", + "a", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Single letter with outputText contains at", "a|a@c", + "a", "a@c", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Single letter with escaped at outputText", "a|\\@bc", + "a", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Single escaped escape with outputText", "\\\\|\\\\", + "\\", "\\", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Single escaped bar with outputText", "\\||\\|", + "|", "|", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Single letter with code", "a|" + CODE_SETTINGS, + "a", null, ICON_UNDEFINED, mCodeSettings); + } + + public void testLabel() { + assertParser("Simple label", "abc", + "abc", "abc", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with escaped bar", "a\\|c", + "a|c", "a|c", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with escaped escape", "a\\\\c", + "a\\c", "a\\c", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with comma", "a,c", + "a,c", "a,c", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with escaped comma", "a\\,c", + "a,c", "a,c", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label starts with at", "@bc", + "@bc", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label contains at", "a@c", + "a@c", "a@c", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with escaped at", "\\@bc", + "@bc", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with escaped letter", "\\abc", + "abc", "abc", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with outputText", "abc|def", + "abc", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with comma and outputText", "a,c|def", + "a,c", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Escaped comma label with outputText", "a\\,c|def", + "a,c", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Escaped label with outputText", "a\\|c|def", + "a|c", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with escaped bar outputText", "abc|d\\|f", + "abc", "d|f", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Escaped escape label with outputText", "a\\\\|def", + "a\\", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label starts with at and outputText", "@bc|def", + "@bc", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label contains at label and outputText", "a@c|def", + "a@c", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Escaped at label with outputText", "\\@bc|def", + "@bc", "def", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with comma outputText", "abc|a,b", + "abc", "a,b", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with escaped comma outputText", "abc|a\\,b", + "abc", "a,b", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with outputText starts with at", "abc|@bc", + "abc", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with outputText contains at", "abc|a@c", + "abc", "a@c", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with escaped at outputText", "abc|\\@bc", + "abc", "@bc", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with escaped bar outputText", "abc|d\\|f", + "abc", "d|f", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Escaped bar label with escaped bar outputText", "a\\|c|d\\|f", + "a|c", "d|f", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParser("Label with code", "abc|" + CODE_SETTINGS, + "abc", null, ICON_UNDEFINED, mCodeSettings); + assertParser("Escaped label with code", "a\\|c|" + CODE_SETTINGS, + "a|c", null, ICON_UNDEFINED, mCodeSettings); + } + + public void testIconAndCode() { + assertParser("Icon with outputText", ICON_SETTINGS + "|abc", + null, "abc", ICON_SETTINGS_KEY, Keyboard.CODE_DUMMY); + assertParser("Icon with outputText starts with at", ICON_SETTINGS + "|@bc", + null, "@bc", ICON_SETTINGS_KEY, Keyboard.CODE_DUMMY); + assertParser("Icon with outputText contains at", ICON_SETTINGS + "|a@c", + null, "a@c", ICON_SETTINGS_KEY, Keyboard.CODE_DUMMY); + assertParser("Icon with escaped at outputText", ICON_SETTINGS + "|\\@bc", + null, "@bc", ICON_SETTINGS_KEY, Keyboard.CODE_DUMMY); + assertParser("Label starts with at and code", "@bc|" + CODE_SETTINGS, + "@bc", null, ICON_UNDEFINED, mCodeSettings); + assertParser("Label contains at and code", "a@c|" + CODE_SETTINGS, + "a@c", null, ICON_UNDEFINED, mCodeSettings); + assertParser("Escaped at label with code", "\\@bc|" + CODE_SETTINGS, + "@bc", null, ICON_UNDEFINED, mCodeSettings); + assertParser("Icon with code", ICON_SETTINGS + "|" + CODE_SETTINGS, + null, null, ICON_SETTINGS_KEY, mCodeSettings); + } + + public void testFormatError() { + assertParserError("Empty spec", "", null, + null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED); + assertParserError("Empty label with outputText", "|a", + null, "a", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParserError("Empty label with code", "|" + CODE_SETTINGS, + null, null, ICON_UNDEFINED, mCodeSettings); + assertParserError("Empty outputText with label", "a|", + "a", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED); + assertParserError("Empty outputText with icon", ICON_SETTINGS + "|", + null, null, ICON_SETTINGS_KEY, Keyboard.CODE_UNSPECIFIED); + assertParserError("Empty icon and code", "|", + null, null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED); + assertParserError("Icon without code", ICON_SETTINGS, + null, null, ICON_SETTINGS_KEY, Keyboard.CODE_DUMMY); + assertParser("Non existing icon", ICON_NON_EXISTING + "|abc", + null, "abc", ICON_UNDEFINED, Keyboard.CODE_DUMMY); + assertParserError("Non existing code", "abc|" + CODE_NON_EXISTING, + "abc", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED); + assertParserError("Third bar at end", "a|b|", + "a", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED); + assertParserError("Multiple bar", "a|b|c", + "a", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED); + assertParserError("Multiple bar with label and code", "a|" + CODE_SETTINGS + "|c", + "a", null, ICON_UNDEFINED, mCodeSettings); + assertParserError("Multiple bar with icon and outputText", ICON_SETTINGS + "|b|c", + null, null, ICON_SETTINGS_KEY, Keyboard.CODE_UNSPECIFIED); + assertParserError("Multiple bar with icon and code", + ICON_SETTINGS + "|" + CODE_SETTINGS + "|c", + null, null, ICON_SETTINGS_KEY, mCodeSettings); + } +} diff --git a/tests/src/com/android/inputmethod/latin/EventRingBufferTests.java b/tests/src/com/android/inputmethod/latin/EventRingBufferTests.java index 869781f3d..a3d2a2b10 100644 --- a/tests/src/com/android/inputmethod/latin/EventRingBufferTests.java +++ b/tests/src/com/android/inputmethod/latin/EventRingBufferTests.java @@ -16,7 +16,7 @@ package com.android.inputmethod.latin; -import com.android.inputmethod.keyboard.SwipeTracker.EventRingBuffer; +import com.android.inputmethod.keyboard.internal.SwipeTracker.EventRingBuffer; import android.test.AndroidTestCase; diff --git a/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java b/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java index d128cb3fa..d102aa4d1 100644 --- a/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java +++ b/tests/src/com/android/inputmethod/latin/SubtypeLocaleTests.java @@ -16,6 +16,8 @@ package com.android.inputmethod.latin; +import com.android.inputmethod.latin.Utils; + import android.content.Context; import android.content.res.Resources; import android.test.AndroidTestCase; @@ -75,7 +77,7 @@ public class SubtypeLocaleTests extends AndroidTestCase { int failedCount = 0; for (final InputMethodSubtype subtype : mKeyboardSubtypes) { final String localeCode = subtype.getLocale(); - final Locale locale = new Locale(localeCode); + final Locale locale = Utils.constructLocaleFromString(localeCode); // The locale name which will be displayed on spacebar. For example 'English (US)' or // 'Francais (Canada)'. (c=\u008d) final String displayName = SubtypeLocale.getFullDisplayName(locale); diff --git a/tests/src/com/android/inputmethod/latin/SuggestHelper.java b/tests/src/com/android/inputmethod/latin/SuggestHelper.java index 8a11ff955..87ea011fa 100644 --- a/tests/src/com/android/inputmethod/latin/SuggestHelper.java +++ b/tests/src/com/android/inputmethod/latin/SuggestHelper.java @@ -36,7 +36,7 @@ public class SuggestHelper { // Use null as the locale for Suggest so as to force it to use the internal dictionary // (and not try to find a dictionary provider for a specified locale) mSuggest = new Suggest(context, dictionaryId, null); - mKeyboard = new LatinKeyboard(context, keyboardId); + mKeyboard = new LatinKeyboard(context, keyboardId, keyboardId.mWidth); mKeyDetector = new KeyDetector(); init(); } @@ -44,7 +44,7 @@ public class SuggestHelper { protected SuggestHelper(Context context, File dictionaryPath, long startOffset, long length, KeyboardId keyboardId) { mSuggest = new Suggest(context, dictionaryPath, startOffset, length, null); - mKeyboard = new LatinKeyboard(context, keyboardId); + mKeyboard = new LatinKeyboard(context, keyboardId, keyboardId.mWidth); mKeyDetector = new KeyDetector(); init(); } diff --git a/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java b/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java index 64f26743e..8aadee42e 100644 --- a/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java +++ b/tests/src/com/android/inputmethod/latin/SuggestTestsBase.java @@ -16,15 +16,14 @@ package com.android.inputmethod.latin; -import com.android.inputmethod.keyboard.KeyboardId; -import com.android.inputmethod.keyboard.KeyboardView; - import android.content.res.AssetFileDescriptor; import android.content.res.Configuration; import android.test.AndroidTestCase; import android.text.TextUtils; import android.view.inputmethod.EditorInfo; +import com.android.inputmethod.keyboard.KeyboardId; + import java.io.File; import java.io.InputStream; import java.util.Locale; @@ -38,11 +37,12 @@ public class SuggestTestsBase extends AndroidTestCase { mTestPackageFile = new File(getTestContext().getApplicationInfo().sourceDir); } - protected static KeyboardId createKeyboardId(Locale locale) { + protected KeyboardId createKeyboardId(Locale locale) { + final int displayWidth = getContext().getResources().getDisplayMetrics().widthPixels; return new KeyboardId(locale.toString() + " keyboard", - com.android.inputmethod.latin.R.xml.kbd_qwerty, KeyboardView.COLOR_SCHEME_WHITE, - locale, Configuration.ORIENTATION_LANDSCAPE, KeyboardId.MODE_TEXT, - new EditorInfo(), false, false, false, false); + com.android.inputmethod.latin.R.xml.kbd_qwerty, locale, + Configuration.ORIENTATION_LANDSCAPE, displayWidth, KeyboardId.MODE_TEXT, + new EditorInfo(), false, KeyboardId.F2KEY_MODE_NONE, false, false, false, false); } protected InputStream openTestRawResource(int resIdInTest) { |