diff options
Diffstat (limited to 'java')
211 files changed, 9097 insertions, 9360 deletions
diff --git a/java/res/drawable-hdpi/ic_subtype_keyboard.png b/java/res/drawable-hdpi/ic_subtype_keyboard.png Binary files differindex 7015e266a..c7729566c 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-mdpi/ic_subtype_keyboard.png b/java/res/drawable-mdpi/ic_subtype_keyboard.png Binary files differindex 0d7ebd4e5..9a5aada8b 100644 --- a/java/res/drawable-mdpi/ic_subtype_keyboard.png +++ b/java/res/drawable-mdpi/ic_subtype_keyboard.png diff --git a/java/res/drawable-mdpi/keyboard_hint_at.9.png b/java/res/drawable-mdpi/keyboard_hint_at.9.png Binary files differnew file mode 100644 index 000000000..69baedef4 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_hint_at.9.png diff --git a/java/res/drawable-mdpi/keyboard_hint_colon.9.png b/java/res/drawable-mdpi/keyboard_hint_colon.9.png Binary files differnew file mode 100644 index 000000000..9d0d7cbab --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_hint_colon.9.png diff --git a/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png b/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png Binary files differnew file mode 100644 index 000000000..d24aa0f07 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png diff --git a/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png b/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png Binary files differnew file mode 100644 index 000000000..f6cc7fe84 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png diff --git a/java/res/drawable-mdpi/keyboard_hint_greater.9.png b/java/res/drawable-mdpi/keyboard_hint_greater.9.png Binary files differnew file mode 100644 index 000000000..5210392bf --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_hint_greater.9.png diff --git a/java/res/drawable-mdpi/keyboard_hint_plus.9.png b/java/res/drawable-mdpi/keyboard_hint_plus.9.png Binary files differnew file mode 100644 index 000000000..d1d85ac87 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_hint_plus.9.png diff --git a/java/res/drawable-mdpi/keyboard_hint_question.9.png b/java/res/drawable-mdpi/keyboard_hint_question.9.png Binary files differnew file mode 100644 index 000000000..37f6e5f36 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_hint_question.9.png diff --git a/java/res/drawable-mdpi/keyboard_hint_quote.9.png b/java/res/drawable-mdpi/keyboard_hint_quote.9.png Binary files differnew file mode 100644 index 000000000..e7d2cb5e3 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_hint_quote.9.png diff --git a/java/res/drawable-mdpi/keyboard_hint_smaller.9.png b/java/res/drawable-mdpi/keyboard_hint_smaller.9.png Binary files differnew file mode 100644 index 000000000..76553cf96 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_hint_smaller.9.png diff --git a/java/res/drawable-mdpi/keyboard_hint_star.9.png b/java/res/drawable-mdpi/keyboard_hint_star.9.png Binary files differnew file mode 100644 index 000000000..47978c46c --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_hint_star.9.png diff --git a/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_holo.9.png Binary files differnew file mode 100644 index 000000000..f7cfdbd84 --- /dev/null +++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_holo.9.png diff --git a/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_off_holo.9.png Binary files differnew file mode 100644 index 000000000..fea6fc946 --- /dev/null +++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_off_holo.9.png diff --git a/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_on_holo.9.png Binary files differnew file mode 100644 index 000000000..cf2ffaf9a --- /dev/null +++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_on_holo.9.png diff --git a/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_holo.9.png Binary files differnew file mode 100644 index 000000000..733944c5a --- /dev/null +++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_holo.9.png diff --git a/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_off_holo.9.png Binary files differnew file mode 100644 index 000000000..5c24d66da --- /dev/null +++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_off_holo.9.png diff --git a/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_on_holo.9.png Binary files differnew file mode 100644 index 000000000..d0afa5b0d --- /dev/null +++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_on_holo.9.png diff --git a/java/res/drawable-xlarge-land/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xlarge-land/btn_keyboard_key_light_normal_holo.9.png Binary files differnew file mode 100644 index 000000000..a34fe5854 --- /dev/null +++ b/java/res/drawable-xlarge-land/btn_keyboard_key_light_normal_holo.9.png diff --git a/java/res/drawable-xlarge-land/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-xlarge-land/btn_keyboard_key_light_pressed_holo.9.png Binary files differnew file mode 100644 index 000000000..daa7f6c53 --- /dev/null +++ b/java/res/drawable-xlarge-land/btn_keyboard_key_light_pressed_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_colon_holo.9.png b/java/res/drawable-xlarge-land/key_hint_colon_holo.9.png Binary files differnew file mode 100644 index 000000000..093f2df4c --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_colon_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_comma_holo.9.png b/java/res/drawable-xlarge-land/key_hint_comma_holo.9.png Binary files differnew file mode 100644 index 000000000..0965dc879 --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_comma_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_dash_holo.9.png b/java/res/drawable-xlarge-land/key_hint_dash_holo.9.png Binary files differnew file mode 100644 index 000000000..1f77c6ed1 --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_dash_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_doublecross_holo.9.png b/java/res/drawable-xlarge-land/key_hint_doublecross_holo.9.png Binary files differnew file mode 100644 index 000000000..716b8f15c --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_doublecross_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_equal_holo.9.png b/java/res/drawable-xlarge-land/key_hint_equal_holo.9.png Binary files differnew file mode 100644 index 000000000..bd42477a9 --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_equal_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_exclamation_holo.9.png b/java/res/drawable-xlarge-land/key_hint_exclamation_holo.9.png Binary files differnew file mode 100644 index 000000000..cb319cfde --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_exclamation_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_larger_holo.9.png b/java/res/drawable-xlarge-land/key_hint_larger_holo.9.png Binary files differnew file mode 100644 index 000000000..4bcae825e --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_larger_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_parenclose_holo.9.png b/java/res/drawable-xlarge-land/key_hint_parenclose_holo.9.png Binary files differnew file mode 100644 index 000000000..ac9be60b3 --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_parenclose_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_parenopen_holo.9.png b/java/res/drawable-xlarge-land/key_hint_parenopen_holo.9.png Binary files differnew file mode 100644 index 000000000..635a0c2dc --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_parenopen_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_period_holo.9.png b/java/res/drawable-xlarge-land/key_hint_period_holo.9.png Binary files differnew file mode 100644 index 000000000..41ac3a80d --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_period_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_plus_holo.9.png b/java/res/drawable-xlarge-land/key_hint_plus_holo.9.png Binary files differnew file mode 100644 index 000000000..89f33671c --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_plus_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_question_holo.9.png b/java/res/drawable-xlarge-land/key_hint_question_holo.9.png Binary files differnew file mode 100644 index 000000000..737c8314e --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_question_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_quote_holo.9.png b/java/res/drawable-xlarge-land/key_hint_quote_holo.9.png Binary files differnew file mode 100644 index 000000000..818476559 --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_quote_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_semicolon_holo.9.png b/java/res/drawable-xlarge-land/key_hint_semicolon_holo.9.png Binary files differnew file mode 100644 index 000000000..d1d8d4fe7 --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_semicolon_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_simplequote_holo.9.png b/java/res/drawable-xlarge-land/key_hint_simplequote_holo.9.png Binary files differnew file mode 100644 index 000000000..0784b892a --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_simplequote_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_slash_holo.9.png b/java/res/drawable-xlarge-land/key_hint_slash_holo.9.png Binary files differnew file mode 100644 index 000000000..3df3d9087 --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_slash_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_smaller_holo.9.png b/java/res/drawable-xlarge-land/key_hint_smaller_holo.9.png Binary files differnew file mode 100644 index 000000000..8a2852bab --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_smaller_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_star_holo.9.png b/java/res/drawable-xlarge-land/key_hint_star_holo.9.png Binary files differnew file mode 100644 index 000000000..db7a15a8c --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_star_holo.9.png diff --git a/java/res/drawable-xlarge-land/key_hint_underline_holo.9.png b/java/res/drawable-xlarge-land/key_hint_underline_holo.9.png Binary files differnew file mode 100644 index 000000000..1fa93ee7f --- /dev/null +++ b/java/res/drawable-xlarge-land/key_hint_underline_holo.9.png diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_holo.9.png Binary files differnew file mode 100644 index 000000000..f7cfdbd84 --- /dev/null +++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_holo.9.png diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_off_holo.9.png Binary files differnew file mode 100644 index 000000000..fea6fc946 --- /dev/null +++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_off_holo.9.png diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_on_holo.9.png Binary files differnew file mode 100644 index 000000000..cf2ffaf9a --- /dev/null +++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_on_holo.9.png diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_holo.9.png Binary files differnew file mode 100644 index 000000000..733944c5a --- /dev/null +++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_holo.9.png diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_off_holo.9.png Binary files differnew file mode 100644 index 000000000..5c24d66da --- /dev/null +++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_off_holo.9.png diff --git a/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_on_holo.9.png Binary files differnew file mode 100644 index 000000000..d0afa5b0d --- /dev/null +++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_on_holo.9.png diff --git a/java/res/drawable-xlarge/btn_keyboard_key_gingerbread.xml b/java/res/drawable-xlarge/btn_keyboard_key_gingerbread.xml new file mode 100644 index 000000000..3dab8430f --- /dev/null +++ b/java/res/drawable-xlarge/btn_keyboard_key_gingerbread.xml @@ -0,0 +1,43 @@ +<?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. +--> + +<!-- 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. --> + + <item android:state_single="true" android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_dark_pressed_holo" /> + <item android:state_single="true" + android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" /> + + <!-- Toggle keys. Use checkable/checked state. --> + + <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_dark_pressed_on_holo" /> + <item android:state_checkable="true" android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_holo" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/btn_keyboard_key_dark_normal_on_holo" /> + <item android:state_checkable="true" + android:drawable="@drawable/btn_keyboard_key_dark_normal_off_holo" /> + + <!-- Normal keys --> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_light_pressed_holo" /> + <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" /> +</selector> diff --git a/java/res/drawable-xlarge/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_light_normal_holo.9.png Binary files differnew file mode 100644 index 000000000..a34fe5854 --- /dev/null +++ b/java/res/drawable-xlarge/btn_keyboard_key_light_normal_holo.9.png diff --git a/java/res/drawable-xlarge/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-xlarge/btn_keyboard_key_light_pressed_holo.9.png Binary files differnew file mode 100644 index 000000000..daa7f6c53 --- /dev/null +++ b/java/res/drawable-xlarge/btn_keyboard_key_light_pressed_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_at_holo.9.png b/java/res/drawable-xlarge/key_hint_at_holo.9.png Binary files differnew file mode 100644 index 000000000..23369f630 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_at_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_colon_holo.9.png b/java/res/drawable-xlarge/key_hint_colon_holo.9.png Binary files differnew file mode 100644 index 000000000..54c423710 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_colon_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_comma_holo.9.png b/java/res/drawable-xlarge/key_hint_comma_holo.9.png Binary files differnew file mode 100644 index 000000000..2ebf24253 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_comma_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_dash_holo.9.png b/java/res/drawable-xlarge/key_hint_dash_holo.9.png Binary files differnew file mode 100644 index 000000000..f44668fba --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_dash_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_doublecross_holo.9.png b/java/res/drawable-xlarge/key_hint_doublecross_holo.9.png Binary files differnew file mode 100644 index 000000000..9ca30f437 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_doublecross_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_equal_holo.9.png b/java/res/drawable-xlarge/key_hint_equal_holo.9.png Binary files differnew file mode 100644 index 000000000..dee9a03ff --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_equal_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_exclamation_holo.9.png b/java/res/drawable-xlarge/key_hint_exclamation_holo.9.png Binary files differnew file mode 100644 index 000000000..2c7271b0d --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_exclamation_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_larger_holo.9.png b/java/res/drawable-xlarge/key_hint_larger_holo.9.png Binary files differnew file mode 100644 index 000000000..f789e0299 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_larger_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_parenclose_holo.9.png b/java/res/drawable-xlarge/key_hint_parenclose_holo.9.png Binary files differnew file mode 100644 index 000000000..aec225ac8 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_parenclose_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_parenopen_holo.9.png b/java/res/drawable-xlarge/key_hint_parenopen_holo.9.png Binary files differnew file mode 100644 index 000000000..4347b9794 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_parenopen_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_period_holo.9.png b/java/res/drawable-xlarge/key_hint_period_holo.9.png Binary files differnew file mode 100644 index 000000000..a261350b6 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_period_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_plus_holo.9.png b/java/res/drawable-xlarge/key_hint_plus_holo.9.png Binary files differnew file mode 100644 index 000000000..80121e5e2 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_plus_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_question_holo.9.png b/java/res/drawable-xlarge/key_hint_question_holo.9.png Binary files differnew file mode 100644 index 000000000..c8e2fdab9 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_question_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_quote_holo.9.png b/java/res/drawable-xlarge/key_hint_quote_holo.9.png Binary files differnew file mode 100644 index 000000000..6cf7e0e37 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_quote_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_semicolon_holo.9.png b/java/res/drawable-xlarge/key_hint_semicolon_holo.9.png Binary files differnew file mode 100644 index 000000000..d4e3f6904 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_semicolon_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_simplequote_holo.9.png b/java/res/drawable-xlarge/key_hint_simplequote_holo.9.png Binary files differnew file mode 100644 index 000000000..1d7463077 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_simplequote_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_slash_holo.9.png b/java/res/drawable-xlarge/key_hint_slash_holo.9.png Binary files differnew file mode 100644 index 000000000..f00024c85 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_slash_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_smaller_holo.9.png b/java/res/drawable-xlarge/key_hint_smaller_holo.9.png Binary files differnew file mode 100644 index 000000000..e5562b93f --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_smaller_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_star_holo.9.png b/java/res/drawable-xlarge/key_hint_star_holo.9.png Binary files differnew file mode 100644 index 000000000..fd43ed5de --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_star_holo.9.png diff --git a/java/res/drawable-xlarge/key_hint_underline_holo.9.png b/java/res/drawable-xlarge/key_hint_underline_holo.9.png Binary files differnew file mode 100644 index 000000000..680d9a6f5 --- /dev/null +++ b/java/res/drawable-xlarge/key_hint_underline_holo.9.png diff --git a/java/res/drawable/ic_sybtype_us_keyboard.png b/java/res/drawable/ic_sybtype_us_keyboard.png Binary files differnew file mode 100644 index 000000000..c81b22bb0 --- /dev/null +++ b/java/res/drawable/ic_sybtype_us_keyboard.png diff --git a/java/res/values-cs/config.xml b/java/res/values-cs/config.xml new file mode 100644 index 000000000..e0e3a8e41 --- /dev/null +++ b/java/res/values-cs/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0.22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml index 7a4cf782f..b0f6be5b4 100644 --- a/java/res/values-cs/strings.xml +++ b/java/res/values-cs/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Opravuje nejčastější chyby při psaní"</string> <string name="show_suggestions" msgid="507074425254289133">"Zobrazit návrhy"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Zobrazovat navržená slova během psaní"</string> - <string name="auto_complete" msgid="1103196318775486023">"Automatické dokončování"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Stisknutím mezerníku nebo interpunkčního znaménka automaticky vložíte zvýrazněné slovo."</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Zobrazit klávesu Nastavení"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automaticky"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vždy zobrazovat"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Automatické dokončování"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Stisknutím mezerníku nebo interpunkčního znaménka automaticky vložíte zvýrazněné slovo."</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Vypnuto"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Mírné"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Agresivní"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Návrh Bigram"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Použít předchozí slovo ke zlepšení návrhu"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"Alt"</string> + <string name="label_more_key" msgid="3760239494604948502">"Další"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Hlasový vstup"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Pro váš jazyk aktuálně není hlasový vstup podporován, ale funguje v angličtině."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Hlasový vstup je experimentální funkce, která využívá síťové rozpoznávání řeči společnosti Google."</string> diff --git a/java/res/values-da/config.xml b/java/res/values-da/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-da/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml index c4d67fd60..553a96c15 100644 --- a/java/res/values-da/strings.xml +++ b/java/res/values-da/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Retter almindelige stavefejl"</string> <string name="show_suggestions" msgid="507074425254289133">"Vis forslag"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Vis ordforslag under indtastning"</string> - <string name="auto_complete" msgid="1103196318775486023">"Udfyld automatisk"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Mellemrumstast og tegnsætning indsætter automatisk fremhævet ord"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Vis indstillingsnøgle"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatisk"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vis altid"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Udfyld automatisk"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Mellemrumstast og tegnsætning indsætter automatisk fremhævet ord"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Fra"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Beskeden"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Aggressiv"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Bigram-forslag"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Brug forrige ord for at forbedre forslag"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Mere"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Stemmeinput"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Stemmeinput understøttes i øjeblikket ikke for dit sprog, men fungerer på engelsk."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Stemme-input er en funktion på forsøgsbasis, som bruger Googles netværksstemmegenkendelse."</string> diff --git a/java/res/values-de/config.xml b/java/res/values-de/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-de/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml index 3153d2936..2b01745d1 100644 --- a/java/res/values-de/strings.xml +++ b/java/res/values-de/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Korrigiert gängige Tippfehler"</string> <string name="show_suggestions" msgid="507074425254289133">"Vorschläge anzeigen"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Vorgeschlagene Wörter während des Tippens anzeigen"</string> - <string name="auto_complete" msgid="1103196318775486023">"Autom. vervollständigen"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Leertaste und Interpunktion fügen autom. ein markiertes Wort ein"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Einstellungstaste anz."</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatisch"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Immer anzeigen"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Autom. vervollständigen"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Leertaste und Interpunktion fügen autom. ein markiertes Wort ein"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Aus"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Mäßig"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Aggressiv"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Bigramm-Vorschläge"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Zur Verbesserung des Vorschlags vorheriges Wort verwenden"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Mehr"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"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_may_not_understand" msgid="4611518823070986445">"Die Spracheingabe ist eine Funktion im Versuchsstadium, die die vernetzte Spracherkennung von Google verwendet."</string> diff --git a/java/res/values-el/config.xml b/java/res/values-el/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-el/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml index f249e9a7a..baf28d968 100644 --- a/java/res/values-el/strings.xml +++ b/java/res/values-el/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Διορθώνει συνηθισμένα λάθη πληκτρολόγησης"</string> <string name="show_suggestions" msgid="507074425254289133">"Εμφάνιση υποδείξεων"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Προβολή προτεινόμενων λέξεων κατά την πληκτρολόγηση"</string> - <string name="auto_complete" msgid="1103196318775486023">"Αυτόματη συμπλήρωση"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Τα πλήκ.διαστήμ.και τονισμού εισάγ.αυτόμ.την επιλ.λέξη"</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> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Αυτόματη συμπλήρωση"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Τα πλήκ.διαστήμ.και τονισμού εισάγ.αυτόμ.την επιλ.λέξη"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Απενεργοποιημένη"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Μέτρια"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Υψηλή"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Προτάσεις bigram"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Χρήση προηγούμενης λέξης για τη βελτίωση πρότασης"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ΑΒΓ"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Περισσότερα"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Φωνητική είσοδος"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Η φωνητική είσοδος δεν υποστηρίζεται αυτή τη στιγμή για τη γλώσσα σας, ωστόσο λειτουργεί στα Αγγλικά."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Οι φωνητικές εντολές είναι μια πειραματική λειτουργία, η οποία χρησιμοποιεί τη δικτυακή αναγνώριση ομιλίας της Google."</string> diff --git a/java/res/values-es-rUS/config.xml b/java/res/values-es-rUS/config.xml new file mode 100644 index 000000000..e0e3a8e41 --- /dev/null +++ b/java/res/values-es-rUS/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0.22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml index 3abc8ded6..12ad63c9a 100644 --- a/java/res/values-es-rUS/strings.xml +++ b/java/res/values-es-rUS/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige errores de escritura comunes"</string> <string name="show_suggestions" msgid="507074425254289133">"Mostrar sugerencias"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Mostrar palabras sugeridas mientras escribe"</string> - <string name="auto_complete" msgid="1103196318775486023">"Completar automát."</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"La barra espaciadora o la puntuación insertan automáticamente la palabra resaltada."</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Mostrar tecla de configuración"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automático"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostrar siempre"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Completar automát."</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"La barra espaciadora o la puntuación insertan automáticamente la palabra resaltada."</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Apagado"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Moderado"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Intenso"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Sugerencias de Vigoran"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Utiliza la palabra anterior para mejorar la sugerencia"</string> <string-array name="prediction_modes"> @@ -83,6 +89,10 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Más"</string> + <string name="label_tab_key" msgid="6532779603382157482">"Tabulación"</string> + <string name="label_pause_key" msgid="181098308428035340">"Pausar"</string> + <string name="label_wait_key" msgid="6402152600878093134">"Espera"</string> <string name="voice_warning_title" msgid="4419354150908395008">"Entrada por voz"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"La entrada por voz no está admitida en tu idioma, pero sí funciona en inglés."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"La entrada por voz es una característica experimental que utiliza la red de reconocimiento de voz de Google."</string> diff --git a/java/res/values-es/config.xml b/java/res/values-es/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-es/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml index cd6dc8ee1..327a0a259 100644 --- a/java/res/values-es/strings.xml +++ b/java/res/values-es/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige los errores tipográficos que se cometen con más frecuencia."</string> <string name="show_suggestions" msgid="507074425254289133">"Mostrar sugerencias"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Muestra las palabras sugeridas mientras se escribe."</string> - <string name="auto_complete" msgid="1103196318775486023">"Autocompletar"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"La barra espaciadora y los signos de puntuación insertan automáticamente la palabra resaltada."</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> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Autocompletar"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"La barra espaciadora y los signos de puntuación insertan automáticamente la palabra resaltada."</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Desactivada"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Parcial"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Total"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Sugerencias de bigramas"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Usar palabra anterior para mejorar sugerencias"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Más"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Introducción de voz"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Actualmente la introducción de voz no está disponible en tu idioma, pero se puede utilizar en inglés."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"La introducción de voz es una función en fase experimental que utiliza la tecnología de reconocimiento de voz en red de Google."</string> diff --git a/java/res/values-fr/config.xml b/java/res/values-fr/config.xml new file mode 100644 index 000000000..e0e3a8e41 --- /dev/null +++ b/java/res/values-fr/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0.22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml index f8f4bac09..0416cd89c 100644 --- a/java/res/values-fr/strings.xml +++ b/java/res/values-fr/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige les fautes de frappe courantes"</string> <string name="show_suggestions" msgid="507074425254289133">"Afficher les suggestions"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Afficher les suggestions de terme lors de la saisie"</string> - <string name="auto_complete" msgid="1103196318775486023">"Saisie semi-automatique"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Insérer auto. le terme surligné avec barre espace/ponctuation"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Afficher la touche des paramètres"</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> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Saisie semi-automatique"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Insérer auto. le terme surligné avec barre espace/ponctuation"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Désactivée"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Simple"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Proactive"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Suggestions de type bigramme"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Améliorer la suggestion en fonction du mot précédent"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Plus"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Saisie vocale"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"La saisie vocale n\'est pas encore prise en charge pour votre langue, mais elle fonctionne en anglais."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"La saisie vocale est une fonctionnalité expérimentale qui fait appel à la reconnaissance vocale en réseau de Google."</string> diff --git a/java/res/values-it/config.xml b/java/res/values-it/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-it/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml index 94cdb967f..167ed7d4e 100644 --- a/java/res/values-it/strings.xml +++ b/java/res/values-it/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Corregge gli errori di digitazione più comuni"</string> <string name="show_suggestions" msgid="507074425254289133">"Mostra suggerimenti"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Visualizza le parole suggerite durante la digitazione"</string> - <string name="auto_complete" msgid="1103196318775486023">"Completamento autom."</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Barra spaziatrice e punteggiatura inseriscono la parola evidenziata"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Mostra tasto impostazioni"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatico"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostra sempre"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Completamento autom."</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Barra spaziatrice e punteggiatura inseriscono la parola evidenziata"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Non attivo"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Medio"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Massimo"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Suggerimenti sui bigrammi"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Utilizza parola precedente per migliorare il suggerimento"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Altro"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Comandi vocali"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"I comandi vocali non sono attualmente supportati per la tua lingua ma funzionano in inglese."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"I comandi vocali sono una funzione sperimentale che utilizza il riconoscimento vocale in rete di Google."</string> diff --git a/java/res/values-ja/config.xml b/java/res/values-ja/config.xml new file mode 100644 index 000000000..e0e3a8e41 --- /dev/null +++ b/java/res/values-ja/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0.22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml index 2589c89fc..96286d705 100644 --- a/java/res/values-ja/strings.xml +++ b/java/res/values-ja/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"よくある誤字・脱字を修正します"</string> <string name="show_suggestions" msgid="507074425254289133">"入力候補を表示"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"入力時に入力候補を表示する"</string> - <string name="auto_complete" msgid="1103196318775486023">"オートコンプリート"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"反転表示されている変換候補をスペースまたは句読点キーで挿入する"</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> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"オートコンプリート"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"反転表示されている変換候補をスペースまたは句読点キーで挿入する"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"OFF"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"中"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"強"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"バイグラム入力候補表示"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"直前の単語から入力候補を予測します"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Shift"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"音声入力"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"音声入力は現在英語には対応していますが、日本語には対応していません。"</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"音声入力はGoogleのネットワーク音声認識技術を利用した試験段階の機能です。"</string> diff --git a/java/res/values-ko/config.xml b/java/res/values-ko/config.xml new file mode 100644 index 000000000..e0e3a8e41 --- /dev/null +++ b/java/res/values-ko/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0.22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml index ab3aa91b0..6f645c794 100644 --- a/java/res/values-ko/strings.xml +++ b/java/res/values-ko/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"자주 발생하는 오타를 수정합니다."</string> <string name="show_suggestions" msgid="507074425254289133">"추천 단어 표시"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"글자를 입력하는 동안 추천 단어를 표시"</string> - <string name="auto_complete" msgid="1103196318775486023">"자동 완성"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"스페이스바와 문장부호 키로 강조 표시된 단어를 자동 삽입"</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> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"자동 완성"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"스페이스바와 문장부호 키로 강조 표시된 단어를 자동 삽입"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"사용안함"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"보통"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"적극적"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Bigram 추천"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"이전 단어를 사용하여 추천 기능 개선"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"더보기"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"음성 입력"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"음성 입력은 현재 자국어로 지원되지 않으며 영어로 작동됩니다."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"음성 입력은 Google의 네트워크화된 음성 인식을 사용하는 실험적 기능입니다."</string> diff --git a/java/res/values-nb/config.xml b/java/res/values-nb/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-nb/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml index c98b8f4da..b6842b4ed 100644 --- a/java/res/values-nb/strings.xml +++ b/java/res/values-nb/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Retter vanlige stavefeil"</string> <string name="show_suggestions" msgid="507074425254289133">"Vis forslag"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Vis foreslåtte ord under skriving"</string> - <string name="auto_complete" msgid="1103196318775486023">"Autofullføring"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Mellomrom og punktum setter automatisk inn valgt ord"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Vis innstillingsnøkkel"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatisk"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Vis alltid"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Autofullføring"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Mellomrom og punktum setter automatisk inn valgt ord"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Av"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Moderat"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Omfattende"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Bigram-forslag"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Bruk forrige ord til å forbedre forslaget"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Mer"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Stemmedata"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Stemmedata håndteres foreløpig ikke på ditt språk, men fungerer på engelsk."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Talekommandoer er en eksperimentell funksjon som bruker Googles nettverksbaserte talegjenkjenning."</string> diff --git a/java/res/values-nl/config.xml b/java/res/values-nl/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-nl/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml index c907344eb..8394d8be2 100644 --- a/java/res/values-nl/strings.xml +++ b/java/res/values-nl/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Hiermee worden veelvoorkomende typefouten gecorrigeerd"</string> <string name="show_suggestions" msgid="507074425254289133">"Suggesties weergeven"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Voorgestelde woorden weergeven tijdens typen"</string> - <string name="auto_complete" msgid="1103196318775486023">"Auto-aanvullen"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Gemarkeerd woord automatisch invoegen met spatiebalk en interpunctie"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Instellingscode weergeven"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatisch"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Altijd weergeven"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Auto-aanvullen"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Gemarkeerd woord automatisch invoegen met spatiebalk en interpunctie"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Uit"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Normaal"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Agressief"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Digram-suggesties"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Vorig woord gebruiken om suggestie te verbeteren"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"Alt"</string> + <string name="label_more_key" msgid="3760239494604948502">"Meer"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Spraakinvoer"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Spraakinvoer wordt momenteel niet ondersteund in uw taal, maar is wel beschikbaar in het Engels."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Spraakinvoer is een experimentele functie met de spraakherkenning van het Google-netwerk."</string> diff --git a/java/res/values-pl/config.xml b/java/res/values-pl/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-pl/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml index a2f429e23..03fd459ee 100644 --- a/java/res/values-pl/strings.xml +++ b/java/res/values-pl/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Poprawia częste błędy wpisywania"</string> <string name="show_suggestions" msgid="507074425254289133">"Pokaż sugestie"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Wyświetl sugerowane słowa podczas wpisywania"</string> - <string name="auto_complete" msgid="1103196318775486023">"Autouzupełnianie"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Spacja i znaki przestankowe wstawiają wyróżnione słowo"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Pokaż klawisz ustawień"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatycznie"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Zawsze pokazuj"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Autouzupełnianie"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Spacja i znaki przestankowe wstawiają wyróżnione słowo"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Wyłączone"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Umiarkowane"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Agresywne"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Sugestie dla bigramów"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Używaj poprzedniego wyrazu, aby polepszyć sugestię"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Więcej"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Wprowadzanie głosowe"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Wprowadzanie głosowe obecnie nie jest obsługiwane w Twoim języku, ale działa w języku angielskim."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Wprowadzanie głosowe to funkcja eksperymentalna wykorzystująca funkcję firmy Google umożliwiającą rozpoznawanie mowy przy użyciu sieci."</string> diff --git a/java/res/values-pt-rPT/config.xml b/java/res/values-pt-rPT/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-pt-rPT/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml index 01d96edc5..5d361ae1a 100644 --- a/java/res/values-pt-rPT/strings.xml +++ b/java/res/values-pt-rPT/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige os erros de escrita comuns"</string> <string name="show_suggestions" msgid="507074425254289133">"Mostrar sugestões"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Apresentar sugestões de palavras ao escrever"</string> - <string name="auto_complete" msgid="1103196318775486023">"Conclusão automática"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"A barra de espaços e a pontuação inserem automaticamente uma palavra realçada"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Mostrar tecla das definições"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automático"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostrar sempre"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Conclusão automática"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"A barra de espaços e a pontuação inserem automaticamente uma palavra realçada"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Desactivar"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Moderada"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Agressiva"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Sugestões Bigram"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Utilizar a palavra anterior para melhorar a sugestão"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Mais"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Entrada de voz"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Actualmente, a entrada de voz não é suportada para o seu idioma, mas funciona em inglês."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"A entrada de voz é uma funcionalidade experimental que utiliza o reconhecimento de voz em rede da Google."</string> diff --git a/java/res/values-pt/config.xml b/java/res/values-pt/config.xml new file mode 100644 index 000000000..e0e3a8e41 --- /dev/null +++ b/java/res/values-pt/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0.22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml index 0acaf25d6..2c78c86d8 100644 --- a/java/res/values-pt/strings.xml +++ b/java/res/values-pt/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Corrige erros comuns de digitação"</string> <string name="show_suggestions" msgid="507074425254289133">"Mostrar sugestões"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Exibir sugestões de palavras durante a digitação"</string> - <string name="auto_complete" msgid="1103196318775486023">"Conclusão automática"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Barra de espaço e pontuação inserem a palavra destacada"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Mostrar tecla de configurações"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automático"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Mostrar sempre"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Conclusão automática"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Barra de espaço e pontuação inserem a palavra destacada"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Desativado"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Moderado"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Agressivo"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Sugestões de bigrama"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Usar palavra anterior para melhorar a sugestão"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Mais"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Entrada de voz"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"A entrada de voz não é suportada no momento para o seu idioma, mas funciona em inglês."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"A entrada de voz é um recurso experimental que usa o reconhecimento de fala de rede do Google."</string> diff --git a/java/res/values-rm/config.xml b/java/res/values-rm/config.xml new file mode 100644 index 000000000..00d5e4cd4 --- /dev/null +++ b/java/res/values-rm/config.xml @@ -0,0 +1,25 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- no translation found for auto_complete_threshold_values:1 (1149464960325799386) --> + <!-- no translation found for auto_complete_threshold_values:2 (7684739510048377673) --> +</resources> diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml index 91dbf72ff..e667ca6f4 100644 --- a/java/res/values-rm/strings.xml +++ b/java/res/values-rm/strings.xml @@ -22,6 +22,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="english_ime_name" msgid="7252517407088836577">"Tastatura Android"</string> <string name="english_ime_settings" msgid="6661589557206947774">"Parameters da la tastatura Android"</string> + <!-- no translation found for english_ime_input_options (3909945612939668554) --> + <skip /> <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar cun smatgar in buttun"</string> <string name="sound_on_keypress" msgid="6093592297198243644">"Tun cun smatgar in buttun"</string> <!-- no translation found for popup_on_keypress (123894815723512944) --> @@ -46,8 +48,28 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Curregia sbagls da tippar currents"</string> <string name="show_suggestions" msgid="507074425254289133">"Mussar las propostas"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Mussar pleds proponids durant l\'endataziun"</string> + <!-- no translation found for prefs_settings_key (4623341240804046498) --> + <skip /> + <!-- no translation found for settings_key_mode_auto_name (2993460277873684680) --> + <skip /> + <!-- no translation found for settings_key_mode_always_show_name (3047567041784760575) --> + <skip /> + <!-- no translation found for settings_key_mode_always_hide_name (7833948046716923994) --> + <skip /> + <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> + <!-- no translation found for settings_key_modes:1 (881280041213210923) --> + <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> <string name="auto_complete" msgid="1103196318775486023">"Cumplettaziun automatica"</string> <string name="auto_complete_summary" msgid="6113149638718274624">"Inserir auto. il pled marcà cun la tasta da vid/interpuncziun"</string> + <!-- no translation found for auto_completion_threshold_mode_off (8100705925921970219) --> + <skip /> + <!-- no translation found for auto_completion_threshold_mode_modest (1639075698991437157) --> + <skip /> + <!-- no translation found for auto_completion_threshold_mode_aggeressive (1153130653281397959) --> + <skip /> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <!-- no translation found for bigram_suggestion (1323347224043514969) --> <skip /> <!-- no translation found for bigram_suggestion_summary (4383845146070101531) --> @@ -58,17 +80,17 @@ <item msgid="4894328801530136615">"Avanzà"</item> </string-array> <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Memorisà"</string> - <string name="tip_long_press" msgid="6101270866284343344">"Tegnair smatgà per mussar ils accents (à, é, etc.)"</string> + <string name="tip_long_press" msgid="6101270866284343344">"\"Tegnair smatgà per mussar ils accents (à, é, etc.)\""</string> <string name="tip_dismiss" msgid="7585579046862204381">"Smatgar ↶ per serrar la tastatura"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Acceder a cifras e simbols"</string> <string name="tip_add_to_dictionary" msgid="1487293888469227817">"Smatgar ditg sin il pled dal tut a sanestra per l\'agiuntar al dicziunari"</string> <string name="touch_to_continue" msgid="7869803257948414531">"Tutgar quest commentari per cuntinuar »"</string> - <string name="touch_to_finish" msgid="7990196086480585789">"Tutgar qua, per serrar quest commentari e cumenzar a tippar!"</string> + <string name="touch_to_finish" msgid="7990196086480585789">"\"Tutgar qua, per serrar quest commentari e cumenzar a tippar!\""</string> <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"La tastatura vegn adina averta sche Vus tutgais in champ da text."</b></string> - <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"Tegnai smatgà ina tasta per mussar ils segns spezials"\n"(ø, ö, ô, ó etc.)."</b></string> + <string name="tip_to_view_accents" msgid="5433158573693308501">"\""<b>"Tegnai smatgà ina tasta per mussar ils segns spezials"\n"(ø, ö, ô, ó etc.)."</b>"\""</string> <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"Midai a numers e simbols cun tutgar quest buttun."</b></string> <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"Turnai a letras cun smatgar danovamain quest buttun."</b></string> - <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Tegnai smatgà quest buttun per midar ils parameters da tastatura, sco p. ex. la cumplettaziun automatica."</b></string> + <string name="tip_to_launch_settings" msgid="8402961128983196128">"\""<b>"Tegnai smatgà quest buttun per midar ils parameters da tastatura, sco p. ex. la cumplettaziun automatica."</b>"\""</string> <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Empruvai!"</b></string> <string name="label_go_key" msgid="1635148082137219148">"Dai"</string> <string name="label_next_key" msgid="362972844525672568">"Vinavant"</string> @@ -78,11 +100,19 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <!-- no translation found for label_more_key (3760239494604948502) --> + <skip /> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Cumonds vocals"</string> - <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Cumonds vocals en Vossa lingua na vegnan actualmain betg sustegnids, ma la funcziun è disponibla per englais."</string> + <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"\"Cumonds vocals en Vossa lingua na vegnan actualmain betg sustegnids, ma la funcziun è disponibla per englais.\""</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Ils cumonds vocals èn ina funcziunalitad experimentala che utilisescha la renconuschientscha vocala da rait da Google."</string> - <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Per deactivar ils cumonds vocals, avri ils parameters da tastatura."</string> - <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Per utilisar ils cumonds vocals, smatgai il buttun dal microfon u stritgai cun il det sur la tastatura dal visur."</string> + <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"\"Per deactivar ils cumonds vocals, avri ils parameters da tastatura.\""</string> + <string name="voice_hint_dialog_message" msgid="6892342981545727994">"\"Per utilisar ils cumonds vocals, smatgai il buttun dal microfon u stritgai cun il det sur la tastatura dal visur.\""</string> <string name="voice_listening" msgid="467518160751321844">"Ussa discurrer"</string> <string name="voice_working" msgid="6666937792815731889">"Operaziun en progress"</string> <string name="voice_initializing" msgid="661962047129906646"></string> @@ -95,7 +125,7 @@ <string name="voice_no_match" msgid="4285117547030179174">"Betg chattà correspundenzas"</string> <string name="voice_not_installed" msgid="5552450909753842415">"Betg installà la tschertga vocala"</string> <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Commentari:"</b>" Stritgai cun il det sur la tastatura per discurrer."</string> - <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Commentari:"</b>" Empruvai la proxima giada d\'agiuntar segns d\'interpuncziun sco \"punct\", \"comma\" u \"segn da dumonda\" cun cumonds vocals."</string> + <string name="voice_punctuation_hint" msgid="1611389463237317754">"\""<b>"Commentari:"</b>" Empruvai la proxima giada d\'agiuntar segns d\'interpuncziun sco \"\"punct\"\", \"\"comma\"\" u \"\"segn da dumonda\"\" cun cumonds vocals.\""</string> <string name="cancel" msgid="6830980399865683324">"Interrumper"</string> <string name="ok" msgid="7898366843681727667">"OK"</string> <string name="voice_input" msgid="2466640768843347841">"Cumonds vocals"</string> @@ -112,7 +142,7 @@ <string name="auto_submit" msgid="9151008027068358518">"Trametter automaticamain suenter il cumond vocal"</string> <string name="auto_submit_summary" msgid="4961875269610384226">"Smatgai sin la tasta enter sche Vus exequis ina tschertga u siglis al proxim champ."</string> <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Avrir la tastatura"\n</b></font><font size="3">\n</font>"Tutgai inqual champ da text."</string> - <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Serrar la tastatura"\n</b></font><font size="3">\n</font>"Smatgai il buttun \"Enavos\"."</string> + <string name="close_the_keyboard" msgid="6251022259044940103">"\""<font size="17"><b>"Serrar la tastatura"\n</b></font><font size="3">\n</font>"Smatgai il buttun \"\"Enavos\"\".\""</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tutgar e tegnair smatgà in buttun per acceder a las opziuns"\n</b></font><font size="3">\n</font>"Accedi a segns d\'interpuncziun ed accents."</string> <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Parameters da tastatura"\n</b></font><font size="3">\n</font>"Tutgai e tegnai smatgà il buttun "<b>"?123"</b>"."</string> <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> @@ -120,16 +150,24 @@ <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> + <!-- no translation found for selectInputMethod (315076553378705821) --> + <skip /> <string name="language_selection_title" msgid="1651299598555326750">"Linguas da cumonds vocals"</string> <string name="language_selection_summary" msgid="187110938289512256">"Stritgar cun il det sur la tasta da vid per midar la lingua"</string> - <string name="hint_add_to_dictionary" msgid="8058519710062071085">"← Tippar danovamain per memorisar"</string> + <!-- outdated translation 8058519710062071085 --> <string name="hint_add_to_dictionary" msgid="9006292060636342317">"← Tippar danovamain per memorisar"</string> <string name="has_dictionary" msgid="6071847973466625007">"Dicziunari disponibel"</string> <!-- no translation found for prefs_enable_log (6620424505072963557) --> <skip /> <!-- no translation found for prefs_description_log (5827825607258246003) --> <skip /> + <!-- no translation found for prefs_enable_recorrection (4588408906649533582) --> + <skip /> + <!-- no translation found for prefs_enable_recorrection_summary (1056068922330206170) --> + <skip /> <!-- no translation found for keyboard_layout (437433231038683666) --> <skip /> - <!-- no translation found for prefs_debug_mode (3889340783846594980) --> + <!-- no translation found for subtype_mode_keyboard (2242090416595003881) --> + <skip /> + <!-- no translation found for subtype_mode_voice (4394113125441627771) --> <skip /> </resources> diff --git a/java/res/values-ru/config.xml b/java/res/values-ru/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-ru/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml index ae5e3917b..fd8a17ed5 100644 --- a/java/res/values-ru/strings.xml +++ b/java/res/values-ru/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Исправлять распространенные опечатки"</string> <string name="show_suggestions" msgid="507074425254289133">"Предлагать варианты"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Предлагать варианты слов во время ввода"</string> - <string name="auto_complete" msgid="1103196318775486023">"Автозавершение"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"При нажатии пробела вставлять предложенное слово"</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> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Автозавершение"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"При нажатии пробела вставлять предложенное слово"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Выключено"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Умеренное"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Активное"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Биграммные подсказки"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Используйте предыдущее слово, чтобы исправить подсказку"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"АБВ"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Еще"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Голосовой ввод"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"В настоящее время функция голосового ввода не поддерживает ваш язык, но вы можете пользоваться ей на английском."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Голосовой ввод – экспериментальная функция на основе технологии сетевого распознавания речи от Google."</string> diff --git a/java/res/values-sv/config.xml b/java/res/values-sv/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-sv/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml index eaa3d1961..b45b5da3e 100644 --- a/java/res/values-sv/strings.xml +++ b/java/res/values-sv/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Åtgärdar automatiskt vanliga misstag"</string> <string name="show_suggestions" msgid="507074425254289133">"Visa förslag"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Visar ordförslag när du skriver"</string> - <string name="auto_complete" msgid="1103196318775486023">"Komplettera automatiskt"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Blanksteg och punkt infogar automatiskt markerat ord"</string> <string name="prefs_settings_key" msgid="4623341240804046498">"Visa inställningsknapp"</string> <string name="settings_key_mode_auto_name" msgid="2993460277873684680">"Automatiskt"</string> <string name="settings_key_mode_always_show_name" msgid="3047567041784760575">"Visa alltid"</string> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Komplettera automatiskt"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Blanksteg och punkt infogar automatiskt markerat ord"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Av"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Måttlig"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Aggressiv"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Bigramförslag"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Förbättra förslaget med föregående ord"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Mer"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Röstindata"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Röstindata stöds inte på ditt språk än, men tjänsten fungerar på engelska."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Röstinmatning är en funktion på experimentstadiet som använder Googles nätverks taligenkänning."</string> diff --git a/java/res/values-tr/config.xml b/java/res/values-tr/config.xml new file mode 100644 index 000000000..419f19623 --- /dev/null +++ b/java/res/values-tr/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0,22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml index 599ddb20a..bdfb9b280 100644 --- a/java/res/values-tr/strings.xml +++ b/java/res/values-tr/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"Yaygın olarak yapılan yazım hatalarını düzeltir"</string> <string name="show_suggestions" msgid="507074425254289133">"Önerileri göster"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Yazarken önerilen kelimeleri görüntüle"</string> - <string name="auto_complete" msgid="1103196318775486023">"Otomatik tamamla"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"Boşluk tuşu ve noktalama vurgulanan kelimeyi otomatik ekler"</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> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"Otomatik tamamla"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Boşluk tuşu ve noktalama vurgulanan kelimeyi otomatik ekler"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"Kapalı"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"Tutarlı"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"Agresif"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"Bigram Önerileri"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Öneriyi geliştirmek için önceki kelimeyi kullanın"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"Diğer"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"Ses girişi"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Ses girişi, şu anda sizin diliniz için desteklenmiyor ama İngilizce dilinde kullanılabilir."</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Ses girişi, Google\'ın ağ bağlantılı ses tanıma işlevini kullanan deneysel bir özelliktir."</string> diff --git a/java/res/values-xlarge/bools.xml b/java/res/values-xlarge/bools.xml new file mode 100644 index 000000000..2ac5fc624 --- /dev/null +++ b/java/res/values-xlarge/bools.xml @@ -0,0 +1,26 @@ +<?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. +*/ +--> +<resources> + <!-- Whether or not Popup on key press is enabled by default --> + <bool name="default_popup_preview">false</bool> + <bool name="config_enable_show_settings_key_option">false</bool> + <bool name="config_dynamic_key_top_enter_key">false</bool> + <bool name="config_dynamic_key_top_symbol_key">false</bool> +</resources> diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml new file mode 100644 index 000000000..56f5a3c3c --- /dev/null +++ b/java/res/values-xlarge/dimens.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources> + <!-- key_height + key_bottom_gap = popup_key_height --> + <dimen name="key_height">0.450in</dimen> + <dimen name="key_bottom_gap">0.03in</dimen> + <dimen name="key_horizontal_gap">0.03in</dimen> + <dimen name="popup_key_height">0.450in</dimen> + <dimen name="keyboard_bottom_padding">0.10in</dimen> + <!-- key_height x 1.6 --> + <dimen name="key_preview_height">0.720in</dimen> + <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. --> + <!-- popup_key_height x 1.7 --> + <dimen name="mini_keyboard_slide_allowance">0.765in</dimen> + <!-- popup_key_height x 1.0 --> + <dimen name="mini_keyboard_vertical_correction">-0.450in</dimen> + + <dimen name="key_text_size">0.175in</dimen> + <dimen name="key_label_text_size">0.100in</dimen> + <dimen name="key_preview_text_size_large">0.245in</dimen> + + <dimen name="candidate_strip_height">46dip</dimen> +</resources> diff --git a/java/res/values-zh-rCN/config.xml b/java/res/values-zh-rCN/config.xml new file mode 100644 index 000000000..e0e3a8e41 --- /dev/null +++ b/java/res/values-zh-rCN/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0.22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml index 7a4bcea0f..81593c34c 100644 --- a/java/res/values-zh-rCN/strings.xml +++ b/java/res/values-zh-rCN/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"纠正常见的输入错误"</string> <string name="show_suggestions" msgid="507074425254289133">"显示建议"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"输入时启用联想提示"</string> - <string name="auto_complete" msgid="1103196318775486023">"自动填写"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"按空格键和标点符号时自动插入突出显示的字词"</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> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"自动填写"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"按空格键和标点符号时自动插入突出显示的字词"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"关闭"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"部分"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"全部"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"双连词建议"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"使用以前的字词改进建议"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"更多"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"语音输入"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"语音输入功能当前还不支持您的语言,您只能输入英语语音。"</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"语音输入是一项试验性的功能,它采用了 Google 的网络语音识别功能。"</string> diff --git a/java/res/values-zh-rTW/config.xml b/java/res/values-zh-rTW/config.xml new file mode 100644 index 000000000..e0e3a8e41 --- /dev/null +++ b/java/res/values-zh-rTW/config.xml @@ -0,0 +1,28 @@ +<?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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="auto_complete_threshold_values"> + <item msgid="3320983138663712864"></item> + <item msgid="1149464960325799386">"0.22"</item> + <item msgid="7684739510048377673">"0"</item> + </string-array> +</resources> diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml index cbd079633..c3ccd17f0 100644 --- a/java/res/values-zh-rTW/strings.xml +++ b/java/res/values-zh-rTW/strings.xml @@ -46,8 +46,6 @@ <string name="quick_fixes_summary" msgid="3405028402510332373">"修正一般打字錯誤"</string> <string name="show_suggestions" msgid="507074425254289133">"顯示建議"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"打字時顯示建議字詞"</string> - <string name="auto_complete" msgid="1103196318775486023">"自動完成"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"在反白顯示的字詞處自動插入空白鍵和標點符號鍵盤"</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> @@ -55,6 +53,14 @@ <!-- no translation found for settings_key_modes:0 (8549888726962891527) --> <!-- no translation found for settings_key_modes:1 (881280041213210923) --> <!-- no translation found for settings_key_modes:2 (7317310620171067848) --> + <string name="auto_complete" msgid="1103196318775486023">"自動完成"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"在反白顯示的字詞處自動插入空白鍵和標點符號鍵盤"</string> + <string name="auto_completion_threshold_mode_off" msgid="8100705925921970219">"關閉"</string> + <string name="auto_completion_threshold_mode_modest" msgid="1639075698991437157">"普通模式"</string> + <string name="auto_completion_threshold_mode_aggeressive" msgid="1153130653281397959">"加強模式"</string> + <!-- no translation found for auto_completion_threshold_modes:0 (3772724687113374811) --> + <!-- no translation found for auto_completion_threshold_modes:1 (7483119907292449051) --> + <!-- no translation found for auto_completion_threshold_modes:2 (532410375228539727) --> <string name="bigram_suggestion" msgid="1323347224043514969">"雙連詞建議"</string> <string name="bigram_suggestion_summary" msgid="4383845146070101531">"根據前一個字詞自動找出更適合的建議"</string> <string-array name="prediction_modes"> @@ -83,6 +89,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> + <string name="label_more_key" msgid="3760239494604948502">"更多"</string> + <!-- no translation found for label_tab_key (6532779603382157482) --> + <skip /> + <!-- no translation found for label_pause_key (181098308428035340) --> + <skip /> + <!-- no translation found for label_wait_key (6402152600878093134) --> + <skip /> <string name="voice_warning_title" msgid="4419354150908395008">"語音輸入"</string> <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"語音輸入目前不支援您的語言,但是可以辨識英文。"</string> <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"語音輸入這項實驗功能運用了 Google 的網路語音辨識系統。"</string> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 995373e84..318286ea8 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -69,4 +69,68 @@ </declare-styleable> + <declare-styleable name="BaseKeyboard"> + <!-- Default width of a key, in pixels or percentage of display width. --> + <attr name="keyWidth" format="dimension|fraction" /> + <!-- Default height of a key, in pixels or percentage of display width. --> + <attr name="keyHeight" format="dimension|fraction" /> + <!-- Default horizontal gap between keys. --> + <attr name="horizontalGap" format="dimension|fraction" /> + <!-- Default vertical gap between rows of keys. --> + <attr name="verticalGap" format="dimension|fraction" /> + </declare-styleable> + + <declare-styleable name="BaseKeyboard_Key"> + <!-- The unicode value or comma-separated values that this key outputs. --> + <attr name="codes" format="integer|string" /> + <!-- The XML keyboard layout of any popup keyboard. --> + <attr name="popupKeyboard" format="reference" /> + <!-- The characters to display in the popup keyboard. --> + <attr name="popupCharacters" format="string" /> + <!-- Key edge flags. --> + <attr name="keyEdgeFlags"> + <!-- Key is anchored to the left of the keyboard. --> + <flag name="left" value="1" /> + <!-- Key is anchored to the right of the keyboard. --> + <flag name="right" value="2" /> + </attr> + <!-- Whether this is a modifier key such as Alt or Shift. --> + <attr name="isModifier" format="boolean" /> + <!-- Whether this is a toggle key. --> + <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 label to display on the key when keyboard is in temporary shift mode. --> + <attr name="temporaryShiftKeyLabel" format="string" /> + <!-- 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" /> + <!-- Mode of the keyboard. If the mode doesn't match the + requested keyboard mode, the key will be skipped. --> + <attr name="keyboardMode" /> + </declare-styleable> + + <declare-styleable name="BaseKeyboard_Row"> + <!-- Row edge flags. --> + <attr name="rowEdgeFlags"> + <!-- Row is anchored to the top of the keyboard. --> + <flag name="top" value="4" /> + <!-- Row is anchored to the bottom of the keyboard. --> + <flag name="bottom" value="8" /> + </attr> + <!-- Mode of the keyboard. If the mode doesn't match the + requested keyboard mode, the row will be skipped. --> + <attr name="keyboardMode" format="reference" /> + </declare-styleable> + + <declare-styleable name="BaseKeyboard_Include"> + <attr name="keyboardLayout" format="reference" /> + </declare-styleable> </resources> diff --git a/java/res/values/bools.xml b/java/res/values/bools.xml index 5a24e4c60..0497a6aed 100644 --- a/java/res/values/bools.xml +++ b/java/res/values/bools.xml @@ -30,4 +30,7 @@ <bool name="default_popup_preview">true</bool> <bool name="default_recorrection_enabled">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_dynamic_key_top_enter_key">true</bool> + <bool name="config_dynamic_key_top_symbol_key">true</bool> </resources> diff --git a/java/res/values/config.xml b/java/res/values/config.xml index edb6cd845..456d9ad4d 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -27,6 +27,19 @@ <integer name="config_mini_keyboard_fadeout_anim_time">100</integer> <integer name="config_delay_before_key_repeat_start">400</integer> <integer name="config_key_repeat_interval">50</integer> + <integer name="config_keyboard_grid_width">32</integer> + <integer name="config_keyboard_grid_height">16</integer> <integer name="config_long_press_key_timeout">400</integer> + <integer name="config_long_press_shift_key_timeout">1200</integer> <integer name="config_multi_tap_key_timeout">800</integer> + <string-array name="auto_complete_threshold_values"> + <!-- Off, When auto completing setting is Off, this value is not used. --> + <item></item> + <!-- Modest : Suggestion whose normalized score is greater than this value + will be subject to auto-completion. --> + <item>0.22</item> + <!-- Aggressive : Suggestion whose normalized score is greater than this value + will be subject to auto-completion. --> + <item>0</item> + </string-array> </resources> diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index c00c56a89..765262d56 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -22,19 +22,9 @@ <!-- key_height + key_bottom_gap = popup_key_height --> <dimen name="key_height">0.290in</dimen> <dimen name="key_bottom_gap">0.035in</dimen> + <dimen name="key_horizontal_gap">0.000in</dimen> <dimen name="popup_key_height">0.325in</dimen> <dimen name="keyboard_bottom_padding">0.06in</dimen> - <dimen name="bubble_pointer_offset">22dip</dimen> - <dimen name="candidate_strip_height">42dip</dimen> - <dimen name="candidate_strip_fading_edge_length">63dip</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="key_text_size">0.13in</dimen> - <dimen name="key_label_text_size">0.083in</dimen> - <dimen name="key_preview_text_size_large">0.236in</dimen> - <dimen name="key_preview_offset">0.000in</dimen> <!-- key_height x 1.6 --> <dimen name="key_preview_height">0.464in</dimen> <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. --> @@ -42,9 +32,23 @@ <dimen name="mini_keyboard_slide_allowance">0.553in</dimen> <!-- popup_key_height x 1.0 --> <dimen name="mini_keyboard_vertical_correction">-0.325in</dimen> - <dimen name="key_hysteresis_distance">0.05in</dimen> + + <dimen name="key_text_size">0.13in</dimen> + <dimen name="key_label_text_size">0.083in</dimen> + <dimen name="key_preview_text_size_large">0.236in</dimen> + <dimen name="key_preview_offset">0.000in</dimen> <!-- We use "inch", not "dip" because this value tries dealing with physical distance related to user's finger. --> <dimen name="keyboard_vertical_correction">-0.05in</dimen> + + <dimen name="candidate_strip_height">42dip</dimen> + <dimen name="candidate_strip_fading_edge_length">63dip</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> <dimen name="candidate_min_touchable_width">0.3in</dimen> </resources> diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml index 936609924..a7c1fcd18 100644 --- a/java/res/values/donottranslate.xml +++ b/java/res/values/donottranslate.xml @@ -23,7 +23,7 @@ <!-- Symbols that are sentence separators, for purposes of making it hug the last sentence. --> <string name="sentence_separators">.,!?)</string> <!-- Symbols that are suggested between words --> - <string name="suggested_punctuations">!?,\u0022\u0027:()-/@_</string> + <string name="suggested_punctuations">!?,\u0022\u0027:();-/@_</string> <!-- Option values to show/hide the settings key in onscreen keyboard --> <!-- Automatically decide to show or hide the settings key --> diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index 6644d2224..1f73b159f 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -31,7 +31,7 @@ <!-- Option to play back sound on keypress in soft keyboard --> <string name="sound_on_keypress">Sound on keypress</string> - <!-- Option to pop up the character with a larger font above soft keyboard --> + <!-- Option to control whether or not to show a popup with a larger font on each key press. --> <string name="popup_on_keypress">Popup on keypress</string> <!-- Option to enable using nearby keys when correcting/predicting --> @@ -86,11 +86,6 @@ <!-- Description for show suggestions --> <string name="show_suggestions_summary">Display suggested words while typing</string> - <!-- Option to enable auto completion --> - <string name="auto_complete">Auto-complete</string> - <!-- Description for auto completion --> - <string name="auto_complete_summary">Spacebar and punctuation automatically insert highlighted word</string> - <!-- Option to show/hide the settings key --> <string name="prefs_settings_key">Show settings key</string> <!-- Array of the settings key mode values --> @@ -112,6 +107,31 @@ <item>@string/settings_key_mode_always_hide_name</item> </string-array> + <!-- Option to decide the auto completion threshold score --> + <!-- Option to enable auto completion --> + <string name="auto_complete">Auto-complete</string> + <!-- Description for auto completion --> + <string name="auto_complete_summary">Spacebar and punctuation automatically insert highlighted word</string> + <string name="auto_completion_threshold_mode_value_off" translatable="false">0</string> + <string name="auto_completion_threshold_mode_value_modest" translatable="false">1</string> + <string name="auto_completion_threshold_mode_value_aggeressive" translatable="false">2</string> + <string-array name="auto_completion_threshold_mode_values" translatable="false"> + <item>@string/auto_completion_threshold_mode_value_off</item> + <item>@string/auto_completion_threshold_mode_value_modest</item> + <item>@string/auto_completion_threshold_mode_value_aggeressive</item> + </string-array> + <!-- Option to disable auto completion. --> + <string name="auto_completion_threshold_mode_off">Off</string> + <!-- Option to use modest auto completion. --> + <string name="auto_completion_threshold_mode_modest">Modest</string> + <!-- Option to use aggressive auto completion. --> + <string name="auto_completion_threshold_mode_aggeressive">Aggressive</string> + <string-array name="auto_completion_threshold_modes"> + <item>@string/auto_completion_threshold_mode_off</item> + <item>@string/auto_completion_threshold_mode_modest</item> + <item>@string/auto_completion_threshold_mode_aggeressive</item> + </string-array> + <!-- Option to enable bigram completion --> <string name="bigram_suggestion">Bigram Suggestions</string> <!-- Description for auto completion --> @@ -192,6 +212,14 @@ <string name="label_alpha_key">ABC</string> <!-- Label for ALT modifier key. Must be short to fit on key! --> <string name="label_alt_key">ALT</string> + <!-- Label for Shift modifier key of symbol keyboard. Must be short to fit on key! --> + <string name="label_more_key">More</string> + <!-- Label for "Tab" key. Must be short to fit on key! --> + <string name="label_tab_key">Tab</string> + <!-- Label for "Pause" key of phone number keyboard. Must be short to fit on key! --> + <string name="label_pause_key">Pause</string> + <!-- Label for "Wait" key of phone number keyboard. Must be short to fit on key! --> + <string name="label_wait_key">Wait</string> <!-- Voice related labels --> diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml index b7b1b1769..f1f9904e3 100644 --- a/java/res/xml-da/kbd_qwerty.xml +++ b/java/res/xml-da/kbd_qwerty.xml @@ -25,512 +25,155 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.09%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.09%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" /> - <Key - android:keyLabel="å" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + 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:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyLabel="å" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" /> <Key - android:keyLabel="æ" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_ae" /> + latin:keyLabel="æ" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_ae" /> <Key - android:keyLabel="ø" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_oe" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="ø" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_oe" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyWidth="10%p" + latin:keyWidth="10%p" > <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_keyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="m" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="z" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:isModifier="true" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:keyLabel="m" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </Keyboard> diff --git a/java/res/xml-da/kbd_qwerty_black.xml b/java/res/xml-da/kbd_qwerty_black.xml index 3fb4acd1b..b7ebc66de 100644 --- a/java/res/xml-da/kbd_qwerty_black.xml +++ b/java/res/xml-da/kbd_qwerty_black.xml @@ -25,454 +25,154 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.09%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.09%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" /> - <Key - android:keyLabel="å" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + 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:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyLabel="å" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" /> <Key - android:keyLabel="æ" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_ae" /> + latin:keyLabel="æ" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_ae" /> <Key - android:keyLabel="ø" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_oe" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="ø" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_oe" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyWidth="10%p" + latin:keyWidth="10%p" > <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_bkeyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="m" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="z" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:keyLabel="m" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" /> </Keyboard> diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml index 6f34b45f1..0832cbc92 100644 --- a/java/res/xml-de/kbd_qwerty.xml +++ b/java/res/xml-de/kbd_qwerty.xml @@ -19,497 +19,141 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" - android:keyEdgeFlags="right" /> + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_q" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="w" + latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="z" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" + latin:keyEdgeFlags="right" /> </Row> <Row> + <Spacer + latin:horizontalGap="5%p" /> <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:horizontalGap="5%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" - android:keyEdgeFlags="right" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_keyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="m" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="y" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:isModifier="true" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:keyLabel="m" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </Keyboard> diff --git a/java/res/xml-de/kbd_qwerty_black.xml b/java/res/xml-de/kbd_qwerty_black.xml index 833537019..13a7dcb79 100644 --- a/java/res/xml-de/kbd_qwerty_black.xml +++ b/java/res/xml-de/kbd_qwerty_black.xml @@ -19,439 +19,140 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" - android:keyEdgeFlags="right" /> + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_q" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="w" + latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="z" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" + latin:keyEdgeFlags="right" /> </Row> <Row> + <Spacer + latin:horizontalGap="5%p" /> <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:horizontalGap="5%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" - android:keyEdgeFlags="right" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_bkeyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="m" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="/" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="\@" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:keyLabel="/" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:keyLabel="\@" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="y" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:keyLabel="m" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" /> </Keyboard> diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml index 9a2c75d8c..95c107382 100644 --- a/java/res/xml-fr/kbd_qwerty.xml +++ b/java/res/xml-fr/kbd_qwerty.xml @@ -19,498 +19,141 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" - android:keyEdgeFlags="right" /> + latin:keyLabel="a" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="z" + latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyEdgeFlags="left" /> + latin:keyLabel="q" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_q" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" /> <Key - android:keyLabel="m" - android:keyEdgeFlags="right" /> + latin:keyLabel="m" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_keyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="\'" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="w" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:isModifier="true" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:keyLabel="\'" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </Keyboard> diff --git a/java/res/xml-fr/kbd_qwerty_black.xml b/java/res/xml-fr/kbd_qwerty_black.xml index f11c4a0ba..b46ce9cb9 100644 --- a/java/res/xml-fr/kbd_qwerty_black.xml +++ b/java/res/xml-fr/kbd_qwerty_black.xml @@ -19,440 +19,140 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" - android:keyEdgeFlags="right" /> + latin:keyLabel="a" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="z" + latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyEdgeFlags="left" /> + latin:keyLabel="q" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_q" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" /> <Key - android:keyLabel="m" - android:keyEdgeFlags="right" /> + latin:keyLabel="m" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_bkeyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="\'" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="w" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:keyLabel="\'" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" /> </Keyboard> diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml index 5d8338ae8..fd94a1202 100644 --- a/java/res/xml-iw/kbd_qwerty.xml +++ b/java/res/xml-iw/kbd_qwerty.xml @@ -19,456 +19,92 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > + <Spacer + latin:horizontalGap="5%p" /> <Key - android:keyLabel="ק" - android:horizontalGap="5%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="ק" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="ר" /> + latin:keyLabel="ר" /> <Key - android:keyLabel="א" /> + latin:keyLabel="א" /> <Key - android:keyLabel="ט" /> + latin:keyLabel="ט" /> <Key - android:keyLabel="ו" /> + latin:keyLabel="ו" /> <Key - android:keyLabel="ן" /> + latin:keyLabel="ן" /> <Key - android:keyLabel="ם" /> + latin:keyLabel="ם" /> <Key - android:keyLabel="פ" /> + latin:keyLabel="פ" /> + <Spacer + latin:horizontalGap="1.25%p" /> <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="13.75%p" - android:isModifier="true" - android:horizontalGap="1.25%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="13.75%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="ש" - android:keyEdgeFlags="left" /> + latin:keyLabel="ש" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="ד" /> + latin:keyLabel="ד" /> <Key - android:keyLabel="ג" /> + latin:keyLabel="ג" /> <Key - android:keyLabel="כ" /> + latin:keyLabel="כ" /> <Key - android:keyLabel="ע" /> + latin:keyLabel="ע" /> <Key - android:keyLabel="י" /> + latin:keyLabel="י" /> <Key - android:keyLabel="ח" /> + latin:keyLabel="ח" /> <Key - android:keyLabel="ל" /> + latin:keyLabel="ל" /> <Key - android:keyLabel="ך" /> + latin:keyLabel="ך" /> <Key - android:keyLabel="ף" - android:keyEdgeFlags="right" /> + latin:keyLabel="ף" + latin:keyEdgeFlags="right" /> </Row> <Row> + <Spacer + latin:horizontalGap="5%p" /> <Key - android:keyLabel="ז" - android:horizontalGap="5%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="ז" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="ס" /> + latin:keyLabel="ס" /> <Key - android:keyLabel="ב" /> + latin:keyLabel="ב" /> <Key - android:keyLabel="ה" /> + latin:keyLabel="ה" /> <Key - android:keyLabel="נ" /> + latin:keyLabel="נ" /> <Key - android:keyLabel="מ" /> + latin:keyLabel="מ" /> <Key - android:keyLabel="צ" /> + latin:keyLabel="צ" /> <Key - android:keyLabel="ת" /> + latin:keyLabel="ת" /> <Key - android:keyLabel="ץ" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:keyLabel="ץ" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </Keyboard> diff --git a/java/res/xml-iw/kbd_qwerty_black.xml b/java/res/xml-iw/kbd_qwerty_black.xml index eee6dc158..1c1c1e37f 100644 --- a/java/res/xml-iw/kbd_qwerty_black.xml +++ b/java/res/xml-iw/kbd_qwerty_black.xml @@ -19,398 +19,91 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > + <Spacer + latin:horizontalGap="5%p" /> <Key - android:keyLabel="ק" - android:horizontalGap="5%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="ק" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="ר" /> + latin:keyLabel="ר" /> <Key - android:keyLabel="א" /> + latin:keyLabel="א" /> <Key - android:keyLabel="ט" /> + latin:keyLabel="ט" /> <Key - android:keyLabel="ו" /> + latin:keyLabel="ו" /> <Key - android:keyLabel="ן" /> + latin:keyLabel="ן" /> <Key - android:keyLabel="ם" /> + latin:keyLabel="ם" /> <Key - android:keyLabel="פ" /> + latin:keyLabel="פ" /> + <Spacer + latin:horizontalGap="1.25%p" /> <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="13.75%p" - android:horizontalGap="1.25%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="13.75%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="ש" - android:keyEdgeFlags="left" /> + latin:keyLabel="ש" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="ד" /> + latin:keyLabel="ד" /> <Key - android:keyLabel="ג" /> + latin:keyLabel="ג" /> <Key - android:keyLabel="כ" /> + latin:keyLabel="כ" /> <Key - android:keyLabel="ע" /> + latin:keyLabel="ע" /> <Key - android:keyLabel="י" /> + latin:keyLabel="י" /> <Key - android:keyLabel="ח" /> + latin:keyLabel="ח" /> <Key - android:keyLabel="ל" /> + latin:keyLabel="ל" /> <Key - android:keyLabel="ך" /> + latin:keyLabel="ך" /> <Key - android:keyLabel="ף" - android:keyEdgeFlags="right" /> + latin:keyLabel="ף" + latin:keyEdgeFlags="right" /> </Row> <Row> + <Spacer + latin:horizontalGap="5%p" /> <Key - android:keyLabel="ז" - android:horizontalGap="5%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="ז" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="ס" /> + latin:keyLabel="ס" /> <Key - android:keyLabel="ב" /> + latin:keyLabel="ב" /> <Key - android:keyLabel="ה" /> + latin:keyLabel="ה" /> <Key - android:keyLabel="נ" /> + latin:keyLabel="נ" /> <Key - android:keyLabel="מ" /> + latin:keyLabel="מ" /> <Key - android:keyLabel="צ" /> + latin:keyLabel="צ" /> <Key - android:keyLabel="ת" /> + latin:keyLabel="ת" /> <Key - android:keyLabel="ץ" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="ץ" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" /> </Keyboard> diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml index 14071d770..32512daaa 100644 --- a/java/res/xml-nb/kbd_qwerty.xml +++ b/java/res/xml-nb/kbd_qwerty.xml @@ -25,512 +25,155 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.09%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.09%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" /> - <Key - android:keyLabel="å" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + 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:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyLabel="å" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" /> <Key - android:keyLabel="ø" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_oe" /> + latin:keyLabel="ø" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_oe" /> <Key - android:keyLabel="æ" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_ae" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="æ" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_ae" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyWidth="10%p" + latin:keyWidth="10%p" > <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_keyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="m" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="z" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:isModifier="true" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:keyLabel="m" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </Keyboard> diff --git a/java/res/xml-nb/kbd_qwerty_black.xml b/java/res/xml-nb/kbd_qwerty_black.xml index d90313a0b..982a3de65 100644 --- a/java/res/xml-nb/kbd_qwerty_black.xml +++ b/java/res/xml-nb/kbd_qwerty_black.xml @@ -25,454 +25,154 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.09%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.09%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" /> - <Key - android:keyLabel="å" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + 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:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyLabel="å" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" /> <Key - android:keyLabel="ø" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_oe" /> + latin:keyLabel="ø" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_oe" /> <Key - android:keyLabel="æ" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_ae" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="æ" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_ae" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyWidth="10%p" + latin:keyWidth="10%p" > <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_bkeyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="m" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="z" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:keyLabel="m" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" /> </Keyboard> diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml index c0b98bafa..80a9ddd4f 100644 --- a/java/res/xml-ru/kbd_qwerty.xml +++ b/java/res/xml-ru/kbd_qwerty.xml @@ -19,496 +19,139 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.09%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.091%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="й" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="1" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="ц" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="2" /> - <Key - android:keyLabel="у" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="3" /> - <Key - android:keyLabel="к" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="4" /> - <Key - android:keyLabel="е" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_cyrillic_e" /> - <Key - android:keyLabel="н" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="6" /> - <Key - android:keyLabel="г" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="7" /> - <Key - android:keyLabel="ш" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="8" /> - <Key - android:keyLabel="щ" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="9" /> - <Key - android:keyLabel="з" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="0" /> - <Key - android:keyLabel="х" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="й" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="1" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="ц" + latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="2" /> + <Key + latin:keyLabel="у" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="3" /> + <Key + latin:keyLabel="к" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="4" /> + <Key + latin:keyLabel="е" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_cyrillic_e" /> + <Key + latin:keyLabel="н" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="6" /> + <Key + latin:keyLabel="г" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="7" /> + <Key + latin:keyLabel="ш" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="8" /> + <Key + latin:keyLabel="щ" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="9" /> + <Key + latin:keyLabel="з" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="0" /> + <Key + latin:keyLabel="х" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="ф" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="ф" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="ы" /> + latin:keyLabel="ы" /> <Key - android:keyLabel="в" /> + latin:keyLabel="в" /> <Key - android:keyLabel="а" /> + latin:keyLabel="а" /> <Key - android:keyLabel="п" /> + latin:keyLabel="п" /> <Key - android:keyLabel="р" /> + latin:keyLabel="р" /> <Key - android:keyLabel="о" /> + latin:keyLabel="о" /> <Key - android:keyLabel="л" /> + latin:keyLabel="л" /> <Key - android:keyLabel="д" /> + latin:keyLabel="д" /> <Key - android:keyLabel="ж" /> + latin:keyLabel="ж" /> <Key - android:keyLabel="э" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="э" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyWidth="8.5%p" + latin:keyWidth="8.5%p" > <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_keyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="11.75%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="я" /> - <Key - android:keyLabel="ч" /> - <Key - android:keyLabel="с" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="11.75%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="м" /> - <Key - android:keyLabel="и" /> - <Key - android:keyLabel="т" /> - <Key - android:keyLabel="ь" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_cyrillic_soft_sign" /> - <Key - android:keyLabel="б" /> - <Key - android:keyLabel="ю" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="11.75%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="я" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="ч" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="с" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="м" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="и" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="т" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="ь" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_cyrillic_soft_sign" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="б" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="ю" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="11.75%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </Keyboard> diff --git a/java/res/xml-ru/kbd_qwerty_black.xml b/java/res/xml-ru/kbd_qwerty_black.xml index 94a450cfa..2635541e8 100644 --- a/java/res/xml-ru/kbd_qwerty_black.xml +++ b/java/res/xml-ru/kbd_qwerty_black.xml @@ -19,438 +19,138 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.09%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.09%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="й" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="1" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="ц" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="2" /> - <Key - android:keyLabel="у" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="3" /> - <Key - android:keyLabel="к" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="4" /> - <Key - android:keyLabel="е" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_cyrillic_e" /> - <Key - android:keyLabel="н" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="6" /> - <Key - android:keyLabel="г" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="7" /> - <Key - android:keyLabel="ш" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="8" /> - <Key - android:keyLabel="щ" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="9" /> - <Key - android:keyLabel="з" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="0" /> - <Key - android:keyLabel="х" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="й" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="1" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="ц" + latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="2" /> + <Key + latin:keyLabel="у" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="3" /> + <Key + latin:keyLabel="к" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="4" /> + <Key + latin:keyLabel="е" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_cyrillic_e" /> + <Key + latin:keyLabel="н" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="6" /> + <Key + latin:keyLabel="г" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="7" /> + <Key + latin:keyLabel="ш" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="8" /> + <Key + latin:keyLabel="щ" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="9" /> + <Key + latin:keyLabel="з" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="0" /> + <Key + latin:keyLabel="х" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="ф" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="ф" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="ы" /> + latin:keyLabel="ы" /> <Key - android:keyLabel="в" /> + latin:keyLabel="в" /> <Key - android:keyLabel="а" /> + latin:keyLabel="а" /> <Key - android:keyLabel="п" /> + latin:keyLabel="п" /> <Key - android:keyLabel="р" /> + latin:keyLabel="р" /> <Key - android:keyLabel="о" /> + latin:keyLabel="о" /> <Key - android:keyLabel="л" /> + latin:keyLabel="л" /> <Key - android:keyLabel="д" /> + latin:keyLabel="д" /> <Key - android:keyLabel="ж" /> + latin:keyLabel="ж" /> <Key - android:keyLabel="э" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="э" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyWidth="8.5%p" + latin:keyWidth="8.5%p" > <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_bkeyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="11.75%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="я" /> - <Key - android:keyLabel="ч" /> - <Key - android:keyLabel="с" /> - <Key - android:keyLabel="м" /> - <Key - android:keyLabel="и" /> - <Key - android:keyLabel="т" /> - <Key - android:keyLabel="ь" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_cyrillic_soft_sign" /> - <Key - android:keyLabel="б" /> - <Key - android:keyLabel="ю" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="11.75%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="11.75%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> + latin:keyLabel="я" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:keyLabel="ч" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="с" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="м" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + latin:keyLabel="и" /> <Key - android:codes="@integer/key_f1" /> + latin:keyLabel="т" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> + latin:keyLabel="ь" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_cyrillic_soft_sign" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" /> + latin:keyLabel="б" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:keyLabel="ю" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="11.75%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" /> </Keyboard> diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml index 464c74f40..c9a4e449c 100644 --- a/java/res/xml-sr/kbd_qwerty.xml +++ b/java/res/xml-sr/kbd_qwerty.xml @@ -20,488 +20,131 @@ <!-- Serbian keyboard layout, based on the X11 layout for Serbian --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.09%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.09%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="љ" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="1" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="њ" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="2" /> - <Key - android:keyLabel="е" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="3" /> - <Key - android:keyLabel="р" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="4" /> - <Key - android:keyLabel="т" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="5" /> - <Key - android:keyLabel="з" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="6" /> - <Key - android:keyLabel="у" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="7" /> - <Key - android:keyLabel="и" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="8" /> - <Key - android:keyLabel="о" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="9" /> - <Key - android:keyLabel="п" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="0" /> - <Key - android:keyLabel="ш" - android:keyEdgeFlags="right" /> + latin:keyLabel="љ" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="1" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="њ" + latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="2" /> + <Key + latin:keyLabel="е" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="3" /> + <Key + latin:keyLabel="р" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="4" /> + <Key + latin:keyLabel="т" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="5" /> + <Key + latin:keyLabel="з" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="6" /> + <Key + latin:keyLabel="у" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="7" /> + <Key + latin:keyLabel="и" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="8" /> + <Key + latin:keyLabel="о" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="9" /> + <Key + latin:keyLabel="п" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="0" /> + <Key + latin:keyLabel="ш" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="а" - android:keyEdgeFlags="left" /> + latin:keyLabel="а" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="с" /> + latin:keyLabel="с" /> <Key - android:keyLabel="д" /> + latin:keyLabel="д" /> <Key - android:keyLabel="ф" /> + latin:keyLabel="ф" /> <Key - android:keyLabel="г" /> + latin:keyLabel="г" /> <Key - android:keyLabel="х" /> + latin:keyLabel="х" /> <Key - android:keyLabel="ј" /> + latin:keyLabel="ј" /> <Key - android:keyLabel="к" /> + latin:keyLabel="к" /> <Key - android:keyLabel="л" /> + latin:keyLabel="л" /> <Key - android:keyLabel="ч" /> + latin:keyLabel="ч" /> <Key - android:keyLabel="ћ" /> - <Key - android:keyLabel="ђ" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyWidth="8.5%p" - > - <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_keyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="11.75%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="ж" /> - <Key - android:keyLabel="џ" /> - <Key - android:keyLabel="ц" /> - <Key - android:keyLabel="в" /> - <Key - android:keyLabel="б" /> - <Key - android:keyLabel="н" /> - <Key - android:keyLabel="м" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="11.75%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="ћ" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:keyLabel="ђ" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" + latin:keyWidth="8.5%p" > <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="11.75%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="ж" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="џ" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="ц" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="в" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="б" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="н" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="м" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="11.75%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </Keyboard> diff --git a/java/res/xml-sr/kbd_qwerty_black.xml b/java/res/xml-sr/kbd_qwerty_black.xml index 2ffa240f5..f760c5eb1 100644 --- a/java/res/xml-sr/kbd_qwerty_black.xml +++ b/java/res/xml-sr/kbd_qwerty_black.xml @@ -20,430 +20,130 @@ <!-- Serbian keyboard layout, based on the X11 layout for Serbian --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.09%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.09%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="љ" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="1" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="њ" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="2" /> - <Key - android:keyLabel="е" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="3" /> - <Key - android:keyLabel="р" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="4" /> - <Key - android:keyLabel="т" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="5" /> - <Key - android:keyLabel="з" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="6" /> - <Key - android:keyLabel="у" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="7" /> - <Key - android:keyLabel="и" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="8" /> - <Key - android:keyLabel="о" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="9" /> - <Key - android:keyLabel="п" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="0" /> - <Key - android:keyLabel="ш" - android:keyEdgeFlags="right" /> + latin:keyLabel="љ" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="1" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="њ" + latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="2" /> + <Key + latin:keyLabel="е" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="3" /> + <Key + latin:keyLabel="р" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="4" /> + <Key + latin:keyLabel="т" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="5" /> + <Key + latin:keyLabel="з" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="6" /> + <Key + latin:keyLabel="у" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="7" /> + <Key + latin:keyLabel="и" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="8" /> + <Key + latin:keyLabel="о" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="9" /> + <Key + latin:keyLabel="п" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="0" /> + <Key + latin:keyLabel="ш" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="а" - android:keyEdgeFlags="left" /> + latin:keyLabel="а" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="с" /> + latin:keyLabel="с" /> <Key - android:keyLabel="д" /> + latin:keyLabel="д" /> <Key - android:keyLabel="ф" /> + latin:keyLabel="ф" /> <Key - android:keyLabel="г" /> + latin:keyLabel="г" /> <Key - android:keyLabel="х" /> + latin:keyLabel="х" /> <Key - android:keyLabel="ј" /> + latin:keyLabel="ј" /> <Key - android:keyLabel="к" /> + latin:keyLabel="к" /> <Key - android:keyLabel="л" /> + latin:keyLabel="л" /> <Key - android:keyLabel="ч" /> + latin:keyLabel="ч" /> <Key - android:keyLabel="ћ" /> + latin:keyLabel="ћ" /> <Key - android:keyLabel="ђ" - android:keyEdgeFlags="right" /> + latin:keyLabel="ђ" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyWidth="8.5%p" + latin:keyWidth="8.5%p" > <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_bkeyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="11.75%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="ж" /> - <Key - android:keyLabel="џ" /> - <Key - android:keyLabel="ц" /> - <Key - android:keyLabel="в" /> - <Key - android:keyLabel="б" /> - <Key - android:keyLabel="н" /> - <Key - android:keyLabel="м" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="11.75%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="11.75%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="ж" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="џ" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + latin:keyLabel="ц" /> <Key - android:codes="@integer/key_f1" /> + latin:keyLabel="в" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> + latin:keyLabel="б" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" /> + latin:keyLabel="н" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:keyLabel="м" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="11.75%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" /> </Keyboard> diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml index 0fc80a341..ae7002463 100644 --- a/java/res/xml-sv/kbd_qwerty.xml +++ b/java/res/xml-sv/kbd_qwerty.xml @@ -27,511 +27,154 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.09%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.09%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" /> - <Key - android:keyLabel="å" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + 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:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyLabel="å" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" /> <Key - android:keyLabel="ö" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o_umlaut" /> + latin:keyLabel="ö" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o_umlaut" /> <Key - android:keyLabel="ä" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a_umlaut" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="ä" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a_umlaut" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyWidth="10%p" + latin:keyWidth="10%p" > <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_keyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="m" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="z" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:isModifier="true" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:keyLabel="m" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </Keyboard> diff --git a/java/res/xml-sv/kbd_qwerty_black.xml b/java/res/xml-sv/kbd_qwerty_black.xml index d03fb773a..463b60bd9 100644 --- a/java/res/xml-sv/kbd_qwerty_black.xml +++ b/java/res/xml-sv/kbd_qwerty_black.xml @@ -27,454 +27,154 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.09%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.09%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" /> - <Key - android:keyLabel="å" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + 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:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyLabel="å" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:keyWidth="8.75%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" /> <Key - android:keyLabel="ö" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_o_umlaut" /> + latin:keyLabel="ö" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o_umlaut" /> <Key - android:keyLabel="ä" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a_umlaut" - android:keyWidth="8.75%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="ä" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a_umlaut" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyWidth="10%p" + latin:keyWidth="10%p" > <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_bkeyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="m" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:keyWidth="10%p" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="z" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:keyLabel="m" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" /> </Keyboard> diff --git a/java/res/xml-xlarge-land/kbd_popup_template.xml b/java/res/xml-xlarge-land/kbd_popup_template.xml new file mode 100644 index 000000000..5fe9f67d9 --- /dev/null +++ b/java/res/xml-xlarge-land/kbd_popup_template.xml @@ -0,0 +1,27 @@ +<?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="5.0%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="0px" + latin:keyHeight="@dimen/key_height" + > +</Keyboard> diff --git a/java/res/xml-xlarge-land/popup_smileys.xml b/java/res/xml-xlarge-land/popup_smileys.xml new file mode 100644 index 000000000..bdd6805da --- /dev/null +++ b/java/res/xml-xlarge-land/popup_smileys.xml @@ -0,0 +1,89 @@ +<?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="5.0%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" +> + <Row + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel=":-(" + latin:keyOutputText=":-( " /> + <Key + latin:keyLabel=";-)" + latin:keyOutputText=";-) " /> + <Key + latin:keyLabel=":-P" + latin:keyOutputText=":-P " /> + <Key + latin:keyLabel="=-O" + latin:keyOutputText="=-O " + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyLabel=":-*" + latin:keyOutputText=":-* " + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel=":O" + latin:keyOutputText=":O " /> + <Key + latin:keyLabel="B-)" + latin:keyOutputText="B-) " /> + <Key + latin:keyLabel=":-$" + latin:keyOutputText=":-$ " /> + <Key + latin:keyLabel=":-!" + latin:keyOutputText=":-! " + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:rowEdgeFlags="bottom" + > + <Key + latin:keyLabel=":-[" + latin:keyOutputText=":-[ " + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="O:-)" + latin:keyOutputText="O:-) " /> + <Key + latin:keyLabel=":-\\" + latin:keyOutputText=":-\\ " /> + <Key + latin:keyLabel=":'(" + latin:keyOutputText=":'( " /> + <Key + latin:keyLabel=":-D" + latin:keyOutputText=":-D " + latin:keyEdgeFlags="right" /> + </Row> +</Keyboard> diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-xlarge/kbd_phone.xml new file mode 100644 index 000000000..107731f3b --- /dev/null +++ b/java/res/xml-xlarge/kbd_phone.xml @@ -0,0 +1,171 @@ +<?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="7.5%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" +> + <!-- This row is intentionally not marked as a top row --> + <Row> + <Key + latin:codes="@integer/key_tab" + latin:keyLabel="@string/label_tab_key" + latin:keyWidth="15.0%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <!-- To match one character label size with "Tab", I placed spaces around the char '-' + and '+'. --> + <Spacer + latin:horizontalGap="6.0%p" /> + <Key + latin:codes="45" + latin:keyLabel=" - " /> + <Key + latin:codes="43" + latin:keyLabel=" + " /> + <Spacer + latin:horizontalGap="11.5%p" /> + <Key + latin:codes="49" + latin:keyIcon="@drawable/sym_keyboard_num1" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="50" + latin:keyIcon="@drawable/sym_keyboard_num2" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="51" + latin:keyIcon="@drawable/sym_keyboard_num3" + latin:keyWidth="10.5%p " /> + <Spacer + latin:horizontalGap="6.0%p" /> + <Key + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15.0%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_more_key" + latin:keyWidth="15.0%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> + <!-- To match one character label size with "More", I placed spaces around the char ',' + and '.'. --> + <Spacer + latin:horizontalGap="6.0%p" /> + <Key + latin:codes="44" + latin:keyLabel=" , " /> + <Key + latin:codes="46" + latin:keyLabel=" . " /> + <Spacer + latin:horizontalGap="11.5%p" /> + <Key + latin:codes="52" + latin:keyIcon="@drawable/sym_keyboard_num4" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="53" + latin:keyIcon="@drawable/sym_keyboard_num5" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="54" + latin:keyIcon="@drawable/sym_keyboard_num6" + latin:keyWidth="10.5%p " /> + <Spacer + latin:horizontalGap="6.0%p" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="15.0%p" + latin:isModifier="true" + 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="21.0%p" /> + <Key + latin:codes="40" + latin:keyLabel=" ( " /> + <Key + latin:codes="41" + latin:keyLabel=" ) " /> + <Spacer + latin:horizontalGap="11.5%p" /> + <Key + latin:codes="55" + latin:keyIcon="@drawable/sym_keyboard_num7" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="56" + latin:keyIcon="@drawable/sym_keyboard_num8" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="57" + latin:keyIcon="@drawable/sym_keyboard_num9" + latin:keyWidth="10.5%p " /> + <!-- 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="21.0%p" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="15.0%p" /> + <Spacer + latin:horizontalGap="11.5%p" /> + <Key + latin:codes="42" + latin:keyIcon="@drawable/sym_keyboard_numstar" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="48" + latin:keyIcon="@drawable/sym_keyboard_num0" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="35" + latin:keyIcon="@drawable/sym_keyboard_numpound" + latin:keyWidth="10.5%p " /> + <!-- 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 new file mode 100644 index 000000000..a7dcd325a --- /dev/null +++ b/java/res/xml-xlarge/kbd_phone_symbols.xml @@ -0,0 +1,180 @@ +<?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="7.5%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" +> + <!-- This row is intentionally not marked as a top row --> + <Row> + <Key + latin:codes="@integer/key_tab" + latin:keyLabel="@string/label_tab_key" + latin:keyWidth="15.0%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Spacer + latin:horizontalGap="4.0%p" /> + <Key + latin:codes="44" + latin:keyLabel="@string/label_pause_key" /> + <!-- To match one character label size with "Tab" and "Pause, I placed spaces around the + char '-' and '+'. --> + <Key + latin:codes="45" + latin:keyLabel=" - " /> + <Key + latin:codes="43" + latin:keyLabel=" + " /> + <Spacer + latin:horizontalGap="6.0%p" /> + <Key + latin:codes="49" + latin:keyIcon="@drawable/sym_keyboard_num1" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="50" + latin:keyIcon="@drawable/sym_keyboard_num2" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="51" + latin:keyIcon="@drawable/sym_keyboard_num3" + latin:keyWidth="10.5%p " /> + <Spacer + latin:horizontalGap="6.0%p" /> + <Key + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15.0%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_more_key" + latin:keyWidth="15.0%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> + <Spacer + latin:horizontalGap="4.0%p" /> + <Key + latin:codes="59" + latin:keyLabel="@string/label_wait_key" /> + <!-- To match one character label size with "More" and "Wait", I placed spaces around the + char ',' and '.'. --> + <Key + latin:codes="44" + latin:keyLabel=" , " /> + <Key + latin:codes="46" + latin:keyLabel=" . " /> + <Spacer + latin:horizontalGap="6.0%p" /> + <Key + latin:codes="52" + latin:keyIcon="@drawable/sym_keyboard_num4" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="53" + latin:keyIcon="@drawable/sym_keyboard_num5" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="54" + latin:keyIcon="@drawable/sym_keyboard_num6" + latin:keyWidth="10.5%p " /> + <Spacer + latin:horizontalGap="6.0%p" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="15.0%p" + latin:isModifier="true" + 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="19.0%p" /> + <Key + latin:codes="78" + latin:keyLabel=" N " /> + <Key + latin:codes="40" + latin:keyLabel=" ( " /> + <Key + latin:codes="41" + latin:keyLabel=" ) " /> + <Spacer + latin:horizontalGap="6.0%p" /> + <Key + latin:codes="55" + latin:keyIcon="@drawable/sym_keyboard_num7" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="56" + latin:keyIcon="@drawable/sym_keyboard_num8" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="57" + latin:keyIcon="@drawable/sym_keyboard_num9" + latin:keyWidth="10.5%p " /> + <!-- 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="19.0%p" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="22.5%p" /> + <Spacer + latin:horizontalGap="6.0%p" /> + <Key + latin:codes="42" + latin:keyIcon="@drawable/sym_keyboard_numstar" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="48" + latin:keyIcon="@drawable/sym_keyboard_num0" + latin:keyWidth="10.5%p " /> + <Key + latin:codes="35" + latin:keyIcon="@drawable/sym_keyboard_numpound" + latin:keyWidth="10.5%p " /> + <!-- There is an empty area bellow the "Enter" key and right of the "#" key. To ignore + the touch event on the area, "#" is intentionally not marked as a right edge key. --> + </Row> +</Keyboard> diff --git a/java/res/xml-xlarge/kbd_popup_template.xml b/java/res/xml-xlarge/kbd_popup_template.xml new file mode 100644 index 000000000..55ebda5e4 --- /dev/null +++ b/java/res/xml-xlarge/kbd_popup_template.xml @@ -0,0 +1,27 @@ +<?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. +*/ +--> + +<Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="7.5%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="0px" + latin:keyHeight="@dimen/key_height" + > +</Keyboard> diff --git a/java/res/xml-xlarge/kbd_qwerty.xml b/java/res/xml-xlarge/kbd_qwerty.xml new file mode 100644 index 000000000..6836c2d61 --- /dev/null +++ b/java/res/xml-xlarge/kbd_qwerty.xml @@ -0,0 +1,109 @@ +<?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="7.5%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" +> + <!-- This row is intentionally not marked as a top row --> + <Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row1_common" /> + </Row> + <!-- TODO: We should have new attributes for <Key> to eliminate these excess duplications --> + <Row + latin:keyboardMode="@+id/mode_normal" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row2_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_url" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row2_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_email" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row2_email" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_im" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row2_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_webentry" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row2_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_normal" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row3_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_url" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row3_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_email" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row3_email" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_im" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row3_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_webentry" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row3_common" /> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row + latin:keyboardMode="@+id/mode_normal" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_url" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row4_url" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_email" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row4_email" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_im" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row4_im" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_webentry" + > + <include latin:keyboardLayout="@xml/kbd_qwerty_row4_common" /> + </Row> +</Keyboard> diff --git a/java/res/xml-xlarge/kbd_qwerty_row1_common.xml b/java/res/xml-xlarge/kbd_qwerty_row1_common.xml new file mode 100644 index 000000000..677da2527 --- /dev/null +++ b/java/res/xml-xlarge/kbd_qwerty_row1_common.xml @@ -0,0 +1,84 @@ +<?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" +> + <Key + latin:codes="@integer/key_tab" + latin:keyLabel="Tab" + latin:keyWidth="7.0%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="q" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_q" /> + <Key + latin:keyLabel="w" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" /> + <Key + latin:keyLabel="=" + latin:temporaryShiftKeyLabel="+" + latin:keyHintIcon="@drawable/key_hint_plus_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="+" /> + <Key + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="10.5%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row2_common.xml b/java/res/xml-xlarge/kbd_qwerty_row2_common.xml new file mode 100644 index 000000000..907de3cbb --- /dev/null +++ b/java/res/xml-xlarge/kbd_qwerty_row2_common.xml @@ -0,0 +1,77 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="8.75%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" /> + <Key + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> + <Key + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> + <Key + latin:keyLabel="f" /> + <Key + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> + <Key + latin:keyLabel="h" /> + <Key + latin:keyLabel="j" /> + <Key + latin:keyLabel="k" /> + <Key + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" /> + <Key + latin:keyLabel=";" + latin:temporaryShiftKeyLabel=":" + latin:keyHintIcon="@drawable/key_hint_colon_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters=":" /> + <Key + latin:keyLabel="\'" + latin:temporaryShiftKeyLabel=""" + latin:keyHintIcon="@drawable/key_hint_quote_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters=""" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="8.75%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row2_email.xml b/java/res/xml-xlarge/kbd_qwerty_row2_email.xml new file mode 100644 index 000000000..e274537f0 --- /dev/null +++ b/java/res/xml-xlarge/kbd_qwerty_row2_email.xml @@ -0,0 +1,73 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="8.75%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" /> + <Key + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> + <Key + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> + <Key + latin:keyLabel="f" /> + <Key + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> + <Key + latin:keyLabel="h" /> + <Key + latin:keyLabel="j" /> + <Key + latin:keyLabel="k" /> + <Key + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" /> + <Key + latin:keyLabel=";" /> + <Key + latin:keyLabel="\'" + latin:temporaryShiftKeyLabel=""" + latin:keyHintIcon="@drawable/key_hint_quote_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters=""" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="8.75%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row3_common.xml b/java/res/xml-xlarge/kbd_qwerty_row3_common.xml new file mode 100644 index 000000000..b3fa466f2 --- /dev/null +++ b/java/res/xml-xlarge/kbd_qwerty_row3_common.xml @@ -0,0 +1,80 @@ +<?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" +> + <Key + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="12.5%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="z" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="x" /> + <Key + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> + <Key + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> + <Key + latin:keyLabel="b" /> + <Key + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> + <Key + latin:keyLabel="m" /> + <Key + latin:keyLabel="," + latin:temporaryShiftKeyLabel="*" + latin:keyHintIcon="@drawable/key_hint_star_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="*" /> + <Key + latin:keyLabel="." + latin:temporaryShiftKeyLabel="!" + latin:keyHintIcon="@drawable/key_hint_exclamation_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="!" /> + <Key + latin:keyLabel="/" + latin:temporaryShiftKeyLabel="\?" + latin:keyHintIcon="@drawable/key_hint_question_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="\?" /> + <Key + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="12.5%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row3_email.xml b/java/res/xml-xlarge/kbd_qwerty_row3_email.xml new file mode 100644 index 000000000..d498406c7 --- /dev/null +++ b/java/res/xml-xlarge/kbd_qwerty_row3_email.xml @@ -0,0 +1,68 @@ +<?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" +> + <Key + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="12.5%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="z" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> + <Key + latin:keyLabel="x" /> + <Key + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> + <Key + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> + <Key + latin:keyLabel="b" /> + <Key + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> + <Key + latin:keyLabel="m" /> + <Key + latin:keyLabel="," /> + <Key + latin:keyLabel="." /> + <Key + latin:keyLabel="\@" /> + <Key + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="12.5%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row4_common.xml b/java/res/xml-xlarge/kbd_qwerty_row4_common.xml new file mode 100644 index 000000000..33a7472e2 --- /dev/null +++ b/java/res/xml-xlarge/kbd_qwerty_row4_common.xml @@ -0,0 +1,56 @@ +<?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" +> + <Spacer + latin:horizontalGap="16.25%p" /> + <Key + latin:keyLabel="(" + latin:temporaryShiftKeyLabel="<" + latin:keyHintIcon="@drawable/key_hint_smaller_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="<" /> + <Key + latin:keyLabel=")" + latin:temporaryShiftKeyLabel=">" + latin:keyHintIcon="@drawable/key_hint_larger_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters=">" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="37.5%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="_" + latin:temporaryShiftKeyLabel="\@" + latin:keyHintIcon="@drawable/key_hint_at_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="\@" /> + <Key + latin:keyLabel="-" + latin:temporaryShiftKeyLabel="#" + latin:keyHintIcon="@drawable/key_hint_doublecross_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="#" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row4_email.xml b/java/res/xml-xlarge/kbd_qwerty_row4_email.xml new file mode 100644 index 000000000..c5a5b061b --- /dev/null +++ b/java/res/xml-xlarge/kbd_qwerty_row4_email.xml @@ -0,0 +1,40 @@ +<?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" +> + <Spacer + latin:horizontalGap="16.25%p" /> + <Key + latin:keyLabel=".com" + latin:keyOutputText=".com" + latin:keyWidth="15.0%p" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="37.5%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="_" /> + <Key + latin:keyLabel="-" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row4_im.xml b/java/res/xml-xlarge/kbd_qwerty_row4_im.xml new file mode 100644 index 000000000..0efa9e520 --- /dev/null +++ b/java/res/xml-xlarge/kbd_qwerty_row4_im.xml @@ -0,0 +1,50 @@ +<?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" +> + <Spacer + latin:horizontalGap="16.25%p" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-)" + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="15.0%p" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="37.5%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="_" + latin:temporaryShiftKeyLabel="\@" + latin:keyHintIcon="@drawable/key_hint_at_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="\@" /> + <Key + latin:keyLabel="-" + latin:temporaryShiftKeyLabel="#" + latin:keyHintIcon="@drawable/key_hint_doublecross_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="#" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_qwerty_row4_url.xml b/java/res/xml-xlarge/kbd_qwerty_row4_url.xml new file mode 100644 index 000000000..48924bb4a --- /dev/null +++ b/java/res/xml-xlarge/kbd_qwerty_row4_url.xml @@ -0,0 +1,48 @@ +<?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" +> + <Spacer + latin:horizontalGap="16.25%p" /> + <Key + latin:keyLabel=".com" + latin:keyOutputText=".com" + latin:keyWidth="15.0%p" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="37.5%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="_" + latin:temporaryShiftKeyLabel="\@" + latin:keyHintIcon="@drawable/key_hint_at_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="\@" /> + <Key + latin:keyLabel="-" + latin:temporaryShiftKeyLabel="#" + latin:keyHintIcon="@drawable/key_hint_doublecross_holo" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="#" /> +</merge> diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-xlarge/kbd_symbols.xml new file mode 100644 index 000000000..34fc11419 --- /dev/null +++ b/java/res/xml-xlarge/kbd_symbols.xml @@ -0,0 +1,161 @@ +<?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="7.5%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" +> + <!-- This row is intentionally not marked as a top row --> + <Row> + <Key + latin:codes="@integer/key_tab" + latin:keyLabel="Tab" + latin:keyWidth="7.0%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="1" /> + <Key + latin:keyLabel="2" /> + <Key + latin:keyLabel="3" /> + <Key + latin:keyLabel="4" /> + <Key + latin:keyLabel="5" /> + <Key + latin:keyLabel="6" /> + <Key + latin:keyLabel="7" /> + <Key + latin:keyLabel="8" /> + <Key + latin:keyLabel="9" /> + <Key + latin:keyLabel="0" /> + <Key + latin:keyLabel="~" /> + <Key + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="10.5%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="8.75%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="\@" /> + <Key + latin:keyLabel="#" /> + <Key + latin:keyLabel="$" /> + <Key + latin:keyLabel="%" /> + <Key + latin:keyLabel="^" /> + <Key + latin:keyLabel="&" /> + <Key + latin:keyLabel="*" /> + <Key + latin:keyLabel="-" /> + <Key + latin:keyLabel="+" /> + <Key + latin:keyLabel="(" /> + <Key + latin:keyLabel=")" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="8.75%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:codes="@integer/key_shift" + latin:keyLabel="@string/label_more_key" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="12.5%p" + latin:isModifier="true" + latin:isSticky="true" + 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:codes="@integer/key_shift" + latin:keyLabel="@string/label_more_key" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="12.5%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="right" /> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row> + <Spacer + latin:horizontalGap="16.25%p" /> + <Key + latin:keyLabel="<" /> + <Key + latin:keyLabel=">" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="37.5%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="[" /> + <Key + latin:keyLabel="]" /> + </Row> +</Keyboard> diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-xlarge/kbd_symbols_shift.xml new file mode 100644 index 000000000..8ed1c1107 --- /dev/null +++ b/java/res/xml-xlarge/kbd_symbols_shift.xml @@ -0,0 +1,161 @@ +<?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="7.5%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" +> + <!-- This row is intentionally not marked as a top row --> + <Row> + <Key + latin:codes="@integer/key_tab" + latin:keyLabel="Tab" + latin:keyWidth="7.0%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="∞" /> + <Key + latin:keyLabel="±" /> + <Key + latin:keyLabel="|" /> + <Key + latin:keyLabel="•" /> + <Key + latin:keyLabel="√" /> + <Key + latin:keyLabel="π" /> + <Key + latin:keyLabel="÷" /> + <Key + latin:keyLabel="×" /> + <Key + latin:keyLabel="±" /> + <Key + latin:keyLabel="∆" /> + <Key + latin:keyLabel="≈" /> + <Key + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="10.5%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="8.75%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="£" /> + <Key + latin:keyLabel="¢" /> + <Key + latin:keyLabel="¥" /> + <Key + latin:keyLabel="€" /> + <Key + latin:keyLabel="¼" /> + <Key + latin:keyLabel="½" /> + <Key + latin:keyLabel="¾" /> + <Key + latin:keyLabel="_" /> + <Key + latin:keyLabel="=" /> + <Key + latin:keyLabel="{" /> + <Key + latin:keyLabel="}" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="8.75%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:codes="@integer/key_shift" + latin:keyLabel="@string/label_more_key" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="12.5%p" + latin:isModifier="true" + latin:isSticky="true" + 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:codes="@integer/key_shift" + latin:keyLabel="@string/label_more_key" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="12.5%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="right" /> + </Row> + <!-- This row is intentionally not marked as a bottom row --> + <Row> + <Spacer + latin:horizontalGap="16.25%p" /> + <Key + latin:keyLabel="≤" /> + <Key + latin:keyLabel="≥" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="37.5%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="²" /> + <Key + latin:keyLabel="³" /> + </Row> +</Keyboard> diff --git a/java/res/xml-xlarge/popup_smileys.xml b/java/res/xml-xlarge/popup_smileys.xml new file mode 100644 index 000000000..2cfcf741d --- /dev/null +++ b/java/res/xml-xlarge/popup_smileys.xml @@ -0,0 +1,89 @@ +<?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="7.5%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" +> + <Row + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel=":-(" + latin:keyOutputText=":-( " /> + <Key + latin:keyLabel=";-)" + latin:keyOutputText=";-) " /> + <Key + latin:keyLabel=":-P" + latin:keyOutputText=":-P " /> + <Key + latin:keyLabel="=-O" + latin:keyOutputText="=-O " + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyLabel=":-*" + latin:keyOutputText=":-* " + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel=":O" + latin:keyOutputText=":O " /> + <Key + latin:keyLabel="B-)" + latin:keyOutputText="B-) " /> + <Key + latin:keyLabel=":-$" + latin:keyOutputText=":-$ " /> + <Key + latin:keyLabel=":-!" + latin:keyOutputText=":-! " + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:rowEdgeFlags="bottom" + > + <Key + latin:keyLabel=":-[" + latin:keyOutputText=":-[ " + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="O:-)" + latin:keyOutputText="O:-) " /> + <Key + latin:keyLabel=":-\\" + latin:keyOutputText=":-\\ " /> + <Key + latin:keyLabel=":'(" + latin:keyOutputText=":'( " /> + <Key + latin:keyLabel=":-D" + latin:keyOutputText=":-D " + latin:keyEdgeFlags="right" /> + </Row> +</Keyboard> diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml index 10774c666..e6f6a09f5 100644 --- a/java/res/xml/kbd_phone.xml +++ b/java/res/xml/kbd_phone.xml @@ -19,88 +19,88 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="26.67%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="26.67%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:codes="49" - android:keyIcon="@drawable/sym_keyboard_num1" - android:keyEdgeFlags="left" /> + latin:codes="49" + latin:keyIcon="@drawable/sym_keyboard_num1" + latin:keyEdgeFlags="left" /> <Key - android:codes="50" - android:keyIcon="@drawable/sym_keyboard_num2" /> + latin:codes="50" + latin:keyIcon="@drawable/sym_keyboard_num2" /> <Key - android:codes="51" - android:keyIcon="@drawable/sym_keyboard_num3" /> + latin:codes="51" + latin:keyIcon="@drawable/sym_keyboard_num3" /> <Key - android:keyLabel="-" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:keyLabel="-" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="52" - android:keyIcon="@drawable/sym_keyboard_num4" - android:keyEdgeFlags="left" /> + latin:codes="52" + latin:keyIcon="@drawable/sym_keyboard_num4" + latin:keyEdgeFlags="left" /> <Key - android:codes="53" - android:keyIcon="@drawable/sym_keyboard_num5" /> + latin:codes="53" + latin:keyIcon="@drawable/sym_keyboard_num5" /> <Key - android:codes="54" - android:keyIcon="@drawable/sym_keyboard_num6" /> + latin:codes="54" + latin:keyIcon="@drawable/sym_keyboard_num6" /> <Key - android:keyLabel="." - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:keyLabel="." + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="55" - android:keyIcon="@drawable/sym_keyboard_num7" - android:keyEdgeFlags="left" /> + latin:codes="55" + latin:keyIcon="@drawable/sym_keyboard_num7" + latin:keyEdgeFlags="left" /> <Key - android:codes="56" - android:keyIcon="@drawable/sym_keyboard_num8" /> + latin:codes="56" + latin:keyIcon="@drawable/sym_keyboard_num8" /> <Key - android:codes="57" - android:keyIcon="@drawable/sym_keyboard_num9" /> + latin:codes="57" + latin:keyIcon="@drawable/sym_keyboard_num9" /> <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="20%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> <Row - android:rowEdgeFlags="bottom" + latin:rowEdgeFlags="bottom" > <Key - android:codes="@integer/key_symbol" - android:keyIcon="@drawable/sym_keyboard_numalt" - android:iconPreview="@drawable/sym_keyboard_feedback_numalt" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_symbol" + latin:keyIcon="@drawable/sym_keyboard_numalt" + latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" + latin:keyEdgeFlags="left" /> <Key - android:codes="48" - android:keyIcon="@drawable/sym_keyboard_num0" /> + latin:codes="48" + latin:keyIcon="@drawable/sym_keyboard_num0" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" /> + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_phone_black.xml b/java/res/xml/kbd_phone_black.xml index 5afa9a194..86759d676 100644 --- a/java/res/xml/kbd_phone_black.xml +++ b/java/res/xml/kbd_phone_black.xml @@ -19,83 +19,83 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="26.67%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="26.67%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:codes="49" - android:keyIcon="@drawable/sym_bkeyboard_num1" - android:keyEdgeFlags="left" /> + latin:codes="49" + latin:keyIcon="@drawable/sym_bkeyboard_num1" + latin:keyEdgeFlags="left" /> <Key - android:codes="50" - android:keyIcon="@drawable/sym_bkeyboard_num2" /> + latin:codes="50" + latin:keyIcon="@drawable/sym_bkeyboard_num2" /> <Key - android:codes="51" - android:keyIcon="@drawable/sym_bkeyboard_num3" /> + latin:codes="51" + latin:keyIcon="@drawable/sym_bkeyboard_num3" /> <Key - android:keyLabel="-" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="-" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="52" - android:keyIcon="@drawable/sym_bkeyboard_num4" - android:keyEdgeFlags="left" /> + latin:codes="52" + latin:keyIcon="@drawable/sym_bkeyboard_num4" + latin:keyEdgeFlags="left" /> <Key - android:codes="53" - android:keyIcon="@drawable/sym_bkeyboard_num5" /> + latin:codes="53" + latin:keyIcon="@drawable/sym_bkeyboard_num5" /> <Key - android:codes="54" - android:keyIcon="@drawable/sym_bkeyboard_num6" /> + latin:codes="54" + latin:keyIcon="@drawable/sym_bkeyboard_num6" /> <Key - android:keyLabel="." - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="." + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="55" - android:keyIcon="@drawable/sym_bkeyboard_num7" - android:keyEdgeFlags="left" /> + latin:codes="55" + latin:keyIcon="@drawable/sym_bkeyboard_num7" + latin:keyEdgeFlags="left" /> <Key - android:codes="56" - android:keyIcon="@drawable/sym_bkeyboard_num8" /> + latin:codes="56" + latin:keyIcon="@drawable/sym_bkeyboard_num8" /> <Key - android:codes="57" - android:keyIcon="@drawable/sym_bkeyboard_num9" /> + latin:codes="57" + latin:keyIcon="@drawable/sym_bkeyboard_num9" /> <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="20%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="20%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> <Row - android:rowEdgeFlags="bottom" + latin:rowEdgeFlags="bottom" > <Key - android:codes="@integer/key_symbol" - android:keyIcon="@drawable/sym_bkeyboard_numalt" - android:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> + latin:codes="@integer/key_symbol" + latin:keyIcon="@drawable/sym_bkeyboard_numalt" + latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> <Key - android:codes="48" - android:keyIcon="@drawable/sym_bkeyboard_num0" /> + latin:codes="48" + latin:keyIcon="@drawable/sym_bkeyboard_num0" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" /> + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml index 4c928a8d8..1c691d2a5 100644 --- a/java/res/xml/kbd_phone_symbols.xml +++ b/java/res/xml/kbd_phone_symbols.xml @@ -19,84 +19,84 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="26.67%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="26.67%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="(" - android:keyEdgeFlags="left" /> + latin:keyLabel="(" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="/" /> + latin:keyLabel="/" /> <Key - android:keyLabel=")" /> + latin:keyLabel=")" /> <Key - android:keyLabel="-" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:keyLabel="-" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="N" - android:keyEdgeFlags="left" /> + latin:keyLabel="N" + latin:keyEdgeFlags="left" /> <!-- Pause is a comma. Check PhoneNumberUtils.java to see if this has changed. --> <Key - android:codes="44" - android:keyLabel="Pause" /> + latin:codes="44" + latin:keyLabel="Pause" /> <Key - android:keyLabel="," /> + latin:keyLabel="," /> <Key - android:keyLabel="." - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:keyLabel="." + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="42" - android:keyIcon="@drawable/sym_keyboard_numstar" - android:keyEdgeFlags="left" /> + latin:codes="42" + latin:keyIcon="@drawable/sym_keyboard_numstar" + latin:keyEdgeFlags="left" /> <!-- Wait is a semicolon. --> <Key - android:codes="59" - android:keyLabel="Wait" /> + latin:codes="59" + latin:keyLabel="Wait" /> <Key - android:codes="35" - android:keyIcon="@drawable/sym_keyboard_numpound" /> + latin:codes="35" + latin:keyIcon="@drawable/sym_keyboard_numpound" /> <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="20%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> <Row - android:rowEdgeFlags="bottom" + latin:rowEdgeFlags="bottom" > <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_phone_key" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_phone_key" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="+" /> + latin:keyLabel="+" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" /> + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_phone_symbols_black.xml b/java/res/xml/kbd_phone_symbols_black.xml index 4d686e145..3e46c5307 100644 --- a/java/res/xml/kbd_phone_symbols_black.xml +++ b/java/res/xml/kbd_phone_symbols_black.xml @@ -19,80 +19,80 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="26.67%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="26.67%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="(" - android:keyEdgeFlags="left" /> + latin:keyLabel="(" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="/" /> + latin:keyLabel="/" /> <Key - android:keyLabel=")" /> + latin:keyLabel=")" /> <Key - android:keyLabel="-" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="-" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="N" - android:keyEdgeFlags="left" /> + latin:keyLabel="N" + latin:keyEdgeFlags="left" /> <!-- Pause is a comma. Check PhoneNumberUtils.java to see if this has changed. --> <Key - android:codes="44" - android:keyLabel="Pause" /> + latin:codes="44" + latin:keyLabel="Pause" /> <Key - android:keyLabel="," /> + latin:keyLabel="," /> <Key - android:keyLabel="." - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> + latin:keyLabel="." + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="42" - android:keyIcon="@drawable/sym_bkeyboard_numstar" - android:keyEdgeFlags="left" /> + latin:codes="42" + latin:keyIcon="@drawable/sym_bkeyboard_numstar" + latin:keyEdgeFlags="left" /> <!-- Wait is a semicolon. --> <Key - android:codes="59" - android:keyLabel="Wait" /> + latin:codes="59" + latin:keyLabel="Wait" /> <Key - android:codes="35" - android:keyIcon="@drawable/sym_bkeyboard_numpound" /> + latin:codes="35" + latin:keyIcon="@drawable/sym_bkeyboard_numpound" /> <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="20%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="20%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> <Row - android:rowEdgeFlags="bottom" + latin:rowEdgeFlags="bottom" > <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_phone_key" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_phone_key" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="+" /> + latin:keyLabel="+" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" /> + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_popup_narrow_template.xml b/java/res/xml/kbd_popup_narrow_template.xml index 23c686e8b..9b78711a0 100644 --- a/java/res/xml/kbd_popup_narrow_template.xml +++ b/java/res/xml/kbd_popup_narrow_template.xml @@ -18,10 +18,10 @@ */ --> -<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="9.45%p" - android:horizontalGap="0px" - android:verticalGap="0px" - android:keyHeight="@dimen/popup_key_height" +<Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="9.45%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" > </Keyboard> diff --git a/java/res/xml/kbd_popup_template.xml b/java/res/xml/kbd_popup_template.xml index a287be1fd..004d490d6 100644 --- a/java/res/xml/kbd_popup_template.xml +++ b/java/res/xml/kbd_popup_template.xml @@ -18,10 +18,10 @@ */ --> -<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="0px" - android:keyHeight="@dimen/popup_key_height" +<Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" > </Keyboard> diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml index a4ab0f8fe..517b4fe5c 100644 --- a/java/res/xml/kbd_qwerty.xml +++ b/java/res/xml/kbd_qwerty.xml @@ -19,487 +19,141 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_narrow_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" - android:keyEdgeFlags="right" /> + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_q" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="w" + latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_narrow_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" + latin:keyEdgeFlags="right" /> </Row> <Row> + <Spacer + latin:horizontalGap="5%p" /> <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:horizontalGap="5%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" - android:keyEdgeFlags="right" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_keyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="m" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_keyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="z" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_keyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:isModifier="true" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> + latin:keyLabel="m" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_row4" /> </Keyboard> diff --git a/java/res/xml/kbd_qwerty_black.xml b/java/res/xml/kbd_qwerty_black.xml index 787e4ef7c..76412f664 100644 --- a/java/res/xml/kbd_qwerty_black.xml +++ b/java/res/xml/kbd_qwerty_black.xml @@ -19,429 +19,140 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="q" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_q" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="w" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_w" /> - <Key - android:keyLabel="e" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_e" /> - <Key - android:keyLabel="r" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_r" /> - <Key - android:keyLabel="t" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_t" /> - <Key - android:keyLabel="y" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_y" /> - <Key - android:keyLabel="u" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_u" /> - <Key - android:keyLabel="i" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_i" /> - <Key - android:keyLabel="o" - android:popupKeyboard="@xml/kbd_popup_narrow_template" - android:popupCharacters="@string/alternates_for_o" /> - <Key - android:keyLabel="p" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_p" - android:keyEdgeFlags="right" /> + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_q" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="w" + latin:keyHintIcon="@drawable/keyboard_hint_2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_w" /> + <Key + latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_e" /> + <Key + latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_r" /> + <Key + latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_t" /> + <Key + latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_y" /> + <Key + latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_u" /> + <Key + latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_i" /> + <Key + latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" + latin:popupKeyboard="@xml/kbd_popup_narrow_template" + latin:popupCharacters="@string/alternates_for_o" /> + <Key + latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_p" + latin:keyEdgeFlags="right" /> </Row> <Row> + <Spacer + latin:horizontalGap="5%p" /> <Key - android:keyLabel="a" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_a" - android:horizontalGap="5%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="a" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_a" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="s" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_s" /> + latin:keyLabel="s" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_s" /> <Key - android:keyLabel="d" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_d" /> + latin:keyLabel="d" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_d" /> <Key - android:keyLabel="f" /> + latin:keyLabel="f" /> <Key - android:keyLabel="g" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_g" /> + latin:keyLabel="g" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_g" /> <Key - android:keyLabel="h" /> + latin:keyLabel="h" /> <Key - android:keyLabel="j" /> + latin:keyLabel="j" /> <Key - android:keyLabel="k" /> + latin:keyLabel="k" /> <Key - android:keyLabel="l" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_l" - android:keyEdgeFlags="right" /> + latin:keyLabel="l" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_l" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_shift" - android:keyIcon="@drawable/sym_bkeyboard_shift" - android:iconPreview="@drawable/sym_keyboard_feedback_shift" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="z" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_z" /> - <Key - android:keyLabel="x" /> - <Key - android:keyLabel="c" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_c" /> - <Key - android:keyLabel="v" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_v" /> - <Key - android:keyLabel="b" /> - <Key - android:keyLabel="n" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="@string/alternates_for_n" /> - <Key - android:keyLabel="m" /> - <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:codes="@integer/key_shift" + latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:iconPreview="@drawable/sym_keyboard_feedback_shift" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="20%p" /> - <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" - android:keyWidth="20%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_normal_with_settings_key" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_url_with_settings_key" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_email_with_settings_key" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_im_with_settings_key" - android:rowEdgeFlags="bottom" - > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_smileys" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> - </Row> - <Row - android:keyboardMode="@+id/mode_webentry_with_settings_key" - android:rowEdgeFlags="bottom" - > + latin:keyLabel="z" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_z" /> <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_symbol_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> + latin:keyLabel="x" /> <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + latin:keyLabel="c" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_c" /> <Key - android:codes="@integer/key_f1" /> + latin:keyLabel="v" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_v" /> <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> + latin:keyLabel="b" /> <Key - android:codes="@integer/key_tab" - android:keyIcon="@drawable/sym_bkeyboard_tab" - android:iconPreview="@drawable/sym_keyboard_feedback_tab" /> + latin:keyLabel="n" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="@string/alternates_for_n" /> <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> + latin:keyLabel="m" /> <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="15%p" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_qwerty_black_row4" /> </Keyboard> diff --git a/java/res/xml/kbd_qwerty_black_row4.xml b/java/res/xml/kbd_qwerty_black_row4.xml new file mode 100644 index 000000000..330ddda42 --- /dev/null +++ b/java/res/xml/kbd_qwerty_black_row4.xml @@ -0,0 +1,335 @@ +<?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:keyboardMode="@+id/mode_normal" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="20%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_url" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="20%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_email" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="20%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_im" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="20%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_webentry" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="20%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="20%p" /> + <Key + latin:codes="@integer/key_tab" + latin:keyIcon="@drawable/sym_bkeyboard_tab" + latin:iconPreview="@drawable/sym_keyboard_feedback_tab" + latin:keyWidth="20%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_normal_with_settings_key" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_bkeyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="25%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_url_with_settings_key" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_bkeyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="25%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_email_with_settings_key" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_bkeyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="25%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_im_with_settings_key" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_bkeyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="25%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_webentry_with_settings_key" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_bkeyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" /> + <Key + latin:codes="@integer/key_tab" + latin:keyIcon="@drawable/sym_bkeyboard_tab" + latin:iconPreview="@drawable/sym_keyboard_feedback_tab" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="15%p" + latin:keyEdgeFlags="right" /> + </Row> +</merge> diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml new file mode 100644 index 000000000..17b7c5235 --- /dev/null +++ b/java/res/xml/kbd_qwerty_row4.xml @@ -0,0 +1,392 @@ +<?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:keyboardMode="@+id/mode_normal" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_url" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_email" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_im" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_webentry" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="20%p" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_tab" + latin:keyIcon="@drawable/sym_keyboard_tab" + latin:iconPreview="@drawable/sym_keyboard_feedback_tab" + latin:keyWidth="20%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_normal_with_settings_key" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="25%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_url_with_settings_key" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="25%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_email_with_settings_key" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="25%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_im_with_settings_key" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="25%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_webentry_with_settings_key" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" + > + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_symbol_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_tab" + latin:keyIcon="@drawable/sym_keyboard_tab" + latin:iconPreview="@drawable/sym_keyboard_feedback_tab" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> + </Row> +</merge> diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml index bcb6e8ae8..608ddda8e 100644 --- a/java/res/xml/kbd_symbols.xml +++ b/java/res/xml/kbd_symbols.xml @@ -19,196 +19,187 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="1" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="¹½⅓¼⅛" - android:keyEdgeFlags="left" /> + latin:keyLabel="1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="¹½⅓¼⅛" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="2" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="²⅔" /> + latin:keyLabel="2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="²⅔" /> <Key - android:keyLabel="3" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="³¾⅜" /> + latin:keyLabel="3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="³¾⅜" /> <Key - android:keyLabel="4" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="⁴" /> + latin:keyLabel="4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="⁴" /> <Key - android:keyLabel="5" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="⅝" /> + latin:keyLabel="5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="⅝" /> <Key - android:keyLabel="6" /> + latin:keyLabel="6" /> <Key - android:keyLabel="7" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="⅞" /> + latin:keyLabel="7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="⅞" /> <Key - android:keyLabel="8" /> + latin:keyLabel="8" /> <Key - android:keyLabel="9" /> + latin:keyLabel="9" /> <Key - android:keyLabel="0" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="ⁿ∅" - android:keyEdgeFlags="right" /> + latin:keyLabel="0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="ⁿ∅" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="\@" - android:keyEdgeFlags="left" /> + latin:keyLabel="\@" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="\#" /> + latin:keyLabel="\#" /> <Key - android:keyLabel="$" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="¢£€¥₣₤₱" /> + latin:keyLabel="$" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="¢£€¥₣₤₱" /> <Key - android:keyLabel="%" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="‰" /> + latin:keyLabel="%" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="‰" /> <Key - android:keyLabel="&" /> + latin:keyLabel="&" /> <Key - android:keyLabel="*" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="†‡★" /> + latin:keyLabel="*" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="†‡★" /> <Key - android:keyLabel="-" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="_–—" /> + latin:keyLabel="-" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="_–—" /> <Key - android:keyLabel="+" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="±" /> + latin:keyLabel="+" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="±" /> <Key - android:keyLabel="(" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="[{<" /> + latin:keyLabel="(" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="[{<" /> <Key - android:keyLabel=")" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="]}>" - android:keyEdgeFlags="right" /> + latin:keyLabel=")" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="]}>" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_shift" - android:keyLabel="@string/label_alt_key" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_shift" + latin:keyLabel="@string/label_alt_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="!" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="¡" /> + latin:keyLabel="!" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="¡" /> <Key - android:keyLabel=""" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="“”«»˝" /> + latin:keyLabel=""" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="“”«»˝" /> <Key - android:keyLabel="\'" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="‘’" /> + latin:keyLabel="\'" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="‘’" /> <Key - android:keyLabel=":" /> + latin:keyLabel=":" /> <Key - android:keyLabel=";" /> + latin:keyLabel=";" /> <Key - android:keyLabel="/" /> + latin:keyLabel="/" /> <Key - android:keyLabel="\?" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="¿" /> + latin:keyLabel="\?" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="¿" /> <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyboardMode="@+id/mode_symbols" - android:rowEdgeFlags="bottom" + latin:keyboardMode="@+id/mode_symbols_normal" + latin:rowEdgeFlags="bottom" > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_alpha_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + <include latin:keyboardLayout="@xml/kbd_symbols_row4_common" /> </Row> <Row - android:keyboardMode="@+id/mode_symbols_with_settings_key" - android:rowEdgeFlags="bottom" + latin:keyboardMode="@+id/mode_symbols_url" + latin:rowEdgeFlags="bottom" > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_alpha_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:codes="@integer/key_f1" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + <include latin:keyboardLayout="@xml/kbd_symbols_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_email" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_im" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_row4_im" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_webentry" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_normal_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_url_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_email_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_im_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_row4_im_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_webentry_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_row4_common_with_settings_key" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_symbols_black.xml b/java/res/xml/kbd_symbols_black.xml index add6c01c5..9e401a1cd 100644 --- a/java/res/xml/kbd_symbols_black.xml +++ b/java/res/xml/kbd_symbols_black.xml @@ -19,184 +19,186 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="1" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="¹½⅓¼⅛" - android:keyEdgeFlags="left" /> + latin:keyLabel="1" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="¹½⅓¼⅛" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="2" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="²⅔" /> + latin:keyLabel="2" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="²⅔" /> <Key - android:keyLabel="3" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="³¾⅜" /> + latin:keyLabel="3" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="³¾⅜" /> <Key - android:keyLabel="4" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="⁴" /> + latin:keyLabel="4" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="⁴" /> <Key - android:keyLabel="5" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="⅝" /> + latin:keyLabel="5" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="⅝" /> <Key - android:keyLabel="6" /> + latin:keyLabel="6" /> <Key - android:keyLabel="7" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="⅞" /> + latin:keyLabel="7" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="⅞" /> <Key - android:keyLabel="8" /> + latin:keyLabel="8" /> <Key - android:keyLabel="9" /> + latin:keyLabel="9" /> <Key - android:keyLabel="0" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="ⁿ∅" - android:keyEdgeFlags="right" /> + latin:keyLabel="0" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="ⁿ∅" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel="\@" - android:keyEdgeFlags="left" /> + latin:keyLabel="\@" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="\#" /> + latin:keyLabel="\#" /> <Key - android:keyLabel="$" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="¢£€¥₣₤₱" /> + latin:keyLabel="$" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="¢£€¥₣₤₱" /> <Key - android:keyLabel="%" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="‰" /> + latin:keyLabel="%" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="‰" /> <Key - android:keyLabel="&" /> + latin:keyLabel="&" /> <Key - android:keyLabel="*" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="†‡★" /> + latin:keyLabel="*" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="†‡★" /> <Key - android:keyLabel="-" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="_–—" /> + latin:keyLabel="-" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="_–—" /> <Key - android:keyLabel="+" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="±" /> + latin:keyLabel="+" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="±" /> <Key - android:keyLabel="(" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="[{<" /> + latin:keyLabel="(" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="[{<" /> <Key - android:keyLabel=")" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="]}>" - android:keyEdgeFlags="right" /> + latin:keyLabel=")" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="]}>" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_shift" - android:keyLabel="@string/label_alt_key" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_shift" + latin:keyLabel="@string/label_alt_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="!" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="¡" /> + latin:keyLabel="!" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="¡" /> <Key - android:keyLabel=""" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="“”«»˝" /> + latin:keyLabel=""" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="“”«»˝" /> <Key - android:keyLabel="\'" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="‘’" /> + latin:keyLabel="\'" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="‘’" /> <Key - android:keyLabel=":" /> + latin:keyLabel=":" /> <Key - android:keyLabel=";" /> + latin:keyLabel=";" /> <Key - android:keyLabel="/" /> + latin:keyLabel="/" /> <Key - android:keyLabel="\?" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="¿" /> + latin:keyLabel="\?" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="¿" /> <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyboardMode="@+id/mode_symbols" - android:rowEdgeFlags="bottom" + latin:keyboardMode="@+id/mode_symbols_normal" + latin:rowEdgeFlags="bottom" > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_alpha_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> + <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common" /> </Row> <Row - android:keyboardMode="@+id/mode_symbols_with_settings_key" - android:rowEdgeFlags="bottom" + latin:keyboardMode="@+id/mode_symbols_url" + latin:rowEdgeFlags="bottom" > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_alpha_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:codes="@integer/key_f1" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="." - android:keyIcon="@drawable/hint_popup" - android:popupKeyboard="@xml/popup_punctuation" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> + <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_email" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_im" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_im" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_webentry" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_normal_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_url_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_email_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_im_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_im_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_webentry_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_black_row4_common_with_settings_key" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_symbols_black_row4_common.xml b/java/res/xml/kbd_symbols_black_row4_common.xml new file mode 100644 index 000000000..7433eca7f --- /dev/null +++ b/java/res/xml/kbd_symbols_black_row4_common.xml @@ -0,0 +1,46 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="20%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_black_row4_common_with_settings_key.xml b/java/res/xml/kbd_symbols_black_row4_common_with_settings_key.xml new file mode 100644 index 000000000..bbb169919 --- /dev/null +++ b/java/res/xml/kbd_symbols_black_row4_common_with_settings_key.xml @@ -0,0 +1,50 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_bkeyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="25%p" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_black_row4_im.xml b/java/res/xml/kbd_symbols_black_row4_im.xml new file mode 100644 index 000000000..a1546b7b5 --- /dev/null +++ b/java/res/xml/kbd_symbols_black_row4_im.xml @@ -0,0 +1,47 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="20%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_black_row4_im_with_settings_key.xml b/java/res/xml/kbd_symbols_black_row4_im_with_settings_key.xml new file mode 100644 index 000000000..4cab461e7 --- /dev/null +++ b/java/res/xml/kbd_symbols_black_row4_im_with_settings_key.xml @@ -0,0 +1,51 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_bkeyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + <Key + latin:codes="@integer/key_f1" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="25%p" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_row4_common.xml b/java/res/xml/kbd_symbols_row4_common.xml new file mode 100644 index 000000000..ef7cdcaff --- /dev/null +++ b/java/res/xml/kbd_symbols_row4_common.xml @@ -0,0 +1,51 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_row4_common_with_settings_key.xml b/java/res/xml/kbd_symbols_row4_common_with_settings_key.xml new file mode 100644 index 000000000..54b85429c --- /dev/null +++ b/java/res/xml/kbd_symbols_row4_common_with_settings_key.xml @@ -0,0 +1,56 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="25%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_row4_im.xml b/java/res/xml/kbd_symbols_row4_im.xml new file mode 100644 index 000000000..c7d679bc4 --- /dev/null +++ b/java/res/xml/kbd_symbols_row4_im.xml @@ -0,0 +1,52 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_row4_im_with_settings_key.xml b/java/res/xml/kbd_symbols_row4_im_with_settings_key.xml new file mode 100644 index 000000000..7cc209b6b --- /dev/null +++ b/java/res/xml/kbd_symbols_row4_im_with_settings_key.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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_f1" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_punctuation" + latin:isModifier="true" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="25%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml index 9bee22069..b8f8faeb2 100644 --- a/java/res/xml/kbd_symbols_shift.xml +++ b/java/res/xml/kbd_symbols_shift.xml @@ -19,171 +19,166 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="~" - android:keyEdgeFlags="left" /> + latin:keyLabel="~" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="`" /> + latin:keyLabel="`" /> <Key - android:keyLabel="|" /> + latin:keyLabel="|" /> <Key - android:keyLabel="•" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="♪♥♠♦♣" /> + latin:keyLabel="•" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="♪♥♠♦♣" /> <Key - android:keyLabel="√" /> + latin:keyLabel="√" /> <Key - android:keyLabel="π" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="Π" /> + latin:keyLabel="π" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="Π" /> <Key - android:keyLabel="÷" /> + latin:keyLabel="÷" /> <Key - android:keyLabel="×" /> + latin:keyLabel="×" /> <Key - android:keyLabel="{" /> + latin:keyLabel="{" /> <Key - android:keyLabel="}" - android:keyEdgeFlags="right" /> + latin:keyLabel="}" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_tab" - android:keyLabel="\u21E5" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_tab" + latin:keyLabel="\u21E5" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="£" /> + latin:keyLabel="£" /> <Key - android:keyLabel="¢" /> + latin:keyLabel="¢" /> <Key - android:keyLabel="€" /> + latin:keyLabel="€" /> <Key - android:keyLabel="°" /> + latin:keyLabel="°" /> <Key - android:keyLabel="^" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="↑↓←→" /> + latin:keyLabel="^" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="↑↓←→" /> <Key - android:keyLabel="_" /> + latin:keyLabel="_" /> <Key - android:keyLabel="=" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="≠≈∞" /> + latin:keyLabel="=" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="≠≈∞" /> <Key - android:keyLabel="[" /> + latin:keyLabel="[" /> <Key - android:keyLabel="]" - android:keyEdgeFlags="right" /> + latin:keyLabel="]" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_shift" - android:keyLabel="@string/label_alt_key" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_shift" + latin:keyLabel="@string/label_alt_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="™" /> + latin:keyLabel="™" /> <Key - android:keyLabel="®" /> + latin:keyLabel="®" /> <Key - android:keyLabel="©" /> + latin:keyLabel="©" /> <Key - android:keyLabel="¶" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="§" /> + latin:keyLabel="¶" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="§" /> <Key - android:keyLabel="\\" /> + latin:keyLabel="\\" /> <Key - android:keyLabel="<" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="≤«‹" /> + latin:keyLabel="<" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="≤«‹" /> <Key - android:keyLabel=">" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="≥»›" /> + latin:keyLabel=">" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="≥»›" /> <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_keyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isModifier="true" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_keyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyboardMode="@+id/mode_symbols" - android:rowEdgeFlags="bottom" + latin:keyboardMode="@+id/mode_symbols_normal" + latin:rowEdgeFlags="bottom" > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_alpha_key" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="„" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" - android:isModifier="true" /> - <Key - android:keyLabel="…" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common" /> </Row> <Row - android:keyboardMode="@+id/mode_symbols_with_settings_key" - android:rowEdgeFlags="bottom" + latin:keyboardMode="@+id/mode_symbols_url" + latin:rowEdgeFlags="bottom" > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_alpha_key" - android:keyWidth="15%p" - android:isModifier="true" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" - android:isModifier="true" /> - <Key - android:keyLabel="„" - android:isModifier="true" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_keyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" - android:isModifier="true" /> - <Key - android:keyLabel="…" - android:isModifier="true" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_keyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:isModifier="true" - android:keyEdgeFlags="right" /> + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_email" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_im" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_im" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_webentry" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_normal_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_url_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_email_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_im_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_im_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_webentry_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4_common_with_settings_key" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_symbols_shift_black.xml b/java/res/xml/kbd_symbols_shift_black.xml index 52b67c3de..34684a65b 100644 --- a/java/res/xml/kbd_symbols_shift_black.xml +++ b/java/res/xml/kbd_symbols_shift_black.xml @@ -19,159 +19,165 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="@dimen/key_bottom_gap" - android:keyHeight="@dimen/key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="@dimen/key_horizontal_gap" + latin:verticalGap="@dimen/key_bottom_gap" + latin:keyHeight="@dimen/key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel="~" - android:keyEdgeFlags="left" /> + latin:keyLabel="~" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="`" /> + latin:keyLabel="`" /> <Key - android:keyLabel="|" /> + latin:keyLabel="|" /> <Key - android:keyLabel="•" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="♪♥♠♦♣" /> + latin:keyLabel="•" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="♪♥♠♦♣" /> <Key - android:keyLabel="√" /> + latin:keyLabel="√" /> <Key - android:keyLabel="π" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="Π" /> + latin:keyLabel="π" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="Π" /> <Key - android:keyLabel="÷" /> + latin:keyLabel="÷" /> <Key - android:keyLabel="×" /> + latin:keyLabel="×" /> <Key - android:keyLabel="{" /> + latin:keyLabel="{" /> <Key - android:keyLabel="}" - android:keyEdgeFlags="right" /> + latin:keyLabel="}" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_tab" - android:keyLabel="\u21E5" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_tab" + latin:keyLabel="\u21E5" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="£" /> + latin:keyLabel="£" /> <Key - android:keyLabel="¢" /> + latin:keyLabel="¢" /> <Key - android:keyLabel="€" /> + latin:keyLabel="€" /> <Key - android:keyLabel="°" /> + latin:keyLabel="°" /> <Key - android:keyLabel="^" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="↑↓←→" /> + latin:keyLabel="^" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="↑↓←→" /> <Key - android:keyLabel="_" /> + latin:keyLabel="_" /> <Key - android:keyLabel="=" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="≠≈∞" /> + latin:keyLabel="=" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="≠≈∞" /> <Key - android:keyLabel="[" /> + latin:keyLabel="[" /> <Key - android:keyLabel="]" - android:keyEdgeFlags="right" /> + latin:keyLabel="]" + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:codes="@integer/key_shift" - android:keyLabel="@string/label_alt_key" - android:keyWidth="15%p" - android:isModifier="true" - android:isSticky="true" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_shift" + latin:keyLabel="@string/label_alt_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:isSticky="true" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="™" /> + latin:keyLabel="™" /> <Key - android:keyLabel="®" /> + latin:keyLabel="®" /> <Key - android:keyLabel="©" /> + latin:keyLabel="©" /> <Key - android:keyLabel="¶" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="§" /> + latin:keyLabel="¶" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="§" /> <Key - android:keyLabel="\\" /> + latin:keyLabel="\\" /> <Key - android:keyLabel="<" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="≤«‹" /> + latin:keyLabel="<" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="≤«‹" /> <Key - android:keyLabel=">" - android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="≥»›" /> + latin:keyLabel=">" + latin:popupKeyboard="@xml/kbd_popup_template" + latin:popupCharacters="≥»›" /> <Key - android:codes="@integer/key_delete" - android:keyIcon="@drawable/sym_bkeyboard_delete" - android:iconPreview="@drawable/sym_keyboard_feedback_delete" - android:keyWidth="15%p" - android:isRepeatable="true" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_delete" + latin:keyIcon="@drawable/sym_bkeyboard_delete" + latin:iconPreview="@drawable/sym_keyboard_feedback_delete" + latin:keyWidth="15%p" + latin:isRepeatable="true" + latin:keyEdgeFlags="right" /> </Row> <Row - android:keyboardMode="@+id/mode_symbols" - android:rowEdgeFlags="bottom" + latin:keyboardMode="@+id/mode_symbols_normal" + latin:rowEdgeFlags="bottom" > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_alpha_key" - android:keyWidth="20%p" - android:keyEdgeFlags="left" /> - <Key - android:keyLabel="„" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="40%p" /> - <Key - android:keyLabel="…" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="20%p" - android:keyEdgeFlags="right" /> + <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common" /> </Row> <Row - android:keyboardMode="@+id/mode_symbols_with_settings_key" - android:rowEdgeFlags="bottom" + latin:keyboardMode="@+id/mode_symbols_url" + latin:rowEdgeFlags="bottom" > - <Key - android:codes="@integer/key_symbol" - android:keyLabel="@string/label_alpha_key" - android:keyWidth="15%p" - android:keyEdgeFlags="left" /> - <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_bkeyboard_settings" - android:iconPreview="@drawable/sym_keyboard_feedback_settings" /> - <Key - android:keyLabel="„" /> - <Key - android:codes="@integer/key_space" - android:keyIcon="@drawable/sym_bkeyboard_space" - android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" /> - <Key - android:keyLabel="…" /> - <Key - android:codes="@integer/key_return" - android:keyIcon="@drawable/sym_bkeyboard_return" - android:iconPreview="@drawable/sym_keyboard_feedback_return" - android:keyWidth="25%p" - android:keyEdgeFlags="right" /> + <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_email" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_im" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_im" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_webentry" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_normal_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_url_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_email_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_im_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_im_with_settings_key" /> + </Row> + <Row + latin:keyboardMode="@+id/mode_symbols_webentry_with_settings_key" + latin:rowEdgeFlags="bottom" + > + <include latin:keyboardLayout="@xml/kbd_symbols_shift_black_row4_common_with_settings_key" /> </Row> </Keyboard> diff --git a/java/res/xml/kbd_symbols_shift_black_row4_common.xml b/java/res/xml/kbd_symbols_shift_black_row4_common.xml new file mode 100644 index 000000000..beb5b3d67 --- /dev/null +++ b/java/res/xml/kbd_symbols_shift_black_row4_common.xml @@ -0,0 +1,44 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="20%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="„" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" /> + <Key + latin:keyLabel="…" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_shift_black_row4_common_with_settings_key.xml b/java/res/xml/kbd_symbols_shift_black_row4_common_with_settings_key.xml new file mode 100644 index 000000000..97f882a5a --- /dev/null +++ b/java/res/xml/kbd_symbols_shift_black_row4_common_with_settings_key.xml @@ -0,0 +1,48 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_bkeyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + <Key + latin:keyLabel="„" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" /> + <Key + latin:keyLabel="…" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="25%p" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_shift_black_row4_im.xml b/java/res/xml/kbd_symbols_shift_black_row4_im.xml new file mode 100644 index 000000000..c0263c215 --- /dev/null +++ b/java/res/xml/kbd_symbols_shift_black_row4_im.xml @@ -0,0 +1,45 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="20%p" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="„" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" /> + <Key + latin:keyLabel="…" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_shift_black_row4_im_with_settings_key.xml b/java/res/xml/kbd_symbols_shift_black_row4_im_with_settings_key.xml new file mode 100644 index 000000000..14d6a0b51 --- /dev/null +++ b/java/res/xml/kbd_symbols_shift_black_row4_im_with_settings_key.xml @@ -0,0 +1,49 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="15%p" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_bkeyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" /> + <Key + latin:keyLabel="„" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_bkeyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" /> + <Key + latin:keyLabel="…" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="25%p" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_shift_row4_common.xml b/java/res/xml/kbd_symbols_shift_row4_common.xml new file mode 100644 index 000000000..4d5199e88 --- /dev/null +++ b/java/res/xml/kbd_symbols_shift_row4_common.xml @@ -0,0 +1,49 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="„" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="…" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_shift_row4_common_with_settings_key.xml b/java/res/xml/kbd_symbols_shift_row4_common_with_settings_key.xml new file mode 100644 index 000000000..df570ea1b --- /dev/null +++ b/java/res/xml/kbd_symbols_shift_row4_common_with_settings_key.xml @@ -0,0 +1,54 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" + latin:isModifier="true" /> + <Key + latin:keyLabel="„" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="…" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:keyWidth="25%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_shift_row4_im.xml b/java/res/xml/kbd_symbols_shift_row4_im.xml new file mode 100644 index 000000000..69c609254 --- /dev/null +++ b/java/res/xml/kbd_symbols_shift_row4_im.xml @@ -0,0 +1,50 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="„" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="40%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="…" + latin:isModifier="true" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="20%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/kbd_symbols_shift_row4_im_with_settings_key.xml b/java/res/xml/kbd_symbols_shift_row4_im_with_settings_key.xml new file mode 100644 index 000000000..aad6e400b --- /dev/null +++ b/java/res/xml/kbd_symbols_shift_row4_im_with_settings_key.xml @@ -0,0 +1,55 @@ +<?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" +> + <Key + latin:codes="@integer/key_symbol" + latin:keyLabel="@string/label_alpha_key" + latin:keyWidth="15%p" + latin:isModifier="true" + latin:keyEdgeFlags="left" /> + <Key + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:iconPreview="@drawable/sym_keyboard_feedback_settings" + latin:isModifier="true" /> + <Key + latin:keyLabel="„" + latin:isModifier="true" /> + <Key + latin:codes="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyWidth="30%p" + latin:isModifier="true" /> + <Key + latin:keyLabel="…" + latin:isModifier="true" /> + <Key + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyHintIcon="@drawable/hint_popup" + latin:popupKeyboard="@xml/popup_smileys" + latin:keyWidth="25%p" + latin:isModifier="true" + latin:keyEdgeFlags="right" /> +</merge> diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml index e5654e96d..e63141846 100644 --- a/java/res/xml/method.xml +++ b/java/res/xml/method.xml @@ -20,7 +20,114 @@ <!-- The attributes in this XML file provide configuration information --> <!-- for the Input Method Manager. --> +<!-- cs, da, de, en, es, fr, it, iw, nb, nl, ru, sr, sv --> +<!-- TODO: use <lang>_keyboard icon instead of a common keyboard icon. --> +<!-- TODO: use <lang>_mic icon instead of a common mic icon. --> <input-method xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="com.android.inputmethod.latin.LatinIMESettings" - android:isDefault="@bool/im_is_default" -/> + android:isDefault="@bool/im_is_default"> + <subtype android:icon="@drawable/ic_sybtype_us_keyboard" + android:imeSubtypeLocale="cs" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="da" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="de" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="en" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="es" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="fr" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="it" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="iw" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="nb" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="nl" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="ru" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="sr" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_keyboard" + android:imeSubtypeLocale="sv" + android:imeSubtypeMode="@string/subtype_mode_keyboard" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="cs" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="da" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="de" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="en" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="es" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="fr" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="it" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="iw" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="nb" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="nl" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="ru" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="sr" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> + <subtype android:icon="@drawable/ic_subtype_mic" + android:imeSubtypeLocale="sv" + android:imeSubtypeMode="@string/subtype_mode_voice" + /> +</input-method> diff --git a/java/res/xml/popup_at.xml b/java/res/xml/popup_at.xml index 197eea445..4b19d4fd4 100644 --- a/java/res/xml/popup_at.xml +++ b/java/res/xml/popup_at.xml @@ -19,21 +19,21 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="0px" - android:keyHeight="@dimen/popup_key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" > <Row - android:rowEdgeFlags="top|bottom" + latin:rowEdgeFlags="top|bottom" > <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="\@" - android:keyEdgeFlags="right" /> + latin:keyLabel="\@" + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/popup_comma.xml b/java/res/xml/popup_comma.xml index 7666f4b62..cef836acd 100644 --- a/java/res/xml/popup_comma.xml +++ b/java/res/xml/popup_comma.xml @@ -19,21 +19,21 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="0px" - android:keyHeight="@dimen/popup_key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" > <Row - android:rowEdgeFlags="top|bottom" + latin:rowEdgeFlags="top|bottom" > <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="," - android:keyEdgeFlags="right" /> + latin:keyLabel="," + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/popup_domains.xml b/java/res/xml/popup_domains.xml index 4e9789ff7..5f92e2f74 100644 --- a/java/res/xml/popup_domains.xml +++ b/java/res/xml/popup_domains.xml @@ -19,28 +19,28 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="15%p" - android:horizontalGap="0px" - android:verticalGap="0px" - android:keyHeight="@dimen/popup_key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="15%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" > <Row - android:rowEdgeFlags="top|bottom" + latin:rowEdgeFlags="top|bottom" > <Key - android:keyLabel="@string/popular_domain_1" - android:keyOutputText="@string/popular_domain_1" - android:keyEdgeFlags="left" /> + latin:keyLabel="@string/popular_domain_1" + latin:keyOutputText="@string/popular_domain_1" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="@string/popular_domain_2" - android:keyOutputText="@string/popular_domain_2" /> + latin:keyLabel="@string/popular_domain_2" + latin:keyOutputText="@string/popular_domain_2" /> <Key - android:keyLabel="@string/popular_domain_3" - android:keyOutputText="@string/popular_domain_3" /> + latin:keyLabel="@string/popular_domain_3" + latin:keyOutputText="@string/popular_domain_3" /> <Key - android:keyLabel="@string/popular_domain_4" - android:keyOutputText="@string/popular_domain_4" - android:keyEdgeFlags="right" /> + latin:keyLabel="@string/popular_domain_4" + latin:keyOutputText="@string/popular_domain_4" + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/popup_mic.xml b/java/res/xml/popup_mic.xml index 5bbd7dfa5..99c97ce39 100644 --- a/java/res/xml/popup_mic.xml +++ b/java/res/xml/popup_mic.xml @@ -19,22 +19,22 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="0px" - android:keyHeight="@dimen/popup_key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" > <Row - android:rowEdgeFlags="top|bottom" + latin:rowEdgeFlags="top|bottom" > <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:keyEdgeFlags="left" /> <Key - android:codes="@integer/key_voice" - android:keyIcon="@drawable/sym_keyboard_mic" - android:keyEdgeFlags="right" /> + latin:codes="@integer/key_voice" + latin:keyIcon="@drawable/sym_keyboard_mic" + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/popup_punctuation.xml b/java/res/xml/popup_punctuation.xml index c429e38bc..76572b06a 100644 --- a/java/res/xml/popup_punctuation.xml +++ b/java/res/xml/popup_punctuation.xml @@ -19,50 +19,50 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="0px" - android:keyHeight="@dimen/popup_key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel=":" - android:keyEdgeFlags="left" /> + latin:keyLabel=":" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="/" /> + latin:keyLabel="/" /> <Key - android:keyLabel="&" /> + latin:keyLabel="&" /> <Key - android:keyLabel="(" /> + latin:keyLabel="(" /> <Key - android:keyLabel=")" /> + latin:keyLabel=")" /> <Key - android:keyLabel="-" /> + latin:keyLabel="-" /> <Key - android:keyLabel="+" - android:keyEdgeFlags="right" /> + latin:keyLabel="+" + latin:keyEdgeFlags="right" /> </Row> <Row - android:rowEdgeFlags="bottom" + latin:rowEdgeFlags="bottom" > <Key - android:keyLabel=";" - android:keyEdgeFlags="left" /> + latin:keyLabel=";" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="\@" /> + latin:keyLabel="\@" /> <Key - android:keyLabel="\'" /> + latin:keyLabel="\'" /> <Key - android:keyLabel=""" /> + latin:keyLabel=""" /> <Key - android:keyLabel="\?" /> + latin:keyLabel="\?" /> <Key - android:keyLabel="!" /> + latin:keyLabel="!" /> <Key - android:keyLabel="," - android:keyEdgeFlags="right" /> + latin:keyLabel="," + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/popup_slash.xml b/java/res/xml/popup_slash.xml index a38fde0e4..1ace909ef 100644 --- a/java/res/xml/popup_slash.xml +++ b/java/res/xml/popup_slash.xml @@ -19,21 +19,21 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0px" - android:verticalGap="0px" - android:keyHeight="@dimen/popup_key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="10%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" > <Row - android:rowEdgeFlags="top|bottom" + latin:rowEdgeFlags="top|bottom" > <Key - android:codes="@integer/key_settings" - android:keyIcon="@drawable/sym_keyboard_settings" - android:keyEdgeFlags="left" /> + latin:codes="@integer/key_settings" + latin:keyIcon="@drawable/sym_keyboard_settings" + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="/" - android:keyEdgeFlags="right" /> + latin:keyLabel="/" + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/popup_smileys.xml b/java/res/xml/popup_smileys.xml index 1a14e1df1..2f082318a 100644 --- a/java/res/xml/popup_smileys.xml +++ b/java/res/xml/popup_smileys.xml @@ -19,71 +19,71 @@ --> <Keyboard - xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="15%p" - android:horizontalGap="0px" - android:verticalGap="0px" - android:keyHeight="@dimen/popup_key_height" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyWidth="15%p" + latin:horizontalGap="0px" + latin:verticalGap="0px" + latin:keyHeight="@dimen/popup_key_height" > <Row - android:rowEdgeFlags="top" + latin:rowEdgeFlags="top" > <Key - android:keyLabel=":-)" - android:keyOutputText=":-) " - android:keyEdgeFlags="left" /> + latin:keyLabel=":-)" + latin:keyOutputText=":-) " + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":-(" - android:keyOutputText=":-( " /> + latin:keyLabel=":-(" + latin:keyOutputText=":-( " /> <Key - android:keyLabel=";-)" - android:keyOutputText=";-) " /> + latin:keyLabel=";-)" + latin:keyOutputText=";-) " /> <Key - android:keyLabel=":-P" - android:keyOutputText=":-P " /> + latin:keyLabel=":-P" + latin:keyOutputText=":-P " /> <Key - android:keyLabel="=-O" - android:keyOutputText="=-O " - android:keyEdgeFlags="right" /> + latin:keyLabel="=-O" + latin:keyOutputText="=-O " + latin:keyEdgeFlags="right" /> </Row> <Row> <Key - android:keyLabel=":-*" - android:keyOutputText=":-* " - android:keyEdgeFlags="left" /> + latin:keyLabel=":-*" + latin:keyOutputText=":-* " + latin:keyEdgeFlags="left" /> <Key - android:keyLabel=":O" - android:keyOutputText=":O " /> + latin:keyLabel=":O" + latin:keyOutputText=":O " /> <Key - android:keyLabel="B-)" - android:keyOutputText="B-) " /> + latin:keyLabel="B-)" + latin:keyOutputText="B-) " /> <Key - android:keyLabel=":-$" - android:keyOutputText=":-$ " /> + latin:keyLabel=":-$" + latin:keyOutputText=":-$ " /> <Key - android:keyLabel=":-!" - android:keyOutputText=":-! " - android:keyEdgeFlags="right" /> + latin:keyLabel=":-!" + latin:keyOutputText=":-! " + latin:keyEdgeFlags="right" /> </Row> <Row - android:rowEdgeFlags="bottom" + latin:rowEdgeFlags="bottom" > <Key - android:keyLabel=":-[" - android:keyOutputText=":-[ " - android:keyEdgeFlags="left" /> + latin:keyLabel=":-[" + latin:keyOutputText=":-[ " + latin:keyEdgeFlags="left" /> <Key - android:keyLabel="O:-)" - android:keyOutputText="O:-) " /> + latin:keyLabel="O:-)" + latin:keyOutputText="O:-) " /> <Key - android:keyLabel=":-\\" - android:keyOutputText=":-\\ " /> + latin:keyLabel=":-\\" + latin:keyOutputText=":-\\ " /> <Key - android:keyLabel=":'(" - android:keyOutputText=":'( " /> + latin:keyLabel=":'(" + latin:keyOutputText=":'( " /> <Key - android:keyLabel=":-D" - android:keyOutputText=":-D " - android:keyEdgeFlags="right" /> + latin:keyLabel=":-D" + latin:keyOutputText=":-D " + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml index 9348e954a..af1396c13 100644 --- a/java/res/xml/prefs.xml +++ b/java/res/xml/prefs.xml @@ -98,13 +98,22 @@ android:defaultValue="true" /> - <CheckBoxPreference - android:key="auto_complete" + <ListPreference + android:key="auto_completion_threshold" android:title="@string/auto_complete" android:summary="@string/auto_complete_summary" - android:persistent="true" - android:defaultValue="@bool/enable_autocorrect" - android:dependency="show_suggestions" + android:persistent="true" + android:entryValues="@array/auto_completion_threshold_mode_values" + android:entries="@array/auto_completion_threshold_modes" + android:defaultValue="@string/auto_completion_threshold_mode_value_modest" + /> + + <CheckBoxPreference + android:key="bigram_suggestion" + android:title="@string/bigram_suggestion" + android:summary="@string/bigram_suggestion_summary" + android:persistent="true" + android:defaultValue="true" /> </PreferenceCategory> diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboard.java b/java/src/com/android/inputmethod/latin/BaseKeyboard.java new file mode 100644 index 000000000..266300eb3 --- /dev/null +++ b/java/src/com/android/inputmethod/latin/BaseKeyboard.java @@ -0,0 +1,708 @@ +/* + * Copyright (C) 2010 Google Inc. + * + * 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 org.xmlpull.v1.XmlPullParserException; + +import android.content.Context; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.content.res.XmlResourceParser; +import android.graphics.drawable.Drawable; +import android.text.TextUtils; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.TypedValue; +import android.util.Xml; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +/** + * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard + * consists of rows of keys. + * <p>The layout file for a keyboard contains XML that looks like the following snippet:</p> + * <pre> + * <Keyboard + * latin:keyWidth="%10p" + * latin:keyHeight="50px" + * latin:horizontalGap="2px" + * latin:verticalGap="2px" > + * <Row latin:keyWidth="32px" > + * <Key latin:keyLabel="A" /> + * ... + * </Row> + * ... + * </Keyboard> + * </pre> + */ +public class BaseKeyboard { + + static final String TAG = "BaseKeyboard"; + + public static final int EDGE_LEFT = 0x01; + public static final int EDGE_RIGHT = 0x02; + public static final int EDGE_TOP = 0x04; + public static final int EDGE_BOTTOM = 0x08; + + public static final int KEYCODE_SHIFT = -1; + public static final int KEYCODE_MODE_CHANGE = -2; + public static final int KEYCODE_CANCEL = -3; + public static final int KEYCODE_DONE = -4; + public static final int KEYCODE_DELETE = -5; + public static final int KEYCODE_ALT = -6; + + /** Horizontal gap default for all rows */ + private int mDefaultHorizontalGap; + + /** Default key width */ + private int mDefaultWidth; + + /** Default key height */ + private int mDefaultHeight; + + /** Default gap between rows */ + private int mDefaultVerticalGap; + + /** Is the keyboard in the shifted state */ + private boolean mShifted; + + /** List of shift keys in this keyboard */ + private final List<Key> mShiftKeys = new ArrayList<Key>(); + + /** Total height of the keyboard, including the padding and keys */ + private int mTotalHeight; + + /** + * Total width of the keyboard, including left side gaps and keys, but not any gaps on the + * right side. + */ + private int mTotalWidth; + + /** List of keys in this keyboard */ + private final List<Key> mKeys = new ArrayList<Key>(); + + /** Width of the screen available to fit the keyboard */ + private final int mDisplayWidth; + + /** Height of the screen */ + private final int mDisplayHeight; + + /** Keyboard mode, or zero, if none. */ + private final int mKeyboardMode; + + // Variables for pre-computing nearest keys. + + private final int GRID_WIDTH; + private final int GRID_HEIGHT; + private final int GRID_SIZE; + private int mCellWidth; + private int mCellHeight; + private int[][] mGridNeighbors; + private int mProximityThreshold; + /** Number of key widths from current touch point to search for nearest keys. */ + private static float SEARCH_DISTANCE = 1.8f; + + /** + * 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 BaseKeyboard} + * defines. + */ + public static class Row { + /** Default width of a key in this row. */ + public int defaultWidth; + /** Default height of a key in this row. */ + public int defaultHeight; + /** Default horizontal gap between keys in this row. */ + public int defaultHorizontalGap; + /** Vertical gap following this row. */ + public int verticalGap; + /** + * Edge flags for this row of keys. Possible values that can be assigned are + * {@link BaseKeyboard#EDGE_TOP EDGE_TOP} and {@link BaseKeyboard#EDGE_BOTTOM EDGE_BOTTOM} + */ + public int rowEdgeFlags; + + /** The keyboard mode for this row */ + public int mode; + + private final BaseKeyboard parent; + + private Row(BaseKeyboard parent) { + this.parent = parent; + } + + public Row(Resources res, BaseKeyboard parent, XmlResourceParser parser) { + this.parent = parent; + TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), + R.styleable.BaseKeyboard); + defaultWidth = BaseKeyboardParser.getDimensionOrFraction(a, + R.styleable.BaseKeyboard_keyWidth, + parent.mDisplayWidth, parent.mDefaultWidth); + defaultHeight = BaseKeyboardParser.getDimensionOrFraction(a, + R.styleable.BaseKeyboard_keyHeight, + parent.mDisplayHeight, parent.mDefaultHeight); + defaultHorizontalGap = BaseKeyboardParser.getDimensionOrFraction(a, + R.styleable.BaseKeyboard_horizontalGap, + parent.mDisplayWidth, parent.mDefaultHorizontalGap); + verticalGap = BaseKeyboardParser.getDimensionOrFraction(a, + R.styleable.BaseKeyboard_verticalGap, + parent.mDisplayHeight, parent.mDefaultVerticalGap); + a.recycle(); + a = res.obtainAttributes(Xml.asAttributeSet(parser), + R.styleable.BaseKeyboard_Row); + rowEdgeFlags = a.getInt(R.styleable.BaseKeyboard_Row_rowEdgeFlags, 0); + mode = a.getResourceId(R.styleable.BaseKeyboard_Row_keyboardMode, 0); + } + } + + /** + * Class for describing the position and characteristics of a single key in the keyboard. + */ + public static class Key { + /** + * All the key codes (unicode or custom code) that this key could generate, zero'th + * being the most important. + */ + public int[] codes; + + /** Label to display */ + public CharSequence label; + /** Label to display when keyboard is in temporary shift mode */ + public CharSequence temporaryShiftLabel; + + /** Icon to display instead of a label. Icon takes precedence over a label */ + public Drawable icon; + /** Hint icon to display on the key in conjunction with the label */ + public Drawable hintIcon; + /** Preview version of the icon, for the preview popup */ + public Drawable iconPreview; + /** Width of the key, not including the gap */ + public int width; + /** Height of the key, not including the gap */ + public int height; + /** The horizontal gap before this key */ + public int gap; + /** Whether this key is sticky, i.e., a toggle key */ + public boolean sticky; + /** X coordinate of the key in the keyboard layout */ + public int x; + /** Y coordinate of the key in the keyboard layout */ + public int y; + /** The current pressed state of this key */ + public boolean pressed; + /** If this is a sticky key, is it on? */ + public boolean on; + /** Text to output when pressed. This can be multiple characters, like ".com" */ + public CharSequence text; + /** Popup characters */ + public CharSequence popupCharacters; + + /** + * Flags that specify the anchoring to edges of the keyboard for detecting touch events + * that are just out of the boundary of the key. This is a bit mask of + * {@link BaseKeyboard#EDGE_LEFT}, {@link BaseKeyboard#EDGE_RIGHT}, + * {@link BaseKeyboard#EDGE_TOP} and {@link BaseKeyboard#EDGE_BOTTOM}. + */ + public int edgeFlags; + /** Whether this is a modifier key, such as Shift or Alt */ + public boolean modifier; + /** The BaseKeyboard that this key belongs to */ + protected final BaseKeyboard keyboard; + /** + * If this key pops up a mini keyboard, this is the resource id for the XML layout for that + * keyboard. + */ + public int popupResId; + /** Whether this key repeats itself when held down */ + public boolean repeatable; + + + private final static int[] KEY_STATE_NORMAL_ON = { + android.R.attr.state_checkable, + android.R.attr.state_checked + }; + + private final static int[] KEY_STATE_PRESSED_ON = { + android.R.attr.state_pressed, + android.R.attr.state_checkable, + android.R.attr.state_checked + }; + + private final static int[] KEY_STATE_NORMAL_OFF = { + android.R.attr.state_checkable + }; + + private final static int[] KEY_STATE_PRESSED_OFF = { + android.R.attr.state_pressed, + android.R.attr.state_checkable + }; + + private final static int[] KEY_STATE_NORMAL = { + }; + + private final static int[] KEY_STATE_PRESSED = { + android.R.attr.state_pressed + }; + + /** Create an empty key with no attributes. */ + public Key(Row parent) { + keyboard = parent.parent; + height = parent.defaultHeight; + gap = parent.defaultHorizontalGap; + width = parent.defaultWidth - gap; + edgeFlags = parent.rowEdgeFlags; + } + + /** Create a key with the given top-left coordinate and extract its attributes from + * the XML parser. + * @param res resources associated with the caller's context + * @param parent the row that this key belongs to. The row must already be attached to + * a {@link BaseKeyboard}. + * @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 + */ + public Key(Resources res, Row parent, int x, int y, XmlResourceParser parser) { + this(parent); + + TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), + R.styleable.BaseKeyboard); + height = BaseKeyboardParser.getDimensionOrFraction(a, + R.styleable.BaseKeyboard_keyHeight, + keyboard.mDisplayHeight, parent.defaultHeight); + gap = BaseKeyboardParser.getDimensionOrFraction(a, + R.styleable.BaseKeyboard_horizontalGap, + keyboard.mDisplayWidth, parent.defaultHorizontalGap); + width = BaseKeyboardParser.getDimensionOrFraction(a, + R.styleable.BaseKeyboard_keyWidth, + keyboard.mDisplayWidth, parent.defaultWidth) - gap; + a.recycle(); + a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.BaseKeyboard_Key); + + // Horizontal gap is divided equally to both sides of the key. + this.x = x + gap / 2; + this.y = y; + + TypedValue codesValue = new TypedValue(); + a.getValue(R.styleable.BaseKeyboard_Key_codes, codesValue); + if (codesValue.type == TypedValue.TYPE_INT_DEC + || codesValue.type == TypedValue.TYPE_INT_HEX) { + codes = new int[] { codesValue.data }; + } else if (codesValue.type == TypedValue.TYPE_STRING) { + codes = parseCSV(codesValue.string.toString()); + } + + iconPreview = a.getDrawable(R.styleable.BaseKeyboard_Key_iconPreview); + setDefaultBounds(iconPreview); + popupCharacters = a.getText(R.styleable.BaseKeyboard_Key_popupCharacters); + popupResId = a.getResourceId(R.styleable.BaseKeyboard_Key_popupKeyboard, 0); + repeatable = a.getBoolean(R.styleable.BaseKeyboard_Key_isRepeatable, false); + modifier = a.getBoolean(R.styleable.BaseKeyboard_Key_isModifier, false); + sticky = a.getBoolean(R.styleable.BaseKeyboard_Key_isSticky, false); + edgeFlags = a.getInt(R.styleable.BaseKeyboard_Key_keyEdgeFlags, 0); + edgeFlags |= parent.rowEdgeFlags; + + icon = a.getDrawable(R.styleable.BaseKeyboard_Key_keyIcon); + setDefaultBounds(icon); + hintIcon = a.getDrawable(R.styleable.BaseKeyboard_Key_keyHintIcon); + setDefaultBounds(hintIcon); + + label = a.getText(R.styleable.BaseKeyboard_Key_keyLabel); + temporaryShiftLabel = a.getText(R.styleable.BaseKeyboard_Key_temporaryShiftKeyLabel); + text = a.getText(R.styleable.BaseKeyboard_Key_keyOutputText); + + if (codes == null && !TextUtils.isEmpty(label)) { + codes = new int[] { label.charAt(0) }; + } + a.recycle(); + } + + /** + * Informs the key that it has been pressed, in case it needs to change its appearance or + * state. + * @see #onReleased(boolean) + */ + public void onPressed() { + pressed = !pressed; + } + + /** + * Changes the pressed state of the key. If it is a sticky key, it will also change the + * toggled state of the key if the finger was release inside. + * @param inside whether the finger was released inside the key + * @see #onPressed() + */ + public void onReleased(boolean inside) { + pressed = !pressed; + if (sticky) { + on = !on; + } + } + + private int[] parseCSV(String value) { + int count = 0; + int lastIndex = 0; + if (value.length() > 0) { + count++; + while ((lastIndex = value.indexOf(",", lastIndex + 1)) > 0) { + count++; + } + } + int[] values = new int[count]; + count = 0; + StringTokenizer st = new StringTokenizer(value, ","); + while (st.hasMoreTokens()) { + try { + values[count++] = Integer.parseInt(st.nextToken()); + } catch (NumberFormatException nfe) { + Log.e(TAG, "Error parsing keycodes " + value); + } + } + return values; + } + + /** + * Detects if a point falls inside this key. + * @param x the x-coordinate of the point + * @param y the y-coordinate of the point + * @return whether or not the point falls inside the key. If the key is attached to an + * edge, it will assume that all points between the key and the edge are considered to be + * inside the key. + */ + public boolean isInside(int x, int y) { + boolean leftEdge = (edgeFlags & EDGE_LEFT) > 0; + boolean rightEdge = (edgeFlags & EDGE_RIGHT) > 0; + boolean topEdge = (edgeFlags & EDGE_TOP) > 0; + boolean bottomEdge = (edgeFlags & EDGE_BOTTOM) > 0; + if ((x >= this.x || (leftEdge && x <= this.x + this.width)) + && (x < this.x + this.width || (rightEdge && x >= this.x)) + && (y >= this.y || (topEdge && y <= this.y + this.height)) + && (y < this.y + this.height || (bottomEdge && y >= this.y))) { + return true; + } else { + return false; + } + } + + /** + * Returns the square of the distance between the center of the key and the given point. + * @param x the x-coordinate of the point + * @param y the y-coordinate of the point + * @return the square of the distance of the point from the center of the key + */ + public int squaredDistanceFrom(int x, int y) { + // We should count vertical gap between rows to calculate the center of this Key. + // TODO: We should re-think how we define the center of the key. + final int verticalGap = keyboard.getVerticalGap(); + int xDist = this.x + width / 2 - x; + int yDist = this.y + (height + verticalGap) / 2 - y; + return xDist * xDist + yDist * yDist; + } + + /** + * Returns the drawable state for the key, based on the current state and type of the key. + * @return the drawable state of the key. + * @see android.graphics.drawable.StateListDrawable#setState(int[]) + */ + public int[] getCurrentDrawableState() { + int[] states = KEY_STATE_NORMAL; + + if (on) { + if (pressed) { + states = KEY_STATE_PRESSED_ON; + } else { + states = KEY_STATE_NORMAL_ON; + } + } else { + if (sticky) { + if (pressed) { + states = KEY_STATE_PRESSED_OFF; + } else { + states = KEY_STATE_NORMAL_OFF; + } + } else { + if (pressed) { + states = KEY_STATE_PRESSED; + } + } + } + return states; + } + } + + /** + * Creates a keyboard from the given xml key layout file. + * @param context the application or service context + * @param xmlLayoutResId the resource file that contains the keyboard layout and keys. + */ + public BaseKeyboard(Context context, int xmlLayoutResId) { + this(context, xmlLayoutResId, 0); + } + + /** + * Creates a keyboard from the given xml key layout file. Weeds out rows + * that have a keyboard mode defined but don't match the specified mode. + * @param context the application or service context + * @param xmlLayoutResId the resource file that contains the keyboard layout and keys. + * @param modeId keyboard mode identifier + * @param width sets width of keyboard + * @param height sets height of keyboard + */ + public BaseKeyboard(Context context, int xmlLayoutResId, int modeId, int width, int height) { + 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; + + mDisplayWidth = width; + mDisplayHeight = height; + + mDefaultHorizontalGap = 0; + setKeyWidth(mDisplayWidth / 10); + mDefaultVerticalGap = 0; + mDefaultHeight = mDefaultWidth; + mKeyboardMode = modeId; + loadKeyboard(context, xmlLayoutResId); + } + + /** + * Creates a keyboard from the given xml key layout file. Weeds out rows + * that have a keyboard mode defined but don't match the specified mode. + * @param context the application or service context + * @param xmlLayoutResId the resource file that contains the keyboard layout and keys. + * @param modeId keyboard mode identifier + */ + public BaseKeyboard(Context context, int xmlLayoutResId, int modeId) { + this(context, xmlLayoutResId, modeId, + context.getResources().getDisplayMetrics().widthPixels, + context.getResources().getDisplayMetrics().heightPixels); + } + + /** + * <p>Creates a blank keyboard from the given resource file and populates it with the specified + * characters in left-to-right, top-to-bottom fashion, using the specified number of columns. + * </p> + * <p>If the specified number of columns is -1, then the keyboard will fit as many keys as + * possible in each row.</p> + * @param context the application or service context + * @param layoutTemplateResId the layout template file, containing no keys. + * @param characters the list of characters to display on the keyboard. One key will be created + * for each character. + * @param columns the number of columns of keys to display. If this number is greater than the + * number of keys that can fit in a row, it will be ignored. If this number is -1, the + * keyboard will fit as many keys as possible in each row. + */ + public BaseKeyboard(Context context, int layoutTemplateResId, + CharSequence characters, int columns, int horizontalPadding) { + this(context, layoutTemplateResId); + int x = 0; + int y = 0; + int column = 0; + mTotalWidth = 0; + + Row row = new Row(this); + row.defaultHeight = mDefaultHeight; + row.defaultWidth = mDefaultWidth; + row.defaultHorizontalGap = mDefaultHorizontalGap; + row.verticalGap = mDefaultVerticalGap; + row.rowEdgeFlags = EDGE_TOP | EDGE_BOTTOM; + final int maxColumns = columns == -1 ? Integer.MAX_VALUE : columns; + for (int i = 0; i < characters.length(); i++) { + char c = characters.charAt(i); + if (column >= maxColumns + || x + mDefaultWidth + horizontalPadding > mDisplayWidth) { + x = 0; + y += mDefaultVerticalGap + mDefaultHeight; + column = 0; + } + final Key key = new Key(row); + key.x = x; + key.y = y; + key.label = String.valueOf(c); + key.codes = new int[] { c }; + column++; + x += key.width + key.gap; + mKeys.add(key); + if (x > mTotalWidth) { + mTotalWidth = x; + } + } + mTotalHeight = y + mDefaultHeight; + } + + public List<Key> getKeys() { + return mKeys; + } + + protected int getHorizontalGap() { + return mDefaultHorizontalGap; + } + + protected void setHorizontalGap(int gap) { + mDefaultHorizontalGap = gap; + } + + protected int getVerticalGap() { + return mDefaultVerticalGap; + } + + protected void setVerticalGap(int gap) { + mDefaultVerticalGap = gap; + } + + protected int getKeyHeight() { + return mDefaultHeight; + } + + protected void setKeyHeight(int height) { + mDefaultHeight = height; + } + + protected int getKeyWidth() { + return mDefaultWidth; + } + + protected void setKeyWidth(int width) { + mDefaultWidth = width; + final int threshold = (int) (width * SEARCH_DISTANCE); + mProximityThreshold = threshold * threshold; + } + + /** + * Returns the total height of the keyboard + * @return the total height of the keyboard + */ + public int getHeight() { + return mTotalHeight; + } + + public int getMinWidth() { + return mTotalWidth; + } + + public int getKeyboardHeight() { + return mDisplayHeight; + } + + public int getKeyboardWidth() { + return mDisplayWidth; + } + + public int getKeyboardMode() { + return mKeyboardMode; + } + + public boolean setShifted(boolean shiftState) { + for (final Key key : mShiftKeys) { + key.on = shiftState; + } + if (mShifted != shiftState) { + mShifted = shiftState; + return true; + } + return false; + } + + public boolean isShifted() { + return mShifted; + } + + public List<Key> getShiftKeys() { + return mShiftKeys; + } + + private void computeNearestNeighbors() { + // Round-up so we don't have any pixels outside the grid + mCellWidth = (getMinWidth() + GRID_WIDTH - 1) / GRID_WIDTH; + mCellHeight = (getHeight() + GRID_HEIGHT - 1) / GRID_HEIGHT; + mGridNeighbors = new int[GRID_SIZE][]; + int[] indices = new int[mKeys.size()]; + final int gridWidth = GRID_WIDTH * mCellWidth; + final int gridHeight = GRID_HEIGHT * mCellHeight; + for (int x = 0; x < gridWidth; x += mCellWidth) { + for (int y = 0; y < gridHeight; y += mCellHeight) { + int count = 0; + for (int i = 0; i < mKeys.size(); i++) { + final Key key = mKeys.get(i); + final int threshold = mProximityThreshold; + if (key.squaredDistanceFrom(x, y) < threshold || + key.squaredDistanceFrom(x + mCellWidth - 1, y) < threshold || + key.squaredDistanceFrom(x + mCellWidth - 1, y + mCellHeight - 1) + < threshold || + key.squaredDistanceFrom(x, y + mCellHeight - 1) < threshold) { + indices[count++] = i; + } + } + int [] cell = new int[count]; + System.arraycopy(indices, 0, cell, 0, count); + mGridNeighbors[(y / mCellHeight) * GRID_WIDTH + (x / mCellWidth)] = cell; + } + } + } + + /** + * Returns the indices of the keys that are closest to the given point. + * @param x the x-coordinate of the point + * @param y the y-coordinate of the point + * @return the array of integer indices for the nearest keys to the given point. If the given + * point is out of range, then an array of size zero is returned. + */ + public int[] getNearestKeys(int x, int y) { + if (mGridNeighbors == null) computeNearestNeighbors(); + if (x >= 0 && x < getMinWidth() && y >= 0 && y < getHeight()) { + int index = (y / mCellHeight) * GRID_WIDTH + (x / mCellWidth); + if (index < GRID_SIZE) { + return mGridNeighbors[index]; + } + } + return new int[0]; + } + + // TODO should be private + protected BaseKeyboard.Row createRowFromXml(Resources res, XmlResourceParser parser) { + return new BaseKeyboard.Row(res, this, parser); + } + + // TODO should be private + protected BaseKeyboard.Key createKeyFromXml(Resources res, Row parent, int x, int y, + XmlResourceParser parser) { + return new BaseKeyboard.Key(res, parent, x, y, parser); + } + + private void loadKeyboard(Context context, int xmlLayoutResId) { + try { + BaseKeyboardParser parser = new BaseKeyboardParser(this, context.getResources()); + parser.parseKeyboard(context.getResources().getXml(xmlLayoutResId)); + // mTotalWidth is the width of this keyboard which is maximum width of row. + mTotalWidth = parser.getMaxRowWidth(); + mTotalHeight = parser.getTotalHeight(); + } catch (XmlPullParserException e) { + throw new IllegalArgumentException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + protected static void setDefaultBounds(Drawable drawable) { + if (drawable != null) + drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), + drawable.getIntrinsicHeight()); + } +} diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java b/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java new file mode 100644 index 000000000..628e764b5 --- /dev/null +++ b/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java @@ -0,0 +1,400 @@ +/* + * Copyright (C) 2010 Google Inc. + * + * 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.latin.BaseKeyboard.Key; +import com.android.inputmethod.latin.BaseKeyboard.Row; + +import org.xmlpull.v1.XmlPullParserException; + +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.content.res.XmlResourceParser; +import android.util.Log; +import android.util.TypedValue; +import android.util.Xml; +import android.view.InflateException; + +import java.io.IOException; +import java.util.List; + +/** + * Parser for BaseKeyboard. + * + * This class parses Keyboard XML file and fill out keys in BaseKeyboard. + * The Keyboard XML file looks like: + * <pre> + * >!-- xml/keyboard.xml --< + * >Keyboard keyboard_attributes*< + * >!-- Keyboard Content --< + * >Row row_attributes*< + * >!-- Row Content --< + * >Key key_attributes* /< + * >Spacer horizontalGap="0.2in" /< + * >include keyboardLayout="@xml/other_keys"< + * ... + * >/Row< + * >include keyboardLayout="@xml/other_rows"< + * ... + * >/Keyboard< + * </pre> + * The xml file which is included in other file must have >merge< as root element, such as: + * <pre> + * >!-- xml/other_keys.xml --< + * >merge< + * >Key key_attributes* /< + * ... + * >/merge< + * </pre> + * and + * <pre> + * >!-- xml/other_rows.xml --< + * >merge< + * >Row row_attributes*< + * >Key key_attributes* /< + * >/Row< + * ... + * >/merge< + * </pre> + */ +public class BaseKeyboardParser { + private static final String TAG = "BaseKeyboardParser"; + private static final boolean DEBUG_TAG = false; + private static final boolean DEBUG_PARSER = false; + + // Keyboard XML Tags + private static final String TAG_KEYBOARD = "Keyboard"; + private static final String TAG_ROW = "Row"; + private static final String TAG_KEY = "Key"; + private static final String TAG_SPACER = "Spacer"; + private static final String TAG_INCLUDE = "include"; + private static final String TAG_MERGE = "merge"; + + private final BaseKeyboard mKeyboard; + private final Resources mResources; + + private int mCurrentX = 0; + private int mCurrentY = 0; + private int mMaxRowWidth = 0; + private int mTotalHeight = 0; + private Row mCurrentRow = null; + + public BaseKeyboardParser(BaseKeyboard keyboard, Resources res) { + mKeyboard = keyboard; + mResources = res; + } + + public int getMaxRowWidth() { + return mMaxRowWidth; + } + + public int getTotalHeight() { + return mTotalHeight; + } + + public void parseKeyboard(XmlResourceParser parser) + throws XmlPullParserException, IOException { + if (DEBUG_PARSER) debugEnterMethod("parseKeyboard", false); + int event; + while ((event = parser.next()) != XmlResourceParser.END_DOCUMENT) { + if (event == XmlResourceParser.START_TAG) { + final String tag = parser.getName(); + if (DEBUG_TAG) debugStartTag("parseKeyboard", tag, false); + if (TAG_KEYBOARD.equals(tag)) { + parseKeyboardAttributes(parser); + parseKeyboardContent(parser, mKeyboard.getKeys()); + break; + } else { + throw new IllegalStartTag(parser, TAG_KEYBOARD); + } + } + } + if (DEBUG_PARSER) debugLeaveMethod("parseKeyboard", false); + } + + private void parseKeyboardAttributes(XmlResourceParser parser) { + final BaseKeyboard keyboard = mKeyboard; + final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser), + R.styleable.BaseKeyboard); + final int width = keyboard.getKeyboardWidth(); + final int height = keyboard.getKeyboardHeight(); + keyboard.setKeyWidth(getDimensionOrFraction(a, + R.styleable.BaseKeyboard_keyWidth, width, width / 10)); + keyboard.setKeyHeight(getDimensionOrFraction(a, + R.styleable.BaseKeyboard_keyHeight, height, 50)); + keyboard.setHorizontalGap(getDimensionOrFraction(a, + R.styleable.BaseKeyboard_horizontalGap, width, 0)); + keyboard.setVerticalGap(getDimensionOrFraction(a, + R.styleable.BaseKeyboard_verticalGap, height, 0)); + a.recycle(); + } + + private void parseKeyboardContent(XmlResourceParser parser, final List<Key> keys) + throws XmlPullParserException, IOException { + if (DEBUG_PARSER) debugEnterMethod("parseKeyboardContent", keys == null); + int event; + while ((event = parser.next()) != XmlResourceParser.END_DOCUMENT) { + if (event == XmlResourceParser.START_TAG) { + final String tag = parser.getName(); + if (DEBUG_TAG) debugStartTag("parseKeyboardContent", tag, keys == null); + if (TAG_ROW.equals(tag)) { + Row row = mKeyboard.createRowFromXml(mResources, parser); + if (keys != null && maybeStartRow(row)) { + parseRowContent(parser, row, keys); + } else { + // Skip entire <Row></Row> + parseRowContent(parser, row, null); + } + } else if (TAG_INCLUDE.equals(tag)) { + parseIncludeKeyboardContent(parser, keys); + } else { + throw new IllegalStartTag(parser, TAG_ROW); + } + } else if (event == XmlResourceParser.END_TAG) { + final String tag = parser.getName(); + if (DEBUG_TAG) debugEndTag("parseKeyboardContent", tag, keys == null); + if (TAG_KEYBOARD.equals(tag)) { + endKeyboard(mKeyboard.getVerticalGap()); + break; + } else if (TAG_MERGE.equals(tag)) { + break; + } else { + throw new IllegalEndTag(parser, TAG_ROW); + } + } + } + if (DEBUG_PARSER) debugLeaveMethod("parseKeyboardContent", keys == null); + } + + private void parseRowContent(XmlResourceParser parser, Row row, List<Key> keys) + throws XmlPullParserException, IOException { + if (DEBUG_PARSER) debugEnterMethod("parseRowContent", keys == null); + int event; + while ((event = parser.next()) != XmlResourceParser.END_DOCUMENT) { + if (event == XmlResourceParser.START_TAG) { + final String tag = parser.getName(); + if (DEBUG_TAG) debugStartTag("parseRowContent", tag, keys == null); + if (TAG_KEY.equals(tag)) { + parseKey(parser, row, keys); + } else if (TAG_SPACER.equals(tag)) { + parseSpacer(parser, keys); + } else if (TAG_INCLUDE.equals(tag)) { + parseIncludeRowContent(parser, row, keys); + } else { + throw new IllegalStartTag(parser, TAG_KEY); + } + } else if (event == XmlResourceParser.END_TAG) { + final String tag = parser.getName(); + if (DEBUG_TAG) debugEndTag("parseRowContent", tag, keys == null); + if (TAG_ROW.equals(tag)) { + if (keys != null) + endRow(); + break; + } else if (TAG_MERGE.equals(tag)) { + break; + } else { + throw new IllegalEndTag(parser, TAG_KEY); + } + } + } + if (DEBUG_PARSER) debugLeaveMethod("parseRowContent", keys == null); + } + + private void parseKey(XmlResourceParser parser, Row row, List<Key> keys) + throws XmlPullParserException, IOException { + if (DEBUG_PARSER) debugEnterMethod("parseKey", keys == null); + if (keys == null) { + checkEndTag(TAG_KEY, parser); + } else { + Key key = mKeyboard.createKeyFromXml(mResources, row, mCurrentX, mCurrentY, parser); + checkEndTag(TAG_KEY, parser); + keys.add(key); + if (key.codes[0] == BaseKeyboard.KEYCODE_SHIFT) + mKeyboard.getShiftKeys().add(key); + endKey(key); + } + } + + private void parseSpacer(XmlResourceParser parser, List<Key> keys) + throws XmlPullParserException, IOException { + if (DEBUG_PARSER) debugEnterMethod("parseSpacer", keys == null); + if (keys == null) { + checkEndTag(TAG_SPACER, parser); + } else { + final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser), + R.styleable.BaseKeyboard); + int gap = getDimensionOrFraction(a, R.styleable.BaseKeyboard_horizontalGap, + mKeyboard.getKeyboardWidth(), 0); + a.recycle(); + checkEndTag(TAG_SPACER, parser); + setSpacer(gap); + } + } + + private void parseIncludeKeyboardContent(XmlResourceParser parser, List<Key> keys) + throws XmlPullParserException, IOException { + parseIncludeInternal(parser, null, keys); + } + + private void parseIncludeRowContent(XmlResourceParser parser, Row row, List<Key> keys) + throws XmlPullParserException, IOException { + parseIncludeInternal(parser, row, keys); + } + + private void parseIncludeInternal(XmlResourceParser parser, Row row, List<Key> keys) + throws XmlPullParserException, IOException { + if (DEBUG_PARSER) debugEnterMethod("parseInclude", keys == null); + if (keys == null) { + checkEndTag(TAG_INCLUDE, parser); + } else { + final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser), + R.styleable.BaseKeyboard_Include); + final int keyboardLayout = a.getResourceId( + R.styleable.BaseKeyboard_Include_keyboardLayout, 0); + a.recycle(); + + checkEndTag(TAG_INCLUDE, parser); + if (keyboardLayout == 0) + throw new ParseException("No keyboardLayout attribute in <include/>", parser); + parseMerge(mResources.getLayout(keyboardLayout), row, keys); + } + if (DEBUG_PARSER) debugLeaveMethod("parseInclude", keys == null); + } + + private void parseMerge(XmlResourceParser parser, Row row, List<Key> keys) + throws XmlPullParserException, IOException { + if (DEBUG_PARSER) debugEnterMethod("parseMerge", keys == null); + int event; + while ((event = parser.next()) != XmlResourceParser.END_DOCUMENT) { + if (event == XmlResourceParser.START_TAG) { + String tag = parser.getName(); + if (DEBUG_TAG) debugStartTag("parseMerge", tag, keys == null); + if (TAG_MERGE.equals(tag)) { + if (row == null) { + parseKeyboardContent(parser, keys); + } else { + parseRowContent(parser, row, keys); + } + break; + } else { + throw new ParseException( + "Included keyboard layout must have <merge> root element", parser); + } + } + } + if (DEBUG_PARSER) debugLeaveMethod("parseMerge", keys == null); + } + + private static void checkEndTag(String tag, XmlResourceParser parser) + throws XmlPullParserException, IOException { + if (parser.next() == XmlResourceParser.END_TAG && tag.equals(parser.getName())) + return; + throw new NonEmptyTag(tag, parser); + } + + // return true if the row is valid for this keyboard mode + private boolean maybeStartRow(Row row) { + if (DEBUG_TAG) + Log.d(TAG, String.format("startRow: mode=0x%08x keyboardMode=0x%08x", + row.mode, mKeyboard.getKeyboardMode())); + if (row.mode == 0 || row.mode == mKeyboard.getKeyboardMode()) { + mCurrentX = 0; + mCurrentRow = row; + return true; + } else { + return false; + } + } + + private void endRow() { + if (mCurrentRow == null) + throw new InflateException("orphant end row tag"); + mCurrentY += mCurrentRow.verticalGap + mCurrentRow.defaultHeight; + mCurrentRow = null; + } + + private void endKey(Key key) { + mCurrentX += key.gap + key.width; + if (mCurrentX > mMaxRowWidth) + mMaxRowWidth = mCurrentX; + } + + private void endKeyboard(int defaultVerticalGap) { + mTotalHeight = mCurrentY - defaultVerticalGap; + } + + private void setSpacer(int gap) { + mCurrentX += gap; + } + + 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) { + // Round it to avoid values like 47.9999 from getting truncated + return Math.round(a.getFraction(index, base, base, defValue)); + } + return defValue; + } + + @SuppressWarnings("serial") + private static class ParseException extends InflateException { + public ParseException(String msg, XmlResourceParser parser) { + super(msg + " at line " + parser.getLineNumber()); + } + } + + @SuppressWarnings("serial") + private static class IllegalStartTag extends ParseException { + public IllegalStartTag(XmlResourceParser parser, String parent) { + super("Illegal start tag " + parser.getName() + " in " + parent, parser); + } + } + + @SuppressWarnings("serial") + private static class IllegalEndTag extends ParseException { + public IllegalEndTag(XmlResourceParser parser, String parent) { + super("Illegal end tag " + parser.getName() + " in " + parent, parser); + } + } + + @SuppressWarnings("serial") + private static class NonEmptyTag extends ParseException { + public NonEmptyTag(String tag, XmlResourceParser parser) { + super(tag + " must be empty tag", parser); + } + } + + private static void debugEnterMethod(String title, boolean skip) { + Log.d(TAG, title + ": enter" + (skip ? " skip" : "")); + } + + private static void debugLeaveMethod(String title, boolean skip) { + Log.d(TAG, title + ": leave" + (skip ? " skip" : "")); + } + + private static void debugStartTag(String title, String tag, boolean skip) { + Log.d(TAG, title + ": <" + tag + ">" + (skip ? " skip" : "")); + } + + private static void debugEndTag(String title, String tag, boolean skip) { + Log.d(TAG, title + ": </" + tag + ">" + (skip ? " skip" : "")); + } + } diff --git a/java/src/com/android/inputmethod/latin/KeyDetector.java b/java/src/com/android/inputmethod/latin/KeyDetector.java index 76fe1200e..3902b60a3 100644 --- a/java/src/com/android/inputmethod/latin/KeyDetector.java +++ b/java/src/com/android/inputmethod/latin/KeyDetector.java @@ -16,14 +16,13 @@ package com.android.inputmethod.latin; -import android.inputmethodservice.Keyboard; -import android.inputmethodservice.Keyboard.Key; +import com.android.inputmethod.latin.BaseKeyboard.Key; import java.util.Arrays; import java.util.List; abstract class KeyDetector { - protected Keyboard mKeyboard; + protected BaseKeyboard mKeyboard; private Key[] mKeys; @@ -35,7 +34,7 @@ abstract class KeyDetector { protected int mProximityThresholdSquare; - public Key[] setKeyboard(Keyboard keyboard, float correctionX, float correctionY) { + public Key[] setKeyboard(BaseKeyboard keyboard, float correctionX, float correctionY) { if (keyboard == null) throw new NullPointerException(); mCorrectionX = (int)correctionX; diff --git a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java index a7b695eb3..dcbdba13d 100644 --- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java @@ -29,14 +29,14 @@ import java.util.Locale; public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceChangeListener { - public static final int MODE_NONE = 0; - public static final int MODE_TEXT = 1; - public static final int MODE_SYMBOLS = 2; - public static final int MODE_PHONE = 3; - public static final int MODE_URL = 4; - public static final int MODE_EMAIL = 5; - public static final int MODE_IM = 6; - public static final int MODE_WEB = 7; + public static final int MODE_TEXT = 0; + 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_NONE = -1; // Main keyboard layouts without the settings key public static final int KEYBOARDMODE_NORMAL = R.id.mode_normal; @@ -44,6 +44,13 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha public static final int KEYBOARDMODE_EMAIL = R.id.mode_email; public static final int KEYBOARDMODE_IM = R.id.mode_im; public static final int KEYBOARDMODE_WEB = R.id.mode_webentry; + public static final int[] QWERTY_MODES = { + KEYBOARDMODE_NORMAL, + KEYBOARDMODE_URL, + KEYBOARDMODE_EMAIL, + KEYBOARDMODE_IM, + KEYBOARDMODE_WEB, + 0 /* for MODE_PHONE */ }; // Main keyboard layouts with the settings key public static final int KEYBOARDMODE_NORMAL_WITH_SETTINGS_KEY = R.id.mode_normal_with_settings_key; @@ -55,12 +62,45 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha R.id.mode_im_with_settings_key; public static final int KEYBOARDMODE_WEB_WITH_SETTINGS_KEY = R.id.mode_webentry_with_settings_key; - - // Symbols keyboard layout without the settings key - public static final int KEYBOARDMODE_SYMBOLS = R.id.mode_symbols; - // Symbols keyboard layout with the settings key - public static final int KEYBOARDMODE_SYMBOLS_WITH_SETTINGS_KEY = - R.id.mode_symbols_with_settings_key; + public static final int[] QWERTY_WITH_SETTINGS_KEY_MODES = { + KEYBOARDMODE_NORMAL_WITH_SETTINGS_KEY, + KEYBOARDMODE_URL_WITH_SETTINGS_KEY, + KEYBOARDMODE_EMAIL_WITH_SETTINGS_KEY, + KEYBOARDMODE_IM_WITH_SETTINGS_KEY, + KEYBOARDMODE_WEB_WITH_SETTINGS_KEY, + 0 /* for MODE_PHONE */ }; + + // Symbols keyboard layouts without the settings key + public static final int KEYBOARDMODE_SYMBOLS_NORMAL = R.id.mode_symbols_normal; + public static final int KEYBOARDMODE_SYMBOLS_URL = R.id.mode_symbols_url; + public static final int KEYBOARDMODE_SYMBOLS_EMAIL = R.id.mode_symbols_email; + public static final int KEYBOARDMODE_SYMBOLS_IM = R.id.mode_symbols_im; + public static final int KEYBOARDMODE_SYMBOLS_WEB = R.id.mode_symbols_webentry; + public static final int[] SYMBOLS_MODES = { + KEYBOARDMODE_SYMBOLS_NORMAL, + KEYBOARDMODE_SYMBOLS_URL, + KEYBOARDMODE_SYMBOLS_EMAIL, + KEYBOARDMODE_SYMBOLS_IM, + KEYBOARDMODE_SYMBOLS_WEB, + 0 /* for MODE_PHONE */ }; + // Symbols keyboard layouts with the settings key + public static final int KEYBOARDMODE_SYMBOLS_NORMAL_WITH_SETTINGS_KEY = + R.id.mode_symbols_normal_with_settings_key; + public static final int KEYBOARDMODE_SYMBOLS_URL_WITH_SETTINGS_KEY = + R.id.mode_symbols_url_with_settings_key; + public static final int KEYBOARDMODE_SYMBOLS_EMAIL_WITH_SETTINGS_KEY = + R.id.mode_symbols_email_with_settings_key; + public static final int KEYBOARDMODE_SYMBOLS_IM_WITH_SETTINGS_KEY = + R.id.mode_symbols_im_with_settings_key; + public static final int KEYBOARDMODE_SYMBOLS_WEB_WITH_SETTINGS_KEY = + R.id.mode_symbols_webentry_with_settings_key; + public static final int[] SYMBOLS_WITH_SETTINGS_KEY_MODES = { + KEYBOARDMODE_SYMBOLS_NORMAL_WITH_SETTINGS_KEY, + KEYBOARDMODE_SYMBOLS_URL_WITH_SETTINGS_KEY, + KEYBOARDMODE_SYMBOLS_EMAIL_WITH_SETTINGS_KEY, + KEYBOARDMODE_SYMBOLS_IM_WITH_SETTINGS_KEY, + KEYBOARDMODE_SYMBOLS_WEB_WITH_SETTINGS_KEY, + 0 /* for MODE_PHONE */ }; public static final String DEFAULT_LAYOUT_ID = "4"; public static final String PREF_KEYBOARD_LAYOUT = "pref_keyboard_layout_20100902"; @@ -115,17 +155,15 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha private boolean mIsAutoCompletionActive; private boolean mHasVoice; private boolean mVoiceOnPrimary; - private boolean mPreferSymbols; private int mSymbolsModeState = SYMBOLS_MODE_STATE_NONE; // Indicates whether or not we have the settings key private boolean mHasSettingsKey; private static final int SETTINGS_KEY_MODE_AUTO = R.string.settings_key_mode_auto; - private static final int SETTINGS_KEY_MODE_ALWAYS_SHOW = R.string.settings_key_mode_always_show; - // NOTE: No need to have SETTINGS_KEY_MODE_ALWAYS_HIDE here because it's not being referred to - // in the source code now. - // Default is SETTINGS_KEY_MODE_AUTO. - private static final int DEFAULT_SETTINGS_KEY_MODE = SETTINGS_KEY_MODE_AUTO; + private static final int SETTINGS_KEY_MODE_ALWAYS_SHOW = + R.string.settings_key_mode_always_show; + private static final int SETTINGS_KEY_MODE_ALWAYS_HIDE = + R.string.settings_key_mode_always_hide; private int mLastDisplayWidth; private LanguageSwitcher mLanguageSwitcher; @@ -158,21 +196,26 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } private KeyboardId makeSymbolsId(boolean hasVoice) { + final int mode = mMode == MODE_NONE ? MODE_TEXT : mMode; return new KeyboardId(KBD_SYMBOLS[getCharColorId()], mHasSettingsKey ? - KEYBOARDMODE_SYMBOLS_WITH_SETTINGS_KEY : KEYBOARDMODE_SYMBOLS, + SYMBOLS_WITH_SETTINGS_KEY_MODES[mode] : SYMBOLS_MODES[mode], false, hasVoice); } private KeyboardId makeSymbolsShiftedId(boolean hasVoice) { + final int mode = mMode == MODE_NONE ? MODE_TEXT : mMode; return new KeyboardId(KBD_SYMBOLS_SHIFT[getCharColorId()], mHasSettingsKey ? - KEYBOARDMODE_SYMBOLS_WITH_SETTINGS_KEY : KEYBOARDMODE_SYMBOLS, + SYMBOLS_WITH_SETTINGS_KEY_MODES[mode] : SYMBOLS_MODES[mode], false, hasVoice); } - public void makeKeyboards(boolean forceCreate) { + private void makeSymbolsKeyboardIds() { mSymbolsId = makeSymbolsId(mHasVoice && !mVoiceOnPrimary); mSymbolsShiftedId = makeSymbolsShiftedId(mHasVoice && !mVoiceOnPrimary); + } + public void makeKeyboards(boolean forceCreate) { + makeSymbolsKeyboardIds(); if (forceCreate) mKeyboards.clear(); // Configuration change is coming after the keyboard gets recreated. So don't rely on that. // If keyboards have already been made, check if we have a screen width change and @@ -207,10 +250,6 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha }); } - public KeyboardId(int xml, boolean hasVoice) { - this(xml, 0, false, hasVoice); - } - @Override public boolean equals(Object other) { return other instanceof KeyboardId && equals((KeyboardId) other); @@ -244,14 +283,10 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha public void setKeyboardMode(int mode, int imeOptions, boolean enableVoice) { mSymbolsModeState = SYMBOLS_MODE_STATE_NONE; - mPreferSymbols = mode == MODE_SYMBOLS; - if (mode == MODE_SYMBOLS) { - mode = MODE_TEXT; - } try { - setKeyboardMode(mode, imeOptions, enableVoice, mPreferSymbols); + setKeyboardMode(mode, imeOptions, enableVoice, false); } catch (RuntimeException e) { - LatinImeLogger.logOnException(mode + "," + imeOptions + "," + mPreferSymbols, e); + LatinImeLogger.logOnException(mode + "," + imeOptions, e); } } @@ -259,6 +294,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha if (mInputView == null) return; mMode = mode; mImeOptions = imeOptions; + makeSymbolsKeyboardIds(); if (enableVoice != mHasVoice) { // TODO clean up this unnecessary recursive call. setVoiceMode(enableVoice, mVoiceOnPrimary); @@ -278,7 +314,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha mInputView.setKeyboard(keyboard); keyboard.setShifted(false); keyboard.setShiftLocked(keyboard.isShiftLocked()); - keyboard.setImeOptions(mInputMethodService.getResources(), mMode, imeOptions); + keyboard.setImeOptions(mInputMethodService.getResources(), mode, imeOptions); keyboard.setColorOfSymbolIcons(mIsAutoCompletionActive, isBlackSym()); // Update the settings key state because number of enabled IMEs could have been changed updateSettingsKeyState(PreferenceManager.getDefaultSharedPreferences(mInputMethodService)); @@ -310,48 +346,31 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } private KeyboardId getKeyboardId(int mode, int imeOptions, boolean isSymbols) { - boolean hasVoice = hasVoiceButton(isSymbols); - int charColorId = getCharColorId(); - // TODO: generalize for any KeyboardId - int keyboardRowsResId = KBD_QWERTY[charColorId]; - if (isSymbols) { - if (mode == MODE_PHONE) { - return new KeyboardId(KBD_PHONE_SYMBOLS[charColorId], hasVoice); - } else { - return new KeyboardId(KBD_SYMBOLS[charColorId], mHasSettingsKey ? - KEYBOARDMODE_SYMBOLS_WITH_SETTINGS_KEY : KEYBOARDMODE_SYMBOLS, - false, hasVoice); - } + final boolean hasVoice = hasVoiceButton(isSymbols); + final int charColorId = getCharColorId(); + final int keyboardRowsResId; + final boolean enableShiftLock; + final int keyboardMode; + + if (mode == MODE_NONE) { + LatinImeLogger.logOnWarning( + "getKeyboardId:" + mode + "," + imeOptions + "," + isSymbols); + mode = MODE_TEXT; } - switch (mode) { - case MODE_NONE: - LatinImeLogger.logOnWarning( - "getKeyboardId:" + mode + "," + imeOptions + "," + isSymbols); - /* fall through */ - case MODE_TEXT: - return new KeyboardId(keyboardRowsResId, mHasSettingsKey ? - KEYBOARDMODE_NORMAL_WITH_SETTINGS_KEY : KEYBOARDMODE_NORMAL, - true, hasVoice); - case MODE_SYMBOLS: - return new KeyboardId(KBD_SYMBOLS[charColorId], mHasSettingsKey ? - KEYBOARDMODE_SYMBOLS_WITH_SETTINGS_KEY : KEYBOARDMODE_SYMBOLS, - false, hasVoice); - case MODE_PHONE: - return new KeyboardId(KBD_PHONE[charColorId], hasVoice); - case MODE_URL: - return new KeyboardId(keyboardRowsResId, mHasSettingsKey ? - KEYBOARDMODE_URL_WITH_SETTINGS_KEY : KEYBOARDMODE_URL, true, hasVoice); - case MODE_EMAIL: - return new KeyboardId(keyboardRowsResId, mHasSettingsKey ? - KEYBOARDMODE_EMAIL_WITH_SETTINGS_KEY : KEYBOARDMODE_EMAIL, true, hasVoice); - case MODE_IM: - return new KeyboardId(keyboardRowsResId, mHasSettingsKey ? - KEYBOARDMODE_IM_WITH_SETTINGS_KEY : KEYBOARDMODE_IM, true, hasVoice); - case MODE_WEB: - return new KeyboardId(keyboardRowsResId, mHasSettingsKey ? - KEYBOARDMODE_WEB_WITH_SETTINGS_KEY : KEYBOARDMODE_WEB, true, hasVoice); + if (isSymbols) { + keyboardRowsResId = mode == MODE_PHONE + ? KBD_PHONE_SYMBOLS[charColorId] : KBD_SYMBOLS[charColorId]; + enableShiftLock = false; + keyboardMode = mHasSettingsKey + ? SYMBOLS_WITH_SETTINGS_KEY_MODES[mode] : SYMBOLS_MODES[mode]; + } else { // QWERTY + keyboardRowsResId = mode == MODE_PHONE + ? KBD_PHONE[charColorId] : KBD_QWERTY[charColorId]; + enableShiftLock = mode == MODE_PHONE ? false : true; + keyboardMode = mHasSettingsKey + ? QWERTY_WITH_SETTINGS_KEY_MODES[mode] : QWERTY_MODES[mode]; } - return null; + return new KeyboardId(keyboardRowsResId, keyboardMode, enableShiftLock, hasVoice); } public int getKeyboardMode() { @@ -372,15 +391,17 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } public void setShifted(boolean shifted) { - if (mInputView != null) { - mInputView.setShifted(shifted); + if (mInputView == null) return; + LatinKeyboard latinKeyboard = mInputView.getLatinKeyboard(); + if (latinKeyboard == null) return; + if (latinKeyboard.setShifted(shifted)) { + mInputView.invalidateAllKeys(); } } public void setShiftLocked(boolean shiftLocked) { - if (mInputView != null) { - mInputView.setShiftLocked(shiftLocked); - } + if (mInputView == null) return; + mInputView.setShiftLocked(shiftLocked); } public void toggleShift() { @@ -412,7 +433,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha public void toggleSymbols() { setKeyboardMode(mMode, mImeOptions, mHasVoice, !mIsSymbols); - if (mIsSymbols && !mPreferSymbols) { + if (mIsSymbols) { mSymbolsModeState = SYMBOLS_MODE_STATE_BEGIN; } else { mSymbolsModeState = SYMBOLS_MODE_STATE_NONE; @@ -523,8 +544,12 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha private void updateSettingsKeyState(SharedPreferences prefs) { Resources resources = mInputMethodService.getResources(); + final boolean showSettingsKeyOption = resources.getBoolean( + R.bool.config_enable_show_settings_key_option); + final int defaultSettingsKeyMode = showSettingsKeyOption + ? SETTINGS_KEY_MODE_AUTO : SETTINGS_KEY_MODE_ALWAYS_HIDE; final String settingsKeyMode = prefs.getString(LatinIMESettings.PREF_SETTINGS_KEY, - resources.getString(DEFAULT_SETTINGS_KEY_MODE)); + resources.getString(defaultSettingsKeyMode)); // 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)) diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index b6fee1170..3663442d4 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -34,7 +34,6 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.XmlResourceParser; import android.inputmethodservice.InputMethodService; -import android.inputmethodservice.Keyboard; import android.media.AudioManager; import android.os.Debug; import android.os.Handler; @@ -69,6 +68,7 @@ import java.io.FileDescriptor; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -95,8 +95,8 @@ public class LatinIME extends InputMethodService private static final String PREF_AUTO_CAP = "auto_cap"; private static final String PREF_QUICK_FIXES = "quick_fixes"; private static final String PREF_SHOW_SUGGESTIONS = "show_suggestions"; - private static final String PREF_AUTO_COMPLETE = "auto_complete"; - //private static final String PREF_BIGRAM_SUGGESTIONS = "bigram_suggestion"; + private static final String PREF_AUTO_COMPLETION_THRESHOLD = "auto_completion_threshold"; + private static final String PREF_BIGRAM_SUGGESTIONS = "bigram_suggestion"; private static final String PREF_VOICE_MODE = "voice_mode"; // Whether or not the user has used voice input before (and thus, whether to show the @@ -137,20 +137,23 @@ public class LatinIME extends InputMethodService private static final int MSG_VOICE_RESULTS = 3; private static final int MSG_UPDATE_OLD_SUGGESTIONS = 4; + private static final int DELAY_UPDATE_SUGGESTIONS = 180; + private static final int DELAY_UPDATE_OLD_SUGGESTIONS = 300; + // How many continuous deletes at which to start deleting at a higher speed. private static final int DELETE_ACCELERATE_AT = 20; // Key events coming any faster than this are long-presses. private static final int QUICK_PRESS = 200; - static final int KEYCODE_ENTER = '\n'; - static final int KEYCODE_SPACE = ' '; - static final int KEYCODE_PERIOD = '.'; + public static final int KEYCODE_ENTER = '\n'; + public static final int KEYCODE_TAB = '\t'; + public static final int KEYCODE_SPACE = ' '; + public static final int KEYCODE_PERIOD = '.'; // Contextual menu positions private static final int POS_METHOD = 0; private static final int POS_SETTINGS = 1; - //private LatinKeyboardView mInputView; private LinearLayout mCandidateViewContainer; private CandidateView mCandidateView; private Suggest mSuggest; @@ -192,11 +195,8 @@ public class LatinIME extends InputMethodService private boolean mJustAddedAutoSpace; private boolean mAutoCorrectEnabled; private boolean mReCorrectionEnabled; - // Bigram Suggestion is disabled in this version. - private final boolean mBigramSuggestionEnabled = false; + private boolean mBigramSuggestionEnabled; private boolean mAutoCorrectOn; - // TODO move this state variable outside LatinIME - private boolean mCapsLock; private boolean mPasswordText; private boolean mVibrateOn; private boolean mSoundOn; @@ -448,6 +448,7 @@ public class LatinIME extends InputMethodService int[] dictionaries = getDictionary(orig); mSuggest = new Suggest(this, dictionaries); + loadAndSetAutoCompletionThreshold(sp); updateAutoTextEnabled(saveLocale); if (mUserDictionary != null) mUserDictionary.close(); mUserDictionary = new UserDictionary(this, mInputLocale); @@ -585,7 +586,6 @@ public class LatinIME extends InputMethodService mPredictionOn = false; mCompletionOn = false; mCompletions = null; - mCapsLock = false; mEnteredText = null; switch (attribute.inputType & EditorInfo.TYPE_MASK_CLASS) { @@ -680,6 +680,7 @@ public class LatinIME extends InputMethodService // If we just entered a text field, maybe it has some old text that requires correction checkReCorrectionOnStart(); checkTutorial(attribute.privateImeOptions); + inputView.setForeground(true); if (TRACE) Debug.startMethodTracing("/data/trace/latinime"); } @@ -731,6 +732,9 @@ public class LatinIME extends InputMethodService @Override public void onFinishInputView(boolean finishingInput) { super.onFinishInputView(finishingInput); + LatinKeyboardBaseView inputView = mKeyboardSwitcher.getInputView(); + if (inputView != null) + inputView.setForeground(false); // Remove penging messages related to update suggestions mHandler.removeMessages(MSG_UPDATE_SUGGESTIONS); mHandler.removeMessages(MSG_UPDATE_OLD_SUGGESTIONS); @@ -986,9 +990,11 @@ public class LatinIME extends InputMethodService return true; } LatinKeyboardView inputView = mKeyboardSwitcher.getInputView(); + if (inputView == null) break; + LatinKeyboard latinKeyboard = inputView.getLatinKeyboard(); + if (latinKeyboard == null) break; // Enable shift key and DPAD to do selections - if (inputView != null && inputView.isShown() - && inputView.isShifted()) { + if (inputView.isShown() && latinKeyboard.isShifted()) { event = new KeyEvent(event.getDownTime(), event.getEventTime(), event.getAction(), event.getKeyCode(), event.getRepeatCount(), event.getDeviceId(), event.getScanCode(), @@ -1048,9 +1054,14 @@ public class LatinIME extends InputMethodService public void updateShiftKeyState(EditorInfo attr) { InputConnection ic = getCurrentInputConnection(); - if (ic != null && attr != null && mKeyboardSwitcher.isAlphabetMode()) { - mKeyboardSwitcher.setShifted(mShiftKeyState.isMomentary() || mCapsLock - || getCursorCapsMode(ic, attr) != 0); + LatinKeyboardView inputView = mKeyboardSwitcher.getInputView(); + if (inputView == null) return; + LatinKeyboard latinKeyboard = inputView.getLatinKeyboard(); + if (latinKeyboard == null) return; + if (ic != null && attr != null && mKeyboardSwitcher.isAlphabetMode() + && !mShiftKeyState.isIgnoring()) { + mKeyboardSwitcher.setShifted(mShiftKeyState.isMomentary() + || latinKeyboard.isShiftLocked() || getCursorCapsMode(ic, attr) != 0); } } @@ -1153,9 +1164,9 @@ public class LatinIME extends InputMethodService } } - private void showInputMethodPicker() { + private void showInputMethodSubtypePicker() { ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) - .showInputMethodPicker(); + .showInputMethodSubtypePicker(); } private void onOptionKeyPressed() { @@ -1171,7 +1182,7 @@ public class LatinIME extends InputMethodService private void onOptionKeyLongPressed() { if (!isShowingOptionDialog()) { if (LatinIMEUtil.hasMultipleEnabledIMEs(this)) { - showInputMethodPicker(); + showInputMethodSubtypePicker(); } else { launchSettings(); } @@ -1186,66 +1197,68 @@ public class LatinIME extends InputMethodService public void onKey(int primaryCode, int[] keyCodes, int x, int y) { long when = SystemClock.uptimeMillis(); - if (primaryCode != Keyboard.KEYCODE_DELETE || - when > mLastKeyTime + QUICK_PRESS) { + if (primaryCode != BaseKeyboard.KEYCODE_DELETE || when > mLastKeyTime + QUICK_PRESS) { mDeleteCount = 0; } mLastKeyTime = when; final boolean distinctMultiTouch = mKeyboardSwitcher.hasDistinctMultitouch(); switch (primaryCode) { - case Keyboard.KEYCODE_DELETE: - handleBackspace(); - mDeleteCount++; - LatinImeLogger.logOnDelete(); - break; - case Keyboard.KEYCODE_SHIFT: - // Shift key is handled in onPress() when device has distinct multi-touch panel. - if (!distinctMultiTouch) - handleShift(); - break; - case Keyboard.KEYCODE_MODE_CHANGE: - // Symbol key is handled in onPress() when device has distinct multi-touch panel. - if (!distinctMultiTouch) - changeKeyboardMode(); - break; - case Keyboard.KEYCODE_CANCEL: - if (!isShowingOptionDialog()) { - handleClose(); - } - break; - case LatinKeyboardView.KEYCODE_OPTIONS: - onOptionKeyPressed(); - break; - case LatinKeyboardView.KEYCODE_OPTIONS_LONGPRESS: - onOptionKeyLongPressed(); - break; - case LatinKeyboardView.KEYCODE_NEXT_LANGUAGE: - toggleLanguage(false, true); - break; - case LatinKeyboardView.KEYCODE_PREV_LANGUAGE: - toggleLanguage(false, false); - break; - case LatinKeyboardView.KEYCODE_VOICE: - if (VOICE_INSTALLED) { - startListening(false /* was a button press, was not a swipe */); - } - break; - case 9 /*Tab*/: - sendDownUpKeyEvents(KeyEvent.KEYCODE_TAB); - break; - default: - if (primaryCode != KEYCODE_ENTER) { - mJustAddedAutoSpace = false; - } - RingCharBuffer.getInstance().push((char)primaryCode, x, y); - LatinImeLogger.logOnInputChar(); - if (isWordSeparator(primaryCode)) { - handleSeparator(primaryCode); - } else { - handleCharacter(primaryCode, keyCodes); - } - // Cancel the just reverted state - mJustRevertedSeparator = null; + case BaseKeyboard.KEYCODE_DELETE: + handleBackspace(); + mDeleteCount++; + LatinImeLogger.logOnDelete(); + break; + case BaseKeyboard.KEYCODE_SHIFT: + // Shift key is handled in onPress() when device has distinct multi-touch panel. + if (!distinctMultiTouch) + handleShift(); + break; + case BaseKeyboard.KEYCODE_MODE_CHANGE: + // Symbol key is handled in onPress() when device has distinct multi-touch panel. + if (!distinctMultiTouch) + changeKeyboardMode(); + break; + case BaseKeyboard.KEYCODE_CANCEL: + if (!isShowingOptionDialog()) { + handleClose(); + } + break; + case LatinKeyboardView.KEYCODE_OPTIONS: + onOptionKeyPressed(); + break; + case LatinKeyboardView.KEYCODE_OPTIONS_LONGPRESS: + onOptionKeyLongPressed(); + break; + case LatinKeyboardView.KEYCODE_NEXT_LANGUAGE: + toggleLanguage(false, true); + break; + case LatinKeyboardView.KEYCODE_PREV_LANGUAGE: + toggleLanguage(false, false); + break; + case LatinKeyboardView.KEYCODE_CAPSLOCK: + handleCapsLock(); + break; + case LatinKeyboardView.KEYCODE_VOICE: + if (VOICE_INSTALLED) { + startListening(false /* was a button press, was not a swipe */); + } + break; + case KEYCODE_TAB: + sendDownUpKeyEvents(KeyEvent.KEYCODE_TAB); + break; + default: + if (primaryCode != KEYCODE_ENTER) { + mJustAddedAutoSpace = false; + } + RingCharBuffer.getInstance().push((char)primaryCode, x, y); + LatinImeLogger.logOnInputChar(); + if (isWordSeparator(primaryCode)) { + handleSeparator(primaryCode); + } else { + handleCharacter(primaryCode, keyCodes); + } + // Cancel the just reverted state + mJustRevertedSeparator = null; } if (mKeyboardSwitcher.onKey(primaryCode)) { changeKeyboardMode(); @@ -1359,24 +1372,41 @@ public class LatinIME extends InputMethodService private void handleShiftInternal(boolean forceNormal) { mHandler.removeMessages(MSG_UPDATE_SHIFT_STATE); KeyboardSwitcher switcher = mKeyboardSwitcher; - LatinKeyboardView inputView = switcher.getInputView(); if (switcher.isAlphabetMode()) { - if (mCapsLock || forceNormal) { - mCapsLock = false; + LatinKeyboardView inputView = switcher.getInputView(); + if (inputView == null) return; + LatinKeyboard latinKeyboard = inputView.getLatinKeyboard(); + if (latinKeyboard == null) return; + if (latinKeyboard.isShiftLocked() || forceNormal) { switcher.setShifted(false); - } else if (inputView != null) { - if (inputView.isShifted()) { - mCapsLock = true; - switcher.setShiftLocked(true); - } else { - switcher.setShifted(true); - } + } else { + switcher.setShifted(!latinKeyboard.isShifted()); } } else { switcher.toggleShift(); } } + private void handleCapsLock() { + mHandler.removeMessages(MSG_UPDATE_SHIFT_STATE); + KeyboardSwitcher switcher = mKeyboardSwitcher; + if (switcher.isAlphabetMode()) { + LatinKeyboardView inputView = switcher.getInputView(); + if (inputView == null) return; + LatinKeyboard latinKeyboard = inputView.getLatinKeyboard(); + if (latinKeyboard == null) return; + if (latinKeyboard.isShiftLocked()) { + // LatinKeyboard.setShifted(false) also disable shift locked state. + // Note: Caps lock LED is off when Key.on is false. + switcher.setShifted(false); + } else { + // LatinKeyboard.setShiftLocked(true) enable shift state too. + // Note: Caps lock LED is on when Key.on is true. + switcher.setShiftLocked(true); + } + } + } + private void abortCorrection(boolean force) { if (force || TextEntryState.isCorrecting()) { getCurrentInputConnection().finishComposingText(); @@ -1405,7 +1435,8 @@ public class LatinIME extends InputMethodService mWord.reset(); } } - if (mKeyboardSwitcher.getInputView().isShifted()) { + LatinKeyboard latinKeyboard = mKeyboardSwitcher.getInputView().getLatinKeyboard(); + if (latinKeyboard != null && latinKeyboard.isShifted()) { if (keyCodes == null || keyCodes[0] < Character.MIN_CODE_POINT || keyCodes[0] > Character.MAX_CODE_POINT) { return; @@ -1424,7 +1455,7 @@ public class LatinIME extends InputMethodService } } if (mPredicting) { - if (mKeyboardSwitcher.getInputView().isShifted() + if (latinKeyboard != null && latinKeyboard.isShifted() && mKeyboardSwitcher.isAlphabetMode() && mComposing.length() == 0) { mWord.setFirstCharCapitalized(true); @@ -1553,12 +1584,14 @@ public class LatinIME extends InputMethodService private void postUpdateSuggestions() { mHandler.removeMessages(MSG_UPDATE_SUGGESTIONS); - mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_UPDATE_SUGGESTIONS), 100); + mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_UPDATE_SUGGESTIONS), + DELAY_UPDATE_SUGGESTIONS); } private void postUpdateOldSuggestions() { mHandler.removeMessages(MSG_UPDATE_OLD_SUGGESTIONS); - mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_UPDATE_OLD_SUGGESTIONS), 300); + mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_UPDATE_OLD_SUGGESTIONS), + DELAY_UPDATE_OLD_SUGGESTIONS); } private boolean isPredictionOn() { @@ -1719,7 +1752,8 @@ public class LatinIME extends InputMethodService final List<CharSequence> nBest = new ArrayList<CharSequence>(); boolean capitalizeFirstWord = preferCapitalization() || (mKeyboardSwitcher.isAlphabetMode() - && mKeyboardSwitcher.getInputView().isShifted()); + && mKeyboardSwitcher.getInputView().getLatinKeyboard() != null + && mKeyboardSwitcher.getInputView().getLatinKeyboard().isShifted()); for (String c : mVoiceResults.candidates) { if (capitalizeFirstWord) { c = Character.toUpperCase(c.charAt(0)) + c.substring(1, c.length()); @@ -1771,7 +1805,10 @@ public class LatinIME extends InputMethodService private void updateSuggestions() { LatinKeyboardView inputView = mKeyboardSwitcher.getInputView(); - ((LatinKeyboard) inputView.getKeyboard()).setPreferredLetters(null); + LatinKeyboard latinKeyboard = inputView.getLatinKeyboard(); + if (latinKeyboard != null) { + latinKeyboard.setPreferredLetters(null); + } // Check if we have a suggestion engine attached. if ((mSuggest == null || !isPredictionOn()) && !mVoiceInputHighlighted) { @@ -1793,7 +1830,10 @@ public class LatinIME extends InputMethodService private void showCorrections(WordAlternatives alternatives) { List<CharSequence> stringList = alternatives.getAlternatives(); - ((LatinKeyboard) mKeyboardSwitcher.getInputView().getKeyboard()).setPreferredLetters(null); + LatinKeyboard latinKeyboard = mKeyboardSwitcher.getInputView().getLatinKeyboard(); + if (latinKeyboard != null) { + latinKeyboard.setPreferredLetters(null); + } showSuggestions(stringList, alternatives.getOriginalWord(), false, false); } @@ -1809,8 +1849,10 @@ public class LatinIME extends InputMethodService int[] nextLettersFrequencies = mSuggest.getNextLettersFrequencies(); - ((LatinKeyboard) mKeyboardSwitcher.getInputView().getKeyboard()).setPreferredLetters( - nextLettersFrequencies); + LatinKeyboard latinKeyboard = mKeyboardSwitcher.getInputView().getLatinKeyboard(); + if (latinKeyboard != null) { + latinKeyboard.setPreferredLetters(nextLettersFrequencies); + } boolean correctionAvailable = !mInputTypeNoAutoCorrect && mSuggest.hasMinimalCorrection(); //|| mCorrectionMode == mSuggest.CORRECTION_FULL; @@ -1864,13 +1906,13 @@ public class LatinIME extends InputMethodService } public void pickSuggestionManually(int index, CharSequence suggestion) { - if (mAfterVoiceInput && mShowingVoiceSuggestions) mVoiceInput.logNBestChoose(index); List<CharSequence> suggestions = mCandidateView.getSuggestions(); - - if (mAfterVoiceInput && !mShowingVoiceSuggestions) { + if (mAfterVoiceInput && mShowingVoiceSuggestions) { mVoiceInput.flushAllTextModificationCounters(); // send this intent AFTER logging any prior aggregated edits. - mVoiceInput.logTextModifiedByChooseSuggestion(suggestion.length()); + mVoiceInput.logTextModifiedByChooseSuggestion(suggestion.toString(), index, + mWordSeparators, + getCurrentInputConnection()); } final boolean correcting = TextEntryState.isCorrecting(); @@ -1982,14 +2024,9 @@ public class LatinIME extends InputMethodService */ private void pickSuggestion(CharSequence suggestion, boolean correcting) { LatinKeyboardView inputView = mKeyboardSwitcher.getInputView(); - if (mCapsLock) { - suggestion = suggestion.toString().toUpperCase(); - } else if (preferCapitalization() - || (mKeyboardSwitcher.isAlphabetMode() - && inputView.isShifted())) { - suggestion = suggestion.toString().toUpperCase().charAt(0) - + suggestion.subSequence(1, suggestion.length()).toString(); - } + if (inputView == null) return; + LatinKeyboard latinKeyboard = inputView.getLatinKeyboard(); + if (latinKeyboard == null) return; InputConnection ic = getCurrentInputConnection(); if (ic != null) { rememberReplacedWord(suggestion); @@ -1998,7 +2035,9 @@ public class LatinIME extends InputMethodService saveWordInHistory(suggestion); mPredicting = false; mCommittedLength = suggestion.length(); - ((LatinKeyboard) inputView.getKeyboard()).setPreferredLetters(null); + if (latinKeyboard != null) { + latinKeyboard.setPreferredLetters(null); + } // If we just corrected a word, then don't show punctuations if (!correcting) { setNextSuggestions(); @@ -2285,10 +2324,20 @@ public class LatinIME extends InputMethodService vibrate(); playKeyClick(primaryCode); final boolean distinctMultiTouch = mKeyboardSwitcher.hasDistinctMultitouch(); - if (distinctMultiTouch && primaryCode == Keyboard.KEYCODE_SHIFT) { - mShiftKeyState.onPress(); - handleShift(); - } else if (distinctMultiTouch && primaryCode == Keyboard.KEYCODE_MODE_CHANGE) { + LatinKeyboardView inputView = mKeyboardSwitcher.getInputView(); + if (inputView == null) return; + LatinKeyboard latinKeyboard = inputView.getLatinKeyboard(); + if (latinKeyboard == null) return; + if (distinctMultiTouch && primaryCode == BaseKeyboard.KEYCODE_SHIFT) { + // In alphabet mode, we call handleShift() to go into the shifted mode in this + // method, onPress(), only when we are in the small letter mode. + if (mKeyboardSwitcher.isAlphabetMode() && latinKeyboard.isShifted()) { + mShiftKeyState.onPressOnShifted(); + } else { + mShiftKeyState.onPress(); + handleShift(); + } + } else if (distinctMultiTouch && primaryCode == BaseKeyboard.KEYCODE_MODE_CHANGE) { mSymbolKeyState.onPress(); changeKeyboardMode(); } else { @@ -2297,18 +2346,34 @@ public class LatinIME extends InputMethodService } } + // TODO: Bug - onRelease() could be dropped if the user slides finger out of the key. It's OK + // for general keys, but we need to obtain onRelease() for the shift key even in such case. public void onRelease(int primaryCode) { // Reset any drag flags in the keyboard - ((LatinKeyboard) mKeyboardSwitcher.getInputView().getKeyboard()).keyReleased(); + LatinKeyboardView inputView = mKeyboardSwitcher.getInputView(); + if (inputView == null) return; + LatinKeyboard latinKeyboard = inputView.getLatinKeyboard(); + if (latinKeyboard == null) return; + latinKeyboard.keyReleased(); //vibrate(); final boolean distinctMultiTouch = mKeyboardSwitcher.hasDistinctMultitouch(); - if (distinctMultiTouch && primaryCode == Keyboard.KEYCODE_SHIFT) { - if (mShiftKeyState.isMomentary()) + if (distinctMultiTouch && primaryCode == BaseKeyboard.KEYCODE_SHIFT) { + if (mShiftKeyState.isMomentary()) { resetShift(); + } + if (mKeyboardSwitcher.isAlphabetMode()) { + // In alphabet mode, we call handleShift() to go into the small letter mode in this + // method, onRelease(), only when we are in the shifted modes -- temporary shifted + // mode or caps lock mode. + if (latinKeyboard.isShifted() && mShiftKeyState.isPressingOnShifted()) { + handleShift(); + } + } mShiftKeyState.onRelease(); - } else if (distinctMultiTouch && primaryCode == Keyboard.KEYCODE_MODE_CHANGE) { - if (mSymbolKeyState.isMomentary()) + } else if (distinctMultiTouch && primaryCode == BaseKeyboard.KEYCODE_MODE_CHANGE) { + if (mSymbolKeyState.isMomentary()) { changeKeyboardMode(); + } mSymbolKeyState.onRelease(); } } @@ -2365,7 +2430,7 @@ public class LatinIME extends InputMethodService // FIXME: These should be triggered after auto-repeat logic int sound = AudioManager.FX_KEYPRESS_STANDARD; switch (primaryCode) { - case Keyboard.KEYCODE_DELETE: + case BaseKeyboard.KEYCODE_DELETE: sound = AudioManager.FX_KEYPRESS_DELETE; break; case KEYCODE_ENTER: @@ -2489,6 +2554,9 @@ public class LatinIME extends InputMethodService mLocaleSupportedForVoiceInput = voiceInputSupportedLocales.contains(mInputLocale); mShowSuggestions = sp.getBoolean(PREF_SHOW_SUGGESTIONS, true); + mAutoCorrectEnabled = mShowSuggestions && isAutoCorrectEnabled(sp); + mBigramSuggestionEnabled = mAutoCorrectEnabled && isBigramSuggestionEnabled(sp); + loadAndSetAutoCompletionThreshold(sp); if (VOICE_INSTALLED) { final String voiceMode = sp.getString(PREF_VOICE_MODE, @@ -2503,15 +2571,61 @@ public class LatinIME extends InputMethodService mEnableVoice = enableVoice; mVoiceOnPrimary = voiceOnPrimary; } - mAutoCorrectEnabled = sp.getBoolean(PREF_AUTO_COMPLETE, - mResources.getBoolean(R.bool.enable_autocorrect)) & mShowSuggestions; - //mBigramSuggestionEnabled = sp.getBoolean( - // PREF_BIGRAM_SUGGESTIONS, true) & mShowSuggestions; updateCorrectionMode(); updateAutoTextEnabled(mResources.getConfiguration().locale); mLanguageSwitcher.loadLocales(sp); } + /** + * load Auto completion threshold from SharedPreferences, + * and modify mSuggest's threshold. + */ + private void loadAndSetAutoCompletionThreshold(SharedPreferences sp) { + // When mSuggest is not initialized, cannnot modify mSuggest's threshold. + if (mSuggest == null) return; + // When auto completion setting is turned off, the threshold is ignored. + if (!isAutoCorrectEnabled(sp)) return; + + final String currentAutoCompletionSetting = sp.getString(PREF_AUTO_COMPLETION_THRESHOLD, + mResources.getString(R.string.auto_completion_threshold_mode_value_modest)); + final String[] autoCompletionThresholdValues = mResources.getStringArray( + R.array.auto_complete_threshold_values); + // When autoCompletionThreshold is greater than 1.0, + // auto completion is virtually turned off. + double autoCompletionThreshold = Double.MAX_VALUE; + try { + final int arrayIndex = Integer.valueOf(currentAutoCompletionSetting); + if (arrayIndex >= 0 && arrayIndex < autoCompletionThresholdValues.length) { + autoCompletionThreshold = Double.parseDouble( + autoCompletionThresholdValues[arrayIndex]); + } + } catch (NumberFormatException e) { + // Whenever the threshold settings are correct, + // never come here. + autoCompletionThreshold = Double.MAX_VALUE; + Log.w(TAG, "Cannot load auto completion threshold setting." + + " currentAutoCompletionSetting: " + currentAutoCompletionSetting + + ", autoCompletionThresholdValues: " + + Arrays.toString(autoCompletionThresholdValues)); + } + // TODO: This should be refactored : + // setAutoCompleteThreshold should be called outside of this method. + mSuggest.setAutoCompleteThreshold(autoCompletionThreshold); + } + + private boolean isAutoCorrectEnabled(SharedPreferences sp) { + final String currentAutoCompletionSetting = sp.getString(PREF_AUTO_COMPLETION_THRESHOLD, + mResources.getString(R.string.auto_completion_threshold_mode_value_modest)); + final String autoCompletionOff = mResources.getString( + R.string.auto_completion_threshold_mode_value_off); + return !currentAutoCompletionSetting.equals(autoCompletionOff); + } + + private boolean isBigramSuggestionEnabled(SharedPreferences sp) { + // TODO: Define default value instead of 'true'. + return sp.getBoolean(PREF_BIGRAM_SUGGESTIONS, true); + } + private void initSuggestPuncList() { mSuggestPuncList = new ArrayList<CharSequence>(); mSuggestPuncs = mResources.getString(R.string.suggested_punctuations); @@ -2544,8 +2658,7 @@ public class LatinIME extends InputMethodService launchSettings(); break; case POS_METHOD: - ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) - .showInputMethodPicker(); + showInputMethodSubtypePicker(); break; } } @@ -2563,8 +2676,12 @@ public class LatinIME extends InputMethodService private void changeKeyboardMode() { mKeyboardSwitcher.toggleSymbols(); - if (mCapsLock && mKeyboardSwitcher.isAlphabetMode()) { - mKeyboardSwitcher.setShiftLocked(mCapsLock); + LatinKeyboardView inputView = mKeyboardSwitcher.getInputView(); + if (inputView == null) return; + LatinKeyboard latinKeyboard = inputView.getLatinKeyboard(); + if (latinKeyboard == null) return; + if (latinKeyboard.isShiftLocked() && mKeyboardSwitcher.isAlphabetMode()) { + mKeyboardSwitcher.setShiftLocked(true); } updateShiftKeyState(getCurrentInputEditorInfo()); @@ -2584,7 +2701,6 @@ public class LatinIME extends InputMethodService final Printer p = new PrintWriterPrinter(fout); p.println("LatinIME state :"); p.println(" Keyboard mode = " + mKeyboardSwitcher.getKeyboardMode()); - p.println(" mCapsLock=" + mCapsLock); p.println(" mComposing=" + mComposing.toString()); p.println(" mPredictionOn=" + mPredictionOn); p.println(" mCorrectionMode=" + mCorrectionMode); diff --git a/java/src/com/android/inputmethod/latin/LatinIMESettings.java b/java/src/com/android/inputmethod/latin/LatinIMESettings.java index ffff33da2..4f20e9b10 100644 --- a/java/src/com/android/inputmethod/latin/LatinIMESettings.java +++ b/java/src/com/android/inputmethod/latin/LatinIMESettings.java @@ -43,6 +43,9 @@ public class LatinIMESettings extends PreferenceActivity private static final String QUICK_FIXES_KEY = "quick_fixes"; private static final String PREDICTION_SETTINGS_KEY = "prediction_settings"; private static final String VOICE_SETTINGS_KEY = "voice_mode"; + private static final String PREF_SHOW_SUGGESTIONS = "show_suggestions"; + private static final String PREF_AUTO_COMPLETION_THRESHOLD = "auto_completion_threshold"; + private static final String PREF_BIGRAM_SUGGESTIONS = "bigram_suggestion"; /* package */ static final String PREF_SETTINGS_KEY = "settings_key"; private static final String TAG = "LatinIMESettings"; @@ -53,6 +56,9 @@ public class LatinIMESettings extends PreferenceActivity private CheckBoxPreference mQuickFixes; private ListPreference mVoicePreference; private ListPreference mSettingsKeyPreference; + private CheckBoxPreference mShowSuggestions; + private ListPreference mAutoCompletionThreshold; + private CheckBoxPreference mBigramSuggestion; private boolean mVoiceOn; private VoiceInputLogger mLogger; @@ -60,6 +66,18 @@ public class LatinIMESettings extends PreferenceActivity private boolean mOkClicked = false; private String mVoiceModeOff; + private void ensureConsistencyOfAutoCompletionSettings() { + if (mShowSuggestions.isChecked()) { + mAutoCompletionThreshold.setEnabled(true); + final String autoCompletionOff = getResources().getString( + R.string.auto_completion_threshold_mode_value_off); + final String currentSetting = mAutoCompletionThreshold.getValue(); + mBigramSuggestion.setEnabled(!currentSetting.equals(autoCompletionOff)); + } else { + mAutoCompletionThreshold.setEnabled(false); + mBigramSuggestion.setEnabled(false); + } + } @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -73,6 +91,16 @@ public class LatinIMESettings extends PreferenceActivity mVoiceModeOff = getString(R.string.voice_mode_off); mVoiceOn = !(prefs.getString(VOICE_SETTINGS_KEY, mVoiceModeOff).equals(mVoiceModeOff)); mLogger = VoiceInputLogger.getLogger(this); + + mShowSuggestions = (CheckBoxPreference) findPreference(PREF_SHOW_SUGGESTIONS); + mAutoCompletionThreshold = (ListPreference) findPreference(PREF_AUTO_COMPLETION_THRESHOLD); + mBigramSuggestion = (CheckBoxPreference) findPreference(PREF_BIGRAM_SUGGESTIONS); + ensureConsistencyOfAutoCompletionSettings(); + + final boolean showSettingsKeyOption = getResources().getBoolean( + R.bool.config_enable_show_settings_key_option); + if (!showSettingsKeyOption) + getPreferenceScreen().removePreference(mSettingsKeyPreference); } @Override @@ -108,6 +136,7 @@ public class LatinIMESettings extends PreferenceActivity showVoiceConfirmation(); } } + ensureConsistencyOfAutoCompletionSettings(); mVoiceOn = !(prefs.getString(VOICE_SETTINGS_KEY, mVoiceModeOff).equals(mVoiceModeOff)); updateVoiceModeSummary(); updateSettingsKeySummary(); diff --git a/java/src/com/android/inputmethod/latin/LatinIMEUtil.java b/java/src/com/android/inputmethod/latin/LatinIMEUtil.java index 85ecaee50..d93639063 100644 --- a/java/src/com/android/inputmethod/latin/LatinIMEUtil.java +++ b/java/src/com/android/inputmethod/latin/LatinIMEUtil.java @@ -168,4 +168,58 @@ public class LatinIMEUtil { mLength = 0; } } + + public static int editDistance(CharSequence s, CharSequence t) { + if (s == null || t == null) { + throw new IllegalArgumentException("editDistance: Arguments should not be null."); + } + final int sl = s.length(); + final int tl = t.length(); + int[][] dp = new int [sl + 1][tl + 1]; + for (int i = 0; i <= sl; i++) { + dp[i][0] = i; + } + for (int j = 0; j <= tl; j++) { + dp[0][j] = j; + } + for (int i = 0; i < sl; ++i) { + for (int j = 0; j < tl; ++j) { + if (s.charAt(i) == t.charAt(j)) { + dp[i + 1][j + 1] = dp[i][j]; + } else { + dp[i + 1][j + 1] = 1 + Math.min(dp[i][j], + Math.min(dp[i + 1][j], dp[i][j + 1])); + } + } + } + return dp[sl][tl]; + } + + // In dictionary.cpp, getSuggestion() method, + // suggestion scores are computed using the below formula. + // original score (called 'frequency') + // := pow(mTypedLetterMultiplier (this is defined 2), + // (the number of matched characters between typed word and suggested word)) + // * (individual word's score which defined in the unigram dictionary, + // and this score is defined in range [0, 255].) + // * (when before.length() == after.length(), + // mFullWordMultiplier (this is defined 2)) + // So, maximum original score is pow(2, before.length()) * 255 * 2 + // So, we can normalize original score by dividing this value. + private static final int MAX_INITIAL_SCORE = 255; + private static final int TYPED_LETTER_MULTIPLIER = 2; + private static final int FULL_WORD_MULTIPLYER = 2; + public static double calcNormalizedScore(CharSequence before, CharSequence after, int score) { + final int beforeLength = before.length(); + final int afterLength = after.length(); + final int distance = editDistance(before, after); + final double maximumScore = MAX_INITIAL_SCORE + * Math.pow(TYPED_LETTER_MULTIPLIER, beforeLength) + * FULL_WORD_MULTIPLYER; + // add a weight based on edit distance. + // distance <= max(afterLength, beforeLength) == afterLength, + // so, 0 <= distance / afterLength <= 1 + final double weight = 1.0 - (double) distance / afterLength; + return (score / maximumScore) * weight; + } } diff --git a/java/src/com/android/inputmethod/latin/LatinImeLogger.java b/java/src/com/android/inputmethod/latin/LatinImeLogger.java index a8ab9cc98..dd7bc8ac1 100644 --- a/java/src/com/android/inputmethod/latin/LatinImeLogger.java +++ b/java/src/com/android/inputmethod/latin/LatinImeLogger.java @@ -20,7 +20,6 @@ import com.android.inputmethod.latin.Dictionary.DataType; import android.content.Context; import android.content.SharedPreferences; -import android.inputmethodservice.Keyboard; import java.util.List; public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChangeListener { @@ -65,7 +64,7 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang public static void onAddSuggestedWord(String word, int typeId, DataType dataType) { } - public static void onSetKeyboard(Keyboard kb) { + public static void onSetKeyboard(BaseKeyboard kb) { } } diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboard.java b/java/src/com/android/inputmethod/latin/LatinKeyboard.java index 45a4a9508..15a8cf768 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboard.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboard.java @@ -30,16 +30,16 @@ import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; -import android.inputmethodservice.Keyboard; import android.text.TextPaint; import android.util.Log; import android.view.ViewConfiguration; import android.view.inputmethod.EditorInfo; +import java.util.HashMap; import java.util.List; import java.util.Locale; -public class LatinKeyboard extends Keyboard { +public class LatinKeyboard extends BaseKeyboard { private static final boolean DEBUG_PREFERRED_LETTER = false; private static final String TAG = "LatinKeyboard"; @@ -48,7 +48,7 @@ public class LatinKeyboard extends Keyboard { private Drawable mShiftLockIcon; private Drawable mShiftLockPreviewIcon; - private Drawable mOldShiftIcon; + private final HashMap<Key, Drawable> mOldShiftIcons = new HashMap<Key, Drawable>(); private Drawable mSpaceIcon; private Drawable mSpaceAutoCompletionIndicator; private Drawable mSpacePreviewIcon; @@ -58,15 +58,11 @@ public class LatinKeyboard extends Keyboard { private Drawable m123MicPreviewIcon; private final Drawable mButtonArrowLeftIcon; private final Drawable mButtonArrowRightIcon; - private Key mShiftKey; private Key mEnterKey; private Key mF1Key; private final Drawable mHintIcon; private Key mSpaceKey; private Key m123Key; - private final int NUMBER_HINT_COUNT = 10; - private Key[] mNumberHintKeys; - private Drawable[] mNumberHintIcons = new Drawable[NUMBER_HINT_COUNT]; private int mSpaceKeyIndex = -1; private int mSpaceDragStartX; private int mSpaceDragLastDiff; @@ -74,7 +70,7 @@ public class LatinKeyboard extends Keyboard { private LanguageSwitcher mLanguageSwitcher; private final Resources mRes; private final Context mContext; - private int mMode; + private int mMode; // TODO: remove this and use the corresponding mode in the parent class // Whether this keyboard has voice icon on it private boolean mHasVoiceButton; // Whether voice icon is enabled at all @@ -89,13 +85,15 @@ public class LatinKeyboard extends Keyboard { private int mPrefLetterY; private int mPrefDistance; + // Default Enter key attributes + private final Drawable mDefaultEnterIcon; + private final Drawable mDefaultEnterPreview; + private final CharSequence mDefaultEnterLabel; + private final CharSequence mDefaultEnterText; + // TODO: generalize for any keyboardId private boolean mIsBlackSym; - // TODO: remove this attribute when either Keyboard.mDefaultVerticalGap or Key.parent becomes - // non-private. - private final int mVerticalGap; - private static final int SHIFT_OFF = 0; private static final int SHIFT_ON = 1; private static final int SHIFT_LOCKED = 2; @@ -123,8 +121,8 @@ public class LatinKeyboard extends Keyboard { super(context, xmlLayoutResId, mode); final Resources res = context.getResources(); mContext = context; - mMode = mode; mRes = res; + mMode = mode; mShiftLockIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked); mShiftLockPreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_shift_locked); setDefaultBounds(mShiftLockPreviewIcon); @@ -145,23 +143,16 @@ public class LatinKeyboard extends Keyboard { mIsAlphaKeyboard = xmlLayoutResId == R.xml.kbd_qwerty || xmlLayoutResId == R.xml.kbd_qwerty_black; mSpaceKeyIndex = indexOf(LatinIME.KEYCODE_SPACE); - initializeNumberHintResources(context); - // TODO remove this initialization after cleanup - mVerticalGap = super.getVerticalGap(); - } - private void initializeNumberHintResources(Context context) { - final Resources res = context.getResources(); - mNumberHintIcons[0] = res.getDrawable(R.drawable.keyboard_hint_0); - mNumberHintIcons[1] = res.getDrawable(R.drawable.keyboard_hint_1); - mNumberHintIcons[2] = res.getDrawable(R.drawable.keyboard_hint_2); - mNumberHintIcons[3] = res.getDrawable(R.drawable.keyboard_hint_3); - mNumberHintIcons[4] = res.getDrawable(R.drawable.keyboard_hint_4); - mNumberHintIcons[5] = res.getDrawable(R.drawable.keyboard_hint_5); - mNumberHintIcons[6] = res.getDrawable(R.drawable.keyboard_hint_6); - mNumberHintIcons[7] = res.getDrawable(R.drawable.keyboard_hint_7); - mNumberHintIcons[8] = res.getDrawable(R.drawable.keyboard_hint_8); - mNumberHintIcons[9] = res.getDrawable(R.drawable.keyboard_hint_9); + if (mEnterKey != null) { + mDefaultEnterIcon = mEnterKey.icon; + mDefaultEnterPreview = mEnterKey.iconPreview; + mDefaultEnterLabel = mEnterKey.label; + mDefaultEnterText = mEnterKey.text; + } else { + mDefaultEnterIcon = mDefaultEnterPreview = null; + mDefaultEnterLabel = mDefaultEnterText = null; + } } @Override @@ -184,170 +175,140 @@ public class LatinKeyboard extends Keyboard { break; } - // For number hints on the upper-right corner of key - if (mNumberHintKeys == null) { - // NOTE: This protected method is being called from the base class constructor before - // mNumberHintKeys gets initialized. - mNumberHintKeys = new Key[NUMBER_HINT_COUNT]; - } - int hintNumber = -1; - if (LatinKeyboardBaseView.isNumberAtLeftmostPopupChar(key)) { - hintNumber = key.popupCharacters.charAt(0) - '0'; - } else if (LatinKeyboardBaseView.isNumberAtRightmostPopupChar(key)) { - hintNumber = key.popupCharacters.charAt(key.popupCharacters.length() - 1) - '0'; - } - if (hintNumber >= 0 && hintNumber <= 9) { - mNumberHintKeys[hintNumber] = key; - } - return key; } - void setImeOptions(Resources res, int mode, int options) { + private static void resetKeyAttributes(Key key, CharSequence label) { + key.popupCharacters = null; + key.popupResId = 0; + key.text = null; + key.iconPreview = null; + key.icon = null; + key.hintIcon = null; + key.label = label; + } + + public void setImeOptions(Resources res, int mode, int options) { mMode = mode; - // TODO should clean up this method - if (mEnterKey != null) { - // Reset some of the rarely used attributes. - mEnterKey.popupCharacters = null; - mEnterKey.popupResId = 0; - mEnterKey.text = null; - switch (options&(EditorInfo.IME_MASK_ACTION|EditorInfo.IME_FLAG_NO_ENTER_ACTION)) { - case EditorInfo.IME_ACTION_GO: - mEnterKey.iconPreview = null; - mEnterKey.icon = null; - mEnterKey.label = res.getText(R.string.label_go_key); - break; - case EditorInfo.IME_ACTION_NEXT: - mEnterKey.iconPreview = null; - mEnterKey.icon = null; - mEnterKey.label = res.getText(R.string.label_next_key); - break; - case EditorInfo.IME_ACTION_DONE: - mEnterKey.iconPreview = null; - mEnterKey.icon = null; - mEnterKey.label = res.getText(R.string.label_done_key); - break; - case EditorInfo.IME_ACTION_SEARCH: - mEnterKey.iconPreview = res.getDrawable( - R.drawable.sym_keyboard_feedback_search); - mEnterKey.icon = res.getDrawable(mIsBlackSym ? - R.drawable.sym_bkeyboard_search : R.drawable.sym_keyboard_search); - mEnterKey.label = null; - break; - case EditorInfo.IME_ACTION_SEND: - mEnterKey.iconPreview = null; - mEnterKey.icon = null; - mEnterKey.label = res.getText(R.string.label_send_key); - break; - default: - if (mode == KeyboardSwitcher.MODE_IM) { - mEnterKey.icon = mHintIcon; - mEnterKey.iconPreview = null; - mEnterKey.label = ":-)"; - mEnterKey.text = ":-) "; - mEnterKey.popupResId = R.xml.popup_smileys; - } else { - mEnterKey.iconPreview = res.getDrawable( - R.drawable.sym_keyboard_feedback_return); - mEnterKey.icon = res.getDrawable(mIsBlackSym ? - R.drawable.sym_bkeyboard_return : R.drawable.sym_keyboard_return); - mEnterKey.label = null; - } - break; - } - // Set the initial size of the preview icon - if (mEnterKey.iconPreview != null) { - setDefaultBounds(mEnterKey.iconPreview); + if (mEnterKey == null) + return; + final boolean configDynamicKeyTopEnterKey = res.getBoolean( + R.bool.config_dynamic_key_top_enter_key); + if (configDynamicKeyTopEnterKey) { + switch (options & (EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION)) { + case EditorInfo.IME_ACTION_GO: + resetKeyAttributes(mEnterKey, res.getText(R.string.label_go_key)); + break; + case EditorInfo.IME_ACTION_NEXT: + resetKeyAttributes(mEnterKey, res.getText(R.string.label_next_key)); + break; + case EditorInfo.IME_ACTION_DONE: + resetKeyAttributes(mEnterKey, res.getText(R.string.label_done_key)); + break; + case EditorInfo.IME_ACTION_SEARCH: + resetKeyAttributes(mEnterKey, null); + mEnterKey.iconPreview = res.getDrawable(R.drawable.sym_keyboard_feedback_search); + mEnterKey.icon = res.getDrawable(mIsBlackSym ? R.drawable.sym_bkeyboard_search + : R.drawable.sym_keyboard_search); + break; + case EditorInfo.IME_ACTION_SEND: + resetKeyAttributes(mEnterKey, res.getText(R.string.label_send_key)); + break; + default: + resetKeyAttributes(mEnterKey, mDefaultEnterLabel); + mEnterKey.text = mDefaultEnterText; + mEnterKey.icon = mDefaultEnterIcon; + mEnterKey.iconPreview = mDefaultEnterPreview; + break; } } + // Set the initial size of the preview icon + setDefaultBounds(mEnterKey.iconPreview); } - - void enableShiftLock() { - int index = getShiftKeyIndex(); - if (index >= 0) { - mShiftKey = getKeys().get(index); - if (mShiftKey instanceof LatinKey) { - ((LatinKey)mShiftKey).enableShiftLock(); + + public void enableShiftLock() { + for (final Key key : getShiftKeys()) { + if (key instanceof LatinKey) { + ((LatinKey)key).enableShiftLock(); } - mOldShiftIcon = mShiftKey.icon; + mOldShiftIcons.put(key, key.icon); } } - void setShiftLocked(boolean shiftLocked) { - if (mShiftKey != null) { - if (shiftLocked) { - mShiftKey.on = true; - mShiftKey.icon = mShiftLockIcon; - mShiftState = SHIFT_LOCKED; - } else { - mShiftKey.on = false; - mShiftKey.icon = mShiftLockIcon; - mShiftState = SHIFT_ON; - } + public void setShiftLocked(boolean shiftLocked) { + // TODO: cleanup this method with BaseKeyboard.Key + for (final Key key : getShiftKeys()) { + key.on = shiftLocked; + key.icon = mShiftLockIcon; } + mShiftState = shiftLocked ? SHIFT_LOCKED : SHIFT_ON; } - boolean isShiftLocked() { + public boolean isShiftLocked() { return mShiftState == SHIFT_LOCKED; } - + @Override public boolean setShifted(boolean shiftState) { + // TODO: cleanup this method with BaseKeyboard.Key. boolean shiftChanged = false; - if (mShiftKey != null) { + if (getShiftKeys().size() > 0) { + for (final Key key : getShiftKeys()) { + if (shiftState == false) { + key.on = false; + key.icon = mOldShiftIcons.get(key); + } else if (mShiftState == SHIFT_OFF) { + key.icon = mShiftLockIcon; + } + } if (shiftState == false) { shiftChanged = mShiftState != SHIFT_OFF; mShiftState = SHIFT_OFF; - mShiftKey.on = false; - mShiftKey.icon = mOldShiftIcon; - } else { - if (mShiftState == SHIFT_OFF) { - shiftChanged = mShiftState == SHIFT_OFF; - mShiftState = SHIFT_ON; - mShiftKey.icon = mShiftLockIcon; - } + } else if (mShiftState == SHIFT_OFF) { + shiftChanged = mShiftState == SHIFT_OFF; + mShiftState = SHIFT_ON; } + return shiftChanged; } else { return super.setShifted(shiftState); } - return shiftChanged; } @Override public boolean isShifted() { - if (mShiftKey != null) { + if (getShiftKeys().size() > 0) { return mShiftState != SHIFT_OFF; } else { return super.isShifted(); } } - /* package */ boolean isAlphaKeyboard() { + public boolean isTemporaryUpperCase() { + return mIsAlphaKeyboard && isShifted() && !isShiftLocked(); + } + + public boolean isAlphaKeyboard() { return mIsAlphaKeyboard; } public void setColorOfSymbolIcons(boolean isAutoCompletion, boolean isBlack) { mIsBlackSym = isBlack; + final Resources res = mRes; if (isBlack) { - mShiftLockIcon = mRes.getDrawable(R.drawable.sym_bkeyboard_shift_locked); - mSpaceIcon = mRes.getDrawable(R.drawable.sym_bkeyboard_space); - mMicIcon = mRes.getDrawable(R.drawable.sym_bkeyboard_mic); - m123MicIcon = mRes.getDrawable(R.drawable.sym_bkeyboard_123_mic); + mShiftLockIcon = res.getDrawable(R.drawable.sym_bkeyboard_shift_locked); + mSpaceIcon = res.getDrawable(R.drawable.sym_bkeyboard_space); + mMicIcon = res.getDrawable(R.drawable.sym_bkeyboard_mic); + m123MicIcon = res.getDrawable(R.drawable.sym_bkeyboard_123_mic); } else { - mShiftLockIcon = mRes.getDrawable(R.drawable.sym_keyboard_shift_locked); - mSpaceIcon = mRes.getDrawable(R.drawable.sym_keyboard_space); - mMicIcon = mRes.getDrawable(R.drawable.sym_keyboard_mic); - m123MicIcon = mRes.getDrawable(R.drawable.sym_keyboard_123_mic); + mShiftLockIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked); + mSpaceIcon = res.getDrawable(R.drawable.sym_keyboard_space); + mMicIcon = res.getDrawable(R.drawable.sym_keyboard_mic); + m123MicIcon = res.getDrawable(R.drawable.sym_keyboard_123_mic); } updateDynamicKeys(); if (mSpaceKey != null) { updateSpaceBarForLocale(isAutoCompletion, isBlack); } - updateNumberHintKeys(); - } - - private void setDefaultBounds(Drawable drawable) { - drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); } public void setVoiceMode(boolean hasVoiceButton, boolean hasVoice) { @@ -362,9 +323,11 @@ public class LatinKeyboard extends Keyboard { } private void update123Key() { + final boolean configDynamicKeyTopSymbolKey = mRes.getBoolean( + R.bool.config_dynamic_key_top_symbol_key); // Update KEYCODE_MODE_CHANGE key only on alphabet mode, not on symbol mode. if (m123Key != null && mIsAlphaKeyboard) { - if (mVoiceEnabled && !mHasVoiceButton) { + if (configDynamicKeyTopSymbolKey && mVoiceEnabled && !mHasVoiceButton) { m123Key.icon = m123MicIcon; m123Key.iconPreview = m123MicPreviewIcon; m123Key.label = null; @@ -403,14 +366,11 @@ public class LatinKeyboard extends Keyboard { } private void setMicF1Key(Key key) { - // HACK: draw mMicIcon and mHintIcon at the same time - final Drawable micWithSettingsHintDrawable = new BitmapDrawable(mRes, - drawSynthesizedSettingsHintImage(key.width, key.height, mMicIcon, mHintIcon)); - key.label = null; key.codes = new int[] { LatinKeyboardView.KEYCODE_VOICE }; key.popupResId = R.xml.popup_mic; - key.icon = micWithSettingsHintDrawable; + key.icon = mMicIcon; + key.hintIcon = mHintIcon; key.iconPreview = mMicPreviewIcon; } @@ -418,18 +378,11 @@ public class LatinKeyboard extends Keyboard { key.label = label; key.codes = new int[] { label.charAt(0) }; key.popupResId = popupResId; - key.icon = mHintIcon; + key.icon = null; + key.hintIcon = mHintIcon; key.iconPreview = null; } - public boolean isF1Key(Key key) { - return key == mF1Key; - } - - public static boolean hasPuncOrSmileysPopup(Key key) { - return key.popupResId == R.xml.popup_punctuation || key.popupResId == R.xml.popup_smileys; - } - /** * @return a key which should be invalidated. */ @@ -438,31 +391,24 @@ public class LatinKeyboard extends Keyboard { return mSpaceKey; } - private void updateNumberHintKeys() { - for (int i = 0; i < mNumberHintKeys.length; ++i) { - if (mNumberHintKeys[i] != null) { - mNumberHintKeys[i].icon = mNumberHintIcons[i]; - } - } - } - public boolean isLanguageSwitchEnabled() { return mLocale != null; } private void updateSpaceBarForLocale(boolean isAutoCompletion, boolean isBlack) { + final Resources res = mRes; // If application locales are explicitly selected. if (mLocale != null) { - mSpaceKey.icon = new BitmapDrawable(mRes, + mSpaceKey.icon = new BitmapDrawable(res, drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCompletion, isBlack)); } else { // sym_keyboard_space_led can be shared with Black and White symbol themes. if (isAutoCompletion) { - mSpaceKey.icon = new BitmapDrawable(mRes, + mSpaceKey.icon = new BitmapDrawable(res, drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCompletion, isBlack)); } else { - mSpaceKey.icon = isBlack ? mRes.getDrawable(R.drawable.sym_bkeyboard_space) - : mRes.getDrawable(R.drawable.sym_keyboard_space); + mSpaceKey.icon = isBlack ? res.getDrawable(R.drawable.sym_bkeyboard_space) + : res.getDrawable(R.drawable.sym_keyboard_space); } } } @@ -474,34 +420,6 @@ public class LatinKeyboard extends Keyboard { return bounds.width(); } - // Overlay two images: mainIcon and hintIcon. - private Bitmap drawSynthesizedSettingsHintImage( - int width, int height, Drawable mainIcon, Drawable hintIcon) { - if (mainIcon == null || hintIcon == null) - return null; - Rect hintIconPadding = new Rect(0, 0, 0, 0); - hintIcon.getPadding(hintIconPadding); - final Bitmap buffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - final Canvas canvas = new Canvas(buffer); - canvas.drawColor(mRes.getColor(R.color.latinkeyboard_transparent), PorterDuff.Mode.CLEAR); - - // Draw main icon at the center of the key visual - // Assuming the hintIcon shares the same padding with the key's background drawable - final int drawableX = (width + hintIconPadding.left - hintIconPadding.right - - mainIcon.getIntrinsicWidth()) / 2; - final int drawableY = (height + hintIconPadding.top - hintIconPadding.bottom - - mainIcon.getIntrinsicHeight()) / 2; - setDefaultBounds(mainIcon); - canvas.translate(drawableX, drawableY); - mainIcon.draw(canvas); - canvas.translate(-drawableX, -drawableY); - - // Draw hint icon fully in the key - hintIcon.setBounds(0, 0, width, height); - hintIcon.draw(canvas); - return buffer; - } - // Layout local language name and left and right arrow on space bar. private static String layoutSpaceBar(Paint paint, Locale locale, Drawable lArrow, Drawable rArrow, int width, int height, float origTextSize, @@ -550,7 +468,8 @@ public class LatinKeyboard extends Keyboard { final int height = mSpaceIcon.getIntrinsicHeight(); final Bitmap buffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(buffer); - canvas.drawColor(mRes.getColor(R.color.latinkeyboard_transparent), PorterDuff.Mode.CLEAR); + final Resources res = mRes; + canvas.drawColor(res.getColor(R.color.latinkeyboard_transparent), PorterDuff.Mode.CLEAR); // If application locales are explicitly selected. if (mLocale != null) { @@ -566,14 +485,14 @@ public class LatinKeyboard extends Keyboard { allowVariableTextSize); // Draw language text with shadow - final int shadowColor = mRes.getColor(isBlack + final int shadowColor = res.getColor(isBlack ? R.color.latinkeyboard_bar_language_shadow_black : R.color.latinkeyboard_bar_language_shadow_white); final float baseline = height * SPACEBAR_LANGUAGE_BASELINE; final float descent = paint.descent(); paint.setColor(shadowColor); canvas.drawText(language, width / 2, baseline - descent - 1, paint); - paint.setColor(mRes.getColor(R.color.latinkeyboard_bar_language_text)); + paint.setColor(res.getColor(R.color.latinkeyboard_bar_language_text)); canvas.drawText(language, width / 2, baseline - descent, paint); // Put arrows that are already layed out on either side of the text @@ -649,12 +568,12 @@ public class LatinKeyboard extends Keyboard { return mCurrentlyInSpace; } - void setPreferredLetters(int[] frequencies) { + public void setPreferredLetters(int[] frequencies) { mPrefLetterFrequencies = frequencies; mPrefLetter = 0; } - void keyReleased() { + public void keyReleased() { mCurrentlyInSpace = false; mSpaceDragLastDiff = 0; mPrefLetter = 0; @@ -670,10 +589,9 @@ public class LatinKeyboard extends Keyboard { * Does the magic of locking the touch gesture into the spacebar when * switching input languages. */ - boolean isInside(LatinKey key, int x, int y) { + public boolean isInside(LatinKey key, int x, int y) { final int code = key.codes[0]; - if (code == KEYCODE_SHIFT || - code == KEYCODE_DELETE) { + if (code == KEYCODE_SHIFT || code == KEYCODE_DELETE) { y -= key.height / 10; if (code == KEYCODE_SHIFT) x += key.width / 6; if (code == KEYCODE_DELETE) x -= key.width / 6; @@ -819,8 +737,7 @@ public class LatinKeyboard extends Keyboard { return textSize; } - // TODO LatinKey could be static class - class LatinKey extends Keyboard.Key { + public static class LatinKey extends BaseKeyboard.Key { // functional normal state (with properties) private final int[] KEY_STATE_FUNCTIONAL_NORMAL = { @@ -835,7 +752,7 @@ public class LatinKeyboard extends Keyboard { private boolean mShiftLockEnabled; - public LatinKey(Resources res, Keyboard.Row parent, int x, int y, + public LatinKey(Resources res, BaseKeyboard.Row parent, int x, int y, XmlResourceParser parser) { super(res, parent, x, y, parser); if (popupCharacters != null && popupCharacters.length() == 0) { @@ -868,13 +785,12 @@ public class LatinKeyboard extends Keyboard { */ @Override public boolean isInside(int x, int y) { - // TODO This should be done by parent.isInside(this, x, y) - // if Key.parent were protected. - boolean result = LatinKeyboard.this.isInside(this, x, y); + boolean result = (keyboard instanceof LatinKeyboard) + && ((LatinKeyboard)keyboard).isInside(this, x, y); return result; } - boolean isInsideSuper(int x, int y) { + private boolean isInsideSuper(int x, int y) { return super.isInside(x, y); } @@ -889,15 +805,6 @@ public class LatinKeyboard extends Keyboard { } return super.getCurrentDrawableState(); } - - @Override - public int squaredDistanceFrom(int x, int y) { - // We should count vertical gap between rows to calculate the center of this Key. - final int verticalGap = LatinKeyboard.this.mVerticalGap; - final int xDist = this.x + width / 2 - x; - final int yDist = this.y + (height + verticalGap) / 2 - y; - return xDist * xDist + yDist * yDist; - } } /** @@ -905,7 +812,7 @@ public class LatinKeyboard extends Keyboard { * 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. */ - class SlidingLocaleDrawable extends Drawable { + private class SlidingLocaleDrawable extends Drawable { private final int mWidth; private final int mHeight; @@ -926,17 +833,19 @@ public class LatinKeyboard extends Keyboard { setDefaultBounds(mBackground); mWidth = width; mHeight = height; - mTextPaint = new TextPaint(); - mTextPaint.setTextSize(getTextSizeFromTheme(android.R.style.TextAppearance_Medium, 18)); - mTextPaint.setColor(R.color.latinkeyboard_transparent); - mTextPaint.setTextAlign(Align.CENTER); - mTextPaint.setAlpha(OPACITY_FULLY_OPAQUE); - mTextPaint.setAntiAlias(true); + final TextPaint textPaint = new TextPaint(); + textPaint.setTextSize(getTextSizeFromTheme(android.R.style.TextAppearance_Medium, 18)); + textPaint.setColor(R.color.latinkeyboard_transparent); + textPaint.setTextAlign(Align.CENTER); + textPaint.setAlpha(OPACITY_FULLY_OPAQUE); + textPaint.setAntiAlias(true); + mTextPaint = textPaint; mMiddleX = (mWidth - mBackground.getIntrinsicWidth()) / 2; - mLeftDrawable = - mRes.getDrawable(R.drawable.sym_keyboard_feedback_language_arrows_left); - mRightDrawable = - mRes.getDrawable(R.drawable.sym_keyboard_feedback_language_arrows_right); + 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(); } diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java index 5a015e93b..b2635ad9c 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java @@ -16,6 +16,8 @@ package com.android.inputmethod.latin; +import com.android.inputmethod.latin.BaseKeyboard.Key; + import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; @@ -29,8 +31,6 @@ import android.graphics.Rect; import android.graphics.Region.Op; import android.graphics.Typeface; import android.graphics.drawable.Drawable; -import android.inputmethodservice.Keyboard; -import android.inputmethodservice.Keyboard.Key; import android.os.Handler; import android.os.Message; import android.os.SystemClock; @@ -43,6 +43,7 @@ import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup.LayoutParams; +import android.view.WindowManager; import android.widget.PopupWindow; import android.widget.TextView; @@ -161,7 +162,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx // Miscellaneous constants /* package */ static final int NOT_A_KEY = -1; private static final int[] LONG_PRESSABLE_STATE_SET = { android.R.attr.state_long_pressable }; - private static final int NUMBER_HINT_VERTICAL_ADJUSTMENT_PIXEL = -1; + private static final int HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL = -1; // XML attribute private int mKeyTextSize; @@ -180,12 +181,13 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx private int mPopupLayout; // Main keyboard - private Keyboard mKeyboard; + private BaseKeyboard mKeyboard; private Key[] mKeys; // TODO this attribute should be gotten from Keyboard. private int mKeyboardVerticalGap; // Key preview popup + private boolean mInForeground; private TextView mPreviewText; private PopupWindow mPreviewPopup; private int mPreviewTextSizeLarge; @@ -226,7 +228,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx protected KeyDetector mKeyDetector = new ProximityKeyDetector(); // Swipe gesture detector - private final GestureDetector mGestureDetector; + private GestureDetector mGestureDetector; private final SwipeTracker mSwipeTracker = new SwipeTracker(); private final int mSwipeThreshold; private final boolean mDisambiguateSwipe; @@ -259,6 +261,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx private static final int MSG_DISMISS_PREVIEW = 2; private static final int MSG_REPEAT_KEY = 3; private static final int MSG_LONGPRESS_KEY = 4; + private static final int MSG_LONGPRESS_SHIFT_KEY = 5; private boolean mInKeyRepeat; @@ -282,6 +285,11 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx openPopupIfRequired(msg.arg1, tracker); break; } + case MSG_LONGPRESS_SHIFT_KEY: { + final PointerTracker tracker = (PointerTracker)msg.obj; + onLongPressShiftKey(tracker); + break; + } } } @@ -333,9 +341,20 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx removeMessages(MSG_LONGPRESS_KEY); } + public void startLongPressShiftTimer(long delay, int keyIndex, PointerTracker tracker) { + removeMessages(MSG_LONGPRESS_SHIFT_KEY); + sendMessageDelayed( + obtainMessage(MSG_LONGPRESS_SHIFT_KEY, keyIndex, 0, tracker), delay); + } + + public void cancelLongPressShiftTimer() { + removeMessages(MSG_LONGPRESS_SHIFT_KEY); + } + public void cancelKeyTimers() { cancelKeyRepeatTimer(); cancelLongPressTimer(); + cancelLongPressShiftTimer(); } public void cancelAllMessages() { @@ -575,11 +594,11 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx /** * 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. - * @see Keyboard + * @see BaseKeyboard * @see #getKeyboard() * @param keyboard the keyboard to display in this view */ - public void setKeyboard(Keyboard keyboard) { + protected void setKeyboard(BaseKeyboard keyboard) { if (mKeyboard != null) { dismissKeyPreview(); } @@ -592,7 +611,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx -getPaddingTop() + mVerticalCorrection); mKeyboardVerticalGap = (int)getResources().getDimension(R.dimen.key_bottom_gap); for (PointerTracker tracker : mPointerTrackers) { - tracker.setKeyboard(mKeys, mKeyHysteresisDistance); + tracker.setKeyboard(keyboard, mKeys, mKeyHysteresisDistance); } requestLayout(); // Hint to reallocate the buffer if the size changed @@ -605,9 +624,9 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx /** * Returns the current keyboard being displayed by this view. * @return the currently attached keyboard - * @see #setKeyboard(Keyboard) + * @see #setKeyboard(BaseKeyboard) */ - public Keyboard getKeyboard() { + protected BaseKeyboard getKeyboard() { return mKeyboard; } @@ -620,34 +639,6 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx } /** - * Sets the state of the shift key of the keyboard, if any. - * @param shifted whether or not to enable the state of the shift key - * @return true if the shift key state changed, false if there was no change - */ - public boolean setShifted(boolean shifted) { - if (mKeyboard != null) { - if (mKeyboard.setShifted(shifted)) { - // The whole keyboard probably needs to be redrawn - invalidateAllKeys(); - return true; - } - } - return false; - } - - /** - * Returns the state of the shift key of the keyboard, if any. - * @return true if the shift is in a pressed state, false otherwise. If there is - * no shift key on the keyboard or there is no keyboard attached, it returns false. - */ - public boolean isShifted() { - if (mKeyboard != null) { - return mKeyboard.isShifted(); - } - return false; - } - - /** * Enables or disables the key feedback popup. This is a popup that shows a magnified * version of the depressed key. By default the preview is enabled. * @param previewEnabled whether or not to enable the key feedback popup @@ -727,7 +718,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx * the touch distance from a key's center to avoid taking a square root. * @param keyboard */ - private void computeProximityThreshold(Keyboard keyboard) { + private void computeProximityThreshold(BaseKeyboard keyboard) { if (keyboard == null) return; final Key[] keys = mKeys; if (keys == null) return; @@ -816,8 +807,19 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx canvas.translate(key.x + kbdPaddingLeft, key.y + kbdPaddingTop); keyBackground.draw(canvas); - boolean shouldDrawIcon = true; + boolean drawHintIcon = true; if (label != null) { + // If keyboard is multi-touch capable and in temporary upper case state and key has + // tempoarary shift label, label should be hint character and hint icon should not + // be drawn. + if (mHasDistinctMultitouch + && mKeyboard instanceof LatinKeyboard + && ((LatinKeyboard)mKeyboard).isTemporaryUpperCase() + && key.temporaryShiftLabel != null) { + label = key.temporaryShiftLabel.toString(); + drawHintIcon = false; + } + // For characters, use large font. For labels like "Done", use small font. final int labelSize; if (label.length() > 1 && key.codes.length < 2) { @@ -849,32 +851,20 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx canvas.drawText(label, centerX, baseline, paint); // Turn off drop shadow paint.setShadowLayer(0, 0, 0, 0); - - // Usually don't draw icon if label is not null, but we draw icon for the number - // hint and popup hint. - shouldDrawIcon = shouldDrawLabelAndIcon(key); } - if (key.icon != null && shouldDrawIcon) { - // Special handing for the upper-right number hint icons - final int drawableWidth; - final int drawableHeight; - final int drawableX; - final int drawableY; - if (shouldDrawIconFully(key)) { - drawableWidth = key.width; - drawableHeight = key.height; - drawableX = 0; - drawableY = NUMBER_HINT_VERTICAL_ADJUSTMENT_PIXEL; - } else { - drawableWidth = key.icon.getIntrinsicWidth(); - drawableHeight = key.icon.getIntrinsicHeight(); - drawableX = (key.width + padding.left - padding.right - drawableWidth) / 2; - drawableY = (key.height + padding.top - padding.bottom - drawableHeight) / 2; - } - canvas.translate(drawableX, drawableY); - key.icon.setBounds(0, 0, drawableWidth, drawableHeight); - key.icon.draw(canvas); - canvas.translate(-drawableX, -drawableY); + if (key.label == null && key.icon != null) { + int drawableWidth = key.icon.getIntrinsicWidth(); + int drawableHeight = key.icon.getIntrinsicHeight(); + int drawableX = (key.width + padding.left - padding.right - drawableWidth) / 2; + int drawableY = (key.height + padding.top - padding.bottom - drawableHeight) / 2; + drawIcon(canvas, key.icon, drawableX, drawableY, drawableWidth, drawableHeight); + } + if (key.hintIcon != null && drawHintIcon) { + int drawableWidth = key.width; + int drawableHeight = key.height; + int drawableX = 0; + int drawableY = HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL; + drawIcon(canvas, key.hintIcon, drawableX, drawableY, drawableWidth, drawableHeight); } canvas.translate(-key.x - kbdPaddingLeft, -key.y - kbdPaddingTop); } @@ -908,10 +898,21 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx mDirtyRect.setEmpty(); } + private void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width, int height) { + canvas.translate(x, y); + icon.setBounds(0, 0, width, height); + icon.draw(canvas); + canvas.translate(-x, -y); + } + + public void setForeground(boolean foreground) { + mInForeground = foreground; + } + // TODO: clean up this method. private void dismissKeyPreview() { for (PointerTracker tracker : mPointerTrackers) - tracker.updateKey(NOT_A_KEY); + tracker.releaseKey(); showPreview(NOT_A_KEY, null); } @@ -938,16 +939,17 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx } } + // TODO Must fix popup preview on xlarge layout private void showKey(final int keyIndex, PointerTracker tracker) { Key key = tracker.getKey(keyIndex); - if (key == null) + // If keyIndex is invalid or IME is already closed, we must not show key preview. + // Trying to show preview PopupWindow while root window is closed causes + // WindowManager.BadTokenException. + if (key == null || !mInForeground) return; - // Should not draw hint icon in key preview - if (key.icon != null && !shouldDrawLabelAndIcon(key)) { - mPreviewText.setCompoundDrawables(null, null, null, - key.iconPreview != null ? key.iconPreview : key.icon); - mPreviewText.setText(null); - } else { + // What we show as preview should match what we show on key top in onBufferDraw(). + if (key.label != null) { + // TODO Should take care of temporaryShiftLabel here. mPreviewText.setCompoundDrawables(null, null, null, null); mPreviewText.setText(adjustCase(tracker.getPreviewText(key))); if (key.label.length() > 1 && key.codes.length < 2) { @@ -957,6 +959,10 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx mPreviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSizeLarge); mPreviewText.setTypeface(mKeyTextStyle); } + } else { + mPreviewText.setCompoundDrawables(null, null, null, + key.iconPreview != null ? key.iconPreview : key.icon); + mPreviewText.setText(null); } mPreviewText.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); @@ -1000,13 +1006,18 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx popupPreviewY += popupHeight; } - if (mPreviewPopup.isShowing()) { - mPreviewPopup.update(popupPreviewX, popupPreviewY, popupWidth, popupHeight); - } else { - mPreviewPopup.setWidth(popupWidth); - mPreviewPopup.setHeight(popupHeight); - mPreviewPopup.showAtLocation(mMiniKeyboardParent, Gravity.NO_GRAVITY, - popupPreviewX, popupPreviewY); + try { + if (mPreviewPopup.isShowing()) { + mPreviewPopup.update(popupPreviewX, popupPreviewY, popupWidth, popupHeight); + } else { + mPreviewPopup.setWidth(popupWidth); + mPreviewPopup.setHeight(popupHeight); + mPreviewPopup.showAtLocation(mMiniKeyboardParent, Gravity.NO_GRAVITY, + popupPreviewX, popupPreviewY); + } + } catch (WindowManager.BadTokenException e) { + // Swallow the exception which will be happened when IME is already closed. + Log.w(TAG, "LatinIME is already closed when tried showing key preview."); } // Record popup preview position to display mini-keyboard later at the same positon mPopupPreviewDisplayedY = popupPreviewY; @@ -1029,7 +1040,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx * Invalidates a key so that it will be redrawn on the next repaint. Use this method if only * one key is changing it's content. Any changes that affect the position or size of the key * may not be honored. - * @param key key in the attached {@link Keyboard}. + * @param key key in the attached {@link BaseKeyboard}. * @see #invalidateAllKeys */ public void invalidateKey(Key key) { @@ -1064,6 +1075,12 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx return result; } + private void onLongPressShiftKey(PointerTracker tracker) { + tracker.setAlreadyProcessed(); + mPointerQueue.remove(tracker); + mKeyboardActionListener.onKey(LatinKeyboardView.KEYCODE_CAPSLOCK, null, 0, 0); + } + private View inflateMiniKeyboardContainer(Key popupKey) { int popupKeyboardId = popupKey.popupResId; LayoutInflater inflater = (LayoutInflater)getContext().getSystemService( @@ -1106,13 +1123,15 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx }); // Override default ProximityKeyDetector. miniKeyboard.mKeyDetector = new MiniKeyboardKeyDetector(mMiniKeyboardSlideAllowance); + // Remove gesture detector on mini-keyboard + miniKeyboard.mGestureDetector = null; - Keyboard keyboard; + BaseKeyboard keyboard; if (popupKey.popupCharacters != null) { - keyboard = new Keyboard(getContext(), popupKeyboardId, popupKey.popupCharacters, + keyboard = new BaseKeyboard(getContext(), popupKeyboardId, popupKey.popupCharacters, -1, getPaddingLeft() + getPaddingRight()); } else { - keyboard = new Keyboard(getContext(), popupKeyboardId); + keyboard = new BaseKeyboard(getContext(), popupKeyboardId); } miniKeyboard.setKeyboard(keyboard); miniKeyboard.setPopupParent(this); @@ -1132,7 +1151,8 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx // and bottom edge flags on. // When you want to use one row mini-keyboard from xml file, make sure that the row has // both top and bottom edge flags set. - return (edgeFlags & Keyboard.EDGE_TOP) != 0 && (edgeFlags & Keyboard.EDGE_BOTTOM) != 0; + return (edgeFlags & BaseKeyboard.EDGE_TOP) != 0 + && (edgeFlags & BaseKeyboard.EDGE_BOTTOM) != 0; } /** @@ -1199,7 +1219,12 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx mMiniKeyboardOriginX = adjustedX + container.getPaddingLeft() - mWindowOffset[0]; mMiniKeyboardOriginY = y + container.getPaddingTop() - mWindowOffset[1]; mMiniKeyboard.setPopupOffset(adjustedX, y); - mMiniKeyboard.setShifted(isShifted()); + // TODO: change the below line to use getLatinKeyboard() instead of getKeyboard() + BaseKeyboard baseMiniKeyboard = mMiniKeyboard.getKeyboard(); + if (baseMiniKeyboard != null && baseMiniKeyboard.setShifted(mKeyboard == null + ? false : mKeyboard.isShifted())) { + mMiniKeyboard.invalidateAllKeys(); + } // Mini keyboard needs no pop-up key preview displayed. mMiniKeyboard.setPreviewEnabled(false); mMiniKeyboardPopup.setContentView(container); @@ -1226,29 +1251,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx return false; } - private boolean shouldDrawIconFully(Key key) { - return isNumberAtEdgeOfPopupChars(key) || isLatinF1Key(key) - || LatinKeyboard.hasPuncOrSmileysPopup(key); - } - - private boolean shouldDrawLabelAndIcon(Key key) { - return isNumberAtEdgeOfPopupChars(key) || isNonMicLatinF1Key(key) - || LatinKeyboard.hasPuncOrSmileysPopup(key); - } - - private boolean isLatinF1Key(Key key) { - return (mKeyboard instanceof LatinKeyboard) && ((LatinKeyboard)mKeyboard).isF1Key(key); - } - - private boolean isNonMicLatinF1Key(Key key) { - return isLatinF1Key(key) && key.label != null; - } - - private static boolean isNumberAtEdgeOfPopupChars(Key key) { - return isNumberAtLeftmostPopupChar(key) || isNumberAtRightmostPopupChar(key); - } - - /* package */ static boolean isNumberAtLeftmostPopupChar(Key key) { + private static boolean isNumberAtLeftmostPopupChar(Key key) { if (key.popupCharacters != null && key.popupCharacters.length() > 0 && isAsciiDigit(key.popupCharacters.charAt(0))) { return true; @@ -1256,14 +1259,6 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx return false; } - /* package */ static boolean isNumberAtRightmostPopupChar(Key key) { - if (key.popupCharacters != null && key.popupCharacters.length() > 0 - && isAsciiDigit(key.popupCharacters.charAt(key.popupCharacters.length() - 1))) { - return true; - } - return false; - } - private static boolean isAsciiDigit(char c) { return (c < 0x80) && Character.isDigit(c); } @@ -1283,7 +1278,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx final PointerTracker tracker = new PointerTracker(i, mHandler, mKeyDetector, this, getResources()); if (keys != null) - tracker.setKeyboard(keys, mKeyHysteresisDistance); + tracker.setKeyboard(mKeyboard, keys, mKeyHysteresisDistance); if (listener != null) tracker.setOnKeyboardActionListener(listener); pointers.add(tracker); @@ -1307,8 +1302,9 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx // Track the last few movements to look for spurious swipes. mSwipeTracker.addMovement(me); - // We must disable gesture detector while mini-keyboard is on the screen. - if (mMiniKeyboard == null && mGestureDetector.onTouchEvent(me)) { + // Gesture detector must be enabled only when mini-keyboard is not on the screen. + if (mMiniKeyboard == null + && mGestureDetector != null && mGestureDetector.onTouchEvent(me)) { dismissKeyPreview(); mHandler.cancelKeyTimers(); return true; diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java index 22d39f7aa..6672dd22d 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java @@ -16,11 +16,11 @@ package com.android.inputmethod.latin; +import com.android.inputmethod.latin.BaseKeyboard.Key; + import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; -import android.inputmethodservice.Keyboard; -import android.inputmethodservice.Keyboard.Key; import android.os.Handler; import android.os.Message; import android.os.SystemClock; @@ -32,14 +32,15 @@ import java.util.List; public class LatinKeyboardView extends LatinKeyboardBaseView { - static final int KEYCODE_OPTIONS = -100; - static final int KEYCODE_OPTIONS_LONGPRESS = -101; - static final int KEYCODE_VOICE = -102; - static final int KEYCODE_F1 = -103; - static final int KEYCODE_NEXT_LANGUAGE = -104; - static final int KEYCODE_PREV_LANGUAGE = -105; + public static final int KEYCODE_OPTIONS = -100; + public static final int KEYCODE_OPTIONS_LONGPRESS = -101; + public static final int KEYCODE_VOICE = -102; + public static final int KEYCODE_F1 = -103; + public static final int KEYCODE_NEXT_LANGUAGE = -104; + public static final int KEYCODE_PREV_LANGUAGE = -105; + public static final int KEYCODE_CAPSLOCK = -106; - private Keyboard mPhoneKeyboard; + private LatinKeyboard mPhoneKeyboard; /** Whether we've started dropping move events because we found a big jump */ private boolean mDroppingEvents; @@ -61,13 +62,13 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { super(context, attrs, defStyle); } - public void setPhoneKeyboard(Keyboard phoneKeyboard) { + public void setPhoneKeyboard(LatinKeyboard phoneKeyboard) { mPhoneKeyboard = phoneKeyboard; } @Override public void setPreviewEnabled(boolean previewEnabled) { - if (getKeyboard() == mPhoneKeyboard) { + if (getLatinKeyboard() == mPhoneKeyboard) { // Phone keyboard never shows popup preview (except language switch). super.setPreviewEnabled(false); } else { @@ -75,8 +76,7 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { } } - @Override - public void setKeyboard(Keyboard k) { + public void setLatinKeyboard(LatinKeyboard k) { super.setKeyboard(k); // One-seventh of the keyboard width seems like a reasonable threshold mJumpThresholdSquare = k.getMinWidth() / 7; @@ -86,12 +86,21 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { setKeyboardLocal(k); } + public LatinKeyboard getLatinKeyboard() { + BaseKeyboard keyboard = getKeyboard(); + if (keyboard instanceof LatinKeyboard) { + return (LatinKeyboard)keyboard; + } else { + return null; + } + } + @Override protected boolean onLongPress(Key key) { int primaryCode = key.codes[0]; if (primaryCode == KEYCODE_OPTIONS) { return invokeOnKey(KEYCODE_OPTIONS_LONGPRESS); - } else if (primaryCode == '0' && getKeyboard() == mPhoneKeyboard) { + } else if (primaryCode == '0' && getLatinKeyboard() == mPhoneKeyboard) { // Long pressing on 0 in phone number keypad gives you a '+'. return invokeOnKey('+'); } else { @@ -108,10 +117,9 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { @Override protected CharSequence adjustCase(CharSequence label) { - Keyboard keyboard = getKeyboard(); - if (keyboard.isShifted() - && keyboard instanceof LatinKeyboard - && ((LatinKeyboard) keyboard).isAlphaKeyboard() + LatinKeyboard keyboard = getLatinKeyboard(); + if (keyboard.isAlphaKeyboard() + && keyboard.isShifted() && !TextUtils.isEmpty(label) && label.length() < 3 && Character.isLowerCase(label.charAt(0))) { label = label.toString().toUpperCase(); @@ -120,13 +128,10 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { } public boolean setShiftLocked(boolean shiftLocked) { - Keyboard keyboard = getKeyboard(); - if (keyboard instanceof LatinKeyboard) { - ((LatinKeyboard)keyboard).setShiftLocked(shiftLocked); - invalidateAllKeys(); - return true; - } - return false; + LatinKeyboard keyboard = getLatinKeyboard(); + keyboard.setShiftLocked(shiftLocked); + invalidateAllKeys(); + return true; } /** @@ -208,7 +213,7 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { @Override public boolean onTouchEvent(MotionEvent me) { - LatinKeyboard keyboard = (LatinKeyboard) getKeyboard(); + LatinKeyboard keyboard = getLatinKeyboard(); if (DEBUG_LINE) { mLastX = (int) me.getX(); mLastY = (int) me.getY(); @@ -257,7 +262,7 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { private int mLastY; private Paint mPaint; - private void setKeyboardLocal(Keyboard k) { + private void setKeyboardLocal(LatinKeyboard k) { if (DEBUG_AUTO_PLAY) { findKeys(); if (mHandler2 == null) { @@ -318,7 +323,7 @@ public class LatinKeyboardView extends LatinKeyboardBaseView { } private void findKeys() { - List<Key> keys = getKeyboard().getKeys(); + List<Key> keys = getLatinKeyboard().getKeys(); // Get the keys on this keyboard for (int i = 0; i < keys.size(); i++) { int code = keys.get(i).codes[0]; diff --git a/java/src/com/android/inputmethod/latin/MiniKeyboardKeyDetector.java b/java/src/com/android/inputmethod/latin/MiniKeyboardKeyDetector.java index 356e62d48..5f4c93734 100644 --- a/java/src/com/android/inputmethod/latin/MiniKeyboardKeyDetector.java +++ b/java/src/com/android/inputmethod/latin/MiniKeyboardKeyDetector.java @@ -16,7 +16,7 @@ package com.android.inputmethod.latin; -import android.inputmethodservice.Keyboard.Key; +import com.android.inputmethod.latin.BaseKeyboard.Key; class MiniKeyboardKeyDetector extends KeyDetector { private static final int MAX_NEARBY_KEYS = 1; diff --git a/java/src/com/android/inputmethod/latin/ModifierKeyState.java b/java/src/com/android/inputmethod/latin/ModifierKeyState.java index 097e87abe..75820e7d3 100644 --- a/java/src/com/android/inputmethod/latin/ModifierKeyState.java +++ b/java/src/com/android/inputmethod/latin/ModifierKeyState.java @@ -19,7 +19,9 @@ package com.android.inputmethod.latin; class ModifierKeyState { private static final int RELEASING = 0; private static final int PRESSING = 1; - private static final int MOMENTARY = 2; + private static final int PRESSING_ON_SHIFTED = 2; // both temporary shifted & shift locked + private static final int MOMENTARY = 3; + private static final int IGNORING = 4; private int mState = RELEASING; @@ -27,16 +29,31 @@ class ModifierKeyState { mState = PRESSING; } + public void onPressOnShifted() { + mState = PRESSING_ON_SHIFTED; + } + public void onRelease() { mState = RELEASING; } public void onOtherKeyPressed() { - if (mState == PRESSING) + if (mState == PRESSING) { mState = MOMENTARY; + } else if (mState == PRESSING_ON_SHIFTED) { + mState = IGNORING; + } } public boolean isMomentary() { return mState == MOMENTARY; } + + public boolean isPressingOnShifted() { + return mState == PRESSING_ON_SHIFTED; + } + + public boolean isIgnoring() { + return mState == IGNORING; + } } diff --git a/java/src/com/android/inputmethod/latin/PointerTracker.java b/java/src/com/android/inputmethod/latin/PointerTracker.java index f6fd5bd7a..558ca604d 100644 --- a/java/src/com/android/inputmethod/latin/PointerTracker.java +++ b/java/src/com/android/inputmethod/latin/PointerTracker.java @@ -16,12 +16,11 @@ package com.android.inputmethod.latin; +import com.android.inputmethod.latin.BaseKeyboard.Key; import com.android.inputmethod.latin.LatinKeyboardBaseView.OnKeyboardActionListener; import com.android.inputmethod.latin.LatinKeyboardBaseView.UIHandler; import android.content.res.Resources; -import android.inputmethodservice.Keyboard; -import android.inputmethodservice.Keyboard.Key; import android.util.Log; import android.view.MotionEvent; @@ -41,11 +40,12 @@ public class PointerTracker { // Timing constants private final int mDelayBeforeKeyRepeatStart; private final int mLongPressKeyTimeout; + private final int mLongPressShiftKeyTimeout; private final int mMultiTapKeyTimeout; // Miscellaneous constants private static final int NOT_A_KEY = LatinKeyboardBaseView.NOT_A_KEY; - private static final int[] KEY_DELETE = { Keyboard.KEYCODE_DELETE }; + private static final int[] KEY_DELETE = { BaseKeyboard.KEYCODE_DELETE }; private final UIProxy mProxy; private final UIHandler mHandler; @@ -53,6 +53,7 @@ public class PointerTracker { private OnKeyboardActionListener mListener; private final boolean mHasDistinctMultitouch; + private BaseKeyboard mKeyboard; private Key[] mKeys; private int mKeyHysteresisDistanceSquared = -1; @@ -175,6 +176,7 @@ public class PointerTracker { mHasDistinctMultitouch = proxy.hasDistinctMultitouch(); mDelayBeforeKeyRepeatStart = res.getInteger(R.integer.config_delay_before_key_repeat_start); mLongPressKeyTimeout = res.getInteger(R.integer.config_long_press_key_timeout); + mLongPressShiftKeyTimeout = res.getInteger(R.integer.config_long_press_shift_key_timeout); mMultiTapKeyTimeout = res.getInteger(R.integer.config_multi_tap_key_timeout); resetMultiTap(); } @@ -183,9 +185,10 @@ public class PointerTracker { mListener = listener; } - public void setKeyboard(Key[] keys, float keyHysteresisDistance) { - if (keys == null || keyHysteresisDistance < 0) + public void setKeyboard(BaseKeyboard keyboard, Key[] keys, float keyHysteresisDistance) { + if (keyboard == null || keys == null || keyHysteresisDistance < 0) throw new IllegalArgumentException(); + mKeyboard = keyboard; mKeys = keys; mKeyHysteresisDistanceSquared = (int)(keyHysteresisDistance * keyHysteresisDistance); // Update current key index because keyboard layout has been changed. @@ -205,8 +208,8 @@ public class PointerTracker { if (key == null) return false; int primaryCode = key.codes[0]; - return primaryCode == Keyboard.KEYCODE_SHIFT - || primaryCode == Keyboard.KEYCODE_MODE_CHANGE; + return primaryCode == BaseKeyboard.KEYCODE_SHIFT + || primaryCode == BaseKeyboard.KEYCODE_MODE_CHANGE; } public boolean isModifier() { @@ -222,9 +225,11 @@ public class PointerTracker { return key != null && key.codes[0] == LatinIME.KEYCODE_SPACE; } - public void updateKey(int keyIndex) { - if (mKeyAlreadyProcessed) - return; + public void releaseKey() { + updateKeyGraphics(NOT_A_KEY); + } + + private void updateKeyGraphics(int keyIndex) { int oldKeyIndex = mPreviousKey; mPreviousKey = keyIndex; if (keyIndex != oldKeyIndex) { @@ -285,9 +290,9 @@ public class PointerTracker { mHandler.startKeyRepeatTimer(mDelayBeforeKeyRepeatStart, keyIndex, this); mIsRepeatableKey = true; } - mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this); + startLongPressTimer(keyIndex); } - showKeyPreviewAndUpdateKey(keyIndex); + showKeyPreviewAndUpdateKeyGraphics(keyIndex); } public void onMoveEvent(int x, int y, long eventTime) { @@ -297,14 +302,15 @@ public class PointerTracker { return; KeyState keyState = mKeyState; int keyIndex = keyState.onMoveKey(x, y); - if (isValidKeyIndex(keyIndex)) { + Key key = getKey(keyIndex); + if (key != null) { if (keyState.getKeyIndex() == NOT_A_KEY) { keyState.onMoveToNewKey(keyIndex, x, y); - mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this); + startLongPressTimer(keyIndex); } else if (!isMinorMoveBounce(x, y, keyIndex)) { resetMultiTap(); keyState.onMoveToNewKey(keyIndex, x, y); - mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this); + startLongPressTimer(keyIndex); } } else { if (keyState.getKeyIndex() != NOT_A_KEY) { @@ -316,12 +322,13 @@ public class PointerTracker { mHandler.cancelLongPressTimer(); } } - showKeyPreviewAndUpdateKey(mKeyState.getKeyIndex()); + showKeyPreviewAndUpdateKeyGraphics(mKeyState.getKeyIndex()); } public void onUpEvent(int x, int y, long eventTime) { if (DEBUG) debugLog("onUpEvent :", x, y); + showKeyPreviewAndUpdateKeyGraphics(NOT_A_KEY); if (mKeyAlreadyProcessed) return; mHandler.cancelKeyTimers(); @@ -333,7 +340,6 @@ public class PointerTracker { x = mKeyState.getKeyX(); y = mKeyState.getKeyY(); } - showKeyPreviewAndUpdateKey(NOT_A_KEY); if (!mIsRepeatableKey) { detectAndSendKey(keyIndex, x, y, eventTime); } @@ -347,7 +353,7 @@ public class PointerTracker { debugLog("onCancelEvt:", x, y); mHandler.cancelKeyTimers(); mHandler.cancelPopupPreview(); - showKeyPreviewAndUpdateKey(NOT_A_KEY); + showKeyPreviewAndUpdateKeyGraphics(NOT_A_KEY); int keyIndex = mKeyState.getKeyIndex(); if (isValidKeyIndex(keyIndex)) mProxy.invalidateKey(mKeys[keyIndex]); @@ -408,8 +414,8 @@ public class PointerTracker { return dx * dx + dy * dy; } - private void showKeyPreviewAndUpdateKey(int keyIndex) { - updateKey(keyIndex); + private void showKeyPreviewAndUpdateKeyGraphics(int keyIndex) { + updateKeyGraphics(keyIndex); // The modifier key, such as shift key, should not be shown as preview when multi-touch is // supported. On thge other hand, if multi-touch is not supported, the modifier key should // be shown as preview. @@ -420,6 +426,26 @@ public class PointerTracker { } } + private void startLongPressTimer(int keyIndex) { + Key key = getKey(keyIndex); + if (key.codes[0] == BaseKeyboard.KEYCODE_SHIFT) { + mHandler.startLongPressShiftTimer(mLongPressShiftKeyTimeout, keyIndex, this); + } else { + // If keyboard is in temporary upper case state and the key has temporary shift label, + // non-shift long press should not be started. On distinct multi touch device, when + // pressing shift key (in temporary upper case), hint icon should not be drawn on key + // top. So we should disable long press for such key. + if (isTemporaryUpperCase() && key.temporaryShiftLabel != null) + return; + mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this); + } + } + + private boolean isTemporaryUpperCase() { + return mKeyboard instanceof LatinKeyboard + && ((LatinKeyboard)mKeyboard).isTemporaryUpperCase(); + } + private void detectAndSendKey(int index, int x, int y, long eventTime) { final OnKeyboardActionListener listener = mListener; final Key key = getKey(index); @@ -441,12 +467,20 @@ public class PointerTracker { // Multi-tap if (mInMultiTap) { if (mTapCount != -1) { - mListener.onKey(Keyboard.KEYCODE_DELETE, KEY_DELETE, x, y); + mListener.onKey(BaseKeyboard.KEYCODE_DELETE, KEY_DELETE, x, y); } else { mTapCount = 0; } code = key.codes[mTapCount]; } + + // If keyboard is in temporary upper case state and key has temporary shift label, + // alternate character code should be sent. + if (isTemporaryUpperCase() && key.temporaryShiftLabel != null) { + code = key.temporaryShiftLabel.charAt(0); + codes[0] = code; + } + /* * Swap the first and second values in the codes array if the primary code is not * the first value but the second value in the array. This happens when key diff --git a/java/src/com/android/inputmethod/latin/ProximityKeyDetector.java b/java/src/com/android/inputmethod/latin/ProximityKeyDetector.java index 325ce674c..383bd7fbc 100644 --- a/java/src/com/android/inputmethod/latin/ProximityKeyDetector.java +++ b/java/src/com/android/inputmethod/latin/ProximityKeyDetector.java @@ -16,7 +16,7 @@ package com.android.inputmethod.latin; -import android.inputmethodservice.Keyboard.Key; +import com.android.inputmethod.latin.BaseKeyboard.Key; import java.util.Arrays; diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 3b898941f..01782339f 100755 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -81,6 +81,7 @@ public class Suggest implements Dictionary.WordCallback { private boolean mAutoTextEnabled; + private double mAutoCompleteThreshold; private int[] mPriorities = new int[mPrefMaxSuggestions]; private int[] mBigramPriorities = new int[PREF_MAX_BIGRAMS]; @@ -163,6 +164,10 @@ public class Suggest implements Dictionary.WordCallback { mUserBigramDictionary = userBigramDictionary; } + public void setAutoCompleteThreshold(double threshold) { + mAutoCompleteThreshold = threshold; + } + /** * Number of suggestions to generate from the input key sequence. This has * to be a number between 1 and 100 (inclusive). @@ -301,8 +306,14 @@ public class Suggest implements Dictionary.WordCallback { } mMainDict.getWords(wordComposer, this, mNextLettersFrequencies); if ((mCorrectionMode == CORRECTION_FULL || mCorrectionMode == CORRECTION_FULL_BIGRAM) - && mSuggestions.size() > 0) { - mHaveCorrection = true; + && mSuggestions.size() > 0 && mPriorities.length > 0) { + // TODO: when the normalized score of the first suggestion is nearly equals to + // the normalized score of the second suggestion, behave less aggressive. + final double normalizedScore = LatinIMEUtil.calcNormalizedScore( + mOriginalWord, mSuggestions.get(0), mPriorities[0]); + if (normalizedScore >= mAutoCompleteThreshold) { + mHaveCorrection = true; + } } } if (mOriginalWord != null) { diff --git a/java/src/com/android/inputmethod/latin/TextEntryState.java b/java/src/com/android/inputmethod/latin/TextEntryState.java index 9011191f1..1d7659ca3 100644 --- a/java/src/com/android/inputmethod/latin/TextEntryState.java +++ b/java/src/com/android/inputmethod/latin/TextEntryState.java @@ -16,8 +16,9 @@ package com.android.inputmethod.latin; +import com.android.inputmethod.latin.BaseKeyboard.Key; + import android.content.Context; -import android.inputmethodservice.Keyboard.Key; import android.text.format.DateFormat; import android.util.Log; diff --git a/java/src/com/android/inputmethod/voice/VoiceInput.java b/java/src/com/android/inputmethod/voice/VoiceInput.java index f24c180d0..4c54dd3c5 100644 --- a/java/src/com/android/inputmethod/voice/VoiceInput.java +++ b/java/src/com/android/inputmethod/voice/VoiceInput.java @@ -16,6 +16,7 @@ package com.android.inputmethod.voice; +import com.android.inputmethod.latin.EditingUtil; import com.android.inputmethod.latin.R; import android.content.ContentResolver; @@ -30,6 +31,7 @@ import android.speech.RecognitionListener; import android.speech.SpeechRecognizer; import android.speech.RecognizerIntent; import android.util.Log; +import android.view.inputmethod.InputConnection; import android.view.View; import android.view.View.OnClickListener; @@ -423,8 +425,14 @@ public class VoiceInput implements OnClickListener { mLogger.textModifiedByTypingDeletion(length); } - public void logTextModifiedByChooseSuggestion(int length) { - mLogger.textModifiedByChooseSuggestion(length); + public void logTextModifiedByChooseSuggestion(String suggestion, int index, + String wordSeparators, InputConnection ic) { + EditingUtil.Range range = new EditingUtil.Range(); + String wordToBeReplaced = EditingUtil.getWordAtCursor(ic, wordSeparators, range); + // If we enable phrase-based alternatives, only send up the first word + // in suggestion and wordToBeReplaced. + mLogger.textModifiedByChooseSuggestion(suggestion.length(), wordToBeReplaced.length(), + index, wordToBeReplaced, suggestion); } public void logKeyboardWarningDialogShown() { @@ -455,10 +463,6 @@ public class VoiceInput implements OnClickListener { mLogger.voiceInputDelivered(length); } - public void logNBestChoose(int index) { - mLogger.nBestChoose(index); - } - public void logInputEnded() { mLogger.inputEnded(); } diff --git a/java/src/com/android/inputmethod/voice/VoiceInputLogger.java b/java/src/com/android/inputmethod/voice/VoiceInputLogger.java index 188d1376e..ec0ae649a 100644 --- a/java/src/com/android/inputmethod/voice/VoiceInputLogger.java +++ b/java/src/com/android/inputmethod/voice/VoiceInputLogger.java @@ -205,22 +205,22 @@ public class VoiceInputLogger { mContext.sendBroadcast(i); } - public void textModifiedByChooseSuggestion(int length) { + + public void textModifiedByChooseSuggestion(int suggestionLength, int replacedPhraseLength, + int index, String before, String after) { setHasLoggingInfo(true); Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED); - i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length); + i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, suggestionLength); + i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_REPLACED_LENGTH, replacedPhraseLength); i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_TYPE, LoggingEvents.VoiceIme.TEXT_MODIFIED_TYPE_CHOOSE_SUGGESTION); - mContext.sendBroadcast(i); - } - public void nBestChoose(int index) { - setHasLoggingInfo(true); - Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.N_BEST_CHOOSE); i.putExtra(LoggingEvents.VoiceIme.EXTRA_N_BEST_CHOOSE_INDEX, index); + i.putExtra(LoggingEvents.VoiceIme.EXTRA_BEFORE_N_BEST_CHOOSE, before); + i.putExtra(LoggingEvents.VoiceIme.EXTRA_AFTER_N_BEST_CHOOSE, after); mContext.sendBroadcast(i); } - + public void inputEnded() { setHasLoggingInfo(true); mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.INPUT_ENDED)); |