aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--CleanSpec.mk1
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.pngbin556 -> 553 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.pngbin639 -> 632 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.pngbin720 -> 720 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.pngbin544 -> 547 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.pngbin2213 -> 2211 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.pngbin866 -> 856 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.pngbin384 -> 282 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.pngbin2107 -> 2080 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.pngbin2022 -> 1990 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.pngbin2173 -> 2152 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.pngbin2262 -> 2256 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.pngbin2020 -> 1993 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.pngbin2180 -> 2163 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_123_mic_holo.pngbin2195 -> 1513 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.pngbin392 -> 394 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.pngbin453 -> 449 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.pngbin500 -> 499 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.pngbin369 -> 381 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.pngbin2213 -> 2212 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.pngbin581 -> 571 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.pngbin257 -> 236 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.pngbin1335 -> 1313 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.pngbin1325 -> 1297 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.pngbin1436 -> 1437 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.pngbin1431 -> 1457 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.pngbin1309 -> 1288 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.pngbin1412 -> 1423 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_123_mic_holo.pngbin1449 -> 1011 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.pngbin755 -> 737 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.pngbin881 -> 855 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.pngbin1029 -> 996 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.pngbin669 -> 668 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.pngbin2658 -> 2658 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.pngbin1224 -> 1178 bytes
-rw-r--r--java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.pngbin366 -> 351 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.pngbin2996 -> 2916 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.pngbin2945 -> 2873 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.pngbin3141 -> 3176 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.pngbin3211 -> 3184 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.pngbin2892 -> 2818 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.pngbin3101 -> 3102 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_123_mic_holo.pngbin3115 -> 2127 bytes
-rw-r--r--java/res/values-ar/donottranslate-altchars.xml70
-rw-r--r--java/res/values/donottranslate-altchars.xml36
-rw-r--r--java/res/xml-sw600dp/kbd_key_styles.xml26
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty_row3.xml26
-rw-r--r--java/res/xml-sw600dp/kbd_qwerty_row4.xml96
-rw-r--r--java/res/xml-sw600dp/kbd_row3_comma_period.xml (renamed from java/res/xml-sw768dp/kbd_row3_right2.xml)0
-rw-r--r--java/res/xml-sw600dp/kbd_row3_smiley.xml (renamed from java/res/xml-sw600dp/kbd_row3_right.xml)0
-rw-r--r--java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml63
-rw-r--r--java/res/xml-sw600dp/kbd_rows_arabic.xml81
-rw-r--r--java/res/xml-sw600dp/kbd_rows_azerty.xml2
-rw-r--r--java/res/xml-sw600dp/kbd_rows_hebrew.xml86
-rw-r--r--java/res/xml-sw600dp/kbd_rows_qwertz.xml2
-rw-r--r--java/res/xml-sw600dp/kbd_rows_russian.xml41
-rw-r--r--java/res/xml-sw600dp/kbd_rows_scandinavian.xml26
-rw-r--r--java/res/xml-sw600dp/kbd_rows_serbian.xml26
-rw-r--r--java/res/xml-sw600dp/kbd_symbols.xml120
-rw-r--r--java/res/xml-sw768dp/kbd_key_styles.xml24
-rw-r--r--java/res/xml-sw768dp/kbd_qwerty_row3.xml2
-rw-r--r--java/res/xml-sw768dp/kbd_qwerty_row4.xml37
-rw-r--r--java/res/xml-sw768dp/kbd_row3_comma_period.xml46
-rw-r--r--java/res/xml-sw768dp/kbd_row4_apostrophe_dash.xml63
-rw-r--r--java/res/xml-sw768dp/kbd_rows_arabic.xml43
-rw-r--r--java/res/xml-sw768dp/kbd_rows_hebrew.xml47
-rw-r--r--java/res/xml-sw768dp/kbd_rows_russian.xml2
-rw-r--r--java/res/xml-sw768dp/kbd_rows_scandinavian.xml2
-rw-r--r--java/res/xml-sw768dp/kbd_rows_serbian.xml2
-rw-r--r--java/res/xml-sw768dp/kbd_symbols.xml47
-rw-r--r--java/res/xml/kbd_currency_key_styles.xml8
-rw-r--r--java/res/xml/kbd_key_styles.xml29
-rw-r--r--java/res/xml/kbd_qwerty_row4.xml45
-rw-r--r--java/res/xml/kbd_rows_arabic.xml78
-rw-r--r--java/res/xml/kbd_rows_hebrew.xml23
-rw-r--r--java/res/xml/kbd_symbols.xml47
-rw-r--r--java/res/xml/kbd_symbols_f1.xml6
-rw-r--r--java/res/xml/kbd_symbols_row4.xml14
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java9
-rw-r--r--java/src/com/android/inputmethod/latin/CandidateView.java8
-rw-r--r--native/Android.mk8
-rw-r--r--native/src/basechars.h20
-rw-r--r--native/src/bigram_dictionary.cpp2
-rw-r--r--native/src/defines.h11
-rw-r--r--native/src/dictionary.h17
-rw-r--r--native/src/proximity_info.cpp98
-rw-r--r--native/src/proximity_info.h17
-rw-r--r--native/src/unigram_dictionary.cpp176
-rw-r--r--native/src/unigram_dictionary.h27
89 files changed, 983 insertions, 677 deletions
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 44ff0a29d..9b498f449 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -48,6 +48,7 @@ $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/LatinIME*)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app/LatinIME.apk)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libjni_latinime_intermediates)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libjni_latinime_intermediates)
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png
index 1195a42c1..7ec33dd20 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
index 0a9d4b453..72d63da61 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
index fac757a03..fcc5cac89 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png
index f0ebdafbb..5612c51a1 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
index 44c2ad637..671d4e5d6 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png
index d3d831484..53d7b6fb3 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png
index 1ab6160b2..c2e8b3779 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png
index 36809d483..28b406a5c 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.png
index 59c8fd2e4..e42cd88dc 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png
index 875c65695..160344073 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png
index 4bd774395..a40d4277c 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png
index e4ae59db5..1f6807376 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png
index 9af394e95..ec53593d9 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_123_mic_holo.png b/java/res/drawable-hdpi/sym_keyboard_123_mic_holo.png
index 3b32171ec..ed66f7520 100644
--- a/java/res/drawable-hdpi/sym_keyboard_123_mic_holo.png
+++ b/java/res/drawable-hdpi/sym_keyboard_123_mic_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
index ab0b3bed5..8f340d355 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
index b0969a891..b34b95765 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
index cb49f1878..02f4b3de9 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
index 1de7abbd2..c39dd4a94 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png
index 44c2ad637..73cf35df0 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.png
index 633aaa22b..61988a8e1 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png
index 7d767439a..93a6e7921 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png
index cc7dd86aa..7a9f640d1 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png
index 0df04cf2a..5b06f09bb 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.png
index 6bde3e98f..fd992d6f4 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png
index 3d5b788d5..128dcd6ad 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png
index a1916875a..0b08d1747 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png
index 02e84d711..cf0b33c1d 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_123_mic_holo.png b/java/res/drawable-mdpi/sym_keyboard_123_mic_holo.png
index 546cce279..4814e5141 100644
--- a/java/res/drawable-mdpi/sym_keyboard_123_mic_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_123_mic_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png
index aefb21bb3..3871689ef 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
index b49ba10bd..836ea6e78 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
index e9c73878c..279db1f92 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png
index b6ab8150b..c23a4b225 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png
index 099472889..5cdfc4201 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.png
index 45401af34..1dee699f4 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
index 47eee3296..0c7bfdace 100644
--- a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png
index ba2835960..d999127f2 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png
index 4929780ff..c4d694136 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.png
index 8676746c7..5429c1785 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png
index ab9ba45c2..5135a0869 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png
index a46979def..19a77a29f 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png
index 63a5f459e..ae2ffff8e 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_123_mic_holo.png b/java/res/drawable-xhdpi/sym_keyboard_123_mic_holo.png
index 9306903ee..0c7505874 100644
--- a/java/res/drawable-xhdpi/sym_keyboard_123_mic_holo.png
+++ b/java/res/drawable-xhdpi/sym_keyboard_123_mic_holo.png
Binary files differ
diff --git a/java/res/values-ar/donottranslate-altchars.xml b/java/res/values-ar/donottranslate-altchars.xml
new file mode 100644
index 000000000..b4c103dcf
--- /dev/null
+++ b/java/res/values-ar/donottranslate-altchars.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- \u060c: ARABIC COMMA
+ \u061b: ARABIC SEMICOLON
+ \u061f: ARABIC QUESTION MARK
+ \u0651: ARABIC SHADDA
+ \u0652: ARABIC SUKUN
+ \u064c: ARABIC DAMMATAN
+ \u0640: ARABIC TATWEEL
+ \u064f: ARABIC DAMMA
+ \u064e: ARABIC FATHA
+ \u0650: ARABIC KASRA
+ \u064b: ARABIC FATHATAN
+ \u064d: ARABIC KASRATAN -->
+ <string name="alternates_for_punctuation">"\u060c,\u061b,\u061f,!,:,-,/,\',\",\u0651,\u0652,\u064c,\u0640,\u064f,\u064e,\u0650,\u064b,\u064d"</string>
+ <string name="alternates_for_web_tab_punctuation">".,\u060c,\u061b,\u061f,!,:,-,/,\',\",\u0651,\u0652,\u064c,\u0640,\u064f,\u064e,\u0650,\u064b,\u064d"</string>
+ <integer name="popup_keyboard_column_for_punctuation">9</integer>
+ <integer name="popup_keyboard_column_for_web_punctuation">10</integer>
+ <string name="keyhintlabel_for_punctuation">\u064b</string>
+ <string name="keylabel_for_symbols_1">"١"</string>
+ <string name="keylabel_for_symbols_2">"٢"</string>
+ <string name="keylabel_for_symbols_3">"٣"</string>
+ <string name="keylabel_for_symbols_4">"٤"</string>
+ <string name="keylabel_for_symbols_5">"٥"</string>
+ <string name="keylabel_for_symbols_6">"٦"</string>
+ <string name="keylabel_for_symbols_7">"٧"</string>
+ <string name="keylabel_for_symbols_8">"٨"</string>
+ <string name="keylabel_for_symbols_9">"٩"</string>
+ <string name="keylabel_for_symbols_0">"٠"</string>
+ <string name="alternates_for_symbols_1">1,¹,½,⅓,¼,⅛</string>
+ <string name="alternates_for_symbols_2">2,²,⅔</string>
+ <string name="alternates_for_symbols_3">3,³,¾,⅜</string>
+ <string name="alternates_for_symbols_4">4,⁴</string>
+ <string name="alternates_for_symbols_5">5,⅝</string>
+ <string name="alternates_for_symbols_6">6</string>
+ <string name="alternates_for_symbols_7">7,⅞</string>
+ <string name="alternates_for_symbols_8">8</string>
+ <string name="alternates_for_symbols_9">9</string>
+ <string name="alternates_for_symbols_0">0,ⁿ,∅</string>
+ <string name="keylabel_for_symbols_comma">\u060c</string>
+ <string name="keylabel_for_symbols_question">\u061f</string>
+ <string name="keylabel_for_symbols_semicolon">\u061b</string>
+ <string name="alternates_for_symbols_comma">,</string>
+ <string name="alternates_for_symbols_question">\?,¿</string>
+ <string name="alternates_for_symbols_semicolon">;</string>
+ <string name="keylabel_for_apostrophe">"،"</string>
+ <string name="keylabel_for_dash">"."</string>
+ <string name="keyhintlabel_for_apostrophe">"؟"</string>
+ <string name="keyhintlabel_for_dash">"\u064b"</string>
+ <string name="alternates_for_apostrophe">"\u061f,\u061b,!,:,-,/,\',\""</string>
+ <string name="alternates_for_dash">"\u0651,\u0652,\u064c,\u0640,\u064f,\u064e,\u0650,\u064b,\u064d"</string>
+</resources>
diff --git a/java/res/values/donottranslate-altchars.xml b/java/res/values/donottranslate-altchars.xml
index e77957578..9d06d06f7 100644
--- a/java/res/values/donottranslate-altchars.xml
+++ b/java/res/values/donottranslate-altchars.xml
@@ -47,10 +47,46 @@
<string name="alternates_for_currency_dollar">¢,£,€,¥,₱</string>
<string name="alternates_for_currency_euro">¢,£,$,¥,₱</string>
<string name="alternates_for_currency_pound">¢,$,€,¥,₱</string>
+ <string name="alternates_for_currency_general">¢,$,€,£,¥,₱</string>
<string name="alternates_for_smiley">":-)|:-) ,:-(|:-( ,;-)|;-) ,:-P|:-P ,=-O|=-O ,:-*|:-* ,:O|:O ,B-)|B-) ,:-$|:-$ ,:-!|:-! ,:-[|:-[ ,O:-)|O:-) ,:-\\\\\\\\|:-\\\\\\\\ ,:\'(|:\'( ,:-D|:-D "</string>
<string name="alternates_for_punctuation">"\\,,\?,!,:,-,\',\",(,),/,;,+,&amp;,\@"</string>
<string name="alternates_for_web_tab_punctuation">".,\\,,\?,!,:,-,\',\",(,),/,;,+,&amp;,\@"</string>
+ <integer name="popup_keyboard_column_for_punctuation">7</integer>
+ <integer name="popup_keyboard_column_for_web_punctuation">8</integer>
+ <string name="keyhintlabel_for_punctuation"></string>
<string name="keylabel_for_popular_domain">".com"</string>
<!-- popular web domains for the locale - most popular, displayed on the keyboard -->
<string name="alternates_for_popular_domain">".net,.org,.gov,.edu"</string>
+ <string name="keylabel_for_symbols_1">1</string>
+ <string name="keylabel_for_symbols_2">2</string>
+ <string name="keylabel_for_symbols_3">3</string>
+ <string name="keylabel_for_symbols_4">4</string>
+ <string name="keylabel_for_symbols_5">5</string>
+ <string name="keylabel_for_symbols_6">6</string>
+ <string name="keylabel_for_symbols_7">7</string>
+ <string name="keylabel_for_symbols_8">8</string>
+ <string name="keylabel_for_symbols_9">9</string>
+ <string name="keylabel_for_symbols_0">0</string>
+ <string name="alternates_for_symbols_1">¹,½,⅓,¼,⅛</string>
+ <string name="alternates_for_symbols_2">²,⅔</string>
+ <string name="alternates_for_symbols_3">³,¾,⅜</string>
+ <string name="alternates_for_symbols_4">⁴</string>
+ <string name="alternates_for_symbols_5">⅝</string>
+ <string name="alternates_for_symbols_6"></string>
+ <string name="alternates_for_symbols_7">⅞</string>
+ <string name="alternates_for_symbols_8"></string>
+ <string name="alternates_for_symbols_9"></string>
+ <string name="alternates_for_symbols_0">ⁿ,∅</string>
+ <string name="keylabel_for_symbols_comma">,</string>
+ <string name="keylabel_for_symbols_question">\?</string>
+ <string name="keylabel_for_symbols_semicolon">;</string>
+ <string name="alternates_for_symbols_comma"></string>
+ <string name="alternates_for_symbols_question">¿</string>
+ <string name="alternates_for_symbols_semicolon"></string>
+ <string name="keylabel_for_apostrophe">\'</string>
+ <string name="keylabel_for_dash">-</string>
+ <string name="keyhintlabel_for_apostrophe">\"</string>
+ <string name="keyhintlabel_for_dash">_</string>
+ <string name="alternates_for_apostrophe">\"</string>
+ <string name="alternates_for_dash">_</string>
</resources>
diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml
index dbea4dcfd..388e293e6 100644
--- a/java/res/xml-sw600dp/kbd_key_styles.xml
+++ b/java/res/xml-sw600dp/kbd_key_styles.xml
@@ -38,7 +38,7 @@
<key-style
latin:styleName="settingsPopupStyle"
latin:keyLabelOption="hasPopupHint"
- latin:popupCharacters="\@icon/5|\@integer/key_settings"
+ latin:popupCharacters="\@icon/6|\@integer/key_settings"
latin:parentStyle="functionalKeyStyle" />
</default>
</switch>
@@ -50,12 +50,24 @@
latin:keyIconShifted="iconShiftedShiftKey"
latin:parentStyle="functionalKeyStyle"
latin:isSticky="true" />
- <key-style
- latin:styleName="deleteKeyStyle"
- latin:code="@integer/key_delete"
- latin:keyIcon="iconDeleteKey"
- latin:parentStyle="functionalKeyStyle"
- latin:isRepeatable="true" />
+ <switch>
+ <case latin:languageCode="ar|iw">
+ <key-style
+ latin:styleName="deleteKeyStyle"
+ latin:code="@integer/key_delete"
+ latin:keyIcon="iconDeleteRtlKey"
+ latin:parentStyle="functionalKeyStyle"
+ latin:isRepeatable="true" />
+ </case>
+ <default>
+ <key-style
+ latin:styleName="deleteKeyStyle"
+ latin:code="@integer/key_delete"
+ latin:keyIcon="iconDeleteKey"
+ latin:parentStyle="functionalKeyStyle"
+ latin:isRepeatable="true" />
+ </default>
+ </switch>
<key-style
latin:styleName="returnKeyStyle"
latin:code="@integer/key_return"
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row3.xml b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
index 278db13fc..b4eed8a7c 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row3.xml
@@ -46,29 +46,9 @@
latin:popupCharacters="@string/alternates_for_n" />
<Key
latin:keyLabel="m" />
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="," />
- <Key
- latin:keyLabel="." />
- </case>
- <default>
- <Key
- latin:keyLabel=","
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="!"
- latin:popupCharacters="!" />
- <Key
- latin:keyLabel="."
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="\?"
- latin:popupCharacters="\?" />
- </default>
- </switch>
<include
- latin:keyboardLayout="@xml/kbd_row3_right" />
+ latin:keyboardLayout="@xml/kbd_row3_comma_period" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_smiley" />
</Row>
</merge>
diff --git a/java/res/xml-sw600dp/kbd_qwerty_row4.xml b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
index 4f41c17b4..5cd47d913 100644
--- a/java/res/xml-sw600dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw600dp/kbd_qwerty_row4.xml
@@ -59,99 +59,15 @@
latin:keyWidth="39.750%p" />
<switch>
<case
- latin:languageCode="ru"
+ latin:languageCode="iw"
>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="-"
- latin:keyWidth="9.750%p" />
- </case>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyLabel="/"
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel=":"
- latin:popupCharacters=":"
- latin:keyWidth="9.750%p" />
- </case>
- <default>
- <Key
- latin:keyLabel="\?"
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="_"
- latin:popupCharacters="_"
- latin:keyWidth="9.750%p" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="_"
- latin:keyWidth="9.750%p" />
- </case>
- <default>
- <Key
- latin:keyLabel="!"
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="\'"
- latin:popupCharacters="\'"
- latin:keyWidth="9.750%p" />
- </default>
- </switch>
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_comma_period" />
</case>
- <!-- not languageCode="ru" -->
+ <!-- not languageCode="iw" -->
<default>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="-"
- latin:keyWidth="9.750%p" />
- </case>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyLabel="/"
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel=":"
- latin:popupCharacters=":"
- latin:keyWidth="9.750%p" />
- </case>
- <default>
- <Key
- latin:keyLabel="\'"
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="&quot;"
- latin:popupCharacters="&quot;"
- latin:keyWidth="9.750%p" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="_"
- latin:keyWidth="9.750%p" />
- </case>
- <default>
- <Key
- latin:keyLabel="-"
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="_"
- latin:popupCharacters="_"
- latin:keyWidth="9.750%p" />
- </default>
- </switch>
+ <include
+ latin:keyboardLayout="@xml/kbd_row4_apostrophe_dash" />
</default>
</switch>
<Spacer
diff --git a/java/res/xml-sw768dp/kbd_row3_right2.xml b/java/res/xml-sw600dp/kbd_row3_comma_period.xml
index 25453160f..25453160f 100644
--- a/java/res/xml-sw768dp/kbd_row3_right2.xml
+++ b/java/res/xml-sw600dp/kbd_row3_comma_period.xml
diff --git a/java/res/xml-sw600dp/kbd_row3_right.xml b/java/res/xml-sw600dp/kbd_row3_smiley.xml
index 5e9584f2d..5e9584f2d 100644
--- a/java/res/xml-sw600dp/kbd_row3_right.xml
+++ b/java/res/xml-sw600dp/kbd_row3_smiley.xml
diff --git a/java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml b/java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml
new file mode 100644
index 000000000..50d4d4b10
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_row4_apostrophe_dash.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="-" />
+ </case>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel="/"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel=":"
+ latin:popupCharacters=":" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="@string/keylabel_for_apostrophe"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="@string/keyhintlabel_for_apostrophe"
+ latin:popupCharacters="@string/alternates_for_apostrophe" />
+ </default>
+ </switch>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="_" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="@string/keylabel_for_dash"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="@string/keyhintlabel_for_dash"
+ latin:popupCharacters="@string/alternates_for_dash" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_rows_arabic.xml b/java/res/xml-sw600dp/kbd_rows_arabic.xml
index bc37d5a9f..4c1909438 100644
--- a/java/res/xml-sw600dp/kbd_rows_arabic.xml
+++ b/java/res/xml-sw600dp/kbd_rows_arabic.xml
@@ -18,9 +18,6 @@
*/
-->
-<!-- This file for Arabic layout is an alpha version. It allows to enter -->
-<!-- some right-to-left text, but it has gone through no study whatsoever, -->
-<!-- and needs to be run through UX. -->
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
@@ -40,21 +37,23 @@
latin:keyLabel="ق" />
<Key
latin:keyLabel="ف"
- latin:popupCharacters="ف,ڤ" />
+ latin:popupCharacters="ڤ" />
<Key
latin:keyLabel="غ" />
<Key
latin:keyLabel="ع" />
+ <!-- \ufeeb: ARABIC LETTER HEH INITIAL FORM
+ \u0647\u0640: ARABIC LETTER HEH + ARABIC TATWEEL -->
<Key
latin:keyLabel="ه"
- latin:popupCharacters="ه,هـ" />
+ latin:popupCharacters="\ufeeb|\u0647\u0640" />
<Key
latin:keyLabel="خ" />
<Key
latin:keyLabel="ح" />
<Key
latin:keyLabel="ج"
- latin:popupCharacters="ج,چ" />
+ latin:popupCharacters="چ" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyXPos="-10.0%p"
@@ -73,13 +72,25 @@
latin:keyLabel="ي" />
<Key
latin:keyLabel="ب"
- latin:popupCharacters="ب,پ" />
+ latin:popupCharacters="پ" />
+ <!-- \ufefb: ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+ \u0644: ARABIC LETTER LAM
+ \u0627: ARABIC LETTER ALEF
+ \ufef7: ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+ \u0623: ARABIC LETTER ALEF WITH HAMZA ABOVE
+ \ufef9: ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+ \u0625: ARABIC LETTER ALEF WITH HAMZA BELOW
+ \ufef5: ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+ \u0622: ARABIC LETTER ALEF WITH MADDA ABOVE -->
<Key
latin:keyLabel="ل"
- latin:popupCharacters="ل,لا" />
+ latin:popupCharacters="\ufefb|\u0644\u0627,\ufef7|\u0644\u0623,\ufef9|\u0644\u0625,\ufef5|\u0644\u0622" />
+ <!-- \u0623: ARABIC LETTER ALEF WITH HAMZA ABOVE
+ \u0625: ARABIC LETTER ALEF WITH HAMZA BELOW
+ \u0622: ARABIC LETTER ALEF WITH MADDA ABOVE -->
<Key
latin:keyLabel="ا"
- latin:popupCharacters="ا,أ,إ,آ" />
+ latin:popupCharacters="\u0623,\u0625,\u0622" />
<Key
latin:keyLabel="ت" />
<Key
@@ -88,7 +99,7 @@
latin:keyLabel="م" />
<Key
latin:keyLabel="ك"
- latin:popupCharacters="ك,گ" />
+ latin:popupCharacters="گ" />
<Key
latin:keyLabel="ط" />
<Key
@@ -98,12 +109,43 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="7.65%p"
+ latin:keyWidth="8.0%p"
>
- <Key
- latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="8.0%p"
- latin:keyEdgeFlags="left" />
+ <!-- kbd_row3_smiley -->
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="\@"
+ latin:keyEdgeFlags="left" />
+ </case>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel="-"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="_"
+ latin:popupCharacters="_"
+ latin:keyEdgeFlags="left" />
+ </case>
+ <case
+ latin:imeAction="actionSearch"
+ >
+ <Key
+ latin:keyLabel=":"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="+"
+ latin:popupCharacters="+"
+ latin:keyEdgeFlags="left" />
+ </case>
+ <default>
+ <Key
+ latin:keyStyle="smileyKeyStyle"
+ latin:keyEdgeFlags="left" />
+ </default>
+ </switch>
<Key
latin:keyLabel="ئ" />
<Key
@@ -122,13 +164,12 @@
latin:keyLabel="و" />
<Key
latin:keyLabel="ز"
- latin:popupCharacters="ز,ژ" />
+ latin:popupCharacters="ژ" />
<Key
latin:keyLabel="ظ" />
<Key
latin:keyLabel="د" />
- <include
- latin:keyboardLayout="@xml/kbd_row3_right" />
- </Row>
- <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml-sw600dp/kbd_rows_azerty.xml b/java/res/xml-sw600dp/kbd_rows_azerty.xml
index 7ba716bc5..698ef2240 100644
--- a/java/res/xml-sw600dp/kbd_rows_azerty.xml
+++ b/java/res/xml-sw600dp/kbd_rows_azerty.xml
@@ -149,7 +149,7 @@
</default>
</switch>
<include
- latin:keyboardLayout="@xml/kbd_row3_right" />
+ latin:keyboardLayout="@xml/kbd_row3_smiley" />
</Row>
<include
latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_rows_hebrew.xml b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
index a1475376b..87409159e 100644
--- a/java/res/xml-sw600dp/kbd_rows_hebrew.xml
+++ b/java/res/xml-sw600dp/kbd_rows_hebrew.xml
@@ -24,13 +24,11 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="8.600%p"
+ latin:keyWidth="9.0%p"
latin:rowEdgeFlags="top"
>
- <Key
- latin:keyLabel="," />
- <Key
- latin:keyLabel="." />
+ <include
+ latin:keyboardLayout="@xml/kbd_row4_apostrophe_dash" />
<Key
latin:keyLabel="ק" />
<Key
@@ -54,48 +52,78 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.600%p"
+ latin:keyWidth="9.0%p"
>
<Key
latin:keyLabel="ש"
- latin:keyXPos="4.000%p" />
+ latin:keyXPos="4.500%p" />
<Key
latin:keyLabel="ד" />
<Key
latin:keyLabel="ג"
- latin:popupCharacters="ג,ג׳" />
+ latin:popupCharacters="ג׳" />
<Key
latin:keyLabel="כ" />
<Key
latin:keyLabel="ע" />
<Key
latin:keyLabel="י"
- latin:popupCharacters="י,ײַ" />
+ latin:popupCharacters="ײַ" />
<Key
latin:keyLabel="ח"
- latin:popupCharacters="ח,ח׳" />
+ latin:popupCharacters="ח׳" />
<Key
latin:keyLabel="ל" />
<Key
latin:keyLabel="ך" />
<Key
latin:keyLabel="ף" />
- <Key
- latin:keyStyle="returnKeyStyle"
- latin:keyXPos="-10.400%p"
- latin:keyWidth="fillBoth"
- latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.600%p"
+ latin:keyWidth="8.9%p"
>
- <Key
- latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="10.000%p"
- latin:keyEdgeFlags="left" />
+ <!-- kbd_row3_smiley -->
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="\@"
+ latin:keyWidth="10.0%p"
+ latin:keyEdgeFlags="left" />
+ </case>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel="-"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="_"
+ latin:popupCharacters="_"
+ latin:keyWidth="10.0%p"
+ latin:keyEdgeFlags="left" />
+ </case>
+ <case
+ latin:imeAction="actionSearch"
+ >
+ <Key
+ latin:keyLabel=":"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="+"
+ latin:popupCharacters="+"
+ latin:keyWidth="10.0%p"
+ latin:keyEdgeFlags="left" />
+ </case>
+ <default>
+ <Key
+ latin:keyStyle="smileyKeyStyle"
+ latin:keyWidth="10.0%p"
+ latin:keyEdgeFlags="left" />
+ </default>
+ </switch>
<Key
latin:keyLabel="ז"
- latin:popupCharacters="ז,ז׳" />
+ latin:popupCharacters="ז׳" />
<Key
latin:keyLabel="ס" />
<Key
@@ -108,15 +136,19 @@
latin:keyLabel="מ" />
<Key
latin:keyLabel="צ"
- latin:popupCharacters="צ,צ׳" />
+ latin:popupCharacters="צ׳" />
<Key
latin:keyLabel="ת"
- latin:popupCharacters="ת,ת׳" />
+ latin:popupCharacters="ת׳" />
<Key
latin:keyLabel="ץ"
- latin:popupCharacters="ץ,ץ׳" />
- <include
- latin:keyboardLayout="@xml/kbd_row3_right" />
+ latin:popupCharacters="ץ׳" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-10.400%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
</Row>
- <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml-sw600dp/kbd_rows_qwertz.xml b/java/res/xml-sw600dp/kbd_rows_qwertz.xml
index 7f85fe778..7ec895e0a 100644
--- a/java/res/xml-sw600dp/kbd_rows_qwertz.xml
+++ b/java/res/xml-sw600dp/kbd_rows_qwertz.xml
@@ -114,7 +114,7 @@
</default>
</switch>
<include
- latin:keyboardLayout="@xml/kbd_row3_right" />
+ latin:keyboardLayout="@xml/kbd_row3_smiley" />
</Row>
<include
latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_rows_russian.xml b/java/res/xml-sw600dp/kbd_rows_russian.xml
index b72324745..445298982 100644
--- a/java/res/xml-sw600dp/kbd_rows_russian.xml
+++ b/java/res/xml-sw600dp/kbd_rows_russian.xml
@@ -24,12 +24,11 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="8.0%p"
+ latin:keyWidth="7.60%p"
latin:rowEdgeFlags="top"
>
<Key
latin:keyLabel="й"
- latin:keyXPos="2.15%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ц" />
@@ -53,17 +52,19 @@
<Key
latin:keyLabel="х" />
<Key
+ latin:keyLabel="ъ" />
+ <Key
latin:keyStyle="deleteKeyStyle"
latin:keyXPos="-10.0%p"
latin:keyWidth="fillBoth"
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.0%p"
+ latin:keyWidth="7.60%p"
>
<Key
latin:keyLabel="ф"
- latin:keyEdgeFlags="left" />
+ latin:keyXPos="2.25%p" />
<Key
latin:keyLabel="ы" />
<Key
@@ -91,11 +92,10 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.0%p"
+ latin:keyWidth="7.60%p"
>
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="10.0%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="я" />
@@ -116,13 +116,30 @@
latin:keyLabel="б" />
<Key
latin:keyLabel="ю" />
- <Key
- latin:keyLabel="."
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel=","
- latin:popupCharacters="," />
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel=","
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="!"
+ latin:popupCharacters="!" />
+ <Key
+ latin:keyLabel="."
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="\?"
+ latin:popupCharacters="\?" />
+ </default>
+ </switch>
<include
- latin:keyboardLayout="@xml/kbd_row3_right" />
+ latin:keyboardLayout="@xml/kbd_row3_smiley" />
</Row>
<include
latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_rows_scandinavian.xml b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
index 645ef625a..5ac2b3600 100644
--- a/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
+++ b/java/res/xml-sw600dp/kbd_rows_scandinavian.xml
@@ -134,32 +134,12 @@
latin:popupCharacters="@string/alternates_for_n" />
<Key
latin:keyLabel="m" />
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="," />
- <Key
- latin:keyLabel="." />
- </case>
- <default>
- <Key
- latin:keyLabel=","
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="!"
- latin:popupCharacters="!" />
- <Key
- latin:keyLabel="."
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="\?"
- latin:popupCharacters="\?" />
- </default>
- </switch>
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_comma_period" />
<Spacer
latin:keyWidth="4.35%p" />
<include
- latin:keyboardLayout="@xml/kbd_row3_right" />
+ latin:keyboardLayout="@xml/kbd_row3_smiley" />
</Row>
<include
latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_rows_serbian.xml b/java/res/xml-sw600dp/kbd_rows_serbian.xml
index 4dfe94400..5d39fd4f1 100644
--- a/java/res/xml-sw600dp/kbd_rows_serbian.xml
+++ b/java/res/xml-sw600dp/kbd_rows_serbian.xml
@@ -114,30 +114,10 @@
latin:keyLabel="ђ" />
<Key
latin:keyLabel="ж" />
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="," />
- <Key
- latin:keyLabel="." />
- </case>
- <default>
- <Key
- latin:keyLabel=","
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="!"
- latin:popupCharacters="!" />
- <Key
- latin:keyLabel="."
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="\?"
- latin:popupCharacters="\?" />
- </default>
- </switch>
<include
- latin:keyboardLayout="@xml/kbd_row3_right" />
+ latin:keyboardLayout="@xml/kbd_row3_comma_period" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_smiley" />
</Row>
<include
latin:keyboardLayout="@xml/kbd_qwerty_row4" />
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_symbols.xml
index 77849f6fd..dea08ddff 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_symbols.xml
@@ -30,32 +30,36 @@
latin:keyWidth="9.0%p"
>
<Key
- latin:keyLabel="1"
- latin:popupCharacters="¹,½,⅓,¼,⅛" />
+ latin:keyLabel="@string/keylabel_for_symbols_1"
+ latin:popupCharacters="@string/alternates_for_symbols_1"
+ latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="2"
- latin:popupCharacters="²,⅔" />
+ latin:keyLabel="@string/keylabel_for_symbols_2"
+ latin:popupCharacters="@string/alternates_for_symbols_2" />
<Key
- latin:keyLabel="3"
- latin:popupCharacters="³,¾,⅜" />
+ latin:keyLabel="@string/keylabel_for_symbols_3"
+ latin:popupCharacters="@string/alternates_for_symbols_3" />
<Key
- latin:keyLabel="4"
- latin:popupCharacters="⁴" />
+ latin:keyLabel="@string/keylabel_for_symbols_4"
+ latin:popupCharacters="@string/alternates_for_symbols_4" />
<Key
- latin:keyLabel="5"
- latin:popupCharacters="⅝" />
+ latin:keyLabel="@string/keylabel_for_symbols_5"
+ latin:popupCharacters="@string/alternates_for_symbols_5" />
<Key
- latin:keyLabel="6" />
+ latin:keyLabel="@string/keylabel_for_symbols_6"
+ latin:popupCharacters="@string/alternates_for_symbols_6" />
<Key
- latin:keyLabel="7"
- latin:popupCharacters="⅞" />
+ latin:keyLabel="@string/keylabel_for_symbols_7"
+ latin:popupCharacters="@string/alternates_for_symbols_7" />
<Key
- latin:keyLabel="8" />
+ latin:keyLabel="@string/keylabel_for_symbols_8"
+ latin:popupCharacters="@string/alternates_for_symbols_8" />
<Key
- latin:keyLabel="9" />
+ latin:keyLabel="@string/keylabel_for_symbols_9"
+ latin:popupCharacters="@string/alternates_for_symbols_9" />
<Key
- latin:keyLabel="0"
- latin:popupCharacters="ⁿ,∅" />
+ latin:keyLabel="@string/keylabel_for_symbols_0"
+ latin:popupCharacters="@string/alternates_for_symbols_0" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyXPos="-10.0%p"
@@ -114,12 +118,6 @@
latin:popupCharacters="≠,≈" />
<switch>
<case
- latin:languageCode="ru"
- >
- <Key
- latin:keyLabel=":" />
- </case>
- <case
latin:mode="url"
>
<Key
@@ -132,38 +130,19 @@
</default>
</switch>
<Key
- latin:keyLabel=";" />
- <switch>
- <case
- latin:languageCode="ru"
- >
- <Key
- latin:keyLabel="\'"
- latin:popupCharacters="‘,’,‚,‛" />
- <!-- Note: DroidSans doesn't have double-high-reversed-quotation
- '\u201f' glyph. -->
- <!-- latin:popupCharacters="“,”,„,‟,«,»" -->
- <Key
- latin:keyLabel="&quot;"
- latin:popupCharacters="“,”,«,»" />
- <Key
- latin:keyLabel="." />
- <Key
- latin:keyLabel="," />
- </case>
- <default>
- <Key
- latin:keyLabel="," />
- <Key
- latin:keyLabel="." />
- <Key
- latin:keyLabel="!"
- latin:popupCharacters="¡" />
- <Key
- latin:keyLabel="\?"
- latin:popupCharacters="¿" />
- </default>
- </switch>
+ latin:keyLabel="@string/keylabel_for_symbols_semicolon"
+ latin:popupCharacters="@string/alternates_for_symbols_semicolon" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_comma"
+ latin:popupCharacters="@string/alternates_for_symbols_comma" />
+ <Key
+ latin:keyLabel="." />
+ <Key
+ latin:keyLabel="!"
+ latin:popupCharacters="¡" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_question"
+ latin:popupCharacters="@string/alternates_for_symbols_question" />
<Key
latin:keyLabel="/"
latin:keyWidth="fillRight" />
@@ -185,30 +164,13 @@
latin:keyStyle="spaceKeyStyle"
latin:keyXPos="30.750%p"
latin:keyWidth="39.750%p" />
- <switch>
- <case
- latin:languageCode="ru"
- >
- <Key
- latin:keyLabel="_"
- latin:keyWidth="9.750%p" />
- <Key
- latin:keyLabel="-"
- latin:keyWidth="9.750%p" />
- </case>
- <default>
- <!-- Note: DroidSans doesn't have double-high-reversed-quotation
- '\u201f' glyph. -->
- <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" -->
- <Key
- latin:keyLabel="&quot;"
- latin:popupCharacters="“,”,«,»,‘,’,‚,‛"
- latin:keyWidth="9.750%p" />
- <Key
- latin:keyLabel="_"
- latin:keyWidth="9.750%p" />
- </default>
- </switch>
+ <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. -->
+ <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" -->
+ <Key
+ latin:keyLabel="&quot;"
+ latin:popupCharacters="“,”,«,»,‘,’,‚,‛" />
+ <Key
+ latin:keyLabel="_" />
<Spacer
latin:keyXPos="-10.00%p"
latin:keyWidth="0%p" />
diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml
index 4c1e3b63e..ab8784a05 100644
--- a/java/res/xml-sw768dp/kbd_key_styles.xml
+++ b/java/res/xml-sw768dp/kbd_key_styles.xml
@@ -32,12 +32,24 @@
latin:keyIconShifted="iconShiftedShiftKey"
latin:parentStyle="functionalKeyStyle"
latin:isSticky="true" />
- <key-style
- latin:styleName="deleteKeyStyle"
- latin:code="@integer/key_delete"
- latin:keyIcon="iconDeleteKey"
- latin:parentStyle="functionalKeyStyle"
- latin:isRepeatable="true" />
+ <switch>
+ <case latin:languageCode="ar|iw">
+ <key-style
+ latin:styleName="deleteKeyStyle"
+ latin:code="@integer/key_delete"
+ latin:keyIcon="iconDeleteRtlKey"
+ latin:parentStyle="functionalKeyStyle"
+ latin:isRepeatable="true" />
+ </case>
+ <default>
+ <key-style
+ latin:styleName="deleteKeyStyle"
+ latin:code="@integer/key_delete"
+ latin:keyIcon="iconDeleteKey"
+ latin:parentStyle="functionalKeyStyle"
+ latin:isRepeatable="true" />
+ </default>
+ </switch>
<key-style
latin:styleName="returnKeyStyle"
latin:code="@integer/key_return"
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row3.xml b/java/res/xml-sw768dp/kbd_qwerty_row3.xml
index 7297ea512..9041a7764 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row3.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row3.xml
@@ -47,7 +47,7 @@
<Key
latin:keyLabel="m" />
<include
- latin:keyboardLayout="@xml/kbd_row3_right2" />
+ latin:keyboardLayout="@xml/kbd_row3_comma_period" />
<Key
latin:keyStyle="shiftKeyStyle"
latin:keyXPos="-13.750%p"
diff --git a/java/res/xml-sw768dp/kbd_qwerty_row4.xml b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
index bdef89dcc..48201c9ec 100644
--- a/java/res/xml-sw768dp/kbd_qwerty_row4.xml
+++ b/java/res/xml-sw768dp/kbd_qwerty_row4.xml
@@ -90,41 +90,14 @@
latin:keyWidth="37.500%p" />
<switch>
<case
- latin:mode="email"
+ latin:languageCode="iw"
>
- <Key
- latin:keyLabel="-" />
- </case>
- <case
- latin:mode="url"
- >
- <Key
- latin:keyLabel="/"
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel=":"
- latin:popupCharacters=":" />
- </case>
- <default>
- <Key
- latin:keyLabel="\'"
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="&quot;"
- latin:popupCharacters="&quot;" />
- </default>
- </switch>
- <switch>
- <case
- latin:mode="email"
- >
- <Key
- latin:keyLabel="_" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_comma_period" />
</case>
<default>
- <Key
- latin:keyLabel="-"
- latin:keyLabelOption="hasUppercaseLetter"
- latin:keyHintLabel="_"
- latin:popupCharacters="_" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row4_apostrophe_dash" />
</default>
</switch>
<switch>
diff --git a/java/res/xml-sw768dp/kbd_row3_comma_period.xml b/java/res/xml-sw768dp/kbd_row3_comma_period.xml
new file mode 100644
index 000000000..25453160f
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_row3_comma_period.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel=","
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="!"
+ latin:popupCharacters="!" />
+ <Key
+ latin:keyLabel="."
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="\?"
+ latin:popupCharacters="\?" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml-sw768dp/kbd_row4_apostrophe_dash.xml b/java/res/xml-sw768dp/kbd_row4_apostrophe_dash.xml
new file mode 100644
index 000000000..50d4d4b10
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_row4_apostrophe_dash.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="-" />
+ </case>
+ <case
+ latin:mode="url"
+ >
+ <Key
+ latin:keyLabel="/"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel=":"
+ latin:popupCharacters=":" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="@string/keylabel_for_apostrophe"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="@string/keyhintlabel_for_apostrophe"
+ latin:popupCharacters="@string/alternates_for_apostrophe" />
+ </default>
+ </switch>
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="_" />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel="@string/keylabel_for_dash"
+ latin:keyLabelOption="hasUppercaseLetter"
+ latin:keyHintLabel="@string/keyhintlabel_for_dash"
+ latin:popupCharacters="@string/alternates_for_dash" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml-sw768dp/kbd_rows_arabic.xml b/java/res/xml-sw768dp/kbd_rows_arabic.xml
index c1810026b..f3283ae94 100644
--- a/java/res/xml-sw768dp/kbd_rows_arabic.xml
+++ b/java/res/xml-sw768dp/kbd_rows_arabic.xml
@@ -18,9 +18,6 @@
*/
-->
-<!-- This file for Arabic layout is an alpha version. It allows to enter -->
-<!-- some right-to-left text, but it has gone through no study whatsoever, -->
-<!-- and needs to be run through UX. -->
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
@@ -44,21 +41,23 @@
latin:keyLabel="ق" />
<Key
latin:keyLabel="ف"
- latin:popupCharacters="ف,ڤ" />
+ latin:popupCharacters="ڤ" />
<Key
latin:keyLabel="غ" />
<Key
latin:keyLabel="ع" />
+ <!-- \ufeeb: ARABIC LETTER HEH INITIAL FORM
+ \u0647\u0640: ARABIC LETTER HEH + ARABIC TATWEEL -->
<Key
latin:keyLabel="ه"
- latin:popupCharacters="ه,هـ" />
+ latin:popupCharacters="\ufeeb|\u0647\u0640" />
<Key
latin:keyLabel="خ" />
<Key
latin:keyLabel="ح" />
<Key
latin:keyLabel="ج"
- latin:popupCharacters="ج,چ" />
+ latin:popupCharacters="چ" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyXPos="-11.500%p"
@@ -81,13 +80,25 @@
latin:keyLabel="ي" />
<Key
latin:keyLabel="ب"
- latin:popupCharacters="ب,پ" />
+ latin:popupCharacters="پ" />
+ <!-- \ufefb: ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+ \u0644: ARABIC LETTER LAM
+ \u0627: ARABIC LETTER ALEF
+ \ufef7: ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+ \u0623: ARABIC LETTER ALEF WITH HAMZA ABOVE
+ \ufef9: ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+ \u0625: ARABIC LETTER ALEF WITH HAMZA BELOW
+ \ufef5: ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+ \u0622: ARABIC LETTER ALEF WITH MADDA ABOVE -->
<Key
latin:keyLabel="ل"
- latin:popupCharacters="ل,لا" />
+ latin:popupCharacters="\ufefb|\u0644\u0627,\ufef7|\u0644\u0623,\ufef9|\u0644\u0625,\ufef5|\u0644\u0622" />
+ <!-- \u0623: ARABIC LETTER ALEF WITH HAMZA ABOVE
+ \u0625: ARABIC LETTER ALEF WITH HAMZA BELOW
+ \u0622: ARABIC LETTER ALEF WITH MADDA ABOVE -->
<Key
latin:keyLabel="ا"
- latin:popupCharacters="ا,أ,إ,آ" />
+ latin:popupCharacters="\u0623,\u0625,\u0622" />
<Key
latin:keyLabel="ت" />
<Key
@@ -96,7 +107,7 @@
latin:keyLabel="م" />
<Key
latin:keyLabel="ك"
- latin:popupCharacters="ك,گ" />
+ latin:popupCharacters="گ" />
<Key
latin:keyLabel="ط" />
<Key
@@ -109,11 +120,8 @@
latin:keyWidth="7.375%p"
>
<Key
- latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="12.750%p"
- latin:keyEdgeFlags="left" />
- <Key
- latin:keyLabel="ئ" />
+ latin:keyLabel="ئ"
+ latin:keyXPos="12.750%p" />
<Key
latin:keyLabel="ء" />
<Key
@@ -130,11 +138,12 @@
latin:keyLabel="و" />
<Key
latin:keyLabel="ز"
- latin:popupCharacters="ز,ژ" />
+ latin:popupCharacters="ژ" />
<Key
latin:keyLabel="ظ" />
<Key
latin:keyLabel="د" />
</Row>
- <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml-sw768dp/kbd_rows_hebrew.xml b/java/res/xml-sw768dp/kbd_rows_hebrew.xml
index 5275a1f15..0ef68b648 100644
--- a/java/res/xml-sw768dp/kbd_rows_hebrew.xml
+++ b/java/res/xml-sw768dp/kbd_rows_hebrew.xml
@@ -24,16 +24,15 @@
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<Row
- latin:keyWidth="8.000%p"
+ latin:keyWidth="8.282%p"
>
<Key
latin:keyStyle="tabKeyStyle"
latin:keyLabelOption="alignLeft"
+ latin:keyWidth="7.969%p"
latin:keyEdgeFlags="left" />
- <Key
- latin:keyLabel="," />
- <Key
- latin:keyLabel="." />
+ <include
+ latin:keyboardLayout="@xml/kbd_row4_apostrophe_dash" />
<Key
latin:keyLabel="ק" />
<Key
@@ -57,12 +56,12 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.000%p"
+ latin:keyWidth="8.125%p"
>
<Key
latin:keyStyle="toSymbolKeyStyle"
latin:keyLabelOption="alignLeft"
- latin:keyWidth="9.600%p"
+ latin:keyWidth="11.172%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ש" />
@@ -70,39 +69,31 @@
latin:keyLabel="ד" />
<Key
latin:keyLabel="ג"
- latin:popupCharacters="ג,ג׳" />
+ latin:popupCharacters="ג׳" />
<Key
latin:keyLabel="כ" />
<Key
latin:keyLabel="ע" />
<Key
latin:keyLabel="י"
- latin:popupCharacters="י,ײַ" />
+ latin:popupCharacters="ײַ" />
<Key
latin:keyLabel="ח"
- latin:popupCharacters="ח,ח׳" />
+ latin:popupCharacters="ח׳" />
<Key
latin:keyLabel="ל" />
<Key
latin:keyLabel="ך" />
<Key
latin:keyLabel="ף" />
- <Key
- latin:keyStyle="returnKeyStyle"
- latin:keyXPos="-10.400%p"
- latin:keyWidth="fillBoth"
- latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="8.000%p"
+ latin:keyWidth="8.047%p"
>
<Key
- latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="13.200%p"
- latin:keyEdgeFlags="left" />
- <Key
latin:keyLabel="ז"
- latin:popupCharacters="ז,ז׳" />
+ latin:popupCharacters="ז׳"
+ latin:keyXPos="13.829%p" />
<Key
latin:keyLabel="ס" />
<Key
@@ -115,13 +106,19 @@
latin:keyLabel="מ" />
<Key
latin:keyLabel="צ"
- latin:popupCharacters="צ,צ׳" />
+ latin:popupCharacters="צ׳" />
<Key
latin:keyLabel="ת"
- latin:popupCharacters="ת,ת׳" />
+ latin:popupCharacters="ת׳" />
<Key
latin:keyLabel="ץ"
- latin:popupCharacters="ץ,ץ׳" />
+ latin:popupCharacters="ץ׳" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyXPos="-10.400%p"
+ latin:keyWidth="fillBoth"
+ latin:keyEdgeFlags="right" />
</Row>
- <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml-sw768dp/kbd_rows_russian.xml b/java/res/xml-sw768dp/kbd_rows_russian.xml
index ee91481c1..35b2c8a1a 100644
--- a/java/res/xml-sw768dp/kbd_rows_russian.xml
+++ b/java/res/xml-sw768dp/kbd_rows_russian.xml
@@ -123,7 +123,7 @@
<Key
latin:keyLabel="ю" />
<include
- latin:keyboardLayout="@xml/kbd_row3_right2" />
+ latin:keyboardLayout="@xml/kbd_row3_comma_period" />
<Key
latin:keyStyle="shiftKeyStyle"
latin:keyWidth="fillBoth"
diff --git a/java/res/xml-sw768dp/kbd_rows_scandinavian.xml b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
index 7e9f604f5..c20dceea8 100644
--- a/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
+++ b/java/res/xml-sw768dp/kbd_rows_scandinavian.xml
@@ -139,7 +139,7 @@
<Key
latin:keyLabel="m" />
<include
- latin:keyboardLayout="@xml/kbd_row3_right2" />
+ latin:keyboardLayout="@xml/kbd_row3_comma_period" />
<Key
latin:keyStyle="shiftKeyStyle"
latin:keyXPos="-12.750%p"
diff --git a/java/res/xml-sw768dp/kbd_rows_serbian.xml b/java/res/xml-sw768dp/kbd_rows_serbian.xml
index 4997dabb9..f1576de45 100644
--- a/java/res/xml-sw768dp/kbd_rows_serbian.xml
+++ b/java/res/xml-sw768dp/kbd_rows_serbian.xml
@@ -118,7 +118,7 @@
<Key
latin:keyLabel="м" />
<include
- latin:keyboardLayout="@xml/kbd_row3_right2" />
+ latin:keyboardLayout="@xml/kbd_row3_comma_period" />
<Key
latin:keyStyle="returnKeyStyle"
latin:keyXPos="-13.750%p"
diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_symbols.xml
index 0e6103ab9..eb77d4d5b 100644
--- a/java/res/xml-sw768dp/kbd_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_symbols.xml
@@ -35,32 +35,35 @@
latin:keyWidth="7.969%p"
latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="1"
- latin:popupCharacters="¹,½,⅓,¼,⅛" />
+ latin:keyLabel="@string/keylabel_for_symbols_1"
+ latin:popupCharacters="@string/alternates_for_symbols_1" />
<Key
- latin:keyLabel="2"
- latin:popupCharacters="²,⅔" />
+ latin:keyLabel="@string/keylabel_for_symbols_2"
+ latin:popupCharacters="@string/alternates_for_symbols_2" />
<Key
- latin:keyLabel="3"
- latin:popupCharacters="³,¾,⅜" />
+ latin:keyLabel="@string/keylabel_for_symbols_3"
+ latin:popupCharacters="@string/alternates_for_symbols_3" />
<Key
- latin:keyLabel="4"
- latin:popupCharacters="⁴" />
+ latin:keyLabel="@string/keylabel_for_symbols_4"
+ latin:popupCharacters="@string/alternates_for_symbols_4" />
<Key
- latin:keyLabel="5"
- latin:popupCharacters="⅝" />
+ latin:keyLabel="@string/keylabel_for_symbols_5"
+ latin:popupCharacters="@string/alternates_for_symbols_5" />
<Key
- latin:keyLabel="6" />
+ latin:keyLabel="@string/keylabel_for_symbols_6"
+ latin:popupCharacters="@string/alternates_for_symbols_6" />
<Key
- latin:keyLabel="7"
- latin:popupCharacters="⅞" />
+ latin:keyLabel="@string/keylabel_for_symbols_7"
+ latin:popupCharacters="@string/alternates_for_symbols_7" />
<Key
- latin:keyLabel="8" />
+ latin:keyLabel="@string/keylabel_for_symbols_8"
+ latin:popupCharacters="@string/alternates_for_symbols_8" />
<Key
- latin:keyLabel="9" />
+ latin:keyLabel="@string/keylabel_for_symbols_9"
+ latin:popupCharacters="@string/alternates_for_symbols_9" />
<Key
- latin:keyLabel="0"
- latin:popupCharacters="ⁿ,∅" />
+ latin:keyLabel="@string/keylabel_for_symbols_0"
+ latin:popupCharacters="@string/alternates_for_symbols_0" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyXPos="-9.219%p"
@@ -135,17 +138,19 @@
</default>
</switch>
<Key
- latin:keyLabel=";" />
+ latin:keyLabel="@string/keylabel_for_symbols_semicolon"
+ latin:popupCharacters="@string/alternates_for_symbols_semicolon" />
<Key
- latin:keyLabel="," />
+ latin:keyLabel="@string/keylabel_for_symbols_comma"
+ latin:popupCharacters="@string/alternates_for_symbols_comma" />
<Key
latin:keyLabel="." />
<Key
latin:keyLabel="!"
latin:popupCharacters="¡" />
<Key
- latin:keyLabel="\?"
- latin:popupCharacters="¿" />
+ latin:keyLabel="@string/keylabel_for_symbols_question"
+ latin:popupCharacters="@string/alternates_for_symbols_question" />
<Key
latin:keyStyle="moreKeyStyle"
latin:keyXPos="-13.750%p"
diff --git a/java/res/xml/kbd_currency_key_styles.xml b/java/res/xml/kbd_currency_key_styles.xml
index 9d3bb4725..d2c711766 100644
--- a/java/res/xml/kbd_currency_key_styles.xml
+++ b/java/res/xml/kbd_currency_key_styles.xml
@@ -80,6 +80,14 @@
latin:keyLabel="€"
latin:popupCharacters="@string/alternates_for_currency_euro" />
</case>
+ <case
+ latin:languageCode="iw"
+ >
+ <key-style
+ latin:styleName="currencyKeyStyle"
+ latin:keyLabel="₪"
+ latin:popupCharacters="@string/alternates_for_currency_general" />
+ </case>
<!-- United Kingdom -->
<case
latin:countryCode="GB"
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index cc949c9dc..aa1a00527 100644
--- a/java/res/xml/kbd_key_styles.xml
+++ b/java/res/xml/kbd_key_styles.xml
@@ -47,7 +47,7 @@
<key-style
latin:styleName="settingsPopupStyle"
latin:keyLabelOption="hasPopupHint"
- latin:popupCharacters="\@icon/5|\@integer/key_settings"
+ latin:popupCharacters="\@icon/6|\@integer/key_settings"
latin:parentStyle="functionalKeyStyle" />
</default>
</switch>
@@ -60,7 +60,9 @@
latin:parentStyle="functionalKeyStyle"
latin:isSticky="true" />
<switch>
- <case latin:localeCode="ar|iw">
+ <case
+ latin:languageCode="ar|iw"
+ >
<key-style
latin:styleName="deleteKeyStyle"
latin:code="@integer/key_delete"
@@ -225,4 +227,27 @@
latin:parentStyle="functionalKeyStyle" />
</default>
</switch>
+ <switch>
+ <case
+ latin:navigateAction="true"
+ >
+ <key-style
+ latin:styleName="punctuationKeyStyle"
+ latin:keyHintLabel="@string/keyhintlabel_for_punctuation"
+ latin:keyLabelOption="hasPopupHint"
+ latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
+ latin:maxPopupKeyboardColumn="@integer/popup_keyboard_column_for_web_punctuation"
+ latin:parentStyle="tabKeyStyle" />
+ </case>
+ <default>
+ <key-style
+ latin:styleName="punctuationKeyStyle"
+ latin:keyLabel="."
+ latin:keyHintLabel="@string/keyhintlabel_for_punctuation"
+ latin:keyLabelOption="hasPopupHint"
+ latin:popupCharacters="@string/alternates_for_punctuation"
+ latin:maxPopupKeyboardColumn="@integer/popup_keyboard_column_for_punctuation"
+ latin:parentStyle="functionalKeyStyle" />
+ </default>
+ </switch>
</merge>
diff --git a/java/res/xml/kbd_qwerty_row4.xml b/java/res/xml/kbd_qwerty_row4.xml
index ff2ef3acd..298f0f61e 100644
--- a/java/res/xml/kbd_qwerty_row4.xml
+++ b/java/res/xml/kbd_qwerty_row4.xml
@@ -41,27 +41,9 @@
<Key
latin:keyStyle="spaceKeyStyle"
latin:keyWidth="35.83%p" />
- <switch>
- <case
- latin:navigateAction="true"
- >
- <Key
- latin:keyStyle="tabKeyStyle"
- latin:keyLabelOption="hasPopupHint"
- latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
- latin:keyWidth="9.2%p"
- latin:maxPopupKeyboardColumn="8" />
- </case>
- <default>
- <Key
- latin:keyLabel="."
- latin:keyLabelOption="hasPopupHint"
- latin:popupCharacters="@string/alternates_for_punctuation"
- latin:keyWidth="9.2%p"
- latin:maxPopupKeyboardColumn="7"
- latin:keyStyle="functionalKeyStyle" />
- </default>
- </switch>
+ <Key
+ latin:keyStyle="punctuationKeyStyle"
+ latin:keyWidth="9.2%p" />
</case>
<!-- latin:hasSettingsKey="false" -->
<default>
@@ -74,25 +56,8 @@
<Key
latin:keyStyle="spaceKeyStyle"
latin:keyWidth="50%p" />
- <switch>
- <case
- latin:navigateAction="true"
- >
- <Key
- latin:keyStyle="tabKeyStyle"
- latin:keyLabelOption="hasPopupHint"
- latin:popupCharacters="@string/alternates_for_web_tab_punctuation"
- latin:maxPopupKeyboardColumn="8" />
- </case>
- <default>
- <Key
- latin:keyLabel="."
- latin:keyLabelOption="hasPopupHint"
- latin:popupCharacters="@string/alternates_for_punctuation"
- latin:maxPopupKeyboardColumn="7"
- latin:keyStyle="functionalKeyStyle" />
- </default>
- </switch>
+ <Key
+ latin:keyStyle="punctuationKeyStyle" />
</default>
</switch>
<switch>
diff --git a/java/res/xml/kbd_rows_arabic.xml b/java/res/xml/kbd_rows_arabic.xml
index a548775a4..07e62741d 100644
--- a/java/res/xml/kbd_rows_arabic.xml
+++ b/java/res/xml/kbd_rows_arabic.xml
@@ -18,9 +18,6 @@
*/
-->
-<!-- This file for Arabic layout is an alpha version. It allows to enter -->
-<!-- some right-to-left text, but it has gone through no study whatsoever, -->
-<!-- and needs to be run through UX. -->
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
@@ -31,28 +28,49 @@
>
<Key
latin:keyLabel="ض"
+ latin:keyHintLabel="1"
+ latin:popupCharacters="1,١"
latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="ص" />
+ latin:keyLabel="ص"
+ latin:keyHintLabel="2"
+ latin:popupCharacters="2,٢" />
<Key
- latin:keyLabel="ق" />
+ latin:keyLabel="ق"
+ latin:keyHintLabel="3"
+ latin:popupCharacters="3,٣" />
+ <!-- \u06a4: ARABIC LETTER VEH -->
<Key
latin:keyLabel="ف"
- latin:popupCharacters="ڤ" />
+ latin:keyHintLabel="4"
+ latin:popupCharacters="\u06a4,4,٤" />
<Key
- latin:keyLabel="غ" />
+ latin:keyLabel="غ"
+ latin:keyHintLabel="5"
+ latin:popupCharacters="5,٥" />
<Key
- latin:keyLabel="ع" />
+ latin:keyLabel="ع"
+ latin:keyHintLabel="6"
+ latin:popupCharacters="6,٦" />
+ <!-- \ufeeb: ARABIC LETTER HEH INITIAL FORM
+ \u0647\u0640: ARABIC LETTER HEH + ARABIC TATWEEL -->
<Key
latin:keyLabel="ه"
- latin:popupCharacters="هـ" />
+ latin:keyHintLabel="7"
+ latin:popupCharacters="7,٧,\ufeeb|\u0647\u0640" />
<Key
- latin:keyLabel="خ" />
+ latin:keyLabel="خ"
+ latin:keyHintLabel="8"
+ latin:popupCharacters="8,٨" />
<Key
- latin:keyLabel="ح" />
+ latin:keyLabel="ح"
+ latin:keyHintLabel="9"
+ latin:popupCharacters="9,٩" />
+ <!-- \u0686: ARABIC LETTER TCHEH -->
<Key
latin:keyLabel="ج"
- latin:popupCharacters="چ"
+ latin:keyHintLabel="0"
+ latin:popupCharacters="0,٠,\u0686"
latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
@@ -64,20 +82,36 @@
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="س" />
+ <!-- \u0626: ARABIC LETTER YEH WITH HAMZA ABOVE
+ \u0649: ARABIC LETTER ALEF MAKSURA -->
<Key
latin:keyLabel="ي"
- latin:popupCharacters="ى,ئ" />
+ latin:popupCharacters="\u0626,\u0649" />
<Key
latin:keyLabel="ب"
latin:popupCharacters="پ" />
+ <!-- \ufefb: ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+ \u0644: ARABIC LETTER LAM
+ \u0627: ARABIC LETTER ALEF
+ \ufef7: ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+ \u0623: ARABIC LETTER ALEF WITH HAMZA ABOVE
+ \ufef9: ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+ \u0625: ARABIC LETTER ALEF WITH HAMZA BELOW
+ \ufef5: ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+ \u0622: ARABIC LETTER ALEF WITH MADDA ABOVE -->
<Key
latin:keyLabel="ل"
- latin:popupCharacters="لا" />
+ latin:popupCharacters="\ufefb|\u0644\u0627,\ufef7|\u0644\u0623,\ufef9|\u0644\u0625,\ufef5|\u0644\u0622" />
+ <!-- \u0621: ARABIC LETTER HAMZA
+ \u0623: ARABIC LETTER ALEF WITH HAMZA ABOVE
+ \u0625: ARABIC LETTER ALEF WITH HAMZA BELOW
+ \u0622: ARABIC LETTER ALEF WITH MADDA ABOVE -->
<Key
latin:keyLabel="ا"
- latin:popupCharacters="أ,إ,آ,ء" />
+ latin:popupCharacters="\u0621,\u0623,\u0625,\u0622" />
<Key
- latin:keyLabel="ت" />
+ latin:keyLabel="ت"
+ latin:popupCharacters="ث" />
<Key
latin:keyLabel="ن" />
<Key
@@ -89,10 +123,11 @@
latin:keyEdgeFlags="right" />
</Row>
<Row
- latin:keyWidth="9.7%p"
+ latin:keyWidth="10%p"
>
<Key
latin:keyLabel="ظ"
+ latin:keyXPos="5.0%p"
latin:keyEdgeFlags="left" />
<Key
latin:keyLabel="ط" />
@@ -106,17 +141,16 @@
<Key
latin:keyLabel="ر" />
<Key
- latin:keyLabel="و"
- latin:popupCharacters="ؤ" />
- <Key
latin:keyLabel="ة" />
<Key
- latin:keyLabel="ث" />
+ latin:keyLabel="و"
+ latin:popupCharacters="ؤ" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight"
latin:visualInsetsLeft="1%p"
latin:keyEdgeFlags="right" />
</Row>
- <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml/kbd_rows_hebrew.xml b/java/res/xml/kbd_rows_hebrew.xml
index c3c8f7d3e..af3488515 100644
--- a/java/res/xml/kbd_rows_hebrew.xml
+++ b/java/res/xml/kbd_rows_hebrew.xml
@@ -18,9 +18,6 @@
*/
-->
-<!-- This file for Hebrew layout is an alpha version. It allows to enter -->
-<!-- some right-to-left text, but it has gone through no study whatsoever, -->
-<!-- and needs to be run through UX. -->
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
@@ -63,15 +60,18 @@
<Key
latin:keyLabel="ד" />
<Key
- latin:keyLabel="ג" />
+ latin:keyLabel="ג"
+ latin:popupCharacters="ג׳" />
<Key
latin:keyLabel="כ" />
<Key
latin:keyLabel="ע" />
<Key
- latin:keyLabel="י" />
+ latin:keyLabel="י"
+ latin:popupCharacters="ײַ" />
<Key
- latin:keyLabel="ח" />
+ latin:keyLabel="ח"
+ latin:popupCharacters="ח׳" />
<Key
latin:keyLabel="ל" />
<Key
@@ -86,6 +86,7 @@
>
<Key
latin:keyLabel="ז"
+ latin:popupCharacters="ז׳"
latin:keyXPos="5%p"
latin:keyEdgeFlags="left" />
<Key
@@ -99,13 +100,17 @@
<Key
latin:keyLabel="מ" />
<Key
- latin:keyLabel="צ" />
+ latin:keyLabel="צ"
+ latin:popupCharacters="צ׳" />
<Key
- latin:keyLabel="ת" />
+ latin:keyLabel="ת"
+ latin:popupCharacters="ת׳" />
<Key
latin:keyLabel="ץ"
+ latin:popupCharacters="ץ׳"
latin:keyEdgeFlags="right" />
<!-- Here is 5%p space -->
</Row>
- <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
</merge>
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index 8e9124f74..8f682d932 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -30,33 +30,36 @@
latin:rowEdgeFlags="top"
>
<Key
- latin:keyLabel="1"
- latin:popupCharacters="¹,½,⅓,¼,⅛"
+ latin:keyLabel="@string/keylabel_for_symbols_1"
+ latin:popupCharacters="@string/alternates_for_symbols_1"
latin:keyEdgeFlags="left" />
<Key
- latin:keyLabel="2"
- latin:popupCharacters="²,⅔" />
+ latin:keyLabel="@string/keylabel_for_symbols_2"
+ latin:popupCharacters="@string/alternates_for_symbols_2" />
<Key
- latin:keyLabel="3"
- latin:popupCharacters="³,¾,⅜" />
+ latin:keyLabel="@string/keylabel_for_symbols_3"
+ latin:popupCharacters="@string/alternates_for_symbols_3" />
<Key
- latin:keyLabel="4"
- latin:popupCharacters="⁴" />
+ latin:keyLabel="@string/keylabel_for_symbols_4"
+ latin:popupCharacters="@string/alternates_for_symbols_4" />
<Key
- latin:keyLabel="5"
- latin:popupCharacters="⅝" />
+ latin:keyLabel="@string/keylabel_for_symbols_5"
+ latin:popupCharacters="@string/alternates_for_symbols_5" />
<Key
- latin:keyLabel="6" />
+ latin:keyLabel="@string/keylabel_for_symbols_6"
+ latin:popupCharacters="@string/alternates_for_symbols_6" />
<Key
- latin:keyLabel="7"
- latin:popupCharacters="⅞" />
+ latin:keyLabel="@string/keylabel_for_symbols_7"
+ latin:popupCharacters="@string/alternates_for_symbols_7" />
<Key
- latin:keyLabel="8" />
+ latin:keyLabel="@string/keylabel_for_symbols_8"
+ latin:popupCharacters="@string/alternates_for_symbols_8" />
<Key
- latin:keyLabel="9" />
+ latin:keyLabel="@string/keylabel_for_symbols_9"
+ latin:popupCharacters="@string/alternates_for_symbols_9" />
<Key
- latin:keyLabel="0"
- latin:popupCharacters="ⁿ,∅"
+ latin:keyLabel="@string/keylabel_for_symbols_0"
+ latin:popupCharacters="@string/alternates_for_symbols_0"
latin:keyWidth="fillRight"
latin:keyEdgeFlags="right" />
</Row>
@@ -112,17 +115,19 @@
<Key
latin:keyLabel=":" />
<Key
- latin:keyLabel=";" />
+ latin:keyLabel="@string/keylabel_for_symbols_semicolon"
+ latin:popupCharacters="@string/alternates_for_symbols_semicolon" />
<Key
latin:keyLabel="/" />
<Key
- latin:keyLabel="\?"
- latin:popupCharacters="¿" />
+ latin:keyLabel="@string/keylabel_for_symbols_question"
+ latin:popupCharacters="@string/alternates_for_symbols_question" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight"
latin:visualInsetsLeft="1%p"
latin:keyEdgeFlags="right" />
</Row>
- <include latin:keyboardLayout="@xml/kbd_symbols_row4" />
+ <include
+ latin:keyboardLayout="@xml/kbd_symbols_row4" />
</Keyboard>
diff --git a/java/res/xml/kbd_symbols_f1.xml b/java/res/xml/kbd_symbols_f1.xml
index da5b5fc8d..3c7346c54 100644
--- a/java/res/xml/kbd_symbols_f1.xml
+++ b/java/res/xml/kbd_symbols_f1.xml
@@ -36,7 +36,8 @@
<!-- latin:hasVoiceKey="false" -->
<default>
<Key
- latin:keyLabel=","
+ latin:keyLabel="@string/keylabel_for_symbols_comma"
+ latin:popupCharacters="@string/alternates_for_symbols_comma"
latin:keyWidth="9.2%p"
latin:keyStyle="settingsPopupStyle" />
</default>
@@ -54,7 +55,8 @@
<!-- latin:hasVoiceKey="false" -->
<default>
<Key
- latin:keyLabel=","
+ latin:keyLabel="@string/keylabel_for_symbols_comma"
+ latin:popupCharacters="@string/alternates_for_symbols_comma"
latin:keyStyle="settingsPopupStyle" />
</default>
</switch>
diff --git a/java/res/xml/kbd_symbols_row4.xml b/java/res/xml/kbd_symbols_row4.xml
index 68b79e84d..34c06df04 100644
--- a/java/res/xml/kbd_symbols_row4.xml
+++ b/java/res/xml/kbd_symbols_row4.xml
@@ -42,12 +42,8 @@
latin:keyStyle="spaceKeyStyle"
latin:keyWidth="35.83%p" />
<Key
- latin:keyLabel="."
- latin:keyLabelOption="hasPopupHint"
- latin:popupCharacters="@string/alternates_for_punctuation"
- latin:keyWidth="9.2%p"
- latin:maxPopupKeyboardColumn="7"
- latin:keyStyle="functionalKeyStyle" />
+ latin:keyStyle="punctuationKeyStyle"
+ latin:keyWidth="9.2%p" />
</case>
<!-- latin:hasSettingsKey="false" -->
<default>
@@ -61,11 +57,7 @@
latin:keyStyle="spaceKeyStyle"
latin:keyWidth="50%p" />
<Key
- latin:keyLabel="."
- latin:keyLabelOption="hasPopupHint"
- latin:popupCharacters="@string/alternates_for_punctuation"
- latin:maxPopupKeyboardColumn="7"
- latin:keyStyle="functionalKeyStyle" />
+ latin:keyStyle="punctuationKeyStyle" />
</default>
</switch>
<switch>
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 955885366..45bf68cdf 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -257,10 +257,13 @@ public class Key {
final CharSequence[] popupCharacters = style.getTextArray(keyAttr,
R.styleable.Keyboard_Key_popupCharacters);
- if (res.getBoolean(R.bool.config_digit_popup_characters_enabled)) {
- mPopupCharacters = popupCharacters;
- } else {
+ // In Arabic symbol layouts, we'd like to keep digits in popup characters regardless of
+ // config_digit_popup_characters_enabled.
+ if (mKeyboard.mId.isAlphabetKeyboard() && !res.getBoolean(
+ R.bool.config_digit_popup_characters_enabled)) {
mPopupCharacters = filterOutDigitPopupCharacters(popupCharacters);
+ } else {
+ mPopupCharacters = popupCharacters;
}
mMaxPopupColumn = style.getInt(keyboardAttr,
R.styleable.Keyboard_Key_maxPopupKeyboardColumn,
diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index 565b01d5a..96225f2e9 100644
--- a/java/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -193,6 +193,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
public void layoutStrip(SuggestedWords suggestions, int maxWidth, int maxCount) {
final int size = suggestions.size();
+ if (size == 0) return;
setupTexts(suggestions, size, mAutoCorrectHighlight);
mCountInStrip = Math.min(maxCount, size);
mScaleX = 1.0f;
@@ -244,7 +245,12 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
mTexts.clear();
for (int i = 0; i < count; i++) {
final CharSequence suggestion = suggestions.getWord(i);
- if (suggestion == null) continue;
+ if (suggestion == null) {
+ // Skip an empty suggestion, but we need to add a place-holder for it in order
+ // to avoid an exception in the loop in updateSuggestions().
+ mTexts.add("");
+ continue;
+ }
final boolean isAutoCorrect = suggestions.mHasMinimalSuggestion
&& ((i == 1 && !suggestions.mTypedWordValid)
diff --git a/native/Android.mk b/native/Android.mk
index c22191319..bc246a990 100644
--- a/native/Android.mk
+++ b/native/Android.mk
@@ -8,6 +8,9 @@ LOCAL_CFLAGS += -Werror -Wall
# To suppress compiler warnings for unused variables/functions used for debug features etc.
LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
+# Use the new dictionary format
+LOCAL_CFLAGS += -DNEW_DICTIONARY_FORMAT
+
LOCAL_SRC_FILES := \
jni/com_android_inputmethod_keyboard_ProximityInfo.cpp \
jni/com_android_inputmethod_latin_BinaryDictionary.cpp \
@@ -31,6 +34,10 @@ ifeq ($(FLAG_DBG), true)
TARGETING_UNBUNDLED_FROYO := false
endif
+ifeq ($(FLAG_DO_PROFILE), true)
+ TARGETING_UNBUNDLED_FROYO := false
+endif
+
ifeq ($(TARGETING_UNBUNDLED_FROYO), true)
LOCAL_NDK_VERSION := 4
LOCAL_SDK_VERSION := 8
@@ -43,6 +50,7 @@ LOCAL_MODULE_TAGS := user
ifeq ($(FLAG_DO_PROFILE), true)
$(warning Making profiling version of native library)
LOCAL_CFLAGS += -DFLAG_DO_PROFILE
+ LOCAL_SHARED_LIBRARIES := libcutils libutils
else # FLAG_DO_PROFILE
ifeq ($(FLAG_DBG), true)
$(warning Making debug version of native library)
diff --git a/native/src/basechars.h b/native/src/basechars.h
index 5a4406606..3843e11c5 100644
--- a/native/src/basechars.h
+++ b/native/src/basechars.h
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_BASECHARS_H
+#define LATINIME_BASECHARS_H
+
/**
* Table mapping most combined Latin, Greek, and Cyrillic characters
* to their base characters. If c is in range, BASE_CHARS[c] == c
@@ -170,3 +189,4 @@ static unsigned short BASE_CHARS[] = {
// generated with:
// cat UnicodeData.txt | perl -e 'while (<>) { @foo = split(/;/); $foo[5] =~ s/<.*> //; $base[hex($foo[0])] = hex($foo[5]);} for ($i = 0; $i < 0x500; $i += 8) { for ($j = $i; $j < $i + 8; $j++) { printf("0x%04x, ", $base[$j] ? $base[$j] : $j)}; print "\n"; }'
+#endif // LATINIME_BASECHARS_H
diff --git a/native/src/bigram_dictionary.cpp b/native/src/bigram_dictionary.cpp
index d11aee28e..6ed4d0982 100644
--- a/native/src/bigram_dictionary.cpp
+++ b/native/src/bigram_dictionary.cpp
@@ -45,8 +45,8 @@ bool BigramDictionary::addWordBigram(unsigned short *word, int length, int frequ
#ifdef FLAG_DBG
char s[length + 1];
for (int i = 0; i <= length; i++) s[i] = word[i];
-#endif
LOGI("Bigram: Found word = %s, freq = %d :", s, frequency);
+#endif
}
// Find the right insertion point
diff --git a/native/src/defines.h b/native/src/defines.h
index a516190af..bea83b2c5 100644
--- a/native/src/defines.h
+++ b/native/src/defines.h
@@ -18,8 +18,16 @@
#ifndef LATINIME_DEFINES_H
#define LATINIME_DEFINES_H
+#if defined(FLAG_DO_PROFILE) || defined(FLAG_DBG)
+#include <cutils/log.h>
+#else
+#define LOGE(fmt, ...)
+#define LOGI(fmt, ...)
+#endif
+
#ifdef FLAG_DO_PROFILE
// Profiler
+#include <cutils/log.h>
#include <time.h>
#define PROF_BUF_SIZE 100
static double profile_buf[PROF_BUF_SIZE];
@@ -92,8 +100,7 @@ static void prof_out(void) {
#define DEBUG_PROXIMITY_INFO true
#else // FLAG_DBG
-#define LOGE(fmt, ...)
-#define LOGI(fmt, ...)
+
#define DEBUG_DICT false
#define DEBUG_DICT_FULL false
#define DEBUG_SHOW_FOUND_WORD false
diff --git a/native/src/dictionary.h b/native/src/dictionary.h
index 3dc577a56..73e03d8fd 100644
--- a/native/src/dictionary.h
+++ b/native/src/dictionary.h
@@ -17,7 +17,9 @@
#ifndef LATINIME_DICTIONARY_H
#define LATINIME_DICTIONARY_H
+#include "basechars.h"
#include "bigram_dictionary.h"
+#include "char_utils.h"
#include "defines.h"
#include "proximity_info.h"
#include "unigram_dictionary.h"
@@ -61,7 +63,7 @@ public:
static int setDictionaryValues(const unsigned char *dict, const bool isLatestDictVersion,
const int pos, unsigned short *c, int *childrenPosition,
bool *terminal, int *freq);
-
+ static inline unsigned short toBaseLowerCase(unsigned short c);
// TODO: delete this
int getBigramPosition(unsigned short *word, int length);
@@ -156,6 +158,19 @@ inline int Dictionary::setDictionaryValues(const unsigned char *dict,
return position;
}
+
+inline unsigned short Dictionary::toBaseLowerCase(unsigned short c) {
+ if (c < sizeof(BASE_CHARS) / sizeof(BASE_CHARS[0])) {
+ c = BASE_CHARS[c];
+ }
+ if (c >='A' && c <= 'Z') {
+ c |= 32;
+ } else if (c > 127) {
+ c = latin_tolower(c);
+ }
+ return c;
+}
+
} // namespace latinime
#endif // LATINIME_DICTIONARY_H
diff --git a/native/src/proximity_info.cpp b/native/src/proximity_info.cpp
index 209c31e6e..c45393f18 100644
--- a/native/src/proximity_info.cpp
+++ b/native/src/proximity_info.cpp
@@ -19,6 +19,7 @@
#define LOG_TAG "LatinIME: proximity_info.cpp"
+#include "dictionary.h"
#include "proximity_info.h"
namespace latinime {
@@ -63,4 +64,101 @@ bool ProximityInfo::hasSpaceProximity(const int x, const int y) const {
return false;
}
+// TODO: Calculate nearby codes here.
+void ProximityInfo::setInputParams(const int* inputCodes, const int inputLength) {
+ mInputCodes = inputCodes;
+ mInputLength = inputLength;
+}
+
+inline const int* ProximityInfo::getProximityCharsAt(const int index) const {
+ return mInputCodes + (index * MAX_PROXIMITY_CHARS_SIZE);
+}
+
+unsigned short ProximityInfo::getPrimaryCharAt(const int index) const {
+ return getProximityCharsAt(index)[0];
+}
+
+bool ProximityInfo::existsCharInProximityAt(const int index, const int c) const {
+ const int *chars = getProximityCharsAt(index);
+ int i = 0;
+ while (chars[i] > 0 && i < MAX_PROXIMITY_CHARS_SIZE) {
+ if (chars[i++] == c) {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool ProximityInfo::existsAdjacentProximityChars(const int index) const {
+ if (index < 0 || index >= mInputLength) return false;
+ const int currentChar = getPrimaryCharAt(index);
+ const int leftIndex = index - 1;
+ if (leftIndex >= 0 && existsCharInProximityAt(leftIndex, currentChar)) {
+ return true;
+ }
+ const int rightIndex = index + 1;
+ if (rightIndex < mInputLength && existsCharInProximityAt(rightIndex, currentChar)) {
+ return true;
+ }
+ return false;
+}
+
+// In the following function, c is the current character of the dictionary word
+// currently examined.
+// currentChars is an array containing the keys close to the character the
+// user actually typed at the same position. We want to see if c is in it: if so,
+// then the word contains at that position a character close to what the user
+// typed.
+// What the user typed is actually the first character of the array.
+// Notice : accented characters do not have a proximity list, so they are alone
+// in their list. The non-accented version of the character should be considered
+// "close", but not the other keys close to the non-accented version.
+ProximityInfo::ProximityType ProximityInfo::getMatchedProximityId(
+ const int index, const unsigned short c, const int skipPos,
+ const int excessivePos, const int transposedPos) const {
+ const int *currentChars = getProximityCharsAt(index);
+ const unsigned short baseLowerC = Dictionary::toBaseLowerCase(c);
+
+ // The first char in the array is what user typed. If it matches right away,
+ // that means the user typed that same char for this pos.
+ if (currentChars[0] == baseLowerC || currentChars[0] == c)
+ return SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR;
+
+ // If one of those is true, we should not check for close characters at all.
+ if (skipPos >= 0 || excessivePos >= 0 || transposedPos >= 0)
+ return UNRELATED_CHAR;
+
+ // If the non-accented, lowercased version of that first character matches c,
+ // then we have a non-accented version of the accented character the user
+ // typed. Treat it as a close char.
+ if (Dictionary::toBaseLowerCase(currentChars[0]) == baseLowerC)
+ return NEAR_PROXIMITY_CHAR;
+
+ // Not an exact nor an accent-alike match: search the list of close keys
+ int j = 1;
+ while (currentChars[j] > 0 && j < MAX_PROXIMITY_CHARS_SIZE) {
+ const bool matched = (currentChars[j] == baseLowerC || currentChars[j] == c);
+ if (matched) return NEAR_PROXIMITY_CHAR;
+ ++j;
+ }
+
+ // Was not included, signal this as an unrelated character.
+ return UNRELATED_CHAR;
+}
+
+bool ProximityInfo::sameAsTyped(const unsigned short *word, int length) const {
+ if (length != mInputLength) {
+ return false;
+ }
+ const int *inputCodes = mInputCodes;
+ while (length--) {
+ if ((unsigned int) *inputCodes != (unsigned int) *word) {
+ return false;
+ }
+ inputCodes += MAX_PROXIMITY_CHARS_SIZE;
+ word++;
+ }
+ return true;
+}
+
} // namespace latinime
diff --git a/native/src/proximity_info.h b/native/src/proximity_info.h
index 327cd0940..435a60151 100644
--- a/native/src/proximity_info.h
+++ b/native/src/proximity_info.h
@@ -25,11 +25,26 @@ namespace latinime {
class ProximityInfo {
public:
+ typedef enum { // Used as a return value for character comparison
+ SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR, // Same char, possibly with different case or accent
+ NEAR_PROXIMITY_CHAR, // It is a char located nearby on the keyboard
+ UNRELATED_CHAR // It is an unrelated char
+ } ProximityType;
+
ProximityInfo(const int maxProximityCharsSize, const int keyboardWidth,
const int keybaordHeight, const int gridWidth, const int gridHeight,
const uint32_t *proximityCharsArray);
~ProximityInfo();
bool hasSpaceProximity(const int x, const int y) const;
+ void setInputParams(const int* inputCodes, const int inputLength);
+ const int* getProximityCharsAt(const int index) const;
+ unsigned short getPrimaryCharAt(const int index) const;
+ bool existsCharInProximityAt(const int index, const int c) const;
+ bool existsAdjacentProximityChars(const int index) const;
+ ProximityType getMatchedProximityId(
+ const int index, const unsigned short c, const int skipPos,
+ const int excessivePos, const int transposedPos) const;
+ bool sameAsTyped(const unsigned short *word, int length) const;
private:
int getStartIndexFromCoordinates(const int x, const int y) const;
const int MAX_PROXIMITY_CHARS_SIZE;
@@ -39,7 +54,9 @@ private:
const int GRID_HEIGHT;
const int CELL_WIDTH;
const int CELL_HEIGHT;
+ const int *mInputCodes;
uint32_t *mProximityCharsArray;
+ int mInputLength;
};
} // namespace latinime
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index 698584e54..afa8bc545 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -20,7 +20,6 @@
#define LOG_TAG "LatinIME: unigram_dictionary.cpp"
-#include "basechars.h"
#include "char_utils.h"
#include "dictionary.h"
#include "unigram_dictionary.h"
@@ -54,7 +53,7 @@ UnigramDictionary::UnigramDictionary(const uint8_t* const streamStart, int typed
// TODO : remove this variable.
ROOT_POS(0),
#endif // NEW_DICTIONARY_FORMAT
- BYTES_IN_ONE_CHAR(MAX_PROXIMITY_CHARS * sizeof(*mInputCodes)),
+ BYTES_IN_ONE_CHAR(MAX_PROXIMITY_CHARS * sizeof(int)),
MAX_UMLAUT_SEARCH_DEPTH(DEFAULT_MAX_UMLAUT_SEARCH_DEPTH) {
if (DEBUG_DICT) {
LOGI("UnigramDictionary - constructor");
@@ -93,7 +92,7 @@ bool UnigramDictionary::isDigraph(const int* codes, const int i, const int codes
// codesDest is the current point in the work buffer.
// codesSrc is the current point in the user-input, original, content-unmodified buffer.
// codesRemain is the remaining size in codesSrc.
-void UnigramDictionary::getWordWithDigraphSuggestionsRec(const ProximityInfo *proximityInfo,
+void UnigramDictionary::getWordWithDigraphSuggestionsRec(ProximityInfo *proximityInfo,
const int *xcoordinates, const int* ycoordinates, const int *codesBuffer,
const int codesBufferSize, const int flags, const int* codesSrc, const int codesRemain,
const int currentDepth, int* codesDest, unsigned short* outWords, int* frequencies) {
@@ -143,7 +142,7 @@ void UnigramDictionary::getWordWithDigraphSuggestionsRec(const ProximityInfo *pr
(codesDest - codesBuffer) / MAX_PROXIMITY_CHARS + codesRemain, outWords, frequencies);
}
-int UnigramDictionary::getSuggestions(const ProximityInfo *proximityInfo, const int *xcoordinates,
+int UnigramDictionary::getSuggestions(ProximityInfo *proximityInfo, const int *xcoordinates,
const int *ycoordinates, const int *codes, const int codesSize, const int flags,
unsigned short *outWords, int *frequencies) {
@@ -172,8 +171,8 @@ int UnigramDictionary::getSuggestions(const ProximityInfo *proximityInfo, const
short unsigned int* w = mOutputChars + j * MAX_WORD_LENGTH;
char s[MAX_WORD_LENGTH];
for (int i = 0; i <= MAX_WORD_LENGTH; i++) s[i] = w[i];
-#endif
LOGI("%s %i", s, mFrequencies[j]);
+#endif
}
LOGI("Next letters: ");
for (int k = 0; k < NEXT_LETTERS_SIZE; k++) {
@@ -187,13 +186,14 @@ int UnigramDictionary::getSuggestions(const ProximityInfo *proximityInfo, const
return suggestedWordsCount;
}
-void UnigramDictionary::getWordSuggestions(const ProximityInfo *proximityInfo,
+void UnigramDictionary::getWordSuggestions(ProximityInfo *proximityInfo,
const int *xcoordinates, const int *ycoordinates, const int *codes, const int codesSize,
unsigned short *outWords, int *frequencies) {
PROF_OPEN;
PROF_START(0);
- initSuggestions(codes, codesSize, outWords, frequencies);
+ initSuggestions(
+ proximityInfo, xcoordinates, ycoordinates, codes, codesSize, outWords, frequencies);
if (DEBUG_DICT) assert(codesSize == mInputLength);
const int MAX_DEPTH = min(mInputLength * MAX_DEPTH_MULTIPLIER, MAX_WORD_LENGTH);
@@ -275,16 +275,18 @@ void UnigramDictionary::getWordSuggestions(const ProximityInfo *proximityInfo,
PROF_END(6);
}
-void UnigramDictionary::initSuggestions(const int *codes, const int codesSize,
+void UnigramDictionary::initSuggestions(ProximityInfo *proximityInfo, const int *xcoordinates,
+ const int *ycoordinates, const int *codes, const int codesSize,
unsigned short *outWords, int *frequencies) {
if (DEBUG_DICT) {
LOGI("initSuggest");
}
mFrequencies = frequencies;
mOutputChars = outWords;
- mInputCodes = codes;
mInputLength = codesSize;
mMaxEditDistance = mInputLength < 5 ? 2 : mInputLength / 2;
+ proximityInfo->setInputParams(codes, codesSize);
+ mProximityInfo = proximityInfo;
}
static inline void registerNextLetter(unsigned short c, int *nextLetters, int nextLettersSize) {
@@ -301,8 +303,8 @@ bool UnigramDictionary::addWord(unsigned short *word, int length, int frequency)
#ifdef FLAG_DBG
char s[length + 1];
for (int i = 0; i <= length; i++) s[i] = word[i];
-#endif
LOGI("Found word = %s, freq = %d", s, frequency);
+#endif
}
if (length > MAX_WORD_LENGTH) {
if (DEBUG_DICT) {
@@ -325,8 +327,8 @@ bool UnigramDictionary::addWord(unsigned short *word, int length, int frequency)
#ifdef FLAG_DBG
char s[length + 1];
for (int i = 0; i <= length; i++) s[i] = word[i];
-#endif
LOGI("Added word = %s, freq = %d, %d", s, frequency, S_INT_MAX);
+#endif
}
memmove((char*) mFrequencies + (insertAt + 1) * sizeof(mFrequencies[0]),
(char*) mFrequencies + insertAt * sizeof(mFrequencies[0]),
@@ -348,33 +350,6 @@ bool UnigramDictionary::addWord(unsigned short *word, int length, int frequency)
return false;
}
-static inline unsigned short toBaseLowerCase(unsigned short c) {
- if (c < sizeof(BASE_CHARS) / sizeof(BASE_CHARS[0])) {
- c = BASE_CHARS[c];
- }
- if (c >='A' && c <= 'Z') {
- c |= 32;
- } else if (c > 127) {
- c = latin_tolower(c);
- }
- return c;
-}
-
-bool UnigramDictionary::sameAsTyped(const unsigned short *word, int length) const {
- if (length != mInputLength) {
- return false;
- }
- const int *inputCodes = mInputCodes;
- while (length--) {
- if ((unsigned int) *inputCodes != (unsigned int) *word) {
- return false;
- }
- inputCodes += MAX_PROXIMITY_CHARS;
- word++;
- }
- return true;
-}
-
static const char QUOTE = '\'';
static const char SPACE = ' ';
@@ -568,7 +543,9 @@ inline int UnigramDictionary::calculateFinalFreq(const int inputIndex, const int
WORDS_WITH_TRANSPOSED_CHARACTERS_DEMOTION_RATE, &finalFreq);
if (excessivePos >= 0) {
multiplyRate(WORDS_WITH_EXCESSIVE_CHARACTER_DEMOTION_RATE, &finalFreq);
- if (!existsAdjacentProximityChars(inputIndex, mInputLength)) {
+ if (!mProximityInfo->existsAdjacentProximityChars(inputIndex)) {
+ // If an excessive character is not adjacent to the left char or the right char,
+ // we will demote this word.
multiplyRate(WORDS_WITH_EXCESSIVE_CHARACTER_OUT_OF_PROXIMITY_DEMOTION_RATE, &finalFreq);
}
}
@@ -602,75 +579,11 @@ inline int UnigramDictionary::calculateFinalFreq(const int inputIndex, const int
inline bool UnigramDictionary::needsToSkipCurrentNode(const unsigned short c,
const int inputIndex, const int skipPos, const int depth) {
- const unsigned short userTypedChar = getInputCharsAt(inputIndex)[0];
+ const unsigned short userTypedChar = mProximityInfo->getPrimaryCharAt(inputIndex);
// Skip the ' or other letter and continue deeper
return (c == QUOTE && userTypedChar != QUOTE) || skipPos == depth;
}
-inline bool UnigramDictionary::existsAdjacentProximityChars(const int inputIndex,
- const int inputLength) const {
- if (inputIndex < 0 || inputIndex >= inputLength) return false;
- const int currentChar = *getInputCharsAt(inputIndex);
- const int leftIndex = inputIndex - 1;
- if (leftIndex >= 0) {
- const int *leftChars = getInputCharsAt(leftIndex);
- int i = 0;
- while (leftChars[i] > 0 && i < MAX_PROXIMITY_CHARS) {
- if (leftChars[i++] == currentChar) return true;
- }
- }
- const int rightIndex = inputIndex + 1;
- if (rightIndex < inputLength) {
- const int *rightChars = getInputCharsAt(rightIndex);
- int i = 0;
- while (rightChars[i] > 0 && i < MAX_PROXIMITY_CHARS) {
- if (rightChars[i++] == currentChar) return true;
- }
- }
- return false;
-}
-
-// In the following function, c is the current character of the dictionary word
-// currently examined.
-// currentChars is an array containing the keys close to the character the
-// user actually typed at the same position. We want to see if c is in it: if so,
-// then the word contains at that position a character close to what the user
-// typed.
-// What the user typed is actually the first character of the array.
-// Notice : accented characters do not have a proximity list, so they are alone
-// in their list. The non-accented version of the character should be considered
-// "close", but not the other keys close to the non-accented version.
-inline UnigramDictionary::ProximityType UnigramDictionary::getMatchedProximityId(
- const int *currentChars, const unsigned short c, const int skipPos,
- const int excessivePos, const int transposedPos) {
- const unsigned short baseLowerC = toBaseLowerCase(c);
-
- // The first char in the array is what user typed. If it matches right away,
- // that means the user typed that same char for this pos.
- if (currentChars[0] == baseLowerC || currentChars[0] == c)
- return SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR;
-
- // If one of those is true, we should not check for close characters at all.
- if (skipPos >= 0 || excessivePos >= 0 || transposedPos >= 0)
- return UNRELATED_CHAR;
-
- // If the non-accented, lowercased version of that first character matches c,
- // then we have a non-accented version of the accented character the user
- // typed. Treat it as a close char.
- if (toBaseLowerCase(currentChars[0]) == baseLowerC)
- return NEAR_PROXIMITY_CHAR;
-
- // Not an exact nor an accent-alike match: search the list of close keys
- int j = 1;
- while (currentChars[j] > 0 && j < MAX_PROXIMITY_CHARS) {
- const bool matched = (currentChars[j] == baseLowerC || currentChars[j] == c);
- if (matched) return NEAR_PROXIMITY_CHAR;
- ++j;
- }
-
- // Was not included, signal this as an unrelated character.
- return UNRELATED_CHAR;
-}
inline void UnigramDictionary::onTerminal(unsigned short int* word, const int depth,
const uint8_t* const root, const uint8_t flags, const int pos,
@@ -678,7 +591,7 @@ inline void UnigramDictionary::onTerminal(unsigned short int* word, const int de
const int excessivePos, const int transposedPos, const int freq, const bool sameLength,
int* nextLetters, const int nextLettersSize) {
- const bool isSameAsTyped = sameLength ? sameAsTyped(word, depth + 1) : false;
+ const bool isSameAsTyped = sameLength ? mProximityInfo->sameAsTyped(word, depth + 1) : false;
if (isSameAsTyped) return;
if (depth >= MIN_SUGGEST_DEPTH) {
@@ -809,9 +722,9 @@ inline int UnigramDictionary::getMostFrequentWordLike(const int startInputIndex,
char s[inputLength + 1];
for (int i = 0; i < inputLength; ++i) s[i] = word[i];
s[inputLength] = 0;
-#endif
LOGI("New missing space word found: %d > %d (%s), %d, %d",
newFreq, maxFreq, s, inputLength, depth);
+#endif
}
maxFreq = newFreq;
}
@@ -836,15 +749,14 @@ inline bool UnigramDictionary::processCurrentNodeForExactMatch(const int firstCh
const int startInputIndex, const int depth, unsigned short *word, int *newChildPosition,
int *newCount, bool *newTerminal, int *newFreq, int *siblingPos) {
const int inputIndex = startInputIndex + depth;
- const int *currentChars = getInputCharsAt(inputIndex);
unsigned short c;
*siblingPos = Dictionary::setDictionaryValues(DICT_ROOT, IS_LATEST_DICT_VERSION, firstChildPos,
&c, newChildPosition, newTerminal, newFreq);
- const unsigned int inputC = currentChars[0];
+ const unsigned int inputC = mProximityInfo->getPrimaryCharAt(inputIndex);
if (DEBUG_DICT) {
assert(inputC <= U_SHORT_MAX);
}
- const unsigned short baseLowerC = toBaseLowerCase(c);
+ const unsigned short baseLowerC = Dictionary::toBaseLowerCase(c);
const bool matched = (inputC == baseLowerC || inputC == c);
const bool hasChild = *newChildPosition != 0;
if (matched) {
@@ -962,20 +874,20 @@ inline bool UnigramDictionary::processCurrentNode(const int initialPos, const in
*newDiffs = diffs;
*newInputIndex = inputIndex;
} else {
- const int *currentChars = getInputCharsAt(inputIndex);
+ int inputIndexForProximity = inputIndex;
if (transposedPos >= 0) {
- if (inputIndex == transposedPos) currentChars += MAX_PROXIMITY_CHARS;
- if (inputIndex == (transposedPos + 1)) currentChars -= MAX_PROXIMITY_CHARS;
+ if (inputIndex == transposedPos) ++inputIndexForProximity;
+ if (inputIndex == (transposedPos + 1)) --inputIndexForProximity;
}
- int matchedProximityCharId = getMatchedProximityId(currentChars, c, skipPos, excessivePos,
- transposedPos);
- if (UNRELATED_CHAR == matchedProximityCharId) return false;
+ ProximityInfo::ProximityType matchedProximityCharId = mProximityInfo->getMatchedProximityId(
+ inputIndexForProximity, c, skipPos, excessivePos, transposedPos);
+ if (ProximityInfo::UNRELATED_CHAR == matchedProximityCharId) return false;
mWord[depth] = c;
// If inputIndex is greater than mInputLength, that means there is no
// proximity chars. So, we don't need to check proximity.
- if (SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR == matchedProximityCharId) {
+ if (ProximityInfo::SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR == matchedProximityCharId) {
multiplyIntCapped(TYPED_LETTER_MULTIPLIER, &matchWeight);
}
bool isSameAsUserTypedLength = mInputLength == inputIndex + 1
@@ -988,7 +900,8 @@ inline bool UnigramDictionary::processCurrentNode(const int initialPos, const in
// Start traversing all nodes after the index exceeds the user typed length
*newTraverseAllNodes = isSameAsUserTypedLength;
*newMatchRate = matchWeight;
- *newDiffs = diffs + ((NEAR_PROXIMITY_CHAR == matchedProximityCharId) ? 1 : 0);
+ *newDiffs = diffs
+ + ((ProximityInfo::NEAR_PROXIMITY_CHAR == matchedProximityCharId) ? 1 : 0);
*newInputIndex = inputIndex + 1;
}
// Optimization: Prune out words that are too long compared to how much was typed.
@@ -1017,7 +930,7 @@ inline int UnigramDictionary::getMostFrequentWordLike(const int startInputIndex,
uint16_t inWord[inputLength];
for (int i = 0; i < inputLength; ++i) {
- inWord[i] = *getInputCharsAt(startInputIndex + i);
+ inWord[i] = (uint16_t)mProximityInfo->getPrimaryCharAt(startInputIndex + i);
}
return getMostFrequentWordLikeInner(inWord, inputLength, word);
}
@@ -1041,8 +954,8 @@ static inline bool testCharGroupForContinuedLikeness(const uint8_t flags,
const bool hasMultipleChars = (0 != (UnigramDictionary::FLAG_HAS_MULTIPLE_CHARS & flags));
int pos = startPos;
int32_t character = BinaryFormat::getCharCodeAndForwardPointer(root, &pos);
- int32_t baseChar = toBaseLowerCase(character);
- const uint16_t wChar = toBaseLowerCase(inWord[startInputIndex]);
+ int32_t baseChar = Dictionary::toBaseLowerCase(character);
+ const uint16_t wChar = Dictionary::toBaseLowerCase(inWord[startInputIndex]);
if (baseChar != wChar) {
*outPos = hasMultipleChars ? BinaryFormat::skipOtherCharacters(root, pos) : pos;
@@ -1054,8 +967,8 @@ static inline bool testCharGroupForContinuedLikeness(const uint8_t flags,
if (hasMultipleChars) {
character = BinaryFormat::getCharCodeAndForwardPointer(root, &pos);
while (NOT_A_CHARACTER != character) {
- baseChar = toBaseLowerCase(character);
- if (toBaseLowerCase(inWord[++inputIndex]) != baseChar) {
+ baseChar = Dictionary::toBaseLowerCase(character);
+ if (Dictionary::toBaseLowerCase(inWord[++inputIndex]) != baseChar) {
*outPos = BinaryFormat::skipOtherCharacters(root, pos);
*outInputIndex = startInputIndex;
return false;
@@ -1300,7 +1213,7 @@ inline bool UnigramDictionary::processCurrentNode(const int initialPos, const in
const bool hasChildren = (!isLastChar) || BinaryFormat::hasChildrenInFlags(flags);
// This has to be done for each virtual char (this forwards the "inputIndex" which
- // is the index in the user-inputted chars, as read by getInputCharsAt.
+ // is the index in the user-inputted chars, as read by proximity chars.
if (excessivePos == depth && inputIndex < mInputLength - 1) ++inputIndex;
if (traverseAllNodes || needsToSkipCurrentNode(c, inputIndex, skipPos, depth)) {
mWord[depth] = c;
@@ -1324,16 +1237,16 @@ inline bool UnigramDictionary::processCurrentNode(const int initialPos, const in
return false;
}
} else {
- const int *currentChars = getInputCharsAt(inputIndex);
+ int inputIndexForProximity = inputIndex;
if (transposedPos >= 0) {
- if (inputIndex == transposedPos) currentChars += MAX_PROXIMITY_CHARS;
- if (inputIndex == (transposedPos + 1)) currentChars -= MAX_PROXIMITY_CHARS;
+ if (inputIndex == transposedPos) ++inputIndexForProximity;
+ if (inputIndex == (transposedPos + 1)) --inputIndexForProximity;
}
- const int matchedProximityCharId = getMatchedProximityId(currentChars, c, skipPos,
- excessivePos, transposedPos);
- if (UNRELATED_CHAR == matchedProximityCharId) {
+ int matchedProximityCharId = mProximityInfo->getMatchedProximityId(
+ inputIndexForProximity, c, skipPos, excessivePos, transposedPos);
+ if (ProximityInfo::UNRELATED_CHAR == matchedProximityCharId) {
// We found that this is an unrelated character, so we should give up traversing
// this node and its children entirely.
// However we may not be on the last virtual node yet so we skip the remaining
@@ -1352,7 +1265,7 @@ inline bool UnigramDictionary::processCurrentNode(const int initialPos, const in
mWord[depth] = c;
// If inputIndex is greater than mInputLength, that means there is no
// proximity chars. So, we don't need to check proximity.
- if (SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR == matchedProximityCharId) {
+ if (ProximityInfo::SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR == matchedProximityCharId) {
multiplyIntCapped(TYPED_LETTER_MULTIPLIER, &matchWeight);
}
const bool isSameAsUserTypedLength = mInputLength == inputIndex + 1
@@ -1376,7 +1289,8 @@ inline bool UnigramDictionary::processCurrentNode(const int initialPos, const in
}
// Start traversing all nodes after the index exceeds the user typed length
traverseAllNodes = isSameAsUserTypedLength;
- diffs = diffs + ((NEAR_PROXIMITY_CHAR == matchedProximityCharId) ? 1 : 0);
+ diffs = diffs
+ + ((ProximityInfo::NEAR_PROXIMITY_CHAR == matchedProximityCharId) ? 1 : 0);
// Finally, we are ready to go to the next character, the next "virtual node".
// We should advance the input index.
// We do this in this branch of the 'if traverseAllNodes' because we are still matching
diff --git a/native/src/unigram_dictionary.h b/native/src/unigram_dictionary.h
index dcc8f2a9a..f6045c6ef 100644
--- a/native/src/unigram_dictionary.h
+++ b/native/src/unigram_dictionary.h
@@ -29,12 +29,6 @@ namespace latinime {
class UnigramDictionary {
- typedef enum { // Used as a return value for character comparison
- SAME_OR_ACCENTED_OR_CAPITALIZED_CHAR, // Same char, possibly with different case or accent
- NEAR_PROXIMITY_CHAR, // It is a char located nearby on the keyboard
- UNRELATED_CHAR // It is an unrelated char
- } ProximityType;
-
public:
#ifdef NEW_DICTIONARY_FORMAT
@@ -82,26 +76,26 @@ public:
int maxAlternatives);
#endif // NEW_DICTIONARY_FORMAT
int getBigramPosition(int pos, unsigned short *word, int offset, int length) const;
- int getSuggestions(const ProximityInfo *proximityInfo, const int *xcoordinates,
+ int getSuggestions(ProximityInfo *proximityInfo, const int *xcoordinates,
const int *ycoordinates, const int *codes, const int codesSize, const int flags,
unsigned short *outWords, int *frequencies);
~UnigramDictionary();
private:
- void getWordSuggestions(const ProximityInfo *proximityInfo, const int *xcoordinates,
+ void getWordSuggestions(ProximityInfo *proximityInfo, const int *xcoordinates,
const int *ycoordinates, const int *codes, const int codesSize,
unsigned short *outWords, int *frequencies);
bool isDigraph(const int* codes, const int i, const int codesSize) const;
- void getWordWithDigraphSuggestionsRec(const ProximityInfo *proximityInfo,
+ void getWordWithDigraphSuggestionsRec(ProximityInfo *proximityInfo,
const int *xcoordinates, const int* ycoordinates, const int *codesBuffer,
const int codesBufferSize, const int flags, const int* codesSrc, const int codesRemain,
const int currentDepth, int* codesDest, unsigned short* outWords, int* frequencies);
- void initSuggestions(const int *codes, const int codesSize, unsigned short *outWords,
- int *frequencies);
+ void initSuggestions(ProximityInfo *proximityInfo, const int *xcoordinates,
+ const int *ycoordinates, const int *codes, const int codesSize,
+ unsigned short *outWords, int *frequencies);
void getSuggestionCandidates(const int skipPos, const int excessivePos,
const int transposedPos, int *nextLetters, const int nextLettersSize,
const int maxDepth);
- bool sameAsTyped(const unsigned short *word, int length) const;
bool addWord(unsigned short *word, int length, int frequency);
bool getSplitTwoWordsSuggestion(const int inputLength,
const int firstWordStartPos, const int firstWordLength,
@@ -118,8 +112,6 @@ private:
int *nextLetters, const int nextLettersSize);
bool needsToSkipCurrentNode(const unsigned short c,
const int inputIndex, const int skipPos, const int depth);
- ProximityType getMatchedProximityId(const int *currentChars, const unsigned short c,
- const int skipPos, const int excessivePos, const int transposedPos);
// Process a node by considering proximity, missing and excessive character
bool processCurrentNode(const int initialPos, const int initialDepth,
const int maxDepth, const bool initialTraverseAllNodes, const int snr, int inputIndex,
@@ -127,10 +119,6 @@ private:
const int transposedPos, int *nextLetters, const int nextLettersSize, int *newCount,
int *newChildPosition, bool *newTraverseAllNodes, int *newSnr, int*newInputIndex,
int *newDiffs, int *nextSiblingPosition, int *nextOutputIndex);
- bool existsAdjacentProximityChars(const int inputIndex, const int inputLength) const;
- inline const int* getInputCharsAt(const int index) const {
- return mInputCodes + (index * MAX_PROXIMITY_CHARS);
- }
int getMostFrequentWordLike(const int startInputIndex, const int inputLength,
unsigned short *word);
#ifndef NEW_DICTIONARY_FORMAT
@@ -174,7 +162,7 @@ private:
int *mFrequencies;
unsigned short *mOutputChars;
- const int *mInputCodes;
+ const ProximityInfo *mProximityInfo;
int mInputLength;
// MAX_WORD_LENGTH_INTERNAL must be bigger than MAX_WORD_LENGTH
unsigned short mWord[MAX_WORD_LENGTH_INTERNAL];
@@ -189,7 +177,6 @@ private:
int mStackOutputIndex[MAX_WORD_LENGTH_INTERNAL];
int mNextLettersFrequency[NEXT_LETTERS_SIZE];
};
-
} // namespace latinime
#endif // LATINIME_UNIGRAM_DICTIONARY_H