aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/drawable-hdpi/ic_subtype_keyboard.pngbin1068 -> 807 bytes
-rw-r--r--java/res/drawable-mdpi/ic_subtype_keyboard.pngbin498 -> 528 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_at.9.pngbin0 -> 1180 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_colon.9.pngbin0 -> 1082 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_doublecross.9.pngbin0 -> 1157 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_exclamation.9.pngbin0 -> 1095 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_greater.9.pngbin0 -> 1133 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_plus.9.pngbin0 -> 1116 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_question.9.pngbin0 -> 1140 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_quote.9.pngbin0 -> 1077 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_smaller.9.pngbin0 -> 1130 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_hint_star.9.pngbin0 -> 1136 bytes
-rw-r--r--java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_holo.9.pngbin0 -> 1320 bytes
-rw-r--r--java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_off_holo.9.pngbin0 -> 1389 bytes
-rw-r--r--java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_on_holo.9.pngbin0 -> 1408 bytes
-rw-r--r--java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_holo.9.pngbin0 -> 1321 bytes
-rw-r--r--java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_off_holo.9.pngbin0 -> 1388 bytes
-rw-r--r--java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_on_holo.9.pngbin0 -> 1399 bytes
-rw-r--r--java/res/drawable-xlarge-land/btn_keyboard_key_light_normal_holo.9.pngbin0 -> 1321 bytes
-rw-r--r--java/res/drawable-xlarge-land/btn_keyboard_key_light_pressed_holo.9.pngbin0 -> 1324 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_colon_holo.9.pngbin0 -> 1262 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_comma_holo.9.pngbin0 -> 1241 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_dash_holo.9.pngbin0 -> 1196 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_doublecross_holo.9.pngbin0 -> 1621 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_equal_holo.9.pngbin0 -> 1295 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_exclamation_holo.9.pngbin0 -> 1344 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_larger_holo.9.pngbin0 -> 1454 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_parenclose_holo.9.pngbin0 -> 1435 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_parenopen_holo.9.pngbin0 -> 1461 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_period_holo.9.pngbin0 -> 1214 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_plus_holo.9.pngbin0 -> 1362 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_question_holo.9.pngbin0 -> 1508 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_quote_holo.9.pngbin0 -> 1315 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_semicolon_holo.9.pngbin0 -> 1327 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_simplequote_holo.9.pngbin0 -> 1242 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_slash_holo.9.pngbin0 -> 1429 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_smaller_holo.9.pngbin0 -> 1408 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_star_holo.9.pngbin0 -> 1480 bytes
-rw-r--r--java/res/drawable-xlarge-land/key_hint_underline_holo.9.pngbin0 -> 1163 bytes
-rw-r--r--java/res/drawable-xlarge/btn_keyboard_key_dark_normal_holo.9.pngbin0 -> 1320 bytes
-rw-r--r--java/res/drawable-xlarge/btn_keyboard_key_dark_normal_off_holo.9.pngbin0 -> 1389 bytes
-rw-r--r--java/res/drawable-xlarge/btn_keyboard_key_dark_normal_on_holo.9.pngbin0 -> 1408 bytes
-rw-r--r--java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_holo.9.pngbin0 -> 1321 bytes
-rw-r--r--java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_off_holo.9.pngbin0 -> 1388 bytes
-rw-r--r--java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_on_holo.9.pngbin0 -> 1399 bytes
-rw-r--r--java/res/drawable-xlarge/btn_keyboard_key_gingerbread.xml43
-rw-r--r--java/res/drawable-xlarge/btn_keyboard_key_light_normal_holo.9.pngbin0 -> 1321 bytes
-rw-r--r--java/res/drawable-xlarge/btn_keyboard_key_light_pressed_holo.9.pngbin0 -> 1324 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_at_holo.9.pngbin0 -> 1594 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_colon_holo.9.pngbin0 -> 1219 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_comma_holo.9.pngbin0 -> 1195 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_dash_holo.9.pngbin0 -> 1191 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_doublecross_holo.9.pngbin0 -> 1449 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_equal_holo.9.pngbin0 -> 1292 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_exclamation_holo.9.pngbin0 -> 1278 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_larger_holo.9.pngbin0 -> 1317 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_parenclose_holo.9.pngbin0 -> 1316 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_parenopen_holo.9.pngbin0 -> 1323 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_period_holo.9.pngbin0 -> 1164 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_plus_holo.9.pngbin0 -> 1340 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_question_holo.9.pngbin0 -> 1392 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_quote_holo.9.pngbin0 -> 1257 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_semicolon_holo.9.pngbin0 -> 1248 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_simplequote_holo.9.pngbin0 -> 1205 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_slash_holo.9.pngbin0 -> 1317 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_smaller_holo.9.pngbin0 -> 1326 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_star_holo.9.pngbin0 -> 1344 bytes
-rw-r--r--java/res/drawable-xlarge/key_hint_underline_holo.9.pngbin0 -> 1158 bytes
-rw-r--r--java/res/drawable/ic_sybtype_us_keyboard.pngbin0 -> 1014 bytes
-rw-r--r--java/res/values-cs/config.xml28
-rw-r--r--java/res/values-cs/strings.xml17
-rw-r--r--java/res/values-da/config.xml28
-rw-r--r--java/res/values-da/strings.xml17
-rw-r--r--java/res/values-de/config.xml28
-rw-r--r--java/res/values-de/strings.xml17
-rw-r--r--java/res/values-el/config.xml28
-rw-r--r--java/res/values-el/strings.xml17
-rw-r--r--java/res/values-es-rUS/config.xml28
-rw-r--r--java/res/values-es-rUS/strings.xml14
-rw-r--r--java/res/values-es/config.xml28
-rw-r--r--java/res/values-es/strings.xml17
-rw-r--r--java/res/values-fr/config.xml28
-rw-r--r--java/res/values-fr/strings.xml17
-rw-r--r--java/res/values-it/config.xml28
-rw-r--r--java/res/values-it/strings.xml17
-rw-r--r--java/res/values-ja/config.xml28
-rw-r--r--java/res/values-ja/strings.xml17
-rw-r--r--java/res/values-ko/config.xml28
-rw-r--r--java/res/values-ko/strings.xml17
-rw-r--r--java/res/values-nb/config.xml28
-rw-r--r--java/res/values-nb/strings.xml17
-rw-r--r--java/res/values-nl/config.xml28
-rw-r--r--java/res/values-nl/strings.xml17
-rw-r--r--java/res/values-pl/config.xml28
-rw-r--r--java/res/values-pl/strings.xml17
-rw-r--r--java/res/values-pt-rPT/config.xml28
-rw-r--r--java/res/values-pt-rPT/strings.xml17
-rw-r--r--java/res/values-pt/config.xml28
-rw-r--r--java/res/values-pt/strings.xml17
-rw-r--r--java/res/values-rm/config.xml25
-rw-r--r--java/res/values-rm/strings.xml60
-rw-r--r--java/res/values-ru/config.xml28
-rw-r--r--java/res/values-ru/strings.xml17
-rw-r--r--java/res/values-sv/config.xml28
-rw-r--r--java/res/values-sv/strings.xml17
-rw-r--r--java/res/values-tr/config.xml28
-rw-r--r--java/res/values-tr/strings.xml17
-rw-r--r--java/res/values-xlarge/bools.xml26
-rw-r--r--java/res/values-xlarge/dimens.xml41
-rw-r--r--java/res/values-zh-rCN/config.xml28
-rw-r--r--java/res/values-zh-rCN/strings.xml17
-rw-r--r--java/res/values-zh-rTW/config.xml28
-rw-r--r--java/res/values-zh-rTW/strings.xml17
-rw-r--r--java/res/values/attrs.xml64
-rw-r--r--java/res/values/bools.xml3
-rw-r--r--java/res/values/config.xml13
-rw-r--r--java/res/values/dimens.xml28
-rw-r--r--java/res/values/donottranslate.xml2
-rw-r--r--java/res/values/strings.xml40
-rw-r--r--java/res/xml-da/kbd_qwerty.xml599
-rw-r--r--java/res/xml-da/kbd_qwerty_black.xml540
-rw-r--r--java/res/xml-de/kbd_qwerty.xml576
-rw-r--r--java/res/xml-de/kbd_qwerty_black.xml517
-rw-r--r--java/res/xml-fr/kbd_qwerty.xml575
-rw-r--r--java/res/xml-fr/kbd_qwerty_black.xml516
-rw-r--r--java/res/xml-iw/kbd_qwerty.xml468
-rw-r--r--java/res/xml-iw/kbd_qwerty_black.xml409
-rw-r--r--java/res/xml-nb/kbd_qwerty.xml599
-rw-r--r--java/res/xml-nb/kbd_qwerty_black.xml540
-rw-r--r--java/res/xml-ru/kbd_qwerty.xml563
-rw-r--r--java/res/xml-ru/kbd_qwerty_black.xml504
-rw-r--r--java/res/xml-sr/kbd_qwerty.xml549
-rw-r--r--java/res/xml-sr/kbd_qwerty_black.xml490
-rw-r--r--java/res/xml-sv/kbd_qwerty.xml597
-rw-r--r--java/res/xml-sv/kbd_qwerty_black.xml540
-rw-r--r--java/res/xml-xlarge-land/kbd_popup_template.xml27
-rw-r--r--java/res/xml-xlarge-land/popup_smileys.xml89
-rw-r--r--java/res/xml-xlarge/kbd_phone.xml171
-rw-r--r--java/res/xml-xlarge/kbd_phone_symbols.xml180
-rw-r--r--java/res/xml-xlarge/kbd_popup_template.xml27
-rw-r--r--java/res/xml-xlarge/kbd_qwerty.xml109
-rw-r--r--java/res/xml-xlarge/kbd_qwerty_row1_common.xml84
-rw-r--r--java/res/xml-xlarge/kbd_qwerty_row2_common.xml77
-rw-r--r--java/res/xml-xlarge/kbd_qwerty_row2_email.xml73
-rw-r--r--java/res/xml-xlarge/kbd_qwerty_row3_common.xml80
-rw-r--r--java/res/xml-xlarge/kbd_qwerty_row3_email.xml68
-rw-r--r--java/res/xml-xlarge/kbd_qwerty_row4_common.xml56
-rw-r--r--java/res/xml-xlarge/kbd_qwerty_row4_email.xml40
-rw-r--r--java/res/xml-xlarge/kbd_qwerty_row4_im.xml50
-rw-r--r--java/res/xml-xlarge/kbd_qwerty_row4_url.xml48
-rw-r--r--java/res/xml-xlarge/kbd_symbols.xml161
-rw-r--r--java/res/xml-xlarge/kbd_symbols_shift.xml161
-rw-r--r--java/res/xml-xlarge/popup_smileys.xml89
-rw-r--r--java/res/xml/kbd_phone.xml114
-rw-r--r--java/res/xml/kbd_phone_black.xml104
-rw-r--r--java/res/xml/kbd_phone_symbols.xml100
-rw-r--r--java/res/xml/kbd_phone_symbols_black.xml92
-rw-r--r--java/res/xml/kbd_popup_narrow_template.xml10
-rw-r--r--java/res/xml/kbd_popup_template.xml10
-rw-r--r--java/res/xml/kbd_qwerty.xml566
-rw-r--r--java/res/xml/kbd_qwerty_black.xml507
-rw-r--r--java/res/xml/kbd_qwerty_black_row4.xml335
-rw-r--r--java/res/xml/kbd_qwerty_row4.xml392
-rw-r--r--java/res/xml/kbd_symbols.xml289
-rw-r--r--java/res/xml/kbd_symbols_black.xml276
-rw-r--r--java/res/xml/kbd_symbols_black_row4_common.xml46
-rw-r--r--java/res/xml/kbd_symbols_black_row4_common_with_settings_key.xml50
-rw-r--r--java/res/xml/kbd_symbols_black_row4_im.xml47
-rw-r--r--java/res/xml/kbd_symbols_black_row4_im_with_settings_key.xml51
-rw-r--r--java/res/xml/kbd_symbols_row4_common.xml51
-rw-r--r--java/res/xml/kbd_symbols_row4_common_with_settings_key.xml56
-rw-r--r--java/res/xml/kbd_symbols_row4_im.xml52
-rw-r--r--java/res/xml/kbd_symbols_row4_im_with_settings_key.xml57
-rw-r--r--java/res/xml/kbd_symbols_shift.xml243
-rw-r--r--java/res/xml/kbd_symbols_shift_black.xml230
-rw-r--r--java/res/xml/kbd_symbols_shift_black_row4_common.xml44
-rw-r--r--java/res/xml/kbd_symbols_shift_black_row4_common_with_settings_key.xml48
-rw-r--r--java/res/xml/kbd_symbols_shift_black_row4_im.xml45
-rw-r--r--java/res/xml/kbd_symbols_shift_black_row4_im_with_settings_key.xml49
-rw-r--r--java/res/xml/kbd_symbols_shift_row4_common.xml49
-rw-r--r--java/res/xml/kbd_symbols_shift_row4_common_with_settings_key.xml54
-rw-r--r--java/res/xml/kbd_symbols_shift_row4_im.xml50
-rw-r--r--java/res/xml/kbd_symbols_shift_row4_im_with_settings_key.xml55
-rw-r--r--java/res/xml/method.xml111
-rw-r--r--java/res/xml/popup_at.xml22
-rw-r--r--java/res/xml/popup_comma.xml22
-rw-r--r--java/res/xml/popup_domains.xml32
-rw-r--r--java/res/xml/popup_mic.xml24
-rw-r--r--java/res/xml/popup_punctuation.xml50
-rw-r--r--java/res/xml/popup_slash.xml22
-rw-r--r--java/res/xml/popup_smileys.xml86
-rw-r--r--java/res/xml/prefs.xml19
-rw-r--r--java/src/com/android/inputmethod/latin/BaseKeyboard.java708
-rw-r--r--java/src/com/android/inputmethod/latin/BaseKeyboardParser.java400
-rw-r--r--java/src/com/android/inputmethod/latin/KeyDetector.java7
-rw-r--r--java/src/com/android/inputmethod/latin/KeyboardSwitcher.java187
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java368
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIMESettings.java29
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIMEUtil.java54
-rw-r--r--java/src/com/android/inputmethod/latin/LatinImeLogger.java3
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboard.java379
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java236
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboardView.java61
-rw-r--r--java/src/com/android/inputmethod/latin/MiniKeyboardKeyDetector.java2
-rw-r--r--java/src/com/android/inputmethod/latin/ModifierKeyState.java21
-rw-r--r--java/src/com/android/inputmethod/latin/PointerTracker.java76
-rw-r--r--java/src/com/android/inputmethod/latin/ProximityKeyDetector.java2
-rwxr-xr-xjava/src/com/android/inputmethod/latin/Suggest.java15
-rw-r--r--java/src/com/android/inputmethod/latin/TextEntryState.java3
-rw-r--r--java/src/com/android/inputmethod/voice/VoiceInput.java16
-rw-r--r--java/src/com/android/inputmethod/voice/VoiceInputLogger.java16
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
index 7015e266a..c7729566c 100644
--- a/java/res/drawable-hdpi/ic_subtype_keyboard.png
+++ b/java/res/drawable-hdpi/ic_subtype_keyboard.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_subtype_keyboard.png b/java/res/drawable-mdpi/ic_subtype_keyboard.png
index 0d7ebd4e5..9a5aada8b 100644
--- a/java/res/drawable-mdpi/ic_subtype_keyboard.png
+++ b/java/res/drawable-mdpi/ic_subtype_keyboard.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_at.9.png b/java/res/drawable-mdpi/keyboard_hint_at.9.png
new file mode 100644
index 000000000..69baedef4
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_hint_at.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_colon.9.png b/java/res/drawable-mdpi/keyboard_hint_colon.9.png
new file mode 100644
index 000000000..9d0d7cbab
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_hint_colon.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png b/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png
new file mode 100644
index 000000000..d24aa0f07
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_hint_doublecross.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png b/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png
new file mode 100644
index 000000000..f6cc7fe84
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_hint_exclamation.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_greater.9.png b/java/res/drawable-mdpi/keyboard_hint_greater.9.png
new file mode 100644
index 000000000..5210392bf
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_hint_greater.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_plus.9.png b/java/res/drawable-mdpi/keyboard_hint_plus.9.png
new file mode 100644
index 000000000..d1d85ac87
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_hint_plus.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_question.9.png b/java/res/drawable-mdpi/keyboard_hint_question.9.png
new file mode 100644
index 000000000..37f6e5f36
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_hint_question.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_quote.9.png b/java/res/drawable-mdpi/keyboard_hint_quote.9.png
new file mode 100644
index 000000000..e7d2cb5e3
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_hint_quote.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_smaller.9.png b/java/res/drawable-mdpi/keyboard_hint_smaller.9.png
new file mode 100644
index 000000000..76553cf96
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_hint_smaller.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_hint_star.9.png b/java/res/drawable-mdpi/keyboard_hint_star.9.png
new file mode 100644
index 000000000..47978c46c
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_hint_star.9.png
Binary files differ
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
new file mode 100644
index 000000000..f7cfdbd84
--- /dev/null
+++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..fea6fc946
--- /dev/null
+++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_off_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..cf2ffaf9a
--- /dev/null
+++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_normal_on_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..733944c5a
--- /dev/null
+++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..5c24d66da
--- /dev/null
+++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..d0afa5b0d
--- /dev/null
+++ b/java/res/drawable-xlarge-land/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..a34fe5854
--- /dev/null
+++ b/java/res/drawable-xlarge-land/btn_keyboard_key_light_normal_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..daa7f6c53
--- /dev/null
+++ b/java/res/drawable-xlarge-land/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..093f2df4c
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_colon_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..0965dc879
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_comma_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..1f77c6ed1
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_dash_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..716b8f15c
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_doublecross_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..bd42477a9
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_equal_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..cb319cfde
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_exclamation_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..4bcae825e
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_larger_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..ac9be60b3
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_parenclose_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..635a0c2dc
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_parenopen_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..41ac3a80d
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_period_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..89f33671c
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_plus_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..737c8314e
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_question_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..818476559
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_quote_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..d1d8d4fe7
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_semicolon_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..0784b892a
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_simplequote_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..3df3d9087
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_slash_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..8a2852bab
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_smaller_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..db7a15a8c
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_star_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..1fa93ee7f
--- /dev/null
+++ b/java/res/drawable-xlarge-land/key_hint_underline_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..f7cfdbd84
--- /dev/null
+++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..fea6fc946
--- /dev/null
+++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_off_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..cf2ffaf9a
--- /dev/null
+++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_normal_on_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..733944c5a
--- /dev/null
+++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..5c24d66da
--- /dev/null
+++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..d0afa5b0d
--- /dev/null
+++ b/java/res/drawable-xlarge/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..a34fe5854
--- /dev/null
+++ b/java/res/drawable-xlarge/btn_keyboard_key_light_normal_holo.9.png
Binary files differ
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
new file mode 100644
index 000000000..daa7f6c53
--- /dev/null
+++ b/java/res/drawable-xlarge/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_at_holo.9.png b/java/res/drawable-xlarge/key_hint_at_holo.9.png
new file mode 100644
index 000000000..23369f630
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_colon_holo.9.png b/java/res/drawable-xlarge/key_hint_colon_holo.9.png
new file mode 100644
index 000000000..54c423710
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_colon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_comma_holo.9.png b/java/res/drawable-xlarge/key_hint_comma_holo.9.png
new file mode 100644
index 000000000..2ebf24253
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_comma_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_dash_holo.9.png b/java/res/drawable-xlarge/key_hint_dash_holo.9.png
new file mode 100644
index 000000000..f44668fba
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_dash_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_doublecross_holo.9.png b/java/res/drawable-xlarge/key_hint_doublecross_holo.9.png
new file mode 100644
index 000000000..9ca30f437
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_doublecross_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_equal_holo.9.png b/java/res/drawable-xlarge/key_hint_equal_holo.9.png
new file mode 100644
index 000000000..dee9a03ff
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_equal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_exclamation_holo.9.png b/java/res/drawable-xlarge/key_hint_exclamation_holo.9.png
new file mode 100644
index 000000000..2c7271b0d
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_larger_holo.9.png b/java/res/drawable-xlarge/key_hint_larger_holo.9.png
new file mode 100644
index 000000000..f789e0299
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_larger_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_parenclose_holo.9.png b/java/res/drawable-xlarge/key_hint_parenclose_holo.9.png
new file mode 100644
index 000000000..aec225ac8
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_parenclose_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_parenopen_holo.9.png b/java/res/drawable-xlarge/key_hint_parenopen_holo.9.png
new file mode 100644
index 000000000..4347b9794
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_parenopen_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_period_holo.9.png b/java/res/drawable-xlarge/key_hint_period_holo.9.png
new file mode 100644
index 000000000..a261350b6
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_period_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_plus_holo.9.png b/java/res/drawable-xlarge/key_hint_plus_holo.9.png
new file mode 100644
index 000000000..80121e5e2
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_plus_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_question_holo.9.png b/java/res/drawable-xlarge/key_hint_question_holo.9.png
new file mode 100644
index 000000000..c8e2fdab9
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_quote_holo.9.png b/java/res/drawable-xlarge/key_hint_quote_holo.9.png
new file mode 100644
index 000000000..6cf7e0e37
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_semicolon_holo.9.png b/java/res/drawable-xlarge/key_hint_semicolon_holo.9.png
new file mode 100644
index 000000000..d4e3f6904
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_semicolon_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_simplequote_holo.9.png b/java/res/drawable-xlarge/key_hint_simplequote_holo.9.png
new file mode 100644
index 000000000..1d7463077
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_simplequote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_slash_holo.9.png b/java/res/drawable-xlarge/key_hint_slash_holo.9.png
new file mode 100644
index 000000000..f00024c85
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_slash_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_smaller_holo.9.png b/java/res/drawable-xlarge/key_hint_smaller_holo.9.png
new file mode 100644
index 000000000..e5562b93f
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_smaller_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_star_holo.9.png b/java/res/drawable-xlarge/key_hint_star_holo.9.png
new file mode 100644
index 000000000..fd43ed5de
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_star_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xlarge/key_hint_underline_holo.9.png b/java/res/drawable-xlarge/key_hint_underline_holo.9.png
new file mode 100644
index 000000000..680d9a6f5
--- /dev/null
+++ b/java/res/drawable-xlarge/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable/ic_sybtype_us_keyboard.png b/java/res/drawable/ic_sybtype_us_keyboard.png
new file mode 100644
index 000000000..c81b22bb0
--- /dev/null
+++ b/java/res/drawable/ic_sybtype_us_keyboard.png
Binary files differ
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="&quot;"
+ latin:keyHintIcon="@drawable/key_hint_quote_holo"
+ latin:popupKeyboard="@xml/kbd_popup_template"
+ latin:popupCharacters="&quot;" />
+ <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="&quot;"
+ latin:keyHintIcon="@drawable/key_hint_quote_holo"
+ latin:popupKeyboard="@xml/kbd_popup_template"
+ latin:popupCharacters="&quot;" />
+ <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="&lt;"
+ latin:keyHintIcon="@drawable/key_hint_smaller_holo"
+ latin:popupKeyboard="@xml/kbd_popup_template"
+ latin:popupCharacters="&lt;" />
+ <Key
+ latin:keyLabel=")"
+ latin:temporaryShiftKeyLabel="&gt;"
+ latin:keyHintIcon="@drawable/key_hint_larger_holo"
+ latin:popupKeyboard="@xml/kbd_popup_template"
+ latin:popupCharacters="&gt;" />
+ <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="&amp;" />
+ <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="&quot;" />
+ <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="&lt;" />
+ <Key
+ latin:keyLabel="&gt;" />
+ <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="&amp;" />
+ latin:keyLabel="&amp;" />
<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="[{&lt;" />
+ latin:keyLabel="("
+ latin:popupKeyboard="@xml/kbd_popup_template"
+ latin:popupCharacters="[{&lt;" />
<Key
- android:keyLabel=")"
- android:popupKeyboard="@xml/kbd_popup_template"
- android:popupCharacters="]}&gt;"
- android:keyEdgeFlags="right" />
+ latin:keyLabel=")"
+ latin:popupKeyboard="@xml/kbd_popup_template"
+ latin:popupCharacters="]}&gt;"
+ 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="&quot;"
- android:popupKeyboard="@xml/kbd_popup_template"
- android:popupCharacters="“”«»˝" />
+ latin:keyLabel="&quot;"
+ 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="&amp;" />
+ latin:keyLabel="&amp;" />
<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="[{&lt;" />
+ latin:keyLabel="("
+ latin:popupKeyboard="@xml/kbd_popup_template"
+ latin:popupCharacters="[{&lt;" />
<Key
- android:keyLabel=")"
- android:popupKeyboard="@xml/kbd_popup_template"
- android:popupCharacters="]}&gt;"
- android:keyEdgeFlags="right" />
+ latin:keyLabel=")"
+ latin:popupKeyboard="@xml/kbd_popup_template"
+ latin:popupCharacters="]}&gt;"
+ 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="&quot;"
- android:popupKeyboard="@xml/kbd_popup_template"
- android:popupCharacters="“”«»˝" />
+ latin:keyLabel="&quot;"
+ 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="&lt;"
- android:popupKeyboard="@xml/kbd_popup_template"
- android:popupCharacters="≤«‹" />
+ latin:keyLabel="&lt;"
+ latin:popupKeyboard="@xml/kbd_popup_template"
+ latin:popupCharacters="≤«‹" />
<Key
- android:keyLabel="&gt;"
- android:popupKeyboard="@xml/kbd_popup_template"
- android:popupCharacters="≥»›" />
+ latin:keyLabel="&gt;"
+ 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="&lt;"
- android:popupKeyboard="@xml/kbd_popup_template"
- android:popupCharacters="≤«‹" />
+ latin:keyLabel="&lt;"
+ latin:popupKeyboard="@xml/kbd_popup_template"
+ latin:popupCharacters="≤«‹" />
<Key
- android:keyLabel="&gt;"
- android:popupKeyboard="@xml/kbd_popup_template"
- android:popupCharacters="≥»›" />
+ latin:keyLabel="&gt;"
+ 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="&amp;" />
+ latin:keyLabel="&amp;" />
<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="&quot;" />
+ latin:keyLabel="&quot;" />
<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>
+ * &lt;Keyboard
+ * latin:keyWidth="%10p"
+ * latin:keyHeight="50px"
+ * latin:horizontalGap="2px"
+ * latin:verticalGap="2px" &gt;
+ * &lt;Row latin:keyWidth="32px" &gt;
+ * &lt;Key latin:keyLabel="A" /&gt;
+ * ...
+ * &lt;/Row&gt;
+ * ...
+ * &lt;/Keyboard&gt;
+ * </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>
+ * &gt;!-- xml/keyboard.xml --&lt;
+ * &gt;Keyboard keyboard_attributes*&lt;
+ * &gt;!-- Keyboard Content --&lt;
+ * &gt;Row row_attributes*&lt;
+ * &gt;!-- Row Content --&lt;
+ * &gt;Key key_attributes* /&lt;
+ * &gt;Spacer horizontalGap="0.2in" /&lt;
+ * &gt;include keyboardLayout="@xml/other_keys"&lt;
+ * ...
+ * &gt;/Row&lt;
+ * &gt;include keyboardLayout="@xml/other_rows"&lt;
+ * ...
+ * &gt;/Keyboard&lt;
+ * </pre>
+ * The xml file which is included in other file must have &gt;merge&lt; as root element, such as:
+ * <pre>
+ * &gt;!-- xml/other_keys.xml --&lt;
+ * &gt;merge&lt;
+ * &gt;Key key_attributes* /&lt;
+ * ...
+ * &gt;/merge&lt;
+ * </pre>
+ * and
+ * <pre>
+ * &gt;!-- xml/other_rows.xml --&lt;
+ * &gt;merge&lt;
+ * &gt;Row row_attributes*&lt;
+ * &gt;Key key_attributes* /&lt;
+ * &gt;/Row&lt;
+ * ...
+ * &gt;/merge&lt;
+ * </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));